<?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>149719</bug_id>
          
          <creation_ts>2015-10-01 12:38:21 -0700</creation_ts>
          <short_desc>Report error when main resource is blocked by content blocker</short_desc>
          <delta_ts>2015-10-06 07:28:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1130004</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 12:38:21 -0700</bug_when>
    <thetext>Report error when main resource is blocked by content blocker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130027</commentid>
    <comment_count>1</comment_count>
      <attachid>262282</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 14:08:46 -0700</bug_when>
    <thetext>Created attachment 262282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130033</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 14:21:17 -0700</bug_when>
    <thetext>rdar://problem/21970595</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130087</commentid>
    <comment_count>3</comment_count>
      <attachid>262298</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 16:42:08 -0700</bug_when>
    <thetext>Created attachment 262298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130100</commentid>
    <comment_count>4</comment_count>
      <attachid>262298</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-01 17:15:14 -0700</bug_when>
    <thetext>Comment on attachment 262298
Patch

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

The structure of this patch seems great.

There&apos;s enough comments on the details for me to r-

&gt; Source/WebCore/ChangeLog:16
&gt; +        Instead of nulling out the ResourceRequest, processContentExtensionRulesForLoad 
&gt; +        now returns a bool indicating whether the request should be blocked.
&gt; +        This is needed because the DocumentLoader needs the request to make the ResourceError.

This doesn&apos;t accurately describe what the change is - That DocumentLoader needs a CachedResource with an error representing the blocking.

&gt; Source/WebCore/contentextensions/ContentExtensionsBackend.cpp:148
&gt; -void ContentExtensionsBackend::processContentExtensionRulesForLoad(ResourceRequest&amp; request, ResourceType resourceType, DocumentLoader&amp; initiatingDocumentLoader)
&gt; +bool ContentExtensionsBackend::processContentExtensionRulesForLoad(ResourceRequest&amp; request, ResourceType resourceType, DocumentLoader&amp; initiatingDocumentLoader)

Now that we&apos;re returning a bool instead of modifying request, request is no longer an out parameter and can be const.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1229
&gt; +    if (page-&gt;userContentController() &amp;&amp; documentLoader
&gt; +        &amp;&amp; page-&gt;userContentController()-&gt;processContentExtensionRulesForLoad(*page, request, ResourceType::Media, *documentLoader)) {

These should all be on one line.

&gt; Source/WebCore/loader/DocumentLoader.cpp:1447
&gt; +    if (m_mainResource &amp;&amp; m_mainResource-&gt;errorOccurred() &amp;&amp; m_mainResource-&gt;resourceError().domain() == &quot;WebKitContentBlockerDomain&quot;) {

You have the &quot;WebKitContentBlockerDomain&quot; string literal in multiple places.

It needs to exist in one place as a constant String that can be referenced from these multiple places.

&gt; Source/WebCore/loader/FrameLoader.cpp:2720
&gt; +        Page* page = nullptr;
&gt; +        UserContentController* controller = nullptr;
&gt; +        if (error.isNull()
&gt; +            &amp;&amp; m_documentLoader
&gt; +            &amp;&amp; (page = m_frame.page())
&gt; +            &amp;&amp; (controller = page-&gt;userContentController())
&gt; +            &amp;&amp; controller-&gt;processContentExtensionRulesForLoad(*page, newRequest, ResourceType::Raw, *m_documentLoader)) {

This is messy-ish to look at, especially the non-null-assignment checks in parens. I think the old nested style was fine.

&gt; Source/WebCore/loader/FrameLoader.cpp:3334
&gt; +    error.setIsCancellation(true);

Is this right? Logically this is not a cancelled load. Is there actually a reason the cancelled load flag needs to be set?

&gt; Source/WebCore/loader/ResourceLoader.cpp:345
&gt; +            if (userContentController
&gt; +                &amp;&amp; userContentController-&gt;processContentExtensionRulesForLoad(*page, request, m_resourceType, *m_documentLoader))

On one line please.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:523
&gt; +                resource-&gt;setResourceError(ResourceError(&quot;WebKitContentBlockerDomain&quot;, 0, request.mutableResourceRequest().url().string(), &quot;The URL was blocked by a content blocker&quot;));

Another place where the &quot;WebKitContentBlockerDomain&quot; should come from some shared location.
Same with the &quot;The URL was blocked by a content blocker&quot; message.
Also the &quot;request.mutableResourceRequest().url().string()&quot; dance seems bizarre - why do you have to get the mutable request?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:72
&gt; +    return ResourceError(API::Error::webKitErrorDomain(), kWKErrorCodeFrameLoadBlockedByContentBlocker, request.url(), WEB_UI_STRING(&quot;The URL was blocked by a content blocker&quot;, &quot;WebKitErrorBlockedByContentBlocker description&quot;));

&quot;The URL was blocked by a content blocker&quot; is now in multiple places, and probably shouldn&apos;t be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130120</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 18:00:23 -0700</bug_when>
    <thetext>Addressed comments except as noted.  I was thinking about using the errorCode instead of the domain of the ResourceError to determine if it was blocked by content blockers, but that isn&apos;t done elsewhere and I wasn&apos;t sure enough that 104 is a unique number with ResourceErrors.
(In reply to comment #4)
ContentExtensionsBackend::processContentExtensionRulesForLoad(ResourceRequest&amp; request, ResourceType resourceType, DocumentLoader&amp; initiatingDocumentLoader)
&gt; 
&gt; Now that we&apos;re returning a bool instead of modifying request, request is no
&gt; longer an out parameter and can be const.
It still can&apos;t be const because block-cookies strips the cookies from the request.
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:72
&gt; &gt; +    return ResourceError(API::Error::webKitErrorDomain(), kWKErrorCodeFrameLoadBlockedByContentBlocker, request.url(), WEB_UI_STRING(&quot;The URL was blocked by a content blocker&quot;, &quot;WebKitErrorBlockedByContentBlocker description&quot;));
&gt; 
&gt; &quot;The URL was blocked by a content blocker&quot; is now in multiple places, and
&gt; probably shouldn&apos;t be.
It needs to be in multiple places, but I made a WEB_UI_STRING in both places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130126</commentid>
    <comment_count>6</comment_count>
      <attachid>262308</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 18:18:42 -0700</bug_when>
    <thetext>Created attachment 262308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130159</commentid>
    <comment_count>7</comment_count>
      <attachid>262315</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-01 22:41:09 -0700</bug_when>
    <thetext>Created attachment 262315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130224</commentid>
    <comment_count>8</comment_count>
      <attachid>262315</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-02 08:05:01 -0700</bug_when>
    <thetext>Comment on attachment 262315
Patch

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

Only had time for a partial review.

&gt; Source/WebCore/loader/DocumentLoader.cpp:1449
&gt; +        m_identifierForLoadWithoutResourceLoader = m_frame-&gt;page()-&gt;progress().createUniqueIdentifier();

What guarantees m_frame is non-null? What guarantees m_frame-&gt;page() is non-null?

&gt; Source/WebCore/loader/DocumentLoader.cpp:1451
&gt; +        frameLoader()-&gt;notifier().assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, this, request);
&gt; +        frameLoader()-&gt;notifier().dispatchDidFailLoading(this, m_identifierForLoadWithoutResourceLoader, frameLoader()-&gt;blockedByContentBlockerError(m_request));

What guarantees frameLoader() is non-null?

&gt; Source/WebCore/loader/FrameLoader.cpp:3328
&gt; +    ResourceError error = m_client.blockedByContentBlockerError(request);
&gt; +    return error;

No need for a local variable here.

&gt; Source/WebCore/loader/ResourceLoader.cpp:345
&gt; +                request = ResourceRequest();

I like to use { } in places like this rather than writing out ResourceRequest().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130243</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-02 09:21:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 262315 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262315&amp;action=review
&gt; 
&gt; Only had time for a partial review.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1449
&gt; &gt; +        m_identifierForLoadWithoutResourceLoader = m_frame-&gt;page()-&gt;progress().createUniqueIdentifier();
&gt; 
&gt; What guarantees m_frame is non-null? 
There&apos;s an early return on line 1424.
&gt; What guarantees m_frame-&gt;page() is
&gt; non-null?
I need to add a check.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1451
&gt; &gt; +        frameLoader()-&gt;notifier().assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, this, request);
&gt; &gt; +        frameLoader()-&gt;notifier().dispatchDidFailLoading(this, m_identifierForLoadWithoutResourceLoader, frameLoader()-&gt;blockedByContentBlockerError(m_request));
&gt; 
&gt; What guarantees frameLoader() is non-null?
We did an early return if !m_frame, and if m_frame is non-null then frameLoader() always returns non-null.  It&apos;s not straightforward, but it is guaranteed not to be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130244</commentid>
    <comment_count>10</comment_count>
      <attachid>262337</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-02 09:23:10 -0700</bug_when>
    <thetext>Created attachment 262337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130666</commentid>
    <comment_count>11</comment_count>
      <attachid>262337</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-05 11:03:43 -0700</bug_when>
    <thetext>Comment on attachment 262337
Patch

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

r+ after my comments are handled.

&gt; Source/WebCore/platform/efl/ErrorsEfl.h:60
&gt; +    PolicyErrorBlockedByContentBlocker = 104

Please add a comma at the end of the new error type, in prep for a future new one.

&gt; Source/WebCore/platform/gtk/ErrorsGtk.h:53
&gt; +    PolicyErrorBlockedByContentBlocker = 104

Please add a comma at the end of the new error type, in prep for a future new one.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:72
&gt; +    return ResourceError(API::Error::webKitErrorDomain(), kWKErrorCodeFrameLoadBlockedByContentBlocker, request.url(), WEB_UI_STRING(&quot;The URL was blocked by a content blocker&quot;, &quot;WebKitErrorBlockedByContentBlocker description&quot;));

You have this same code:
WEB_UI_STRING(&quot;The URL was blocked by a content blocker&quot;, &quot;WebKitErrorBlockedByContentBlocker description&quot;)
...twice.

No way to share it and make it exist only once?

&gt; Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:1153
&gt; +    RELEASE_ASSERT_NOT_REACHED(); // Content blockers are not enabled in WebKit1.
&gt; +    return [NSError _webKitErrorWithDomain:WebKitErrorDomain code:WebKitErrorCannotShowURL URL:request.url()];

The compiler should allow you to not have a return value when you use RELEASE_ASSERT_NOT_REACHED, as I believe it&apos;s sprinkled with `noreturn` or some similar keyword.

&gt; Source/WebKit/win/WebCoreSupport/WebFrameLoaderClient.cpp:864
&gt; +    RELEASE_ASSERT_NOT_REACHED(); // Content Blockers are not enabled for WK1.
&gt; +    return ResourceError(String(WebKitErrorDomain), WebKitErrorCannotUseRestrictedPort, request.url().string(), WEB_UI_STRING(&quot;Not allowed to use restricted network port&quot;, &quot;WebKitErrorCannotUseRestrictedPort description&quot;));

Same comment here about noreturn, but I&apos;m less confident about Visual Studio&apos;s compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130667</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-05 11:08:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 262337 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262337&amp;action=review
&gt; 
&gt; r+ after my comments are handled.
&gt; 

And one more comment:

bool processContentExtensionRulesForLoad(ResourceRequest&amp;, ResourceType, DocumentLoader&amp; initiatingDocumentLoader);

This makes no sense. Returning true/false here doesn&apos;t match up with the naming or purpose of this function.

Additionally, in general using a bool for &quot;did&quot; or &quot;did not&quot; do a thing has fallen out of favor.

Please use an enum class to represent &quot;load blocked&quot; and &quot;load not blocked&quot; so code has to explicitly check for one of those values, therefore making it more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130911</commentid>
    <comment_count>13</comment_count>
      <attachid>262507</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-06 00:31:10 -0700</bug_when>
    <thetext>Created attachment 262507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130917</commentid>
    <comment_count>14</comment_count>
      <attachid>262507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-06 01:18:39 -0700</bug_when>
    <thetext>Comment on attachment 262507
Patch

Clearing flags on attachment: 262507

Committed r190611: &lt;http://trac.webkit.org/changeset/190611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130918</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-06 01:18:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130920</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-06 02:40:06 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 262507 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 262507
&gt; 
&gt; Committed r190611: &lt;http://trac.webkit.org/changeset/190611&gt;

It broke the EFL build as the red EWS bubble noticed it ...

In file included from DerivedSources/WebKit2/include/WebCore/UserContentController.h:1:0,
                 from ../../Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:75:
../../Source/WebCore/page/UserContentController.h:29:37: fatal error: ContentExtensionActions.h: No such file or directory
 #include &quot;ContentExtensionActions.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130921</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-06 02:42:13 -0700</bug_when>
    <thetext>Fix landed in https://trac.webkit.org/changeset/190612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130925</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-06 02:49:35 -0700</bug_when>
    <thetext>Additionally it broke the Apple Windows, WinCairo and GTK builds too.
My patch fixed EFL and GTK build, but Windows builds are still broken.

C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\DerivedSources\ForwardingHeaders\WebCore/UserContentController.h(29): fatal error C1083: Cannot open include file: &apos;ContentExtensionActions.h&apos;: No such file or directory (compiling source file C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\win\WebView.cpp) [C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\Source\WebKit\WebKit.vcxproj]

C:\Users\Alex\Documents\WinCairoBot\win-cairo-release\build\WebKitBuild\Release\DerivedSources\ForwardingHeaders\WebCore/UserContentController.h(29): fatal error C1083: Cannot open include file: &apos;ContentExtensionActions.h&apos;: No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130952</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-06 07:28:51 -0700</bug_when>
    <thetext>Sorry about that.  Fixed Windows build in http://trac.webkit.org/changeset/190614</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262282</attachid>
            <date>2015-10-01 14:08:46 -0700</date>
            <delta_ts>2015-10-01 16:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151001140820.patch</filename>
            <type>text/plain</type>
            <size>27179</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIEVu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6Z2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KToKKyAgICAgICAgSW5zdGVhZCBvZiBudWxsaW5nIG91dCB0aGUgUmVzb3VyY2VSZXF1ZXN0LCBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCAKKyAgICAgICAgbm93IHJldHVybnMg
YSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVxdWVzdCBzaG91bGQgYmUgYmxvY2tlZC4K
KyAgICAgICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgRG9jdW1lbnRMb2FkZXIgbmVlZHMg
dGhlIHJlcXVlc3QgdG8gbWFrZSB0aGUgUmVzb3VyY2VFcnJvci4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlOb25l
Q1NTUnVsZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICBEaXNwYXRjaCBhbiBlcnJvciBp
ZiB0aGUgcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlci4KKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29ubmVjdGlvblByb3BlcnRpZXMp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJDb250ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50
RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWN0aW9uc0ZvclJlc291cmNlTG9hZCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuaDoKKwogMjAxNS0xMC0wMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBMYXRjaCBkb2VzIG5vdCBjbGVhciB3aGVuIGEgc2Nyb2xs
IHNuYXAgYW5pbWF0aW9uIGlzIHRyaWdnZXJlZApJbmRleDogU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gMTkwMjk2KQorKysg
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5n
IGNvcHkpCkBAIC01OTIsNiArNTkyLDkgQEAKIC8qIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBk
ZXNjcmlwdGlvbiAqLwogIlRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93biIgPSAiVGhlIFVSTCBjYW7i
gJl0IGJlIHNob3duIjsKIAorLyogV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBk
ZXNjcmlwdGlvbiAqLworIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIi
ID0gIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiOworCiAvKiBXS0Vy
cm9yV2ViVmlld0ludmFsaWRhdGVkIGRlc2NyaXB0aW9uICovCiAiVGhlIFdLV2ViVmlldyB3YXMg
aW52YWxpZGF0ZWQiID0gIlRoZSBXS1dlYlZpZXcgd2FzIGludmFsaWRhdGVkIjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50
RXh0ZW5zaW9uc0JhYwogICAgIHJldHVybiBjb250ZW50RXh0ZW5zaW9uID8gY29udGVudEV4dGVu
c2lvbi0+Z2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KCkgOiBudWxscHRyOwogfQogCi12b2lk
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
ckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQorYm9vbCBDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgRG9jdW1l
bnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikKIHsKICAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gbnVsbHB0cjsKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwpAQCAtMTk4
LDggKzE5OCw5IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ28KICAg
ICBpZiAod2lsbEJsb2NrTG9hZCkgewogICAgICAgICBpZiAoY3VycmVudERvY3VtZW50KQogICAg
ICAgICAgICAgY3VycmVudERvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpDb250ZW50QmxvY2tlciwgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJDb250ZW50
IGJsb2NrZXIgcHJldmVudGVkIGZyYW1lIGRpc3BsYXlpbmcgIiwgbWFpbkRvY3VtZW50VVJMLnN0
cmluZygpLCAiIGZyb20gbG9hZGluZyBhIHJlc291cmNlIGZyb20gIiwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKSkpOwotICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGNvbnN0IFN0cmlu
ZyYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLmgJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
QWN0aW9uPiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3Bs
YXlOb25lU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAg
dm9pZCBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIp
OworICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50
TG9hZGVyKTsKIAogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpc3BsYXlOb25lQ1NTUnVsZSgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMjUsMTAgKzEyMjUsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRSZXNvdXJjZShjb25zCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKIAotICAgIGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAm
JiBkb2N1bWVudExvYWRlcikKLSAgICAgICAgcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkt
PnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdlLCByZXF1ZXN0LCBSZXNv
dXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpOwotCi0gICAgaWYgKHJlcXVlc3QuaXNO
dWxsKCkpIHsKKyAgICBpZiAocGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgZG9jdW1l
bnRMb2FkZXIKKyAgICAgICAgJiYgcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdlLCByZXF1ZXN0LCBSZXNvdXJjZVR5
cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpKSB7CisgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoKTsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3Jt
YXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDMsNiAr
MTQ0MywxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlZFJlc291cmNlUmVxdWVzdChyZXF1ZXN0LCBtYWlu
UmVzb3VyY2VMb2FkT3B0aW9ucyk7CiAgICAgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0LnNldEluaXRp
YXRvcigqdGhpcyk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5yZXF1ZXN0TWFpblJlc291cmNlKGNhY2hlZFJlc291cmNlUmVxdWVzdCk7CisKKyAgICBpZiAo
bV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX21h
aW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09ICJXZWJLaXRDb250ZW50Qmxv
Y2tlckRvbWFpbiIpIHsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlm
aWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWduSWRlbnRpZmll
clRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRl
ciwgdGhpcywgcmVxdWVzdCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlz
cGF0Y2hEaWRGYWlsTG9hZGluZyh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyLCBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKG1f
cmVxdWVzdCkpOworICAgICAgICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7CisgICAgfQorCiAg
ICAgaWYgKCFtX21haW5SZXNvdXJjZSkgewogICAgICAgICBzZXRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCgpKTsKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2FzIGFib3J0ZWQgYnkgY2xlYXJpbmcg
bV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNhdGlvbkNhY2hlSG9zdApJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIs
NiArMzIyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBl
cnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVy
biBlcnJvcjsgfQogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
IiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291
cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fu
bm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJu
IFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMjk2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxMCwxNSArMjcxMCwxNSBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTCiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBpZGVudGlmaWVyLCBl
cnJvcik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQotICAgIGlmIChlcnJvci5p
c051bGwoKSkgewotICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewotICAgICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewotICAgICAgICAgICAgICAgIGlmIChh
dXRvKiBjb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKCpwYWdlLCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJhdywgKm1fZG9jdW1lbnRMb2Fk
ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobmV3
UmVxdWVzdC5pc051bGwoKSkgeworICAgIHsKKyAgICAgICAgUGFnZSogcGFnZSA9IG51bGxwdHI7
CisgICAgICAgIFVzZXJDb250ZW50Q29udHJvbGxlciogY29udHJvbGxlciA9IG51bGxwdHI7Cisg
ICAgICAgIGlmIChlcnJvci5pc051bGwoKQorICAgICAgICAgICAgJiYgbV9kb2N1bWVudExvYWRl
cgorICAgICAgICAgICAgJiYgKHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKKyAgICAgICAgICAgICYm
IChjb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkpCisgICAgICAgICAg
ICAmJiBjb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCgqcGFn
ZSwgbmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcsICptX2RvY3VtZW50TG9hZGVyKSkgewor
ICAgICAgICAgICAgbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICAgICAg
ZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRp
YWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgIHJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7
CkBAIC0zMzI4LDYgKzMzMjgsMTMgQEAgUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6Y2FuY2Vs
bGVkRXJybwogICAgIHJldHVybiBlcnJvcjsKIH0KIAorUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
cjo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIGNvbnN0Cit7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IG1fY2xpZW50LmJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IocmVxdWVzdCk7CisgICAgZXJyb3Iuc2V0SXNDYW5jZWxs
YXRpb24odHJ1ZSk7CisgICAgcmV0dXJuIGVycm9yOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQog
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRnJhbWVMb2FkZXI6OmNvbm5lY3Rpb25Qcm9wZXJ0
aWVzKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0hvc3Rl
ZEJ5T2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5n
ZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEs
OCArMzQxLDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZQogICAg
ICAgICBQYWdlKiBwYWdlID0gZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5wYWdlKCk7CiAgICAgICAg
IGlmIChwYWdlICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8qIHVzZXJD
b250ZW50Q29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwotICAgICAg
ICAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICB1c2VyQ29u
dGVudENvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdl
LCByZXF1ZXN0LCBtX3Jlc291cmNlVHlwZSwgKm1fZG9jdW1lbnRMb2FkZXIpOworICAgICAgICAg
ICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcgorICAgICAgICAgICAgICAgICYmIHVzZXJDb250
ZW50Q29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2Us
IHJlcXVlc3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVudExvYWRlcikpCisgICAgICAgICAg
ICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
NCwxMSArNTE0LDE4IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWMK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKSAmJiBmcmFt
ZSgpLT5tYWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpICYmIG1fZG9j
dW1lbnRMb2FkZXIpCi0gICAgICAgIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpm
cmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCksIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVz
dCgpLCB0b1Jlc291cmNlVHlwZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpOwotCi0gICAgaWYg
KHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5tYWluRnJhbWUoKS5wYWdl
KCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KSAmJiBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIGlmIChmcmFtZSgpLT5tYWluRnJhbWUo
KS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLT5wcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yTG9hZCgqZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLCByZXF1ZXN0Lm11dGFi
bGVSZXNvdXJjZVJlcXVlc3QoKSwgdG9SZXNvdXJjZVR5cGUodHlwZSksICptX2RvY3VtZW50TG9h
ZGVyKSkgeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1h
aW5SZXNvdXJjZSkgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzb3VyY2UgPSBjcmVhdGVSZXNv
dXJjZSh0eXBlLCByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdC5jaGFy
c2V0KCksIHNlc3Npb25JRCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwor
ICAgICAgICAgICAgICAgIHJlc291cmNlLT5lcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzOjpM
b2FkRXJyb3IpOworICAgICAgICAgICAgICAgIHJlc291cmNlLT5zZXRSZXNvdXJjZUVycm9yKFJl
c291cmNlRXJyb3IoIldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluIiwgMCwgcmVxdWVzdC5tdXRh
YmxlUmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksICJUaGUgVVJMIHdhcyBibG9ja2Vk
IGJ5IGEgY29udGVudCBibG9ja2VyIikpOworICAgICAgICAgICAgICAgIHJldHVybiByZXNvdXJj
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgfQogI2VuZGlmCiAKICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDE1ICsyMDcsMTUg
QEAgdm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZQogICAgIG1fY29udGVu
dEV4dGVuc2lvbkJhY2tlbmQtPnJlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zKCk7CiB9CiAKLXZv
aWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9y
TG9hZChQYWdlJiBwYWdlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlwZSBy
ZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCiti
b29sIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
ckxvYWQoUGFnZSYgcGFnZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQog
ewogICAgIGlmICghbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXBhZ2UudXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQtPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKHJlcXVlc3QsIHJlc291cmNlVHlwZSwgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KTsKKyAgICByZXR1cm4gbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZC0+cHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCwgcmVzb3VyY2VUeXBlLCBpbml0aWF0aW5nRG9j
dW1lbnRMb2FkZXIpOwogfQogCiBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphY3Rpb25zRm9yUmVzb3VyY2VMb2FkKFBhZ2UmIHBhZ2UsIGNv
bnN0IFJlc291cmNlTG9hZEluZm8mIHJlc291cmNlTG9hZEluZm8pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5MDI5NikKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlVXNlckNvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50RXh0ZW5zaW9ucygpOwogCi0gICAgdm9p
ZCBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChQYWdlJiwgUmVzb3VyY2VSZXF1
ZXN0JiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKTsKKyAgICBib29sIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFBhZ2Um
LCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0
aW5nRG9jdW1lbnRMb2FkZXIpOwogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9u
PiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKFBhZ2UmLCBjb25zdCBSZXNvdXJjZUxvYWRJbmZvJik7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDIzKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMTAt
MDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBi
bG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFcnJvcnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJvcik6Cisg
ICAgICAgIE1ha2UgYSBuZXcgZXJyb3IgdHlwZSBmb3IgbG9hZHMgdGhhdCB3ZXJlIGJsb2NrZWQg
YnkgYSBjb250ZW50IGJsb2NrZXIuCisKIDIwMTUtMTAtMDEgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmsgY2FjaGU6IFN1YnJlc291cmNlIHJlZmVy
ZXIgaGVhZGVyIHdyb25nIGFmdGVyIGNhY2hlZCByZWRpcmVjdApJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBAIGVudW0gewogICAgIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dVUkwgPSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEsCiAgICAga1dLRXJyb3JDb2RlRnJhbWVMb2Fk
SW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSA9ICAgICAgICAgICAgIDEwMiwKICAgICBrV0tFcnJv
ckNvZGVDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9ICAgICAgICAgICAgICAgICAgICAgICAgMTAz
LAorICAgIGtXS0Vycm9yQ29kZUZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyID0gICAg
ICAgICAgICAgICAxMDQsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90RmluZFBsdWdJbiA9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIwMCwKICAgICBrV0tFcnJvckNvZGVDYW5ub3RMb2Fk
UGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxLAogICAgIGtXS0Vycm9y
Q29kZUphdmFVbmF2YWlsYWJsZSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIs
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9y
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRXJyb3JzLmgJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fu
Y2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTkwMjk2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMDYsNiArMTEwNiwxMSBAQCBSZXNvdXJj
ZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9jCiAgICAgcmV0dXJuIFdlYktpdDo6Ymxv
Y2tlZEVycm9yKHJlcXVlc3QpOwogfQogCitSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVy
cm9yKHJlcXVlc3QpOworfQorCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IHJldHVybiBXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2Nr
ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVy
cm9yc01hYy5tbQkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2NywxMSBAQCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwg
a1dLRXJyb3JDb2RlQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCksIFdFQl9V
SV9TVFJJTkcoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIsICJX
ZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikpOwogfQogCitS
ZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6
OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZUZyYW1lTG9hZEJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIHdhcyBibG9j
a2VkIGJ5IGEgY29udGVudCBibG9ja2VyIiwgIldlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJs
b2NrZXIgZGVzY3JpcHRpb24iKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5u
b3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhbuKAmXQg
YmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikpOwpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDIzKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTAtMDEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBv
cnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2Vy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICBBZGQgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJF
cnJvciBzbyBXZWJGcmFtZUxvYWRlckNsaWVudCBpcyBub3QgYW4gYWJzdHJhY3QgY2xhc3MsCisg
ICAgICAgIGJ1dCBpdCBzaG91bGQgYmUgdW51c2VkIGJlY2F1c2UgY29udGVudCBibG9ja2VycyBh
cmUgbm90IGVuYWJsZWQgb24gV0sxLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5IEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRvY3VtZW50IG1hcmtl
ciByZWN0cyBhdCB1c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExNDcsNiArMTE0NywxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpibG9jCiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhEb21h
aW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0IFVSTDpyZXF1ZXN0LnVybCgpXTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gQ29u
dGVudCBibG9ja2VycyBhcmUgbm90IGVuYWJsZWQgaW4gV2ViS2l0MS4KKyAgICByZXR1cm4gW05T
RXJyb3IgX3dlYktpdEVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktp
dEVycm9yQ2Fubm90U2hvd1VSTCBVUkw6cmVxdWVzdC51cmwoKV07Cit9CisKIFJlc291cmNlRXJy
b3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldp
dGhEb21haW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwg
VVJMOnJlcXVlc3QudXJsKCldOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDIzKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTAt
MDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBi
bG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNv
dXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L21haW4tcmVzb3VyY2UuaHRtbC5qc29uOiBBZGRlZC4KKwogMjAxNS0xMC0wMSAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXRjaCBkb2VzIG5vdCBjbGVh
ciB3aGVuIGEgc2Nyb2xsIHNuYXAgYW5pbWF0aW9uIGlzIHRyaWdnZXJlZApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL21haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9j
b250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCitD
T05TT0xFIE1FU1NBR0U6IENvbnRlbnQgYmxvY2tlciBwcmV2ZW50ZWQgZnJhbWUgZGlzcGxheWlu
ZyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3Vs
ZC1ub3QtbG9hZC5odG1sIGZyb20gbG9hZGluZyBhIHJlc291cmNlIGZyb20gaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRt
bAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91
bGQtbm90LWxvYWQuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21h
aW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTA0LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRt
bCI+CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3No
b3VsZC1ub3QtbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZworCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVz
b3VyY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVu
dGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0
bWwiKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwuanNvbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29u
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9tYWluLXJlc291cmNlLmh0bWwuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitbCisgICAgeworICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiYmxv
Y2siCisgICAgICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAgICAgICAgInVybC1m
aWx0ZXIiOiAic2hvdWxkLW5vdC1sb2FkIgorICAgICAgICB9CisgICAgfQorXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262298</attachid>
            <date>2015-10-01 16:42:08 -0700</date>
            <delta_ts>2015-10-01 18:18:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151001164142.patch</filename>
            <type>text/plain</type>
            <size>36012</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTEwLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIEVu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6Z2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KToKKyAgICAgICAgSW5zdGVhZCBvZiBudWxsaW5nIG91dCB0aGUgUmVzb3VyY2VSZXF1ZXN0LCBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCAKKyAgICAgICAgbm93IHJldHVybnMg
YSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgcmVxdWVzdCBzaG91bGQgYmUgYmxvY2tlZC4K
KyAgICAgICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgRG9jdW1lbnRMb2FkZXIgbmVlZHMg
dGhlIHJlcXVlc3QgdG8gbWFrZSB0aGUgUmVzb3VyY2VFcnJvci4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlOb25l
Q1NTUnVsZSk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICBEaXNwYXRjaCBhbiBlcnJvciBp
ZiB0aGUgcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlci4KKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29ubmVjdGlvblByb3BlcnRpZXMp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAg
ICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJDb250ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50
RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6YWN0aW9uc0ZvclJlc291cmNlTG9hZCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpibG9j
a2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbm5vdFNob3dV
UkxFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvRXJyb3JzR3RrLmg6CisKIDIwMTUtMTAtMDEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWlyUGxheSBzaG91bGQgbm90IHN0b3Ag
d2hlbiB0aGUgc2NyZWVuIGxvY2tzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkK
QEAgLTU5Miw2ICs1OTIsOSBAQAogLyogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0
aW9uICovCiAiVGhlIFVSTCBjYW7igJl0IGJlIHNob3duIiA9ICJUaGUgVVJMIGNhbuKAmXQgYmUg
c2hvd24iOwogCisvKiBXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0
aW9uICovCisiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIgPSAiVGhl
IFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciI7CisKIC8qIFdLRXJyb3JXZWJW
aWV3SW52YWxpZGF0ZWQgZGVzY3JpcHRpb24gKi8KICJUaGUgV0tXZWJWaWV3IHdhcyBpbnZhbGlk
YXRlZCIgPSAiVGhlIFdLV2ViVmlldyB3YXMgaW52YWxpZGF0ZWQiOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHlsZVNoZWV0Q29udGVudHMqIENvbnRlbnRFeHRlbnNp
b25zQmFjCiAgICAgcmV0dXJuIGNvbnRlbnRFeHRlbnNpb24gPyBjb250ZW50RXh0ZW5zaW9uLT5n
bG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgQ29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlwZSByZXNvdXJjZVR5cGUsIERvY3Vt
ZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCitib29sIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRl
ciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewogICAgIERvY3VtZW50KiBjdXJyZW50RG9j
dW1lbnQgPSBudWxscHRyOwogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CkBAIC0xOTgsOCArMTk4
LDkgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDbwogICAgIGlmICh3
aWxsQmxvY2tMb2FkKSB7CiAgICAgICAgIGlmIChjdXJyZW50RG9jdW1lbnQpCiAgICAgICAgICAg
ICBjdXJyZW50RG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNvbnRl
bnRCbG9ja2VyLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIkNvbnRlbnQgYmxvY2tl
ciBwcmV2ZW50ZWQgZnJhbWUgZGlzcGxheWluZyAiLCBtYWluRG9jdW1lbnRVUkwuc3RyaW5nKCks
ICIgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSAiLCByZXF1ZXN0LnVybCgpLnN0cmluZygp
KSk7Ci0gICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogY29uc3QgU3RyaW5nJiBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlOb25lQ1NTUnVsZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxBY3Rpb24+
IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0eWxlU2hlZXRDb250ZW50cyogZ2xvYmFsRGlzcGxheU5vbmVT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKLSAgICB2b2lkIHBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYsIFJlc291
cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CisgICAg
Ym9vbCBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIp
OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheU5vbmVDU1NSdWxlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTkw
Mjk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIyNSwxMCArMTIyNSw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZFJlc291cmNlKGNvbnMKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpOwogCi0gICAgaWYgKHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpICYmIGRvY3Vt
ZW50TG9hZGVyKQotICAgICAgICBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIHJlcXVlc3QsIFJlc291cmNlVHlw
ZTo6TWVkaWEsICpkb2N1bWVudExvYWRlcik7Ci0KLSAgICBpZiAocmVxdWVzdC5pc051bGwoKSkg
eworICAgIGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAmJiBkb2N1bWVudExvYWRl
cgorICAgICAgICAmJiBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIHJlcXVlc3QsIFJlc291cmNlVHlwZTo6TWVk
aWEsICpkb2N1bWVudExvYWRlcikpIHsKKyAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dCgpOwogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZvcm1hdEVycm9y
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Myw2ICsxNDQzLDE0
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QsIG1haW5SZXNvdXJj
ZUxvYWRPcHRpb25zKTsKICAgICBjYWNoZWRSZXNvdXJjZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0
aGlzKTsKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVl
c3RNYWluUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KTsKKworICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fbWFpblJlc291
cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWluKCkgPT0gIldlYktpdENvbnRlbnRCbG9ja2VyRG9t
YWluIikgeworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVy
ID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0
aWFsUmVxdWVzdChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlz
LCByZXF1ZXN0KTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERp
ZEZhaWxMb2FkaW5nKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2Fk
ZXIsIGZyYW1lTG9hZGVyKCktPmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IobV9yZXF1ZXN0
KSk7CisgICAgICAgIG1fbWFpblJlc291cmNlID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAo
IW1fbWFpblJlc291cmNlKSB7CiAgICAgICAgIHNldFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkp
OwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJvcnRlZCBieSBjbGVhcmluZyBtX3JlcXVl
c3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9uQ2FjaGVIb3N0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw2ICszMjIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyBSZXNvdXJjZUVycm9yIGVycm9yKCIi
LCAwLCAiIiwgIiIpOyBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsgcmV0dXJuIGVycm9y
OyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIp
OyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJv
cigiIiwgMCwgIiIsICIiKTsgfQogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3Vy
Y2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRl
cnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEw
LDE1ICsyNzEwLDE1IEBAIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVMK
ICAgICByZXF1ZXN0RnJvbURlbGVnYXRlKG5ld1JlcXVlc3QsIGlkZW50aWZpZXIsIGVycm9yKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYgKGVycm9yLmlzTnVsbCgp
KSB7Ci0gICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNv
bnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBh
Z2UsIG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChuZXdSZXF1ZXN0
LmlzTnVsbCgpKSB7CisgICAgeworICAgICAgICBQYWdlKiBwYWdlID0gbnVsbHB0cjsKKyAgICAg
ICAgVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250cm9sbGVyID0gbnVsbHB0cjsKKyAgICAgICAg
aWYgKGVycm9yLmlzTnVsbCgpCisgICAgICAgICAgICAmJiBtX2RvY3VtZW50TG9hZGVyCisgICAg
ICAgICAgICAmJiAocGFnZSA9IG1fZnJhbWUucGFnZSgpKQorICAgICAgICAgICAgJiYgKGNvbnRy
b2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSkKKyAgICAgICAgICAgICYmIGNv
bnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdlLCBuZXdS
ZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJhdywgKm1fZG9jdW1lbnRMb2FkZXIpKSB7CisgICAgICAg
ICAgICBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAgcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgICAgICAgICBkYXRhID0gbnVsbHB0cjsKQEAgLTMz
MjgsNiArMzMyOCwxMyBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJv
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpibG9j
a2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
Y29uc3QKK3sKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQuYmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKKyAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0
cnVlKTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGcmFtZUxvYWRlcjo6Y29ubmVjdGlvblByb3BlcnRpZXMoUmVz
b3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGhhbmRsZUZhbGxiYWNrQ29udGVudCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICBib29sIGlzSG9zdGVkQnlPYmpl
Y3RFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKKyAg
ICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw4ICszNDEs
OSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlCiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBmcmFtZUxvYWRlcigpLT5mcmFtZSgpLnBhZ2UoKTsKICAgICAgICAgaWYgKHBh
Z2UgJiYgbV9kb2N1bWVudExvYWRlcikgewogICAgICAgICAgICAgYXV0byogdXNlckNvbnRlbnRD
b250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCk7Ci0gICAgICAgICAgICBp
ZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHVzZXJDb250ZW50Q29u
dHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIHJlcXVl
c3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVudExvYWRlcik7CisgICAgICAgICAgICBpZiAo
dXNlckNvbnRlbnRDb250cm9sbGVyCisgICAgICAgICAgICAgICAgJiYgdXNlckNvbnRlbnRDb250
cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCgqcGFnZSwgcmVxdWVz
dCwgbV9yZXNvdXJjZVR5cGUsICptX2RvY3VtZW50TG9hZGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE0LDExICs1
MTQsMTggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAg
aWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIGZyYW1lKCktPm1h
aW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgbV9kb2N1bWVudExv
YWRlcikKLSAgICAgICAgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKmZyYW1lKCkt
Pm1haW5GcmFtZSgpLnBhZ2UoKSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHRv
UmVzb3VyY2VUeXBlKHR5cGUpLCAqbV9kb2N1bWVudExvYWRlcik7Ci0KLSAgICBpZiAocmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKSAmJiBm
cmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpICYmIG1f
ZG9jdW1lbnRMb2FkZXIpIHsKKyAgICAgICAgaWYgKGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2Uo
KS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkKCpmcmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCksIHJlcXVlc3QubXV0YWJsZVJlc291
cmNlUmVxdWVzdCgpLCB0b1Jlc291cmNlVHlwZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpKSB7
CisgICAgICAgICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291
cmNlKSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5
cGUsIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwg
c2Vzc2lvbklEKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgICAg
ICAgICAgICAgcmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJv
cik7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VF
cnJvcigiV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4iLCAwLCByZXF1ZXN0Lm11dGFibGVSZXNv
dXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBj
b250ZW50IGJsb2NrZXIiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9
CiAjZW5kaWYKIAogICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRv
bigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsMTUgKzIwNywxNSBAQCB2b2lk
IFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlCiAgICAgbV9jb250ZW50RXh0ZW5z
aW9uQmFja2VuZC0+cmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKIH0KIAotdm9pZCBVc2Vy
Q29udGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFBh
Z2UmIHBhZ2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VUeXBlIHJlc291cmNl
VHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikKK2Jvb2wgVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChQ
YWdlJiBwYWdlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlwZSByZXNvdXJj
ZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCiB7CiAgICAg
aWYgKCFtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcGFnZS51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9j
b250ZW50RXh0ZW5zaW9uQmFja2VuZC0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zvckxv
YWQocmVxdWVzdCwgcmVzb3VyY2VUeXBlLCBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAg
IHJldHVybiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5wcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yTG9hZChyZXF1ZXN0LCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExv
YWRlcik7CiB9CiAKIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoUGFnZSYgcGFnZSwgY29uc3QgUmVz
b3VyY2VMb2FkSW5mbyYgcmVzb3VyY2VMb2FkSW5mbykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
OTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVVc2Vy
Q29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKCk7CiAKLSAgICB2b2lkIHByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFBhZ2UmLCBSZXNvdXJjZVJlcXVlc3QmLCBS
ZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwor
ICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUGFnZSYsIFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1
bWVudExvYWRlcik7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IGFjdGlv
bnNGb3JSZXNvdXJjZUxvYWQoUGFnZSYsIGNvbnN0IFJlc291cmNlTG9hZEluZm8mKTsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAkocmV2
aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDExIEBAIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBu
ZXR3b3JrIHBvcnQiKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2Nr
ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiQmxvY2tlZCBi
eSBjb250ZW50IGJsb2NrZXIiKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVSTCBjYW5ub3QgYmUgc2hvd24iKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5oCShyZXZpc2lvbiAx
OTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDggQEAgZW51bSBQb2xpY3lFcnJvciB7CiAgICAgUG9saWN5
RXJyb3JDYW5ub3RTaG93TWltZVR5cGUgPSAxMDAsCiAgICAgUG9saWN5RXJyb3JDYW5ub3RTaG93
VVJMID0gMTAxLAogICAgIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNo
YW5nZSA9IDEwMiwKLSAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gMTAz
CisgICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKKyAgICBQb2xp
Y3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyID0gMTA0CiB9OwogCiBlbnVtIFBsdWdpbkVy
cm9yIHsKQEAgLTgyLDYgKzgzLDcgQEAgZW51bSBQcmludEVycm9yIHsKIAogUmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBibG9j
a2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNv
dXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTEgQEAgUmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmlj
dGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlD
b250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiQmxvY2tlZCBieSBjb250
ZW50IGJsb2NrZXIiKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuaAkocmV2aXNpb24gMTkwMjk2KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw4IEBAIGVudW0gUG9saWN5RXJyb3IgewogICAgIFBvbGljeUVycm9yQ2Fubm90
U2hvd01pbWVUeXBlID0gMTAwLAogICAgIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCA9IDEwMSwK
ICAgICBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgPSAxMDIs
Ci0gICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMworICAgIFBvbGlj
eUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAxMDMsCisgICAgUG9saWN5RXJyb3JCbG9j
a2VkQnlDb250ZW50QmxvY2tlciA9IDEwNAogfTsKIAogZW51bSBQbHVnaW5FcnJvciB7CkBAIC03
NSw2ICs3Niw3IEBAIGVudW0gUHJpbnRFcnJvciB7CiAKIFJlc291cmNlRXJyb3IgY2FuY2VsbGVk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgY2Fu
bm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3VyY2VFcnJvciBp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0MzYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxNS0xMC0wMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
cG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250ZW50IGJsb2Nr
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLRXJyb3JSZWYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVycm9ycy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNs
aWVudDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEJ5
Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJv
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0Ojpi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Y2Fubm90U2hv
d1VSTEVycm9yKToKKyAgICAgICAgTWFrZSBhIG5ldyBlcnJvciB0eXBlIGZvciBsb2FkcyB0aGF0
IHdlcmUgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlci4KKwogMjAxNS0xMC0wMSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0d29yayBjYWNoZTogU3Vi
cmVzb3VyY2UgcmVmZXJlciBoZWFkZXIgd3JvbmcgYWZ0ZXIgY2FjaGVkIHJlZGlyZWN0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmgJKHJldmlzaW9uIDE5MDI5
NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAgZW51bSB7CiAgICAga1dLRXJyb3JDb2RlQ2Fubm90U2hv
d1VSTCA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwKICAgICBrV0tFcnJv
ckNvZGVGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlID0gICAgICAgICAgICAgMTAy
LAogICAgIGtXS0Vycm9yQ29kZUNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gICAgICAgICAgICAg
ICAgICAgICAgICAxMDMsCisgICAga1dLRXJyb3JDb2RlRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXIgPSAgICAgICAgICAgICAgIDEwNCwKICAgICBrV0tFcnJvckNvZGVDYW5ub3RGaW5k
UGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwLAogICAgIGtXS0Vycm9y
Q29kZUNhbm5vdExvYWRQbHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEs
CiAgICAga1dLRXJyb3JDb2RlSmF2YVVuYXZhaWxhYmxlID0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIwMiwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRXJyb3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw2ICsxMTA2
LDExIEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2MKICAgICByZXR1
cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNv
bnRlbnRCbG9ja2VyRXJyb3IocmVxdWVzdCk7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwMjk2KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNF
ZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDExIEBAIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gV2ViQ29yZTo6YmxvY2tlZEVycm9yKHJlcXVlc3Qp
OwogfQogCitSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKHJlcXVlc3QpOworfQorCiBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRXJyb3JzR3RrLmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNiArNTAsMTEgQEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyYwogICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jl
c291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyRXJyb3IocmVxdWVzdCk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01h
Yy5tbQkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
NywxMSBAQCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJy
b3JDb2RlQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIsICJXZWJLaXRF
cnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikpOwogfQogCitSZXNvdXJj
ZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktp
dEVycm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZUZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIHdhcyBibG9ja2VkIGJ5
IGEgY29udGVudCBibG9ja2VyIiwgIldlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIg
ZGVzY3JpcHRpb24iKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5ub3RTaG93
VVJMLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhbuKAmXQgYmUgc2hv
d24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikpOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDM2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTAtMDEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBvcnQgZXJy
b3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Ymxv
Y2tlZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RT
aG93VVJMRXJyb3IpOgorICAgICAgICBBZGQgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvciBz
byBXZWJGcmFtZUxvYWRlckNsaWVudCBpcyBub3QgYW4gYWJzdHJhY3QgY2xhc3MsCisgICAgICAg
IGJ1dCBpdCBzaG91bGQgYmUgdW51c2VkIGJlY2F1c2UgY29udGVudCBibG9ja2VycyBhcmUgbm90
IGVuYWJsZWQgb24gV0sxLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRvY3VtZW50IG1hcmtlciByZWN0
cyBhdCB1c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fu
bm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGlj
eUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTExNDcsNiArMTE0NywxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpibG9jCiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhEb21haW46V2Vi
S2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0IFVS
TDpyZXF1ZXN0LnVybCgpXTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gQ29udGVudCBi
bG9ja2VycyBhcmUgbm90IGVuYWJsZWQgaW4gV2ViS2l0MS4KKyAgICByZXR1cm4gW05TRXJyb3Ig
X3dlYktpdEVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVycm9y
Q2Fubm90U2hvd1VSTCBVUkw6cmVxdWVzdC51cmwoKV07Cit9CisKIFJlc291cmNlRXJyb3IgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhEb21h
aW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgVVJMOnJl
cXVlc3QudXJsKCldOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDM2KQorKysg
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTUtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQg
YnkgY29udGVudCBibG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQWRkZWQgc3R1
YiB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2VkLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5IEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRvY3VtZW50
IG1hcmtlciByZWN0cyBhdCB1c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODU4LDYgKzg1OCwxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9j
CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2Vi
S2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwg
V0VCX1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0
IiwgIldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CiB9
CiAKK1Jlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIENvbnRlbnQgQmxvY2tlcnMgYXJlIG5vdCBlbmFi
bGVkIGZvciBXSzEuCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9y
RG9tYWluKSwgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQg
bmV0d29yayBwb3J0IiwgIldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3Jp
cHRpb24iKSk7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5v
dFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JD
YW5ub3RTaG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJUaGUg
VVJMIGNhblx4RTJceDgwXHg5OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJM
IGRlc2NyaXB0aW9uIikpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTAyOTYpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDM3KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTUtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29u
dGVudCBibG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDk3MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFp
bi1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29uOiBBZGRlZC4KKwogMjAxNS0xMC0wMSAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBaXJQ
bGF5IHNob3VsZCBub3Qgc3RvcCB3aGVuIHRoZSBzY3JlZW4gbG9ja3MKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACitodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29u
dGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sIC0gZGlkRmluaXNoTG9hZGluZworQ09O
U09MRSBNRVNTQUdFOiBDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZyYW1lIGRpc3BsYXlpbmcg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQt
bm90LWxvYWQuaHRtbCBmcm9tIGxvYWRpbmcgYSByZXNvdXJjZSBmcm9tIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwK
K2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvc2hvdWxk
LW5vdC1sb2FkLmh0bWwgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWlu
IFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwNCwgZmFpbGluZyBVUkwgImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwi
PgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91
bGQtbm90LWxvYWQuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKKwpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291
cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRl
eHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcg
QEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5odG1s
Iik7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4
dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwuanNvbgko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMv
bWFpbi1yZXNvdXJjZS5odG1sLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
WworICAgIHsKKyAgICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2Nr
IgorICAgICAgICB9LAorICAgICAgICAidHJpZ2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmls
dGVyIjogInNob3VsZC1ub3QtbG9hZCIKKyAgICAgICAgfQorICAgIH0KK10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262308</attachid>
            <date>2015-10-01 18:18:42 -0700</date>
            <delta_ts>2015-10-01 22:41:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151001181816.patch</filename>
            <type>text/plain</type>
            <size>37692</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQ0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE1LTEwLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9t
YWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5nczoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJy
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjptYWtlX2Vycm9yX2Nv
ZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICBJbnN0ZWFkIG9mIG51bGxp
bmcgb3V0IHRoZSBSZXNvdXJjZVJlcXVlc3QsIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkIAorICAgICAgICBub3cgcmV0dXJucyBhIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSByZXF1ZXN0IHNob3VsZCBiZSBibG9ja2VkLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBiZWNh
dXNlIHRoZSBEb2N1bWVudExvYWRlciBuZWVkcyBhIENhY2hlZFJlc291cmNlIHdpdGggYW4gZXJy
b3IgcmVwcmVzZW50aW5nIHRoZSBibG9ja2luZworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5vbmVDU1NSdWxlKToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIERpc3BhdGNoIGFuIGVycm9yIGlmIHRoZSByZXNv
dXJjZSBpcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyLgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb25uZWN0aW9uUHJvcGVydGllcyk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjph
Y3Rpb25zRm9yUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJv
bGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuaDoKKwogMjAxNS0xMC0wMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBBaXJQbGF5IHNob3VsZCBub3Qgc3RvcCB3aGVuIHRoZSBz
Y3JlZW4gbG9ja3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFi
bGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtNTkyLDYg
KzU5Miw5IEBACiAvKiBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24gKi8KICJU
aGUgVVJMIGNhbuKAmXQgYmUgc2hvd24iID0gIlRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93biI7CiAK
Ky8qIFdlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgZGVzY3JpcHRpb24gKi8KKyJU
aGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyIiA9ICJUaGUgVVJMIHdhcyBi
bG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyIjsKKwogLyogV0tFcnJvcldlYlZpZXdJbnZhbGlk
YXRlZCBkZXNjcmlwdGlvbiAqLwogIlRoZSBXS1dlYlZpZXcgd2FzIGludmFsaWRhdGVkIiA9ICJU
aGUgV0tXZWJWaWV3IHdhcyBpbnZhbGlkYXRlZCI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5oCShy
ZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBlbnVt
IGNsYXNzIENvbnRlbnRFeHRlbnNpb25FcnJvciB7CiAgICAgSlNPTkludmFsaWRSZWdleCwKIH07
CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiA9ICJXZWJL
aXRDb250ZW50QmxvY2tlckRvbWFpbiI7CisgICAgCiBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGQ6
OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgpOwogCiBpbmxp
bmUgc3RkOjplcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShDb250ZW50RXh0ZW5zaW9uRXJyb3Ig
ZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHJldmlzaW9uIDE5MDI5NikK
KysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHlsZVNoZWV0Q29u
dGVudHMqIENvbnRlbnRFeHRlbnNpb25zQmFjCiAgICAgcmV0dXJuIGNvbnRlbnRFeHRlbnNpb24g
PyBjb250ZW50RXh0ZW5zaW9uLT5nbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoKSA6IG51bGxw
dHI7CiB9CiAKLXZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIp
Citib29sIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewogICAg
IERvY3VtZW50KiBjdXJyZW50RG9jdW1lbnQgPSBudWxscHRyOwogICAgIFVSTCBtYWluRG9jdW1l
bnRVUkw7CkBAIC0xOTgsOCArMTk4LDkgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6
OnByb2Nlc3NDbwogICAgIGlmICh3aWxsQmxvY2tMb2FkKSB7CiAgICAgICAgIGlmIChjdXJyZW50
RG9jdW1lbnQpCiAgICAgICAgICAgICBjdXJyZW50RG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkNvbnRlbnRCbG9ja2VyLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VT
dHJpbmcoIkNvbnRlbnQgYmxvY2tlciBwcmV2ZW50ZWQgZnJhbWUgZGlzcGxheWluZyAiLCBtYWlu
RG9jdW1lbnRVUkwuc3RyaW5nKCksICIgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSAiLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpKSk7Ci0gICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVl
c3QoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0K
IAogY29uc3QgU3RyaW5nJiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlOb25lQ1NT
UnVsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAkocmV2aXNpb24gMTkwMjk2KQorKysg
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3RvcjxBY3Rpb24+IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VMb2FkSW5mbyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0eWxlU2hlZXRDb250ZW50
cyogZ2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikg
Y29uc3Q7CiAKLSAgICB2b2lkIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcik7CisgICAgYm9vbCBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9y
TG9hZChSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0
aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5vbmVDU1NSdWxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyNSwxMCArMTIyNSw4IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnMKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCh1cmwpOwogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAgaWYgKHBhZ2UtPnVzZXJDb250ZW50
Q29udHJvbGxlcigpICYmIGRvY3VtZW50TG9hZGVyKQotICAgICAgICBwYWdlLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2Us
IHJlcXVlc3QsIFJlc291cmNlVHlwZTo6TWVkaWEsICpkb2N1bWVudExvYWRlcik7Ci0KLSAgICBp
ZiAocmVxdWVzdC5pc051bGwoKSkgeworICAgIGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKSAmJiBkb2N1bWVudExvYWRlciAmJiBwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+
cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIHJlcXVlc3QsIFJlc291
cmNlVHlwZTo6TWVkaWEsICpkb2N1bWVudExvYWRlcikpIHsKKyAgICAgICAgcmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCgpOwogICAgICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6
OkZvcm1hdEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSYXdS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAi
Q29udGVudEV4dGVuc2lvbkVycm9yLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudFBhcnNlci5oIgpAQCAtMTQ0Myw2ICsx
NDQ0LDE0IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QsIG1haW5S
ZXNvdXJjZUxvYWRPcHRpb25zKTsKICAgICBjYWNoZWRSZXNvdXJjZVJlcXVlc3Quc2V0SW5pdGlh
dG9yKCp0aGlzKTsKICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3RNYWluUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KTsKKworICAgIGlmICht
X21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fbWFp
blJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWluKCkgPT0gQ29udGVudEV4dGVuc2lvbnM6
OldlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluKSB7CisgICAgICAgIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCkuY3Jl
YXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIsIHRoaXMsIHJlcXVlc3QpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoRGlkRmFpbExvYWRpbmcodGhpcywgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgbV9tYWluUmVzb3VyY2UgPSBudWxs
cHRyOworICAgIH0KKwogICAgIGlmICghbV9tYWluUmVzb3VyY2UpIHsKICAgICAgICAgc2V0UmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIC8vIElmIHRoZSBsb2FkIHdhcyBhYm9y
dGVkIGJ5IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJsZSB0aGUgQXBwbGljYXRpb25D
YWNoZUhvc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9u
IDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7
IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0
aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291
cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KKyAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CiAgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwg
IiIsICIiKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3MTEsMTggKzI3MTEsMTYgQEAgdW5zaWduZWQgbG9uZyBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlUwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
ICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJv
bGxlcigpKQotICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZCgqcGFnZSwgbmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcs
ICptX2RvY3VtZW50TG9hZGVyKTsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBh
Z2UoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29u
dGVudENvbnRyb2xsZXIoKSkgeworICAgICAgICAgICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
ICYmIGNvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdl
LCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJhdywgKm1fZG9jdW1lbnRMb2FkZXIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG5ld1JlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCBpbml0aWFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgZW1wdHlTdHJp
bmcoKSk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKLSAgICAg
ICAgICAgIGRhdGEgPSBudWxscHRyOwotICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKQEAgLTMz
MjgsNiArMzMyNiwxMiBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJv
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCitSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpibG9j
a2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
Y29uc3QKK3sKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQuYmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKICNpZiBQ
TEFURk9STShJT1MpCiBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGcmFtZUxvYWRlcjo6Y29u
bmVjdGlvblByb3BlcnRpZXMoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRsZUZhbGxiYWNrQ29udGVudCgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAg
ICBib29sIGlzSG9zdGVkQnlPYmplY3RFbGVtZW50KCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjI5LDYgKzIyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAw
OwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpID0gMDsKKyAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVk
Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDI5
NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0MSw4ICszNDEsOCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3RJbnRlCiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZUxvYWRlcigpLT5mcmFtZSgpLnBh
Z2UoKTsKICAgICAgICAgaWYgKHBhZ2UgJiYgbV9kb2N1bWVudExvYWRlcikgewogICAgICAgICAg
ICAgYXV0byogdXNlckNvbnRlbnRDb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCk7Ci0gICAgICAgICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyKQotICAgICAgICAg
ICAgICAgIHVzZXJDb250ZW50Q29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxl
c0ZvckxvYWQoKnBhZ2UsIHJlcXVlc3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVudExvYWRl
cik7CisgICAgICAgICAgICBpZiAodXNlckNvbnRlbnRDb250cm9sbGVyICYmIHVzZXJDb250ZW50
Q29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIHJl
cXVlc3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVudExvYWRlcikpCisgICAgICAgICAgICAg
ICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2hy
b21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29udGVudEV4dGVu
c2lvbkVycm9yLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKICNpbmNsdWRl
ICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTUx
LDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNTE0LDExICs1MTYsMTggQEAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYgKGZyYW1l
KCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgp
LnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgbV9kb2N1bWVudExvYWRlcikKLSAg
ICAgICAgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKmZyYW1lKCktPm1haW5GcmFt
ZSgpLnBhZ2UoKSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHRvUmVzb3VyY2VU
eXBlKHR5cGUpLCAqbV9kb2N1bWVudExvYWRlcik7Ci0KLSAgICBpZiAocmVxdWVzdC5tdXRhYmxl
UmVzb3VyY2VSZXF1ZXN0KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGlmIChmcmFtZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKSAmJiBmcmFtZSgpLT5t
YWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpICYmIG1fZG9jdW1lbnRM
b2FkZXIpIHsKKyAgICAgICAgaWYgKGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpm
cmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCksIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVz
dCgpLCB0b1Jlc291cmNlVHlwZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpKSB7CisgICAgICAg
ICAgICBpZiAodHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklE
KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CisgICAg
ICAgICAgICAgICAgcmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250
ZW50RXh0ZW5zaW9uczo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2Fz
IGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250
ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291
cmNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0KKyAgICB9CiAjZW5kaWYKIAogICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsMTUgKzIwNywx
NSBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlCiAgICAgbV9jb250
ZW50RXh0ZW5zaW9uQmFja2VuZC0+cmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKIH0KIAot
dm9pZCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkKFBhZ2UmIHBhZ2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VUeXBl
IHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikK
K2Jvb2wgVXNlckNvbnRlbnRDb250cm9sbGVyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZChQYWdlJiBwYWdlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlVHlw
ZSByZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIp
CiB7CiAgICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcGFnZS51c2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZC0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQocmVxdWVzdCwgcmVzb3VyY2VUeXBlLCBpbml0aWF0aW5nRG9jdW1lbnRMb2Fk
ZXIpOworICAgIHJldHVybiBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5wcm9jZXNzQ29udGVu
dEV4dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0LCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcik7CiB9CiAKIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBV
c2VyQ29udGVudENvbnRyb2xsZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoUGFnZSYgcGFnZSwg
Y29uc3QgUmVzb3VyY2VMb2FkSW5mbyYgcmVzb3VyY2VMb2FkSW5mbykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkwMjk2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZW1vdmVVc2VyQ29udGVudEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKCk7CiAKLSAgICB2
b2lkIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFBhZ2UmLCBSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRM
b2FkZXIpOworICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUGFn
ZSYsIFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRp
YXRpbmdEb2N1bWVudExvYWRlcik7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b24+IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoUGFnZSYsIGNvbnN0IFJlc291cmNlTG9hZEluZm8m
KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZs
LmNwcAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vy
cm9yc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDExIEBAIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVz
dHJpY3RlZCBuZXR3b3JrIHBvcnQiKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qb2xpY3ksIFBvbGljeUVycm9yQmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgi
QmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90
U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93
VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIlVSTCBjYW5ub3QgYmUg
c2hvd24iKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5oCShy
ZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDggQEAgZW51bSBQb2xpY3lFcnJvciB7CiAg
ICAgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUgPSAxMDAsCiAgICAgUG9saWN5RXJyb3JD
YW5ub3RTaG93VVJMID0gMTAxLAogICAgIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRC
eVBvbGljeUNoYW5nZSA9IDEwMiwKLSAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0ID0gMTAzCisgICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywK
KyAgICBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyID0gMTA0CiB9OwogCiBlbnVt
IFBsdWdpbkVycm9yIHsKQEAgLTgyLDYgKzgzLDcgQEAgZW51bSBQcmludEVycm9yIHsKIAogUmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VF
cnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTEg
QEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVz
ZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JC
bG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiQmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIiKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuaAkocmV2aXNpb24gMTkw
Mjk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw4IEBAIGVudW0gUG9saWN5RXJyb3IgewogICAgIFBvbGljeUVy
cm9yQ2Fubm90U2hvd01pbWVUeXBlID0gMTAwLAogICAgIFBvbGljeUVycm9yQ2Fubm90U2hvd1VS
TCA9IDEwMSwKICAgICBQb2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFu
Z2UgPSAxMDIsCi0gICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMwor
ICAgIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAxMDMsCisgICAgUG9saWN5
RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciA9IDEwNAogfTsKIAogZW51bSBQbHVnaW5FcnJv
ciB7CkBAIC03NSw2ICs3Niw3IEBAIGVudW0gUHJpbnRFcnJvciB7CiAKIFJlc291cmNlRXJyb3Ig
Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKK1Jlc291cmNlRXJyb3IgYmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNl
RXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3Vy
Y2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0MzYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAx
NS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250
ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLRXJy
b3JSZWYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEVy
cm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNv
bnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEVy
cm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAg
ICAgICAgTWFrZSBhIG5ldyBlcnJvciB0eXBlIGZvciBsb2FkcyB0aGF0IHdlcmUgYmxvY2tlZCBi
eSBhIGNvbnRlbnQgYmxvY2tlci4KKwogMjAxNS0xMC0wMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV0d29yayBjYWNoZTogU3VicmVzb3VyY2UgcmVmZXJl
ciBoZWFkZXIgd3JvbmcgYWZ0ZXIgY2FjaGVkIHJlZGlyZWN0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmgJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAgZW51bSB7CiAgICAga1dLRXJyb3JDb2RlQ2Fubm90U2hvd1VSTCA9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwKICAgICBrV0tFcnJvckNvZGVGcmFtZUxvYWRJ
bnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlID0gICAgICAgICAgICAgMTAyLAogICAgIGtXS0Vycm9y
Q29kZUNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gICAgICAgICAgICAgICAgICAgICAgICAxMDMs
CisgICAga1dLRXJyb3JDb2RlRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgPSAgICAg
ICAgICAgICAgIDEwNCwKICAgICBrV0tFcnJvckNvZGVDYW5ub3RGaW5kUGx1Z0luID0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjAwLAogICAgIGtXS0Vycm9yQ29kZUNhbm5vdExvYWRQ
bHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEsCiAgICAga1dLRXJyb3JD
b2RlSmF2YVVuYXZhaWxhYmxlID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMiwK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3Jz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFcnJvcnMuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5j
ZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxOTAyOTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw2ICsxMTA2LDExIEBAIFJlc291cmNl
RXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2MKICAgICByZXR1cm4gV2ViS2l0OjpibG9j
a2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQoreworICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJy
b3IocmVxdWVzdCk7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNh
bm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
cmV0dXJuIFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVy
cm9yc0VmbC5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDExIEBAIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmMK
ICAgICByZXR1cm4gV2ViQ29yZTo6YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCitSZXNvdXJj
ZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKHJlcXVlc3QpOworfQorCiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNh
bm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNw
cAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
MTEgQEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgIHJldHVy
biBXZWJDb3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IocmVx
dWVzdCk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hvd1VS
TEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQkocmV2aXNpb24g
MTkwMjk2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRXJyb3JzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMSBAQCBSZXNvdXJj
ZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlQ2Fubm90VXNl
UmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIk5vdCBhbGxvd2Vk
IHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIsICJXZWJLaXRFcnJvckNhbm5vdFVzZVJl
c3RyaWN0ZWRQb3J0IGRlc2NyaXB0aW9uIikpOwogfQogCitSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorewor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9yQ29kZUZyYW1lTG9hZEJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVy
bCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIHdhcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9j
a2VyIiwgIldlYktpdEVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgZGVzY3JpcHRpb24iKSk7
Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3
ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5ub3RTaG93VVJMLCByZXF1ZXN0LnVy
bCgpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhbuKAmXQgYmUgc2hvd24iLCAiV2ViS2l0RXJy
b3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMTkwNDM2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJl
c291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMjE5NzA1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICBBZGQgYmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvciBzbyBXZWJGcmFtZUxvYWRlckNsaWVudCBpcyBub3QgYW4gYWJzdHJh
Y3QgY2xhc3MsCisgICAgICAgIGJ1dCBpdCBzaG91bGQgYmUgdW51c2VkIGJlY2F1c2UgY29udGVu
dCBibG9ja2VycyBhcmUgbm90IGVuYWJsZWQgb24gV0sxLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRv
Y3VtZW50IG1hcmtlciByZWN0cyBhdCB1c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwMjk2KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDYgKzE1Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTkwMjk2
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExNDcsNiArMTE0NywxMiBAQCBSZXNvdXJjZUVycm9y
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9jCiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRF
cnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFVz
ZVJlc3RyaWN0ZWRQb3J0IFVSTDpyZXF1ZXN0LnVybCgpXTsKIH0KIAorUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgLy8gQ29udGVudCBibG9ja2VycyBhcmUgbm90IGVuYWJsZWQgaW4gV2ViS2l0MS4KKyAg
ICByZXR1cm4gW05TRXJyb3IgX3dlYktpdEVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFp
biBjb2RlOldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBVUkw6cmVxdWVzdC51cmwoKV07Cit9CisK
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFtOU0Vycm9yIF93
ZWJLaXRFcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNh
bm5vdFNob3dVUkwgVVJMOnJlcXVlc3QudXJsKCldOwpJbmRleDogU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2
aXNpb24gMTkwNDM2KQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTAtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJl
c291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMjE5NzA1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQWRkZWQgc3R1YiB0aGF0
IHNob3VsZCBuZXZlciBiZSB1c2VkLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5IEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRvY3VtZW50IG1hcmtl
ciByZWN0cyBhdCB1c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDE5MDI5NikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU4LDYg
Kzg1OCwxMiBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9jCiAgICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJy
b3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJ
X1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IiwgIldl
YktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CiB9CiAKK1Jl
c291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIENvbnRlbnQgQmxvY2tlcnMgYXJlIG5vdCBlbmFibGVkIGZv
ciBXSzEuCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWlu
KSwgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgV0VCX1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29y
ayBwb3J0IiwgIldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24i
KSk7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dV
UkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JDYW5ub3RT
aG93VVJMLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNh
blx4RTJceDgwXHg5OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2Ny
aXB0aW9uIikpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTAyOTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2Vy
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNDM3KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTAt
MDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXBvcnQgZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBi
bG9ja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk3MTkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjE5NzA1OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29u
OiBBZGRlZC4KKwogMjAxNS0xMC0wMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBBaXJQbGF5IHNob3VsZCBub3Qgc3RvcCB3aGVuIHRoZSBz
Y3JlZW4gbG9ja3MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lv
bnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMv
bWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBA
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5o
dG1sIC0gZGlkRmluaXNoTG9hZGluZworQ09OU09MRSBNRVNTQUdFOiBDb250ZW50IGJsb2NrZXIg
cHJldmVudGVkIGZyYW1lIGRpc3BsYXlpbmcgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRl
eHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbCBmcm9tIGxvYWRpbmcgYSBy
ZXNvdXJjZSBmcm9tIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNv
dXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50
ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwgLSBkaWRGYWlsTG9hZGlu
Z1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIFdlYktpdEVycm9yRG9tYWluLCBjb2RlIDEwNCwg
ZmFpbGluZyBVUkwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNv
dXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwiPgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRl
bnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbCAtIGRpZEZpbmlzaExv
YWRpbmcKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9t
YWluLXJlc291cmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVz
b3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5odG1sIik7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sLmpz
b24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9tYWluLXJlc291cmNlLmh0bWwuanNvbgkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorWworICAgIHsKKyAgICAgICAgImFjdGlvbiI6IHsK
KyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9LAorICAgICAgICAidHJpZ2dl
ciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogInNob3VsZC1ub3QtbG9hZCIKKyAgICAg
ICAgfQorICAgIH0KK10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262315</attachid>
            <date>2015-10-01 22:41:09 -0700</date>
            <delta_ts>2015-10-02 09:23:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151001224043.patch</filename>
            <type>text/plain</type>
            <size>38288</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE1LTEwLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9t
YWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5nczoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJy
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjptYWtlX2Vycm9yX2Nv
ZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICBJbnN0ZWFkIG9mIG51bGxp
bmcgb3V0IHRoZSBSZXNvdXJjZVJlcXVlc3QsIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkIAorICAgICAgICBub3cgcmV0dXJucyBhIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSByZXF1ZXN0IHNob3VsZCBiZSBibG9ja2VkLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBiZWNh
dXNlIHRoZSBEb2N1bWVudExvYWRlciBuZWVkcyBhIENhY2hlZFJlc291cmNlIHdpdGggYW4gZXJy
b3IgcmVwcmVzZW50aW5nIHRoZSBibG9ja2luZworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5vbmVDU1NSdWxlKToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIERpc3BhdGNoIGFuIGVycm9yIGlmIHRoZSByZXNv
dXJjZSBpcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyLgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb25uZWN0aW9uUHJvcGVydGllcyk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjph
Y3Rpb25zRm9yUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJv
bGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuaDoKKwogMjAxNS0xMC0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUm9sbG91dCByMTkwNDQ2IGZvciB0aGUgbW9tZW50LiBJdCBicm9rZSB0aGUgYnVp
bGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1OTIsOSBA
QAogLyogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uICovCiAiVGhlIFVSTCBj
YW7igJl0IGJlIHNob3duIiA9ICJUaGUgVVJMIGNhbuKAmXQgYmUgc2hvd24iOwogCisvKiBXZWJL
aXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uICovCisiVGhlIFVSTCB3
YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIgPSAiVGhlIFVSTCB3YXMgYmxvY2tlZCBi
eSBhIGNvbnRlbnQgYmxvY2tlciI7CisKIC8qIFdLRXJyb3JXZWJWaWV3SW52YWxpZGF0ZWQgZGVz
Y3JpcHRpb24gKi8KICJUaGUgV0tXZWJWaWV3IHdhcyBpbnZhbGlkYXRlZCIgPSAiVGhlIFdLV2Vi
VmlldyB3YXMgaW52YWxpZGF0ZWQiOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAJKHJldmlz
aW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKK2NvbnN0IGNo
YXIqIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluID0gIldlYktpdENvbnRlbnRCbG9ja2VyRG9t
YWluIjsKKwogY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVuc2lvbkVycm9y
Q2F0ZWdvcnkoKQogewogICAgIGNsYXNzIENvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5IDog
cHVibGljIHN0ZDo6ZXJyb3JfY2F0ZWdvcnkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgJKHJldmlz
aW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIGVudW0gY2xh
c3MgQ29udGVudEV4dGVuc2lvbkVycm9yIHsKICAgICBKU09OSW52YWxpZFJlZ2V4LAogfTsKIAor
ZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluOworICAgIAogV0VC
Q09SRV9FWFBPUlQgY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVuc2lvbkVy
cm9yQ2F0ZWdvcnkoKTsKIAogaW5saW5lIHN0ZDo6ZXJyb3JfY29kZSBtYWtlX2Vycm9yX2NvZGUo
Q29udGVudEV4dGVuc2lvbkVycm9yIGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
Y3BwCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50RXh0ZW5zaW9uc0JhYwogICAgIHJl
dHVybiBjb250ZW50RXh0ZW5zaW9uID8gY29udGVudEV4dGVuc2lvbi0+Z2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KCkgOiBudWxscHRyOwogfQogCi12b2lkIENvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5p
dGlhdGluZ0RvY3VtZW50TG9hZGVyKQorYm9vbCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcikKIHsKICAgICBEb2N1bWVudCogY3VycmVudERvY3VtZW50ID0gbnVsbHB0
cjsKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwpAQCAtMTk4LDggKzE5OCw5IEBAIHZvaWQgQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ28KICAgICBpZiAod2lsbEJsb2NrTG9hZCkg
ewogICAgICAgICBpZiAoY3VycmVudERvY3VtZW50KQogICAgICAgICAgICAgY3VycmVudERvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb250ZW50QmxvY2tlciwgTWVz
c2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZy
YW1lIGRpc3BsYXlpbmcgIiwgbWFpbkRvY3VtZW50VVJMLnN0cmluZygpLCAiIGZyb20gbG9hZGlu
ZyBhIHJlc291cmNlIGZyb20gIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkpOwotICAgICAgICBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGNvbnN0IFN0cmluZyYgQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgJ
KHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8QWN0aW9uPiBhY3Rpb25zRm9yUmVz
b3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgdm9pZCBwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3Vt
ZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIGJvb2wgcHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VUeXBl
LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKIAogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcmIGRpc3BsYXlOb25lQ1NTUnVsZSgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MjUsMTAgKzEyMjUsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAg
IGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAmJiBkb2N1bWVudExvYWRlcikKLSAg
ICAgICAgcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKCpwYWdlLCByZXF1ZXN0LCBSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9j
dW1lbnRMb2FkZXIpOwotCi0gICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICBpZiAocGFn
ZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgZG9jdW1lbnRMb2FkZXIgJiYgcGFnZS0+dXNl
ckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KCpwYWdlLCByZXF1ZXN0LCBSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpKSB7
CisgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKICAgICAgICAgbWVkaWFMb2Fk
aW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlz
aW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25FcnJvci5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRQ
YXJzZXIuaCIKQEAgLTE0NDIsNiArMTQ0MywxNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dExvYWRpbmdNYWluUmVzCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlZFJlc291cmNl
UmVxdWVzdChyZXF1ZXN0LCBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyk7CiAgICAgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKGNhY2hlZFJlc291cmNl
UmVxdWVzdCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChtX21h
aW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fbWFpblJl
c291cmNlLT5yZXNvdXJjZUVycm9yKCkuZG9tYWluKCkgPT0gQ29udGVudEV4dGVuc2lvbnM6Oldl
YktpdENvbnRlbnRCbG9ja2VyRG9tYWluKSB7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRX
aXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCkuY3JlYXRl
VW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmFz
c2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIHRoaXMsIHJlcXVlc3QpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpc3BhdGNoRGlkRmFpbExvYWRpbmcodGhpcywgbV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZnJhbWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihtX3JlcXVlc3QpKTsKKyAgICAgICAgbV9tYWluUmVzb3VyY2UgPSBudWxscHRy
OworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX21haW5SZXNvdXJjZSkgewogICAgICAgICBz
ZXRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCgpKTsKICAgICAgICAgLy8gSWYgdGhlIGxvYWQgd2Fz
IGFib3J0ZWQgYnkgY2xlYXJpbmcgbV9yZXF1ZXN0LCBpdCdzIHBvc3NpYmxlIHRoZSBBcHBsaWNh
dGlvbkNhY2hlSG9zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2
aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjIsNiArMzIyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigiIiwgMCwgIiIsICIiKTsgZXJyb3Iuc2V0SXNDYW5j
ZWxsYXRpb24odHJ1ZSk7IHJldHVybiBlcnJvcjsgfQogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4g
UmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQorICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCAiIiwgIiIpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwNywxOCArMjcwNywxNiBAQCB1bnNpZ25lZCBsb25n
IEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQogICAgIGlmIChlcnJvci5pc051bGwoKSkgewotICAgICAgICBpZiAobV9kb2N1bWVudExv
YWRlcikgewotICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRD
b250cm9sbGVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXItPnByb2Nlc3NDb250
ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdlLCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6
OlJhdywgKm1fZG9jdW1lbnRMb2FkZXIpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJh
bWUucGFnZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHBhZ2UtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZG9jdW1lbnRM
b2FkZXIgJiYgY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQo
KnBhZ2UsIG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3LCAqbV9kb2N1bWVudExvYWRlcikp
IHsKKyAgICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJlcXVlc3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5n
KCkpOworICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobmV3UmVxdWVz
dC5pc051bGwoKSkgewotICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0
eVN0cmluZygpKTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwot
ICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIH0KICAgICB9CiAjZW5kaWYKIApA
QCAtMzMyNCw2ICszMzIyLDEyIEBAIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmNhbmNlbGxl
ZEVycm8KICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK1Jlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6
OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAoreworICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5ibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKHJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKK30KKwog
I2lmIFBMQVRGT1JNKElPUykKIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IEZyYW1lTG9hZGVy
Ojpjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiAr
MTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRmFsbGJhY2tDb250ZW50KCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
IAogICAgIGJvb2wgaXNIb3N0ZWRCeU9iamVjdEVsZW1lbnQoKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDQ1MykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgPSAwOworICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQxLDggKzM0MSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGUKICAgICAgICAgUGFnZSogcGFnZSA9IGZyYW1lTG9hZGVyKCktPmZyYW1l
KCkucGFnZSgpOwogICAgICAgICBpZiAocGFnZSAmJiBtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvKiB1c2VyQ29udGVudENvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKLSAgICAgICAgICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAg
ICAgICAgICAgICAgdXNlckNvbnRlbnRDb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yTG9hZCgqcGFnZSwgcmVxdWVzdCwgbV9yZXNvdXJjZVR5cGUsICptX2RvY3VtZW50
TG9hZGVyKTsKKyAgICAgICAgICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIgJiYgdXNlckNv
bnRlbnRDb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCgqcGFn
ZSwgcmVxdWVzdCwgbV9yZXNvdXJjZVR5cGUsICptX2RvY3VtZW50TG9hZGVyKSkKKyAgICAgICAg
ICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb250ZW50
RXh0ZW5zaW9uRXJyb3IuaCIKICNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpA
QCAtNTEsNiArNTIsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC01MTMsMTEgKzUxNSwx
OCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAo
ZnJhbWUoKSAmJiBmcmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS0+bWFpbkZy
YW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAmJiBtX2RvY3VtZW50TG9hZGVy
KQotICAgICAgICBmcmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJv
bGxlcigpLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCgqZnJhbWUoKS0+bWFp
bkZyYW1lKCkucGFnZSgpLCByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgdG9SZXNv
dXJjZVR5cGUodHlwZSksICptX2RvY3VtZW50TG9hZGVyKTsKLQotICAgIGlmIChyZXF1ZXN0Lm11
dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIGZyYW1l
KCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgbV9kb2N1
bWVudExvYWRlcikgeworICAgICAgICBpZiAoZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51
c2VyQ29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zvckxv
YWQoKmZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VS
ZXF1ZXN0KCksIHRvUmVzb3VyY2VUeXBlKHR5cGUpLCAqbV9kb2N1bWVudExvYWRlcikpIHsKKyAg
ICAgICAgICAgIGlmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2Up
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwg
cmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNz
aW9uSUQoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICAgICAgICAg
ICAgICByZXNvdXJjZS0+ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1czo6TG9hZEVycm9yKTsK
KyAgICAgICAgICAgICAgICByZXNvdXJjZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9y
KENvbnRlbnRFeHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwgcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhlIFVS
TCB3YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzb3VyY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgIH0KICNlbmRpZgogCiAgICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBNZW1vcnlD
YWNoZTo6c2luZ2xldG9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNywxNSAr
MjA3LDE1IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2UKICAgICBt
X2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9ucygpOwog
fQogCi12b2lkIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoUGFnZSYgcGFnZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKQorYm9vbCBVc2VyQ29udGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9u
UnVsZXNGb3JMb2FkKFBhZ2UmIHBhZ2UsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExv
YWRlcikKIHsKICAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwYWdlLnVzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5kLT5wcm9jZXNzQ29udGVudEV4dGVu
c2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0LCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVu
dExvYWRlcik7CisgICAgcmV0dXJuIG1fY29udGVudEV4dGVuc2lvbkJhY2tlbmQtPnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVlc3QsIHJlc291cmNlVHlwZSwgaW5pdGlh
dGluZ0RvY3VtZW50TG9hZGVyKTsKIH0KIAogVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rp
b24+IFVzZXJDb250ZW50Q29udHJvbGxlcjo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChQYWdlJiBw
YWdlLCBjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJbmZvKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxOTA0
NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZVVzZXJDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudEV4dGVuc2lvbnMoKTsKIAot
ICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUGFnZSYsIFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1
bWVudExvYWRlcik7CisgICAgYm9vbCBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9h
ZChQYWdlJiwgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYg
aW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6
OkFjdGlvbj4gYWN0aW9uc0ZvclJlc291cmNlTG9hZChQYWdlJiwgY29uc3QgUmVzb3VyY2VMb2Fk
SW5mbyYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJv
cnNFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJv
cnNFZmwuY3BwCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvRXJyb3JzRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTEgQEAgUmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVz
ZSByZXN0cmljdGVkIG5ldHdvcmsgcG9ydCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JC
bG9ja2VkQnlDb250ZW50QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRl
cmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5v
dFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5v
dCBiZSBzaG93biIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNF
ZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZs
LmgJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJv
cnNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOCBAQCBlbnVtIFBvbGljeUVycm9y
IHsKICAgICBQb2xpY3lFcnJvckNhbm5vdFNob3dNaW1lVHlwZSA9IDEwMCwKICAgICBQb2xpY3lF
cnJvckNhbm5vdFNob3dVUkwgPSAxMDEsCiAgICAgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1
cHRlZEJ5UG9saWN5Q2hhbmdlID0gMTAyLAotICAgIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJp
Y3RlZFBvcnQgPSAxMDMKKyAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0g
MTAzLAorICAgIFBvbGljeUVycm9yQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgPSAxMDQKIH07CiAK
IGVudW0gUGx1Z2luRXJyb3IgewpAQCAtODIsNiArODMsNyBAQCBlbnVtIFByaW50RXJyb3Igewog
CiBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNv
dXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBl
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSwxMSBAQCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiTm90IGFsbG93ZWQg
dG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IikpOwogfQogCitSZXNvdXJjZUVycm9yIGJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQoreworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lF
cnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJC
bG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RT
aG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dV
UkwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCShyZXZpc2lv
biAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDggQEAgZW51bSBQb2xpY3lFcnJvciB7CiAgICAgUG9s
aWN5RXJyb3JDYW5ub3RTaG93TWltZVR5cGUgPSAxMDAsCiAgICAgUG9saWN5RXJyb3JDYW5ub3RT
aG93VVJMID0gMTAxLAogICAgIFBvbGljeUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZSA9IDEwMiwKLSAgICBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0g
MTAzCisgICAgUG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKKyAgICBQ
b2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyID0gMTA0CiB9OwogCiBlbnVtIFBsdWdp
bkVycm9yIHsKQEAgLTc1LDYgKzc2LDcgQEAgZW51bSBQcmludEVycm9yIHsKIAogUmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVz
b3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBS
ZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQ1MykKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE1LTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVwb3J0IGVycm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5
IGNvbnRlbnQgYmxvY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5NzE5CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tFcnJvclJlZi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJy
b3JzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9j
a2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpibG9j
a2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KToKKyAgICAgICAgKFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRCeUNv
bnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpjYW5ub3RTaG93VVJMRXJyb3Ip
OgorICAgICAgICBNYWtlIGEgbmV3IGVycm9yIHR5cGUgZm9yIGxvYWRzIHRoYXQgd2VyZSBibG9j
a2VkIGJ5IGEgY29udGVudCBibG9ja2VyLgorCiAyMDE1LTEwLTAxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXR3b3JrIGNhY2hlOiBTdWJyZXNvdXJjZSBy
ZWZlcmVyIGhlYWRlciB3cm9uZyBhZnRlciBjYWNoZWQgcmVkaXJlY3QKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuaAkocmV2aXNpb24gMTkwNDUzKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBlbnVtIHsKICAgICBrV0tFcnJvckNvZGVDYW5ub3RTaG93VVJMID0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxLAogICAgIGtXS0Vycm9yQ29kZUZyYW1l
TG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgPSAgICAgICAgICAgICAxMDIsCiAgICAga1dL
RXJyb3JDb2RlQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAgICAgICAgICAgICAgICAgICAgICAg
IDEwMywKKyAgICBrV0tFcnJvckNvZGVGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50QmxvY2tlciA9
ICAgICAgICAgICAgICAgMTA0LAogICAgIGtXS0Vycm9yQ29kZUNhbm5vdEZpbmRQbHVnSW4gPSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90
TG9hZFBsdWdJbiA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMSwKICAgICBrV0tF
cnJvckNvZGVKYXZhVW5hdmFpbGFibGUgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjAyLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
cnJvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVycm9ycy5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE5MDQ1
MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA2LDYgKzExMDYsMTEgQEAgUmVz
b3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvYwogICAgIHJldHVybiBXZWJLaXQ6
OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJsb2Nr
ZXJFcnJvcihyZXF1ZXN0KTsKK30KKwogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICByZXR1cm4gV2ViS2l0OjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwv
V2ViRXJyb3JzRWZsLmNwcAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsMTEgQEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyYwogICAgIHJldHVybiBXZWJDb3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jl
c291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRC
bG9ja2VyRXJyb3IocmVxdWVzdCk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNH
dGsuY3BwCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCwxMSBAQCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAg
cmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAorUmVzb3VyY2VFcnJv
ciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cihyZXF1ZXN0KTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBXZWJDb3JlOjpjYW5ub3RT
aG93VVJMRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCShyZXZp
c2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFcnJvcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBAIFJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiTm90IGFs
bG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IiwgIldlYktpdEVycm9yQ2Fubm90
VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Cit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21h
aW4oKSwga1dLRXJyb3JDb2RlRnJhbWVMb2FkQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVl
c3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50
IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlv
biIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJy
b3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dVUkwsIHJlcXVl
c3QudXJsKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93biIsICJXZWJL
aXRFcnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1h
aW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8v
cHJvYmxlbS8yMTk3MDU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgIEFkZCBibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yIHNvIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGlzIG5vdCBhbiBh
YnN0cmFjdCBjbGFzcywKKyAgICAgICAgYnV0IGl0IHNob3VsZCBiZSB1bnVzZWQgYmVjYXVzZSBj
b250ZW50IGJsb2NrZXJzIGFyZSBub3QgZW5hYmxlZCBvbiBXSzEuCisKIDIwMTUtMDktMzAgIFRp
bW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1
dGUgZG9jdW1lbnQgbWFya2VyIHJlY3RzIGF0IHVzZSB0aW1lIGluc3RlYWQgb2YgcGFpbnQgdGlt
ZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTcsNiArMTU3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAx
OTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE0Nyw2ICsxMTQ3LDEyIEBAIFJlc291cmNl
RXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2MKICAgICByZXR1cm4gW05TRXJyb3IgX3dl
YktpdEVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVycm9yQ2Fu
bm90VXNlUmVzdHJpY3RlZFBvcnQgVVJMOnJlcXVlc3QudXJsKCldOwogfQogCitSZXNvdXJjZUVy
cm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBDb250ZW50IGJsb2NrZXJzIGFyZSBub3QgZW5hYmxlZCBpbiBXZWJLaXQx
LgorICAgIHJldHVybiBbTlNFcnJvciBfd2ViS2l0RXJyb3JXaXRoRG9tYWluOldlYktpdEVycm9y
RG9tYWluIGNvZGU6V2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIFVSTDpyZXF1ZXN0LnVybCgpXTsK
K30KKwogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gW05TRXJy
b3IgX3dlYktpdEVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVy
cm9yQ2Fubm90U2hvd1VSTCBVUkw6cmVxdWVzdC51cmwoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1h
aW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8v
cHJvYmxlbS8yMTk3MDU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICBBZGRlZCBzdHVi
IHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQuCisKIDIwMTUtMDktMzAgIFRpbW90aHkgSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGUgZG9jdW1lbnQg
bWFya2VyIHJlY3RzIGF0IHVzZSB0aW1lIGluc3RlYWQgb2YgcGFpbnQgdGltZQpJbmRleDogU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTgsNiArODU4LDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2MK
ICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJL
aXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBX
RUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQi
LCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0K
IAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gQ29udGVudCBCbG9ja2VycyBhcmUgbm90IGVuYWJs
ZWQgZm9yIFdLMS4KKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JE
b21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBu
ZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlw
dGlvbiIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90
U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNh
bm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBV
UkwgY2FuXHhFMlx4ODBceDk5dCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwg
ZGVzY3JpcHRpb24iKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDQ1MykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0NTMpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250
ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1s
Lmpzb246IEFkZGVkLgorCiAyMDE1LTEwLTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgZm9jdXNlZC1pbnB1dC1zaG91bGQtYXNzaXN0
LW9uLXRvdWNoLmh0bWwgaW50byBhbiBhdXRvbWF0ZWQgdGVzdApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21h
aW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50
ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCitDT05TT0xF
IE1FU1NBR0U6IENvbnRlbnQgYmxvY2tlciBwcmV2ZW50ZWQgZnJhbWUgZGlzcGxheWluZyBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1ub3Qt
bG9hZC5odG1sIGZyb20gbG9hZGluZyBhIHJlc291cmNlIGZyb20gaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbAoraHR0
cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90
LWxvYWQuaHRtbCAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2Vi
S2l0RXJyb3JEb21haW4sIGNvZGUgMTA0LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbCI+Cito
dHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1u
b3QtbG9hZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2Uu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcFJl
c291cmNlTG9hZENhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwiKTsK
K30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5z
aW9ucy9tYWluLXJlc291cmNlLmh0bWwuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29uCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWlu
LXJlc291cmNlLmh0bWwuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitbCisg
ICAgeworICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiYmxvY2siCisg
ICAgICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAgICAgICAgInVybC1maWx0ZXIi
OiAic2hvdWxkLW5vdC1sb2FkIgorICAgICAgICB9CisgICAgfQorXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262337</attachid>
            <date>2015-10-02 09:23:10 -0700</date>
            <delta_ts>2015-10-06 00:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151002092243.patch</filename>
            <type>text/plain</type>
            <size>38834</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDE1LTEwLTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9t
YWluLXJlc291cmNlLmh0bWwKKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5nczoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJy
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjptYWtlX2Vycm9yX2Nv
ZGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbnNCYWNrZW5kOjpnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICBJbnN0ZWFkIG9mIG51bGxp
bmcgb3V0IHRoZSBSZXNvdXJjZVJlcXVlc3QsIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNG
b3JMb2FkIAorICAgICAgICBub3cgcmV0dXJucyBhIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSByZXF1ZXN0IHNob3VsZCBiZSBibG9ja2VkLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBiZWNh
dXNlIHRoZSBEb2N1bWVudExvYWRlciBuZWVkcyBhIENhY2hlZFJlc291cmNlIHdpdGggYW4gZXJy
b3IgcmVwcmVzZW50aW5nIHRoZSBibG9ja2luZworICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5vbmVDU1NSdWxlKToK
KyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIERpc3BhdGNoIGFuIGVycm9yIGlmIHRoZSByZXNv
dXJjZSBpcyBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2VyLgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb25uZWN0aW9uUHJvcGVydGllcyk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlckNvbnRlbnRFeHRlbnNpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjph
Y3Rpb25zRm9yUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50Q29udHJv
bGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmxvY2tlZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL0Vycm9yc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9FcnJv
cnNHdGsuaDoKKwogMjAxNS0xMC0wMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUm9sbG91dCByMTkwNDQ2IGZvciB0aGUgbW9tZW50LiBJdCBicm9rZSB0aGUgYnVp
bGQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1OTIsOSBA
QAogLyogV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uICovCiAiVGhlIFVSTCBj
YW7igJl0IGJlIHNob3duIiA9ICJUaGUgVVJMIGNhbuKAmXQgYmUgc2hvd24iOwogCisvKiBXZWJL
aXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0aW9uICovCisiVGhlIFVSTCB3
YXMgYmxvY2tlZCBieSBhIGNvbnRlbnQgYmxvY2tlciIgPSAiVGhlIFVSTCB3YXMgYmxvY2tlZCBi
eSBhIGNvbnRlbnQgYmxvY2tlciI7CisKIC8qIFdLRXJyb3JXZWJWaWV3SW52YWxpZGF0ZWQgZGVz
Y3JpcHRpb24gKi8KICJUaGUgV0tXZWJWaWV3IHdhcyBpbnZhbGlkYXRlZCIgPSAiVGhlIFdLV2Vi
VmlldyB3YXMgaW52YWxpZGF0ZWQiOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25FcnJvci5jcHAJKHJldmlz
aW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7CiAKK2NvbnN0IGNo
YXIqIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluID0gIldlYktpdENvbnRlbnRCbG9ja2VyRG9t
YWluIjsKKwogY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVuc2lvbkVycm9y
Q2F0ZWdvcnkoKQogewogICAgIGNsYXNzIENvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5IDog
cHVibGljIHN0ZDo6ZXJyb3JfY2F0ZWdvcnkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmgJKHJldmlz
aW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIGVudW0gY2xh
c3MgQ29udGVudEV4dGVuc2lvbkVycm9yIHsKICAgICBKU09OSW52YWxpZFJlZ2V4LAogfTsKIAor
ZXh0ZXJuIGNvbnN0IGNoYXIqIFdlYktpdENvbnRlbnRCbG9ja2VyRG9tYWluOworICAgIAogV0VC
Q09SRV9FWFBPUlQgY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSYgY29udGVudEV4dGVuc2lvbkVy
cm9yQ2F0ZWdvcnkoKTsKIAogaW5saW5lIHN0ZDo6ZXJyb3JfY29kZSBtYWtlX2Vycm9yX2NvZGUo
Q29udGVudEV4dGVuc2lvbkVycm9yIGVycm9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
Y3BwCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50RXh0ZW5zaW9uc0JhYwogICAgIHJl
dHVybiBjb250ZW50RXh0ZW5zaW9uID8gY29udGVudEV4dGVuc2lvbi0+Z2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KCkgOiBudWxscHRyOwogfQogCi12b2lkIENvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5p
dGlhdGluZ0RvY3VtZW50TG9hZGVyKQorYm9vbCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcikKIHsKICAgICBEb2N1bWVudCogY3VycmVudERvY3VtZW50ID0gbnVsbHB0
cjsKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwpAQCAtMTk4LDggKzE5OCw5IEBAIHZvaWQgQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ28KICAgICBpZiAod2lsbEJsb2NrTG9hZCkg
ewogICAgICAgICBpZiAoY3VycmVudERvY3VtZW50KQogICAgICAgICAgICAgY3VycmVudERvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpDb250ZW50QmxvY2tlciwgTWVz
c2FnZUxldmVsOjpJbmZvLCBtYWtlU3RyaW5nKCJDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZy
YW1lIGRpc3BsYXlpbmcgIiwgbWFpbkRvY3VtZW50VVJMLnN0cmluZygpLCAiIGZyb20gbG9hZGlu
ZyBhIHJlc291cmNlIGZyb20gIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkpOwotICAgICAgICBy
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGNvbnN0IFN0cmluZyYgQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kOjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgJ
KHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8QWN0aW9uPiBhY3Rpb25zRm9yUmVz
b3VyY2VMb2FkKGNvbnN0IFJlc291cmNlTG9hZEluZm8mKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCi0gICAgdm9pZCBwcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZVR5cGUsIERvY3Vt
ZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIGJvb2wgcHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VUeXBl
LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKIAogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcmIGRpc3BsYXlOb25lQ1NTUnVsZSgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MjUsMTAgKzEyMjUsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAg
IGlmIChwYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXIoKSAmJiBkb2N1bWVudExvYWRlcikKLSAg
ICAgICAgcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKCpwYWdlLCByZXF1ZXN0LCBSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9j
dW1lbnRMb2FkZXIpOwotCi0gICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICBpZiAocGFn
ZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgZG9jdW1lbnRMb2FkZXIgJiYgcGFnZS0+dXNl
ckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2Fk
KCpwYWdlLCByZXF1ZXN0LCBSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpKSB7
CisgICAgICAgIHJlcXVlc3QgPSB7IH07CiAgICAgICAgIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRp
YVBsYXllcjo6Rm9ybWF0RXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTA0NTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1ZGUgIkNh
Y2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJDb250ZW50RXh0ZW5zaW9uRXJyb3IuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50UGFyc2VyLmgiCkBAIC0x
NDI1LDcgKzE0MjYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
CiAKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRNYWluUmVzb3VyY2UobV9y
ZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKIAotICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkgeworICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiBtX2ZyYW1l
LT5wYWdlKCkpIHsKICAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCk7CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwg
dGhpcywgbV9yZXF1ZXN0KTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdCh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyLCBtX3JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CkBAIC0xNDQyLDYgKzE0
NDMsMTYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlcwogICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCwgbWFpblJl
c291cmNlTG9hZE9wdGlvbnMpOwogICAgIGNhY2hlZFJlc291cmNlUmVxdWVzdC5zZXRJbml0aWF0
b3IoKnRoaXMpOwogICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+
cmVxdWVzdE1haW5SZXNvdXJjZShjYWNoZWRSZXNvdXJjZVJlcXVlc3QpOworCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVz
b3VyY2UtPmVycm9yT2NjdXJyZWQoKSAmJiBtX2ZyYW1lLT5wYWdlKCkgJiYgbV9tYWluUmVzb3Vy
Y2UtPnJlc291cmNlRXJyb3IoKS5kb21haW4oKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6V2ViS2l0
Q29udGVudEJsb2NrZXJEb21haW4pIHsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlx
dWVJZGVudGlmaWVyKCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNv
dXJjZUxvYWRlciwgdGhpcywgcmVxdWVzdCk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyLCBmcmFtZUxvYWRlcigpLT5ibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKG1fcmVxdWVzdCkpOworICAgICAgICBtX21haW5SZXNvdXJjZSA9IG51bGxwdHI7Cisg
ICAgfQorI2VuZGlmCisKICAgICBpZiAoIW1fbWFpblJlc291cmNlKSB7CiAgICAgICAgIHNldFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgICAgICAvLyBJZiB0aGUgbG9hZCB3YXMgYWJv
cnRlZCBieSBjbGVhcmluZyBtX3JlcXVlc3QsIGl0J3MgcG9zc2libGUgdGhlIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lv
biAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyMiw2ICszMjIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUg
eyBSZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCAiIiwgIiIpOyBlcnJvci5zZXRJc0NhbmNlbGxh
dGlvbih0cnVlKTsgcmV0dXJuIGVycm9yOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCAiIiwgIiIpOyB9CisgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJp
ZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAs
ICIiLCAiIik7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzA3LDE4ICsyNzA3LDE2IEBAIHVuc2lnbmVkIGxvbmcgRnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVMKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChtX2RvY3VtZW50TG9hZGVy
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSBwYWdlLT51c2VyQ29udGVudENvbnRy
b2xsZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvckxvYWQoKnBhZ2UsIG5ld1JlcXVlc3QsIFJlc291cmNlVHlwZTo6UmF3
LCAqbV9kb2N1bWVudExvYWRlcik7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gcGFnZS0+dXNlckNv
bnRlbnRDb250cm9sbGVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9kb2N1bWVudExvYWRl
ciAmJiBjb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZCgqcGFn
ZSwgbmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcsICptX2RvY3VtZW50TG9hZGVyKSkgewor
ICAgICAgICAgICAgICAgICAgICBuZXdSZXF1ZXN0ID0geyB9OworICAgICAgICAgICAgICAgICAg
ICBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5p
dGlhbFJlcXVlc3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG51bGxw
dHI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgZXJyb3Ig
PSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgICAgIHJlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZSgpOwotICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7Ci0gICAg
ICAgIH0KICAgICB9CiAjZW5kaWYKIApAQCAtMzMyNCw2ICszMzIyLDExIEBAIFJlc291cmNlRXJy
b3IgRnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm8KICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK1Jl
c291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVu
dC5ibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKHJlcXVlc3QpOworfQorCiAjaWYgUExBVEZP
Uk0oSU9TKQogUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRnJhbWVMb2FkZXI6OmNvbm5lY3Rp
b25Qcm9wZXJ0aWVzKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9v
bCBpc0hvc3RlZEJ5T2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
OCw2ICsyMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAg
ICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBv
bGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTA0NTMpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDEsOCArMzQxLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
SW50ZQogICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5wYWdlKCk7
CiAgICAgICAgIGlmIChwYWdlICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIGF1
dG8qIHVzZXJDb250ZW50Q29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
OwotICAgICAgICAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgICAgICAg
ICB1c2VyQ29udGVudENvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKCpwYWdlLCByZXF1ZXN0LCBtX3Jlc291cmNlVHlwZSwgKm1fZG9jdW1lbnRMb2FkZXIpOwor
ICAgICAgICAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlciAmJiB1c2VyQ29udGVudENvbnRy
b2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKCpwYWdlLCByZXF1ZXN0
LCBtX3Jlc291cmNlVHlwZSwgKm1fZG9jdW1lbnRMb2FkZXIpKQorICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSB7IH07CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkNhY2hlZFhTTFN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJD
aHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJDb250ZW50RXh0ZW5zaW9uRXJyb3IuaCIKICNpbmNs
dWRlICJDb250ZW50RXh0ZW5zaW9uUnVsZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtNTEsNiArNTIsNyBAQAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCkBAIC01MTMsMTEgKzUxNSwxOCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gQ2FjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRVhURU5TSU9OUykKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5tYWlu
RnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKSAmJiBtX2RvY3VtZW50TG9hZGVyKQotICAgICAgICBmcmFtZSgpLT5tYWlu
RnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpLT5wcm9jZXNzQ29udGVudEV4
dGVuc2lvblJ1bGVzRm9yTG9hZCgqZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLCByZXF1ZXN0
Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgdG9SZXNvdXJjZVR5cGUodHlwZSksICptX2RvY3Vt
ZW50TG9hZGVyKTsKLQotICAgIGlmIChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGZyYW1lKCkgJiYgZnJh
bWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIGZyYW1lKCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+
dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgbV9kb2N1bWVudExvYWRlcikgeworICAgICAgICBp
ZiAoZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS0+
cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoKmZyYW1lKCktPm1haW5GcmFtZSgp
LnBhZ2UoKSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIHRvUmVzb3VyY2VUeXBl
KHR5cGUpLCAqbV9kb2N1bWVudExvYWRlcikpIHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IENh
Y2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHJlc291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNzaW9uSUQoKSk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS0+ZXJyb3IoQ2Fj
aGVkUmVzb3VyY2U6OlN0YXR1czo6TG9hZEVycm9yKTsKKyAgICAgICAgICAgICAgICByZXNvdXJj
ZS0+c2V0UmVzb3VyY2VFcnJvcihSZXNvdXJjZUVycm9yKENvbnRlbnRFeHRlbnNpb25zOjpXZWJL
aXRDb250ZW50QmxvY2tlckRvbWFpbiwgMCwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiVGhlIFVSTCB3YXMgYmxvY2tlZCBieSBhIGNvbnRl
bnQgYmxvY2tlciIsICJXZWJLaXRFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyIGRlc2NyaXB0
aW9uIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZgog
CiAgICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNywxNSArMjA3LDE1IEBAIHZvaWQgVXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2UKICAgICBtX2NvbnRlbnRFeHRlbnNpb25CYWNrZW5k
LT5yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9ucygpOwogfQogCi12b2lkIFVzZXJDb250ZW50Q29u
dHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUGFnZSYgcGFnZSwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1
bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQorYm9vbCBVc2VyQ29udGVudENv
bnRyb2xsZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFBhZ2UmIHBhZ2Us
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgRG9j
dW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikKIHsKICAgICBpZiAoIW1fY29u
dGVudEV4dGVuc2lvbkJhY2tlbmQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFwYWdlLnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2NvbnRlbnRFeHRl
bnNpb25CYWNrZW5kLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0
LCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CisgICAgcmV0dXJuIG1f
Y29udGVudEV4dGVuc2lvbkJhY2tlbmQtPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkKHJlcXVlc3QsIHJlc291cmNlVHlwZSwgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKIH0K
IAogVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IFVzZXJDb250ZW50Q29udHJvbGxl
cjo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZUxvYWRJ
bmZvJiByZXNvdXJjZUxvYWRJbmZvKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVVzZXJDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVBbGxVc2VyQ29udGVudEV4dGVuc2lvbnMoKTsKIAotICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvckxvYWQoUGFnZSYsIFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlVHlw
ZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CisgICAgYm9vbCBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChQYWdlJiwgUmVzb3VyY2VSZXF1ZXN0
JiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gYWN0aW9uc0ZvclJlc291
cmNlTG9hZChQYWdlJiwgY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCShyZXZpc2lvbiAxOTA0
NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsMTEgQEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyYwogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQ
b2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRlbnQg
YmxvY2tlciIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVy
cm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCku
c3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmgJKHJldmlzaW9uIDE5MDQ1MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuaAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsOCBAQCBlbnVtIFBvbGljeUVycm9yIHsKICAgICBQb2xpY3lFcnJvckNhbm5v
dFNob3dNaW1lVHlwZSA9IDEwMCwKICAgICBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwgPSAxMDEs
CiAgICAgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlID0gMTAy
LAotICAgIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAxMDMKKyAgICBQb2xp
Y3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gMTAzLAorICAgIFBvbGljeUVycm9yQmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXIgPSAxMDQKIH07CiAKIGVudW0gUGx1Z2luRXJyb3IgewpAQCAt
ODIsNiArODMsNyBAQCBlbnVtIFByaW50RXJyb3IgewogCiBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNh
bm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3Ig
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
IFJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAJ
KHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMSBAQCBSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKSwgXygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29y
ayBwb3J0IikpOwogfQogCitSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBfKCJCbG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tl
ciIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9t
YWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDggQEAgZW51bSBQb2xpY3lFcnJvciB7CiAgICAgUG9saWN5RXJyb3JDYW5ub3RTaG93TWltZVR5
cGUgPSAxMDAsCiAgICAgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMID0gMTAxLAogICAgIFBvbGlj
eUVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSA9IDEwMiwKLSAgICBQb2xp
Y3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gMTAzCisgICAgUG9saWN5RXJyb3JDYW5u
b3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKKyAgICBQb2xpY3lFcnJvckJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyID0gMTA0CiB9OwogCiBlbnVtIFBsdWdpbkVycm9yIHsKQEAgLTc1LDYgKzc2LDcg
QEAgZW51bSBQcmludEVycm9yIHsKIAogUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGludGVycnVwdGVk
Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVy
cm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE1LTEwLTAxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVycm9y
IHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisgICAgICAg
IHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3JzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJMRXJy
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJv
cnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2Vi
S2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6Y2Fu
bm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdl
YktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICBNYWtlIGEgbmV3IGVy
cm9yIHR5cGUgZm9yIGxvYWRzIHRoYXQgd2VyZSBibG9ja2VkIGJ5IGEgY29udGVudCBibG9ja2Vy
LgorCiAyMDE1LTEwLTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOZXR3b3JrIGNhY2hlOiBTdWJyZXNvdXJjZSByZWZlcmVyIGhlYWRlciB3cm9uZyBhZnRl
ciBjYWNoZWQgcmVkaXJlY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vy
cm9yUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRXJy
b3JSZWYuaAkocmV2aXNpb24gMTkwNDUzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLRXJyb3JSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBlbnVtIHsKICAg
ICBrV0tFcnJvckNvZGVDYW5ub3RTaG93VVJMID0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAxLAogICAgIGtXS0Vycm9yQ29kZUZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lD
aGFuZ2UgPSAgICAgICAgICAgICAxMDIsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90VXNlUmVzdHJp
Y3RlZFBvcnQgPSAgICAgICAgICAgICAgICAgICAgICAgIDEwMywKKyAgICBrV0tFcnJvckNvZGVG
cmFtZUxvYWRCbG9ja2VkQnlDb250ZW50QmxvY2tlciA9ICAgICAgICAgICAgICAgMTA0LAogICAg
IGtXS0Vycm9yQ29kZUNhbm5vdEZpbmRQbHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMDAsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiA9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIwMSwKICAgICBrV0tFcnJvckNvZGVKYXZhVW5hdmFpbGFibGUg
PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyLApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oCShyZXZp
c2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVycm9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CitXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTA2LDYgKzExMDYsMTEgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YmxvYwogICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsK
IH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0
dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKK30KKwog
UmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViS2l0OjpjYW5u
b3RTaG93VVJMRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2
ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAkocmV2aXNp
b24gMTkwNDUzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9l
ZmwvV2ViRXJyb3JzRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTEgQEAgUmVz
b3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgIHJldHVybiBXZWJDb3Jl
OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IocmVxdWVzdCk7Cit9
CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJl
cXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRXJyb3JzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCShyZXZpc2lvbiAxOTA0NTMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJv
cnNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRF
cnJvcihyZXF1ZXN0KTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gV2Vi
Q29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKK30KKwogUmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQogewogICAgIHJldHVybiBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJv
cnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBAIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJL
aXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwgcmVx
dWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQg
bmV0d29yayBwb3J0IiwgIldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3Jp
cHRpb24iKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlRnJhbWVM
b2FkQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkco
IlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JC
bG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKTsKK30KKwogUmVzb3VyY2VFcnJv
ciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9yQ29kZUNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJTkco
IlRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgZGVz
Y3JpcHRpb24iKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0NTMpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxNS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBi
eSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9j
a2VkRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRl
bnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNo
b3dVUkxFcnJvcik6CisgICAgICAgIEFkZCBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yIHNv
IFdlYkZyYW1lTG9hZGVyQ2xpZW50IGlzIG5vdCBhbiBhYnN0cmFjdCBjbGFzcywKKyAgICAgICAg
YnV0IGl0IHNob3VsZCBiZSB1bnVzZWQgYmVjYXVzZSBjb250ZW50IGJsb2NrZXJzIGFyZSBub3Qg
ZW5hYmxlZCBvbiBXSzEuCisKIDIwMTUtMDktMzAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENvbXB1dGUgZG9jdW1lbnQgbWFya2VyIHJlY3Rz
IGF0IHVzZSB0aW1lIGluc3RlYWQgb2YgcGFpbnQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAxOTA0NTMpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTE0Nyw2ICsxMTQ3LDEyIEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmJsb2MKICAgICByZXR1cm4gW05TRXJyb3IgX3dlYktpdEVycm9yV2l0aERvbWFpbjpXZWJL
aXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgVVJM
OnJlcXVlc3QudXJsKCldOwogfQogCitSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBDb250ZW50IGJs
b2NrZXJzIGFyZSBub3QgZW5hYmxlZCBpbiBXZWJLaXQxLgorICAgIHJldHVybiBbTlNFcnJvciBf
d2ViS2l0RXJyb3JXaXRoRG9tYWluOldlYktpdEVycm9yRG9tYWluIGNvZGU6V2ViS2l0RXJyb3JD
YW5ub3RTaG93VVJMIFVSTDpyZXF1ZXN0LnVybCgpXTsKK30KKwogUmVzb3VyY2VFcnJvciBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gW05TRXJyb3IgX3dlYktpdEVycm9yV2l0aERvbWFp
bjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBVUkw6cmVx
dWVzdC51cmwoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0NTMpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxNS0xMC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBi
eSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmJsb2NrZWRFcnJvcik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oOgorICAgICAgICBBZGRlZCBzdHViIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVz
ZWQuCisKIDIwMTUtMDktMzAgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbXB1dGUgZG9jdW1lbnQgbWFya2VyIHJlY3RzIGF0IHVzZSB0aW1l
IGluc3RlYWQgb2YgcGFpbnQgdGltZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24g
MTkwNDUzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTgsNiArODU4LDEyIEBAIFJlc291cmNl
RXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2MKICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0
ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJOb3QgYWxsb3dl
ZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJyb3JDYW5ub3RVc2VS
ZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
Ly8gQ29udGVudCBCbG9ja2VycyBhcmUgbm90IGVuYWJsZWQgZm9yIFdLMS4KKyAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5v
dFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5H
KCJOb3QgYWxsb3dlZCB0byB1c2UgcmVzdHJpY3RlZCBuZXR3b3JrIHBvcnQiLCAiV2ViS2l0RXJy
b3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCBkZXNjcmlwdGlvbiIpKTsKK30KKwogUmVzb3VyY2VF
cnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmco
V2ViS2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgY2FuXHhFMlx4ODBceDk5dCBiZSBz
aG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgZGVzY3JpcHRpb24iKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2
ICsxNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1
cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxOTA0NTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0xMC0wMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVu
IG1haW4gcmVzb3VyY2UgaXMgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFy
Oi8vcHJvYmxlbS8yMTk3MDU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5z
aW9ucy9tYWluLXJlc291cmNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29u
dGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sLmpzb246IEFkZGVkLgorCiAyMDE1LTEw
LTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENv
bnZlcnQgZm9jdXNlZC1pbnB1dC1zaG91bGQtYXNzaXN0LW9uLXRvdWNoLmh0bWwgaW50byBhbiBh
dXRvbWF0ZWQgdGVzdApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5z
aW9ucy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUg
QEAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNl
Lmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCitDT05TT0xFIE1FU1NBR0U6IENvbnRlbnQgYmxvY2tl
ciBwcmV2ZW50ZWQgZnJhbWUgZGlzcGxheWluZyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVu
dGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5odG1sIGZyb20gbG9hZGluZyBh
IHJlc291cmNlIGZyb20gaHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jl
c291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbAoraHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRl
bnRleHRlbnNpb25zL3Jlc291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbCAtIGRpZEZhaWxMb2Fk
aW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgMTA0
LCBmYWlsaW5nIFVSTCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jl
c291cmNlcy9zaG91bGQtbm90LWxvYWQuaHRtbCI+CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29u
dGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5odG1sIC0gZGlkRmluaXNo
TG9hZGluZworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L21haW4tcmVzb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJy
ZXNvdXJjZXMvc2hvdWxkLW5vdC1sb2FkLmh0bWwiKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29uCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwuanNvbgkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitbCisgICAgeworICAgICAgICAiYWN0aW9uIjog
eworICAgICAgICAgICAgInR5cGUiOiAiYmxvY2siCisgICAgICAgIH0sCisgICAgICAgICJ0cmln
Z2VyIjogeworICAgICAgICAgICAgInVybC1maWx0ZXIiOiAic2hvdWxkLW5vdC1sb2FkIgorICAg
ICAgICB9CisgICAgfQorXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262507</attachid>
            <date>2015-10-06 00:31:10 -0700</date>
            <delta_ts>2015-10-06 01:18:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149719-20151006003039.patch</filename>
            <type>text/plain</type>
            <size>39607</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDE1LTEwLTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVwb3J0IGVy
cm9yIHdoZW4gbWFpbiByZXNvdXJjZSBpcyBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NzE5CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzIxOTcwNTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkg
RWlkc29uLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFp
bi1yZXNvdXJjZS5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3M6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlv
bnMuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjptYWtlX2Vycm9yX2NvZGUp
OgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kOjpnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQpOgorICAgICAgICBJbnN0ZWFkIG9mIG51bGxpbmcg
b3V0IHRoZSBSZXNvdXJjZVJlcXVlc3QsIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JM
b2FkIAorICAgICAgICBub3cgcmV0dXJucyBhIHN0YXR1cyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhl
IHJlcXVlc3Qgc2hvdWxkIGJlIGJsb2NrZWQuCisgICAgICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1
c2UgdGhlIERvY3VtZW50TG9hZGVyIG5lZWRzIGEgQ2FjaGVkUmVzb3VyY2Ugd2l0aCBhbiBlcnJv
ciByZXByZXNlbnRpbmcgdGhlIGJsb2NraW5nCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpkaXNwbGF5Tm9uZUNTU1J1bGUpOgor
ICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2Fk
aW5nTWFpblJlc291cmNlKToKKyAgICAgICAgRGlzcGF0Y2ggYW4gZXJyb3IgaWYgdGhlIHJlc291
cmNlIGlzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIuCisgICAgICAgICogbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbm5lY3Rpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSk6CisgICAgICAgICogcGFn
ZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRl
bnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyQ29udGVudEV4dGVuc2lvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1
bGVzRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyQ29udGVudENvbnRyb2xsZXI6OmFj
dGlvbnNGb3JSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIHBhZ2UvVXNlckNvbnRlbnRDb250cm9s
bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVu
dEJsb2NrZXJFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9FcnJvcnNFZmwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvRXJyb3JzR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsb2NrZWRFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9y
c0d0ay5oOgorCiAyMDE1LTEwLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CiAKICAgICAgICAgTWlncmF0ZSBzdHJlYW1zIEFQSSB0byBKUyBCdWlsdGlucwpJ
bmRleDogU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncwkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNiArNTkyLDkgQEAKIC8q
IFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCBkZXNjcmlwdGlvbiAqLwogIlRoZSBVUkwgY2Fu4oCZ
dCBiZSBzaG93biIgPSAiVGhlIFVSTCBjYW7igJl0IGJlIHNob3duIjsKIAorLyogV2ViS2l0RXJy
b3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiAqLworIlRoZSBVUkwgd2FzIGJs
b2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiID0gIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBj
b250ZW50IGJsb2NrZXIiOworCiAvKiBXS0Vycm9yV2ViVmlld0ludmFsaWRhdGVkIGRlc2NyaXB0
aW9uICovCiAiVGhlIFdLV2ViVmlldyB3YXMgaW52YWxpZGF0ZWQiID0gIlRoZSBXS1dlYlZpZXcg
d2FzIGludmFsaWRhdGVkIjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCShyZXZpc2lvbiAx
OTA2MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxMSBAQCBlbnVtIGNsYXNz
IEFjdGlvblR5cGUgOiB1aW50OF90IHsKICAgICBJbnZhbGlkQWN0aW9uLAogfTsKIAorZW51bSBj
bGFzcyBCbG9ja2VkU3RhdHVzIHsKKyAgICBCbG9ja2VkLAorICAgIE5vdEJsb2NrZWQsCit9Owor
ICAgIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9yLmNwcAkocmV2aXNpb24gMTkwNjA4KQor
KysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zIHsKIAorY29uc3QgY2hhciogV2ViS2l0Q29u
dGVudEJsb2NrZXJEb21haW4gPSAiV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4iOworCiBjb25z
dCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgpCiB7
CiAgICAgY2xhc3MgQ29udGVudEV4dGVuc2lvbkVycm9yQ2F0ZWdvcnkgOiBwdWJsaWMgc3RkOjpl
cnJvcl9jYXRlZ29yeSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uRXJyb3IuaAkocmV2aXNpb24gMTkwNjA4KQor
KysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgZW51bSBjbGFzcyBDb250ZW50RXh0
ZW5zaW9uRXJyb3IgewogICAgIEpTT05JbnZhbGlkUmVnZXgsCiB9OwogCitleHRlcm4gY29uc3Qg
Y2hhciogV2ViS2l0Q29udGVudEJsb2NrZXJEb21haW47CisgICAgCiBXRUJDT1JFX0VYUE9SVCBj
b25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uRXJyb3JDYXRlZ29yeSgp
OwogCiBpbmxpbmUgc3RkOjplcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShDb250ZW50RXh0ZW5z
aW9uRXJyb3IgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAJKHJldmlzaW9u
IDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBTdHls
ZVNoZWV0Q29udGVudHMqIENvbnRlbnRFeHRlbnNpb25zQmFjCiAgICAgcmV0dXJuIGNvbnRlbnRF
eHRlbnNpb24gPyBjb250ZW50RXh0ZW5zaW9uLT5nbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQo
KSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNz
Q29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1l
bnRMb2FkZXIpCitCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBS
ZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3Vt
ZW50TG9hZGVyKQogewogICAgIERvY3VtZW50KiBjdXJyZW50RG9jdW1lbnQgPSBudWxscHRyOwog
ICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CkBAIC0xOTgsOCArMTk4LDkgQEAgdm9pZCBDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDbwogICAgIGlmICh3aWxsQmxvY2tMb2FkKSB7CiAg
ICAgICAgIGlmIChjdXJyZW50RG9jdW1lbnQpCiAgICAgICAgICAgICBjdXJyZW50RG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkNvbnRlbnRCbG9ja2VyLCBNZXNzYWdl
TGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIkNvbnRlbnQgYmxvY2tlciBwcmV2ZW50ZWQgZnJhbWUg
ZGlzcGxheWluZyAiLCBtYWluRG9jdW1lbnRVUkwuc3RyaW5nKCksICIgZnJvbSBsb2FkaW5nIGEg
cmVzb3VyY2UgZnJvbSAiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKSk7Ci0gICAgICAgIHJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgcmV0dXJuIEJsb2NrZWRTdGF0dXM6OkJs
b2NrZWQ7CiAgICAgfQorICAgIHJldHVybiBCbG9ja2VkU3RhdHVzOjpOb3RCbG9ja2VkOwogfQog
CiBjb25zdCBTdHJpbmcmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5vbmVDU1NS
dWxlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCShyZXZpc2lvbiAxOTA2MDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPEFjdGlvbj4gYWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZUxvYWRJbmZvJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3R5bGVTaGVldENvbnRlbnRz
KiBnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBj
b25zdDsKIAotICAgIHZvaWQgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVz
b3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0Rv
Y3VtZW50TG9hZGVyKTsKKyAgICBCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9u
UnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2Fk
ZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CiAKICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBkaXNwbGF5Tm9uZUNTU1J1bGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI1LDEwICsxMjI1LDgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29ucwogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICBpZiAocGFnZS0+dXNl
ckNvbnRlbnRDb250cm9sbGVyKCkgJiYgZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHBhZ2UtPnVz
ZXJDb250ZW50Q29udHJvbGxlcigpLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9h
ZChyZXF1ZXN0LCBSZXNvdXJjZVR5cGU6Ok1lZGlhLCAqZG9jdW1lbnRMb2FkZXIpOwotCi0gICAg
aWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICBpZiAocGFnZS0+dXNlckNvbnRlbnRDb250cm9s
bGVyKCkgJiYgZG9jdW1lbnRMb2FkZXIgJiYgcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkt
PnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVlc3QsIFJlc291cmNlVHlw
ZTo6TWVkaWEsICpkb2N1bWVudExvYWRlcikgPT0gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRT
dGF0dXM6OkJsb2NrZWQpIHsKKyAgICAgICAgcmVxdWVzdCA9IHsgfTsKICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJl
dmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRQYWdl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkNvbnRlbnRFeHRlbnNpb25FcnJvci5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRQYXJzZXIuaCIKQEAgLTE0MjUsNyArMTQyNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
YXJ0TG9hZGluZ01haW5SZXMKIAogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9h
ZE1haW5SZXNvdXJjZShtX3JlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwogCi0gICAgaWYgKG1f
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpICYmIG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2Fk
V2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0
ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5h
c3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91
dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVlc3QpOwogICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIG1fcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgp
KTsKQEAgLTE0NDIsNiArMTQ0MywxNiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRp
bmdNYWluUmVzCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlZFJlc291cmNlUmVxdWVz
dChyZXF1ZXN0LCBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyk7CiAgICAgY2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKGNhY2hlZFJlc291cmNlUmVxdWVz
dCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChtX21haW5SZXNv
dXJjZSAmJiBtX21haW5SZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIG1fZnJhbWUtPnBhZ2Uo
KSAmJiBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpLmRvbWFpbigpID09IENvbnRlbnRF
eHRlbnNpb25zOjpXZWJLaXRDb250ZW50QmxvY2tlckRvbWFpbikgeworICAgICAgICBtX2lkZW50
aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9n
cmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXJG
b3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCByZXF1ZXN0KTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNwYXRjaERpZEZhaWxMb2FkaW5nKHRoaXMsIG1faWRl
bnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIGZyYW1lTG9hZGVyKCktPmJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IobV9yZXF1ZXN0KSk7CisgICAgICAgIG1fbWFpblJlc291
cmNlID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmICghbV9tYWluUmVzb3VyY2Up
IHsKICAgICAgICAgc2V0UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgICAgIC8vIElm
IHRoZSBsb2FkIHdhcyBhYm9ydGVkIGJ5IGNsZWFyaW5nIG1fcmVxdWVzdCwgaXQncyBwb3NzaWJs
ZSB0aGUgQXBwbGljYXRpb25DYWNoZUhvc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHJldmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsICIiLCAiIik7IGVy
cm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0KICAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsICIiLCAiIik7IH0KKyAgICB2aXJ0dWFs
IFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAiIiwgIiIp
OyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCAi
IiwgIiIpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVz
b3VyY2VFcnJvcigiIiwgMCwgIiIsICIiKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MDcsMTggKzI3MDcsMTYgQEAg
dW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlUwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYg
KG1fZG9jdW1lbnRMb2FkZXIpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFt
ZS5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHBhZ2Ut
PnVzZXJDb250ZW50Q29udHJvbGxlcigpKQotICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVy
LT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChuZXdSZXF1ZXN0LCBSZXNvdXJj
ZVR5cGU6OlJhdywgKm1fZG9jdW1lbnRMb2FkZXIpOworICAgICAgICBpZiAoYXV0byogcGFnZSA9
IG1fZnJhbWUucGFnZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHBh
Z2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXIgJiYgY29udHJvbGxlci0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
ckxvYWQobmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcsICptX2RvY3VtZW50TG9hZGVyKSA9
PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6QmxvY2tlZCkgeworICAgICAgICAg
ICAgICAgICAgICBuZXdSZXF1ZXN0ID0geyB9OworICAgICAgICAgICAgICAgICAgICBlcnJvciA9
IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgaW5pdGlhbFJlcXVl
c3QudXJsKCkuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZSA9IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgZXJyb3IgPSBSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVybCgp
LnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOwotICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7Ci0gICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKIApAQCAtMzMyNCw2ICszMzIyLDExIEBAIFJlc291cmNlRXJyb3IgRnJhbWVM
b2FkZXI6OmNhbmNlbGxlZEVycm8KICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK1Jlc291cmNlRXJy
b3IgRnJhbWVMb2FkZXI6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudC5ibG9ja2Vk
QnlDb250ZW50QmxvY2tlckVycm9yKHJlcXVlc3QpOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQog
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gRnJhbWVMb2FkZXI6OmNvbm5lY3Rpb25Qcm9wZXJ0
aWVzKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0hvc3Rl
ZEJ5T2JqZWN0RWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw2ICsyMjgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5n
ZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEs
OCArMzQxLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZQogICAg
ICAgICBQYWdlKiBwYWdlID0gZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5wYWdlKCk7CiAgICAgICAg
IGlmIChwYWdlICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8qIHVzZXJD
b250ZW50Q29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpOwotICAgICAg
ICAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICB1c2VyQ29u
dGVudENvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVl
c3QsIG1fcmVzb3VyY2VUeXBlLCAqbV9kb2N1bWVudExvYWRlcik7CisgICAgICAgICAgICBpZiAo
dXNlckNvbnRlbnRDb250cm9sbGVyICYmIHVzZXJDb250ZW50Q29udHJvbGxlci0+cHJvY2Vzc0Nv
bnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCwgbV9yZXNvdXJjZVR5cGUsICptX2Rv
Y3VtZW50TG9hZGVyKSA9PSBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1czo6QmxvY2tl
ZCkKKyAgICAgICAgICAgICAgICByZXF1ZXN0ID0geyB9OwogICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRYU0xTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiQ29udGVudEV4
dGVuc2lvbkVycm9yLmgiCiAjaW5jbHVkZSAiQ29udGVudEV4dGVuc2lvblJ1bGUuaCIKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAg
LTUxLDYgKzUyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCisjaW5jbHVk
ZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
YWluRnJhbWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgpAQCAtNTEzLDExICs1MTUsMTgg
QEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhYwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCi0gICAgaWYgKGZy
YW1lKCkgJiYgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpICYmIGZyYW1lKCktPm1haW5GcmFt
ZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkgJiYgbV9kb2N1bWVudExvYWRlcikK
LSAgICAgICAgZnJhbWUoKS0+bWFpbkZyYW1lKCkucGFnZSgpLT51c2VyQ29udGVudENvbnRyb2xs
ZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdC5tdXRhYmxl
UmVzb3VyY2VSZXF1ZXN0KCksIHRvUmVzb3VyY2VUeXBlKHR5cGUpLCAqbV9kb2N1bWVudExvYWRl
cik7Ci0KLSAgICBpZiAocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPm1h
aW5GcmFtZSgpLnBhZ2UoKSAmJiBmcmFtZSgpLT5tYWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250
ZW50Q29udHJvbGxlcigpICYmIG1fZG9jdW1lbnRMb2FkZXIpIHsKKyAgICAgICAgaWYgKGZyYW1l
KCktPm1haW5GcmFtZSgpLnBhZ2UoKS0+dXNlckNvbnRlbnRDb250cm9sbGVyKCktPnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVz
dCgpLCB0b1Jlc291cmNlVHlwZSh0eXBlKSwgKm1fZG9jdW1lbnRMb2FkZXIpID09IENvbnRlbnRF
eHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBpZiAodHlw
ZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlKSB7CisgICAgICAgICAgICAg
ICAgYXV0byByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3QubXV0YWJsZVJl
c291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmVy
cm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXM6OkxvYWRFcnJvcik7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnNldFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcihDb250ZW50RXh0ZW5zaW9u
czo6V2ViS2l0Q29udGVudEJsb2NrZXJEb21haW4sIDAsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCksIFdFQl9VSV9TVFJJTkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkg
YSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBk
ZXNjcmlwdGlvbiIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CiAj
ZW5kaWYKIAogICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMTUgKzIwOCwxNSBAQCB2b2lkIFVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlQWxsVXNlCiAgICAgbV9jb250ZW50RXh0ZW5zaW9u
QmFja2VuZC0+cmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsKIH0KIAotdm9pZCBVc2VyQ29u
dGVudENvbnRyb2xsZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRM
b2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikKK0NvbnRlbnRFeHRlbnNpb25zOjpCbG9j
a2VkU3RhdHVzIFVzZXJDb250ZW50Q29udHJvbGxlcjo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVR5cGUgcmVzb3Vy
Y2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewogICAg
IGlmICghbV9jb250ZW50RXh0ZW5zaW9uQmFja2VuZCkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXM6Ok5vdEJsb2NrZWQ7CiAK
ICAgICBpZiAoIWluaXRpYXRpbmdEb2N1bWVudExvYWRlci51c2VyQ29udGVudEV4dGVuc2lvbnNF
bmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNp
b25zOjpCbG9ja2VkU3RhdHVzOjpOb3RCbG9ja2VkOwogCi0gICAgbV9jb250ZW50RXh0ZW5zaW9u
QmFja2VuZC0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCwgcmVz
b3VyY2VUeXBlLCBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIHJldHVybiBtX2NvbnRl
bnRFeHRlbnNpb25CYWNrZW5kLT5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChy
ZXF1ZXN0LCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CiB9CiAKIFZl
Y3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBVc2VyQ29udGVudENvbnRyb2xsZXI6OmFj
dGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYgcmVzb3VyY2VMb2Fk
SW5mbywgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTkw
NjA4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBVc2VyQ29udGVudENvbnRyb2xs
ZXJfaAogI2RlZmluZSBVc2VyQ29udGVudENvbnRyb2xsZXJfaAogCisjaW5jbHVkZSAiQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNs
dWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTkyLDcgKzkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlVXNl
ckNvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50RXh0ZW5zaW9ucygpOwogCi0gICAgdm9pZCBwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIENv
bnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVs
ZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXIm
IGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25z
OjpBY3Rpb24+IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5mbyYs
IERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCShyZXZpc2lvbiAx
OTA2MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTEgQEAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgUmVzb3VyYwogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUG9saWN5
LCBQb2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLCBBU0NJSUxpdGVyYWwoIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsg
cG9ydCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50QmxvY2tl
ciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGJ5IGNvbnRl
bnQgYmxvY2tlciIpKTsKK30KKwogUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluUG9saWN5LCBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCksIEFTQ0lJTGl0ZXJhbCgiVVJMIGNhbm5vdCBiZSBzaG93biIpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmgJKHJldmlzaW9uIDE5MDYwOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsOCBAQCBlbnVtIFBvbGljeUVycm9yIHsKICAgICBQb2xpY3lFcnJvckNh
bm5vdFNob3dNaW1lVHlwZSA9IDEwMCwKICAgICBQb2xpY3lFcnJvckNhbm5vdFNob3dVUkwgPSAx
MDEsCiAgICAgUG9saWN5RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlID0g
MTAyLAotICAgIFBvbGljeUVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAxMDMKKyAgICBQ
b2xpY3lFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gMTAzLAorICAgIFBvbGljeUVycm9y
QmxvY2tlZEJ5Q29udGVudEJsb2NrZXIgPSAxMDQsCiB9OwogCiBlbnVtIFBsdWdpbkVycm9yIHsK
QEAgLTgyLDYgKzgzLDcgQEAgZW51bSBQcmludEVycm9yIHsKIAogUmVzb3VyY2VFcnJvciBjYW5j
ZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworUmVzb3VyY2VFcnJvciBibG9ja2VkQnlD
b250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3VyY2VFcnJv
ciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVy
cm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsu
Y3BwCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJy
b3JzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTEgQEAgUmVzb3VyY2VFcnJv
ciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCksIF8oIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5l
dHdvcmsgcG9ydCIpKTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tl
ckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JCbG9ja2VkQnlDb250ZW50
QmxvY2tlciwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgXygiQmxvY2tlZCBieSBjb250ZW50IGJs
b2NrZXIiKSk7Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblBvbGljeSwgUG9saWN5RXJyb3JDYW5ub3RTaG93VVJMLApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuaAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3
ICs0OSw4IEBAIGVudW0gUG9saWN5RXJyb3IgewogICAgIFBvbGljeUVycm9yQ2Fubm90U2hvd01p
bWVUeXBlID0gMTAwLAogICAgIFBvbGljeUVycm9yQ2Fubm90U2hvd1VSTCA9IDEwMSwKICAgICBQ
b2xpY3lFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgPSAxMDIsCi0gICAg
UG9saWN5RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMworICAgIFBvbGljeUVycm9y
Q2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgPSAxMDMsCisgICAgUG9saWN5RXJyb3JCbG9ja2VkQnlD
b250ZW50QmxvY2tlciA9IDEwNCwKIH07CiAKIGVudW0gUGx1Z2luRXJyb3IgewpAQCAtNzUsNiAr
NzYsNyBAQCBlbnVtIFByaW50RXJyb3IgewogCiBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CitSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGNhbm5vdFNo
b3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIFJlc291
cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTUtMTAtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBvcnQg
ZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjE5NzA1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFk
eSBFaWRzb24uCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3JzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RTaG93VVJM
RXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJF
cnJvcnNFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpibG9ja2VkRXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAg
KFdlYktpdDo6Y2Fubm90U2hvd1VSTEVycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpjYW5ub3RTaG93VVJMRXJyb3IpOgorICAgICAgICBNYWtlIGEgbmV3
IGVycm9yIHR5cGUgZm9yIGxvYWRzIHRoYXQgd2VyZSBibG9ja2VkIGJ5IGEgY29udGVudCBibG9j
a2VyLgorCiAyMDE1LTEwLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIFJFR1JFU1NJT04ocjE5MDQzNCk6IE1lZGlhIGNvbnRpbnVlcyB0byBwbGF5
IHdoZW4gbG9ja2luZyBzY3JlZW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Vycm9yUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
RXJyb3JSZWYuaAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLRXJyb3JSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBlbnVtIHsK
ICAgICBrV0tFcnJvckNvZGVDYW5ub3RTaG93VVJMID0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAxLAogICAgIGtXS0Vycm9yQ29kZUZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xp
Y3lDaGFuZ2UgPSAgICAgICAgICAgICAxMDIsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90VXNlUmVz
dHJpY3RlZFBvcnQgPSAgICAgICAgICAgICAgICAgICAgICAgIDEwMywKKyAgICBrV0tFcnJvckNv
ZGVGcmFtZUxvYWRCbG9ja2VkQnlDb250ZW50QmxvY2tlciA9ICAgICAgICAgICAgICAgMTA0LAog
ICAgIGtXS0Vycm9yQ29kZUNhbm5vdEZpbmRQbHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMDAsCiAgICAga1dLRXJyb3JDb2RlQ2Fubm90TG9hZFBsdWdJbiA9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIwMSwKICAgICBrV0tFcnJvckNvZGVKYXZhVW5hdmFpbGFi
bGUgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyLApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oCShy
ZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVycm9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CitXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAzLDYgKzExMDMsMTEgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxv
YWRlckNsaWVudDo6YmxvYwogICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0
KTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29u
dGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKK30K
KwogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViS2l0Ojpj
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MSw2ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50
ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAkocmV2
aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9lZmwvV2ViRXJyb3JzRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTEgQEAg
UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyYwogICAgIHJldHVybiBXZWJD
b3JlOjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5
Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IocmVxdWVzdCk7
Cit9CisKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9y
KHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRXJyb3JzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCShyZXZpc2lvbiAxOTA2
MDgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJF
cnJvcnNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwxMSBAQCBSZXNvdXJjZUVy
cm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjCiAgICAgcmV0dXJuIFdlYkNvcmU6OmJsb2Nr
ZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAorUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50Qmxv
Y2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4g
V2ViQ29yZTo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihyZXF1ZXN0KTsKK30KKwogUmVz
b3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewogICAgIHJldHVybiBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
cnJvcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBAIFJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFJlc291cmMKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3
ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCwg
cmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiTm90IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0
ZWQgbmV0d29yayBwb3J0IiwgIldlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQgZGVz
Y3JpcHRpb24iKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JDb2RlRnJh
bWVMb2FkQmxvY2tlZEJ5Q29udGVudEJsb2NrZXIsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlRoZSBVUkwgd2FzIGJsb2NrZWQgYnkgYSBjb250ZW50IGJsb2NrZXIiLCAiV2ViS2l0RXJy
b3JCbG9ja2VkQnlDb250ZW50QmxvY2tlciBkZXNjcmlwdGlvbiIpKTsKK30KKwogUmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWlu
KCksIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dVUkwsIHJlcXVlc3QudXJsKCksIFdFQl9VSV9TVFJJ
TkcoIlRoZSBVUkwgY2Fu4oCZdCBiZSBzaG93biIsICJXZWJLaXRFcnJvckNhbm5vdFNob3dVUkwg
ZGVzY3JpcHRpb24iKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA2MDgpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxNS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMgYmxvY2tl
ZCBieSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Ymxv
Y2tlZEVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5ub3RT
aG93VVJMRXJyb3IpOgorICAgICAgICBBZGQgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvciBz
byBXZWJGcmFtZUxvYWRlckNsaWVudCBpcyBub3QgYW4gYWJzdHJhY3QgY2xhc3MsCisgICAgICAg
IGJ1dCBpdCBzaG91bGQgYmUgdW51c2VkIGJlY2F1c2UgY29udGVudCBibG9ja2VycyBhcmUgbm90
IGVuYWJsZWQgb24gV0sxLgorCiAyMDE1LTEwLTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBEdW1wUmVuZGVyVHJlZSBidWlsdCB3aXRoIHB1YmxpYyBpT1Mg
U0RLIGNyYXNoZXMgdW5kZXIgLVtXZWJQcmVmZXJlbmNlcyhXZWJQcml2YXRlKSBfc2V0Q3VycmVu
dE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ol0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTkwNjA4KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExNDcsNiArMTE0NywxMSBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpibG9jCiAgICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhEb21h
aW46V2ViS2l0RXJyb3JEb21haW4gY29kZTpXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQ
b3J0IFVSTDpyZXF1ZXN0LnVybCgpXTsKIH0KIAorUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gQ29u
dGVudCBibG9ja2VycyBhcmUgbm90IGVuYWJsZWQgaW4gV2ViS2l0MS4KK30KKwogUmVzb3VyY2VF
cnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gW05TRXJyb3IgX3dlYktpdEVycm9y
V2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOldlYktpdEVycm9yQ2Fubm90U2hvd1VS
TCBVUkw6cmVxdWVzdC51cmwoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA2
MDgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlcG9ydCBlcnJvciB3aGVuIG1haW4gcmVzb3VyY2UgaXMg
YmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0OTcxOQorICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTk3MDU5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQWRkZWQgc3R1YiB0aGF0IHNob3VsZCBuZXZl
ciBiZSB1c2VkLgorCiAyMDE1LTA5LTMwICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wdXRlIGRvY3VtZW50IG1hcmtlciByZWN0cyBhdCB1
c2UgdGltZSBpbnN0ZWFkIG9mIHBhaW50IHRpbWUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDE5MDYwOCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU4LDYgKzg1OCwxMSBAQCBS
ZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpibG9jCiAgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JDYW5ub3RVc2VS
ZXN0cmljdGVkUG9ydCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgV0VCX1VJX1NUUklORygiTm90
IGFsbG93ZWQgdG8gdXNlIHJlc3RyaWN0ZWQgbmV0d29yayBwb3J0IiwgIldlYktpdEVycm9yQ2Fu
bm90VXNlUmVzdHJpY3RlZFBvcnQgZGVzY3JpcHRpb24iKSk7CiB9CiAKK1Jlc291cmNlRXJyb3Ig
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIENvbnRlbnQgQmxvY2tlcnMgYXJlIG5vdCBlbmFibGVkIGZvciBXSzEuCit9CisK
IFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoU3RyaW5nKFdlYktpdEVycm9yRG9tYWluKSwgV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLCBXRUJfVUlfU1RSSU5HKCJUaGUgVVJMIGNhblx4RTJceDgw
XHg5OXQgYmUgc2hvd24iLCAiV2ViS2l0RXJyb3JDYW5ub3RTaG93VVJMIGRlc2NyaXB0aW9uIikp
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxOTA2MDgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwNjA4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTAtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXBvcnQg
ZXJyb3Igd2hlbiBtYWluIHJlc291cmNlIGlzIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk3MTkKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjE5NzA1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFk
eSBFaWRzb24uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4t
cmVzb3VyY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRl
bnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwuanNvbjogQWRkZWQuCisK
IDIwMTUtMTAtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
IAogICAgICAgICBNaWdyYXRlIHN0cmVhbXMgQVBJIHRvIEpTIEJ1aWx0aW5zCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVu
c2lvbnMvbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAoraHR0cDovLzEyNy4wLjAuMTo4MDAw
L2NvbnRlbnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcK
K0NPTlNPTEUgTUVTU0FHRTogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5
aW5nIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvc2hv
dWxkLW5vdC1sb2FkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5o
dG1sCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3No
b3VsZC1ub3QtbG9hZC5odG1sIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9yIGRv
bWFpbiBXZWJLaXRFcnJvckRvbWFpbiwgY29kZSAxMDQsIGZhaWxpbmcgVVJMICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3Nob3VsZC1ub3QtbG9hZC5o
dG1sIj4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMv
c2hvdWxkLW5vdC1sb2FkLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCisKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1y
ZXNvdXJjZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250
ZW50ZXh0ZW5zaW9ucy9tYWluLXJlc291cmNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoInJlc291cmNlcy9zaG91bGQtbm90LWxvYWQu
aHRtbCIpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRl
bnRleHRlbnNpb25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29uCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvbWFpbi1yZXNvdXJjZS5odG1sLmpz
b24JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNp
b25zL21haW4tcmVzb3VyY2UuaHRtbC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKK1sKKyAgICB7CisgICAgICAgICJhY3Rpb24iOiB7CisgICAgICAgICAgICAidHlwZSI6ICJi
bG9jayIKKyAgICAgICAgfSwKKyAgICAgICAgInRyaWdnZXIiOiB7CisgICAgICAgICAgICAidXJs
LWZpbHRlciI6ICJzaG91bGQtbm90LWxvYWQiCisgICAgICAgIH0KKyAgICB9CitdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>