<?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>115548</bug_id>
          
          <creation_ts>2013-05-03 08:52:00 -0700</creation_ts>
          <short_desc>Manage the presentation of the snapshotted plug-in using JavaScript</short_desc>
          <delta_ts>2013-05-06 01:24:14 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>884163</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-03 08:52:00 -0700</bug_when>
    <thetext>Browsers embedding WebKit will likely want to customize the appearance of the snapshotted plug-in. As such, it&apos;s not practical to want to generate markup for the plug-in&apos;s shadow root within WebCore. We should instead allow the chrome client to customize this by providing some JavaScript that will be injected into the document and called with the shadow root as well as whatever is necessary to localize any text shown for the snapshotted plug-in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884164</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-03 08:52:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/13722263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884167</commentid>
    <comment_count>2</comment_count>
      <attachid>200417</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-03 09:22:09 -0700</bug_when>
    <thetext>Created attachment 200417
Patch for build testing, no need to review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884193</commentid>
    <comment_count>3</comment_count>
      <attachid>200417</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-03 10:01:00 -0700</bug_when>
    <thetext>Comment on attachment 200417
Patch for build testing, no need to review yet.

Attachment 200417 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/391481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884212</commentid>
    <comment_count>4</comment_count>
      <attachid>200417</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-03 10:30:50 -0700</bug_when>
    <thetext>Comment on attachment 200417
Patch for build testing, no need to review yet.

Attachment 200417 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/401102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884461</commentid>
    <comment_count>5</comment_count>
      <attachid>200417</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-05-03 19:12:02 -0700</bug_when>
    <thetext>Comment on attachment 200417
Patch for build testing, no need to review yet.

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

Looks good. I think you can split it into a couple of separate patches though.

&gt; Source/WebCore/CMakeLists.txt:3097
&gt; +# Generate plug-in resources
&gt; +add_custom_command(
&gt; +    OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/PlugInsResourcesData.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/PlugInsResources.h
&gt; +    MAIN_DEPENDENCY ${WEBCORE_DIR}/css/make-css-file-arrays.pl
&gt; +    DEPENDS ${WebCore_PLUG_INS_RESOURCES} ${WEBCORE_DIR}/bindings/scripts/preprocessor.pm
&gt; +    COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/css/make-css-file-arrays.pl --defines &quot;${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}&quot; --preprocessor &quot;${CODE_GENERATOR_PREPROCESSOR}&quot; ${DERIVED_SOURCES_WEBCORE_DIR}/PlugInsResources.h ${DERIVED_SOURCES_WEBCORE_DIR}/PlugInsResourcesData.cpp ${WebCore_PLUG_INS_RESOURCES}
&gt; +    VERBATIM)
&gt; +list(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/PlugInsResourcesData.cpp)
&gt; +ADD_SOURCE_WEBCORE_DERIVED_DEPENDENCIES(${WEBCORE_DIR}/css/StyleResolver.cpp PlugInsResourcesData.cpp PlugInsResources.h)

All cool stuff. Didn&apos;t even know how to do this.

&gt; Source/WebCore/DerivedSources.make:838
&gt; +PlugInsResources.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(PLUG_INS_RESOURCES)

make-css-file-arrays?

&gt; Source/WebCore/css/plugIns.css:34
&gt; - *       &lt;div class=&quot;snapshot-overlay&quot;&gt;&lt;/div&gt; &lt;!-- e.g. for dimming content --&gt;
&gt; - *         &lt;div class=&quot;snapshot-label&quot;&gt;
&gt; - *           &lt;div class=&quot;snapshot-title&quot;&gt;Snapshotted Plug-In&lt;/div&gt;
&gt; - *           &lt;div class=&quot;snapshot-subtitle&quot;&gt;Click to restart&lt;/div&gt;
&gt; + *     #ShadowRoot
&gt; + *         &lt;div pseudo=&quot;-webkit-snapshotted-plugin-content&quot;&gt;
&gt; + *             &lt;div class=&quot;snapshot-overlay&quot; aria-label=&quot;[Title]: [Subtitle]&quot; role=&quot;button&quot;&gt;

We use the snapshot-overlay in our client/Safari code for something special. I think it needs to be a separate element (it&apos;s not clear from crappy formatting that that should be the case)

&gt; Source/WebCore/css/plugIns.css:51
&gt; -object::-webkit-snapshotted-plugin-content .snapshot-container,
&gt; -embed::-webkit-snapshotted-plugin-content .snapshot-container
&gt; +*::-webkit-snapshotted-plugin-content &gt; .snapshot-overlay

I stuck with specific selectors because I didn&apos;t want this to impact performance of other content. Remember, this file is evaluated for every page that has a plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884519</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-04 03:16:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 200417 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200417&amp;action=review
&gt; 
&gt; Looks good. I think you can split it into a couple of separate patches though.

Yes, will do.
 
&gt; &gt; Source/WebCore/DerivedSources.make:838
&gt; &gt; +PlugInsResources.h : css/make-css-file-arrays.pl bindings/scripts/preprocessor.pm $(PLUG_INS_RESOURCES)
&gt; 
&gt; make-css-file-arrays?

Yeah, that confused me as well, but that script is more generic and handles both CSS and JS.
 
&gt; &gt; Source/WebCore/css/plugIns.css:34
&gt; &gt; - *       &lt;div class=&quot;snapshot-overlay&quot;&gt;&lt;/div&gt; &lt;!-- e.g. for dimming content --&gt;
&gt; &gt; - *         &lt;div class=&quot;snapshot-label&quot;&gt;
&gt; &gt; - *           &lt;div class=&quot;snapshot-title&quot;&gt;Snapshotted Plug-In&lt;/div&gt;
&gt; &gt; - *           &lt;div class=&quot;snapshot-subtitle&quot;&gt;Click to restart&lt;/div&gt;
&gt; &gt; + *     #ShadowRoot
&gt; &gt; + *         &lt;div pseudo=&quot;-webkit-snapshotted-plugin-content&quot;&gt;
&gt; &gt; + *             &lt;div class=&quot;snapshot-overlay&quot; aria-label=&quot;[Title]: [Subtitle]&quot; role=&quot;button&quot;&gt;
&gt; 
&gt; We use the snapshot-overlay in our client/Safari code for something special. I think it needs to be a separate element (it&apos;s not clear from crappy formatting that that should be the case)

I think you mean the -webkit-appearance &quot;snapshotted-plugin-overlay&quot; value. We should rename it to be &quot;snapshotted-plugin-overlay-blur&quot; since this is what it is. We don&apos;t have to worry about CSS class names as much since the WebCore plugIns.css file is not injected if the client chrome provides a CSS file of its own. It makes no sense to have a generic CSS since there is no generic shadow tree generated.

&gt; &gt; Source/WebCore/css/plugIns.css:51
&gt; &gt; -object::-webkit-snapshotted-plugin-content .snapshot-container,
&gt; &gt; -embed::-webkit-snapshotted-plugin-content .snapshot-container
&gt; &gt; +*::-webkit-snapshotted-plugin-content &gt; .snapshot-overlay
&gt; 
&gt; I stuck with specific selectors because I didn&apos;t want this to impact performance of other content. Remember, this file is evaluated for every page that has a plugin.

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884566</commentid>
    <comment_count>7</comment_count>
      <attachid>200541</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-04 13:14:14 -0700</bug_when>
    <thetext>Created attachment 200541
Updated patch for build, hopefully fixes GTK and Windows failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884567</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-04 13:17:54 -0700</bug_when>
    <thetext>Attachment 200541 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/DerivedSources.cpp&apos;, u&apos;Source/WebCore/DerivedSources.make&apos;, u&apos;Source/WebCore/DerivedSources.pri&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Resources/plugIns.js&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/css/CSSDefaultStyleSheets.cpp&apos;, u&apos;Source/WebCore/css/plugIns.css&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.h&apos;, u&apos;Source/WebCore/page/ChromeClient.h&apos;, u&apos;Source/WebCore/rendering/RenderSnapshottedPlugIn.cpp&apos;, u&apos;Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h&apos;, u&apos;Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp&apos;]&quot; exit_code: 1
Source/WebCore/dom/Document.h:1207:  The parameter name &quot;world&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884579</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-04 14:01:34 -0700</bug_when>
    <thetext>The first step towards this is being done in https://bugs.webkit.org/show_bug.cgi?id=115596.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884597</commentid>
    <comment_count>10</comment_count>
      <attachid>200548</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-04 15:21:09 -0700</bug_when>
    <thetext>Created attachment 200548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884601</commentid>
    <comment_count>11</comment_count>
      <attachid>200548</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-05-04 15:52:43 -0700</bug_when>
    <thetext>Comment on attachment 200548
Patch

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

&gt; Source/WebCore/ChangeLog:36
&gt; +        * dom/Document.h:
&gt; +        Expose the new ensurePlugInsInjectedScript method and the m_injectedPlugInsScript
&gt; +        property used to ensure injection happens only once per document.

The thing that worries me the most about this change is if it will have any issues on pages with deeply nested plugins. This is pretty common on news sites with a lot of advertising (often injected many iframes deep). Our automated testing for this feature is pretty bad - but I wonder if you&apos;ve done a lot of manual testing?

&gt; Source/WebCore/ChangeLog:42
&gt; +        Make the localized strings static members since they will be shared by all instances
&gt; +        and it can be costly to retrieve those strings each time from the client. Additionally,

This is a great change, but won&apos;t quite work. You&apos;re only storing the string once and not taking the mime type into account. That means you&apos;ll always get whatever string was returned for the first plugin in the lifetime of the process. I suggest you have something like a HashTable indexed by mime type, or skip this change and do it in a followup.

&gt; Source/WebKit2/ChangeLog:21
&gt; +        (WebKit):

Remove this line.

&gt; Source/WebKit2/ChangeLog:28
&gt; +        (WebKit):

And this one.

&gt; Source/WebCore/Resources/plugIns.js:27
&gt; +    var title = this.title = snapshotLabel.appendChild(document.createElement(&quot;div&quot;));

We avoid this style of initialisation in WebKit. The style checker doesn&apos;t complain because it doesn&apos;t look at JS (I think).
Use two lines.

&gt; Source/WebCore/Resources/plugIns.js:31
&gt; +    var subtitle = this.subtitle = snapshotLabel.appendChild(document.createElement(&quot;div&quot;));

Ditto.

&gt; Source/WebCore/css/CSSDefaultStyleSheets.cpp:206
&gt;      if (!plugInsStyleSheet &amp;&amp; (element-&gt;hasTagName(objectTag) || element-&gt;hasTagName(embedTag))) {
&gt; -        String plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet)) + RenderTheme::themeForPage(element-&gt;document()-&gt;page())-&gt;extraPlugInsStyleSheet() + element-&gt;document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInExtraStyleSheet();
&gt; +        String plugInsRules = RenderTheme::themeForPage(element-&gt;document()-&gt;page())-&gt;extraPlugInsStyleSheet() + element-&gt;document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInExtraStyleSheet();
&gt; +        if (plugInsRules.isEmpty())
&gt; +            plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet));

One of the reasons I didn&apos;t do this the first time around was because it was fairly different from the other UA SS approaches. I think it&apos;s ok since snapshotting is the only thing happening with plugins at the moment, but I wouldn&apos;t mind if the SS was always injected in the future.

&gt; Source/WebCore/dom/Document.cpp:6056
&gt; +void Document::ensurePlugInsInjectedScript(DOMWrapperWorld* world)

I don&apos;t really understand why the boolean m_injectedPlugInsScript tells me if this method has been called, but it might have been called on a different DOMWrapperWorld. Does this make sense?

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:60
&gt; +using namespace JSC;

WebKit coding style is to not use &quot;using&quot; (although HTMLNames always seems to get away with it). Instead use JSC::call when you need it.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:78
&gt; +static const String&amp; titleText(Page* page, String mimeType)
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(String, titleText, ());
&gt; +    if (titleText.isEmpty())

This is what I was talking about above. If I call titleText(p, &quot;flash/type&quot;) and titleText(p, &quot;silverlight/type&quot;) then I would get the same answer.

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:366
&gt; +    DEFINE_STATIC_LOCAL(RefPtr&lt;DOMWrapperWorld&gt;, isolatedWorld, (DOMWrapperWorld::create(JSDOMWindow::commonVM())));
&gt; +    document()-&gt;ensurePlugInsInjectedScript(isolatedWorld.get());

And this is what I was confused about above. You&apos;re creating a new isolated world for each plugin, but only testing per document. I guess that&apos;s ok, since it is only injecting the script into the main doc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884702</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-05 00:28:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 200548 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=200548&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:36
&gt; &gt; +        * dom/Document.h:
&gt; &gt; +        Expose the new ensurePlugInsInjectedScript method and the m_injectedPlugInsScript
&gt; &gt; +        property used to ensure injection happens only once per document.
&gt; 
&gt; The thing that worries me the most about this change is if it will have any issues on pages with deeply nested plugins. This is pretty common on news sites with a lot of advertising (often injected many iframes deep). Our automated testing for this feature is pretty bad - but I wonder if you&apos;ve done a lot of manual testing?

Do you have suggestions for sites to browse?

&gt; &gt; Source/WebCore/ChangeLog:42
&gt; &gt; +        Make the localized strings static members since they will be shared by all instances
&gt; &gt; +        and it can be costly to retrieve those strings each time from the client. Additionally,
&gt; 
&gt; This is a great change, but won&apos;t quite work. You&apos;re only storing the string once and not taking the mime type into account. That means you&apos;ll always get whatever string was returned for the first plugin in the lifetime of the process. I suggest you have something like a HashTable indexed by mime type, or skip this change and do it in a followup.

Duh. I&apos;ll try to make the change in this patch, should be pretty minor to introduce a HashTable.

&gt; &gt; Source/WebKit2/ChangeLog:21
&gt; &gt; +        (WebKit):
&gt; 
&gt; Remove this line.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:28
&gt; &gt; +        (WebKit):
&gt; 
&gt; And this one.

Will do.

&gt; &gt; Source/WebCore/Resources/plugIns.js:27
&gt; &gt; +    var title = this.title = snapshotLabel.appendChild(document.createElement(&quot;div&quot;));
&gt; 
&gt; We avoid this style of initialisation in WebKit. The style checker doesn&apos;t complain because it doesn&apos;t look at JS (I think).
&gt; Use two lines.
&gt; 
&gt; &gt; Source/WebCore/Resources/plugIns.js:31
&gt; &gt; +    var subtitle = this.subtitle = snapshotLabel.appendChild(document.createElement(&quot;div&quot;));
&gt; 
&gt; Ditto.


Will do.
 
&gt; &gt; Source/WebCore/css/CSSDefaultStyleSheets.cpp:206
&gt; &gt;      if (!plugInsStyleSheet &amp;&amp; (element-&gt;hasTagName(objectTag) || element-&gt;hasTagName(embedTag))) {
&gt; &gt; -        String plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet)) + RenderTheme::themeForPage(element-&gt;document()-&gt;page())-&gt;extraPlugInsStyleSheet() + element-&gt;document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInExtraStyleSheet();
&gt; &gt; +        String plugInsRules = RenderTheme::themeForPage(element-&gt;document()-&gt;page())-&gt;extraPlugInsStyleSheet() + element-&gt;document()-&gt;page()-&gt;chrome()-&gt;client()-&gt;plugInExtraStyleSheet();
&gt; &gt; +        if (plugInsRules.isEmpty())
&gt; &gt; +            plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet));
&gt; 
&gt; One of the reasons I didn&apos;t do this the first time around was because it was fairly different from the other UA SS approaches. I think it&apos;s ok since snapshotting is the only thing happening with plugins at the moment, but I wouldn&apos;t mind if the SS was always injected in the future.

I just don&apos;t see the point in injecting CSS that would basically never be used and could cause problems when authoring custom CSS for snapshotted plug-ins.

&gt; &gt; Source/WebCore/dom/Document.cpp:6056
&gt; &gt; +void Document::ensurePlugInsInjectedScript(DOMWrapperWorld* world)
&gt; 
&gt; I don&apos;t really understand why the boolean m_injectedPlugInsScript tells me if this method has been called, but it might have been called on a different DOMWrapperWorld. Does this make sense?

What&apos;s important is that it injects scripts only once per document. Since there should be a single shared world for the life-time of the browser session, it really shouldn&apos;t matter what the passed world is.

&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:60
&gt; &gt; +using namespace JSC;
&gt; 
&gt; WebKit coding style is to not use &quot;using&quot; (although HTMLNames always seems to get away with it). Instead use JSC::call when you need it.

OK.

&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:78
&gt; &gt; +static const String&amp; titleText(Page* page, String mimeType)
&gt; &gt; +{
&gt; &gt; +    DEFINE_STATIC_LOCAL(String, titleText, ());
&gt; &gt; +    if (titleText.isEmpty())
&gt; 
&gt; This is what I was talking about above. If I call titleText(p, &quot;flash/type&quot;) and titleText(p, &quot;silverlight/type&quot;) then I would get the same answer.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:366
&gt; &gt; +    DEFINE_STATIC_LOCAL(RefPtr&lt;DOMWrapperWorld&gt;, isolatedWorld, (DOMWrapperWorld::create(JSDOMWindow::commonVM())));
&gt; &gt; +    document()-&gt;ensurePlugInsInjectedScript(isolatedWorld.get());
&gt; 
&gt; And this is what I was confused about above. You&apos;re creating a new isolated world for each plugin, but only testing per document. I guess that&apos;s ok, since it is only injecting the script into the main doc.

My intent was to create a single shared DOMWrapperWorld for the entire browser session. Maybe I misunderstand how DEFINE_STATIC_LOCAL works. Maybe this is what it should be?

    DEFINE_STATIC_LOCAL(RefPtr&lt;DOMWrapperWorld&gt;, isolatedWorld, ());
    if (!isolatedWorld)
        isolatedWorld = DOMWrapperWorld::create(JSDOMWindow::commonVM());

Do you think this world should be created by the Document to have this done in ensurePlugInsInjectedScript()? We&apos;d still have a single DOMWrapperWorld of course.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884737</commentid>
    <comment_count>13</comment_count>
      <attachid>200595</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-05 14:35:07 -0700</bug_when>
    <thetext>Created attachment 200595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884775</commentid>
    <comment_count>14</comment_count>
      <attachid>200595</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-05-05 21:22:53 -0700</bug_when>
    <thetext>Comment on attachment 200595
Patch

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

I hope it&apos;s ok to potentially have a lot of isolated worlds in a page.

&gt; Source/WebCore/css/plugIns.css:57
&gt; +    
&gt; +    top: 5px;

blank line?

&gt; Source/WebCore/dom/Document.cpp:6068
&gt; +    page()-&gt;mainFrame()-&gt;script()-&gt;evaluateInWorld(ScriptSourceCode(jsString), world);
&gt; +
&gt; +    m_hasInjectedPlugInsScript = true;

Maybe here we should also check that there is now a createWorld function. This could be in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884776</commentid>
    <comment_count>15</comment_count>
      <attachid>200595</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2013-05-05 21:45:54 -0700</bug_when>
    <thetext>Comment on attachment 200595
Patch

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

&gt; Source/WebCore/ChangeLog:40
&gt; +        (WebCore::subtitleText):

Are these functions still necessary, if the overlay content is determined by the JS? Couldn’t we include a separate localized string JS file, provided by the client, and have the injected JS determine the contents using that?

Could be done as a follow-up patch, if it makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884816</commentid>
    <comment_count>16</comment_count>
      <attachid>200621</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-06 00:26:00 -0700</bug_when>
    <thetext>Created attachment 200621
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884852</commentid>
    <comment_count>17</comment_count>
      <attachid>200638</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-05-06 00:37:30 -0700</bug_when>
    <thetext>Created attachment 200638
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884867</commentid>
    <comment_count>18</comment_count>
      <attachid>200638</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 01:24:09 -0700</bug_when>
    <thetext>Comment on attachment 200638
Patch for landing

Clearing flags on attachment: 200638

Committed r149586: &lt;http://trac.webkit.org/changeset/149586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>884868</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-06 01:24:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200417</attachid>
            <date>2013-05-03 09:22:09 -0700</date>
            <delta_ts>2013-05-04 15:20:52 -0700</delta_ts>
            <desc>Patch for build testing, no need to review yet.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>41200</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY2ZTgzZi4uMGM5ZTY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTI1NzgsNiArMjU3OCwxMCBAQCBzZXQoV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxF
X1NIRUVUUwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy92aWV3LXNvdXJjZS5jc3MKICkKIAorc2V0
KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCisgICAgJHtXRUJDT1JFX0RJUn0vUmVzb3VyY2Vz
L3BsdWdJbnMuanMKKykKKwogc2V0KFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtXVEZfTElCUkFS
WV9OQU1FfQogICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQpAQCAtMzA4Miw2ICsz
MDg2LDE1IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vVXNlckFnZW50U3R5bGVTaGVldHNEYXRh
LmNwcCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVf
RElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBV
c2VyQWdlbnRTdHlsZVNoZWV0cy5oKQogCisjIEdlbmVyYXRlIHBsdWctaW4gcmVzb3VyY2VzCith
ZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1BsdWdJbnNSZXNvdXJjZXMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke1dFQkNPUkVfRElS
fS9jc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwKKyAgICBERVBFTkRTICR7V2ViQ29yZV9QTFVH
X0lOU19SRVNPVVJDRVN9ICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
c29yLnBtCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9zY3JpcHRzICR7V0VCQ09SRV9ESVJ9L2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5w
bCAtLWRlZmluZXMgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIgLS1w
cmVwcm9jZXNzb3IgIiR7Q09ERV9HRU5FUkFUT1JfUFJFUFJPQ0VTU09SfSIgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXMuaCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwICR7V2ViQ29yZV9QTFVHX0lOU19S
RVNPVVJDRVN9CisgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCkKK0FE
RF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwIFBsdWdJbnNSZXNvdXJj
ZXMuaCkKIAogR0VORVJBVEVfR1JBTU1BUihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3Jh
bW1hci55LmluICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwICIke0ZFQVRVUkVfREVG
SU5FU19XSVRIX1NQQUNFX1NFUEFSQVRPUn0iKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCA0YTRiYWRhLi41MjRkMGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCkBAIC01MzEsNiArNTMxLDcgQEAKICNpbmNsdWRlICJKU1hQYXRoTlNSZXNv
bHZlci5jcHAiCiAjaW5jbHVkZSAiSlNYUGF0aFJlc3VsdC5jcHAiCiAjaW5jbHVkZSAiSlNYU0xU
UHJvY2Vzc29yLmNwcCIKKyNpbmNsdWRlICJQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAiCiAjaW5j
bHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCIKIAogLy8gT24gTVNWQywgaW5jbHVk
aW5nIFN0YXRpY0NvbnN0cnVjdG9ycy5oIGNhdXNlcyBhbGwgZ2xvYmFsIG9iamVjdHMgbm90IHRv
IGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NDdkNWMzLi4yMjQ0ZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY3OSw2ICs2NzksNyBAQCBhbGwgOiBc
CiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5hbWVzLmNwcCBcCiAgICAgSlNT
VkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKKyAgICBQbHVnSW5zUmVzb3VyY2VzLmggXAog
ICAgIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCBcCiAgICAgU1ZHTmFtZXMuY3BwIFwKICAgICBVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oIFwKQEAgLTgzMCw2ICs4MzEsMTUgQEAgVXNlckFnZW50U3R5bGVT
aGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCBiaW5kaW5ncy9zY3JpcHRzL3By
ZXByb2Nlc3MKIAogIyAtLS0tLS0tLQogCisjIHBsdWdJbnMgcmVzb3VyY2VzCisKK1BMVUdfSU5T
X1JFU09VUkNFUyA9ICQoV2ViQ29yZSkvUmVzb3VyY2VzL3BsdWdJbnMuanMKKworUGx1Z0luc1Jl
c291cmNlcy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJyYXlzLnBsIGJpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzc29yLnBtICQoUExVR19JTlNfUkVTT1VSQ0VTKQorCXBlcmwgLUkkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykiICRAIFBs
dWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAkKFBMVUdfSU5TX1JFU09VUkNFUykKKworIyAtLS0tLS0t
LQorCiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIDog
ZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2Ny
aXB0cy9TdGF0aWNTdHJpbmcucG0gY3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbgogCXBlcmwg
LUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZm9udHMgJChXZWJDb3JlKS9jc3Mv
V2ViS2l0Rm9udEZhbWlseU5hbWVzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRl
eCA3OTA5ZTFhLi4zM2UzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC04Niw2
ICs4Niw5IEBAIFNUWUxFU0hFRVRTX0VNQkVEID0gXAogICAgICQkUFdEL2Nzcy90aGVtZVF0Tm9M
aXN0Ym94ZXMuY3NzIFwKICAgICAkJFBXRC9jc3MvbW9iaWxlVGhlbWVRdC5jc3MKIAorUExVR0lO
U19FTUJFRCA9IFwKKyAgICAkJFBXRC9SZXNvdXJjZXMvcGx1Z0lucy5qcworCiBJRExfQklORElO
R1MgKz0gXAogICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbCBc
CiAgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCkBA
IC05NTYsMTQgKzk1OSwyMyBAQCBzdHlsZXNoZWV0cy5kZXBlbmRzID0gJCRTVFlMRVNIRUVUU19F
TUJFRAogc3R5bGVzaGVldHMuY2xlYW4gPSAke1FNQUtFX0ZJTEVfT1VUfSAke1FNQUtFX0ZVTkNf
RklMRV9PVVRfUEFUSH0vVXNlckFnZW50U3R5bGVTaGVldHMuaAogR0VORVJBVE9SUyArPSBzdHls
ZXNoZWV0cwogCi0jIEdFTkVSQVRPUiAxMDogWFBBVEggZ3JhbW1hcgorIyBHRU5FUkFUT1IgMTA6
CitwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdCA9ICQkUFdEL2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5
cy5wbAorcGx1Z2luc3Jlc291cmNlcy5vdXRwdXQgPSBQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAK
K3BsdWdpbnNyZXNvdXJjZXMuaW5wdXQgPSBwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdAorcGx1Z2lu
c3Jlc291cmNlcy5jb21tYW5kcyA9IHBlcmwgJCRwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdCAke1FN
QUtFX0ZVTkNfRklMRV9PVVRfUEFUSH0vUGx1Z0luc1Jlc291cmNlcy5oICR7UU1BS0VfRklMRV9P
VVR9ICQkUExVR0lOU19FTUJFRAorcGx1Z2luc3Jlc291cmNlcy5kZXBlbmRzID0gJCRQTFVHSU5T
X0VNQkVECitwbHVnaW5zcmVzb3VyY2VzLmNsZWFuID0gJHtRTUFLRV9GSUxFX09VVH0gJHtRTUFL
RV9GVU5DX0ZJTEVfT1VUX1BBVEh9L1BsdWdJbnNSZXNvdXJjZXMuaAorR0VORVJBVE9SUyArPSBw
bHVnaW5zcmVzb3VyY2VzCisKKyMgR0VORVJBVE9SIDExOiBYUEFUSCBncmFtbWFyCiB4cGF0aGJp
c29uLm91dHB1dCA9ICR7UU1BS0VfRklMRV9CQVNFfS5jcHAKIHhwYXRoYmlzb24uaW5wdXQgPSBY
UEFUSEJJU09OCiB4cGF0aGJpc29uLmNvbW1hbmRzID0gYmlzb24gLWQgLXAgeHBhdGh5eSAke1FN
QUtFX0ZJTEVfTkFNRX0gLW8gJHtRTUFLRV9GVU5DX0ZJTEVfT1VUX1BBVEh9LyR7UU1BS0VfRklM
RV9CQVNFfS50YWIuYyAmJiAkKE1PVkUpICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FN
QUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxFX0JBU0V9LnRhYi5jICR7UU1BS0VfRlVOQ19GSUxFX09V
VF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxFX0JBU0V9LmNwcCAmJiAkKE1PVkUp
ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxF
X0JBU0V9LnRhYi5oICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9
JHtRTUFLRV9GSUxFX0JBU0V9LmgKIHhwYXRoYmlzb24uZGVwZW5kcyA9ICR7UU1BS0VfRklMRV9O
QU1FfQogR0VORVJBVE9SUyArPSB4cGF0aGJpc29uCiAKLSMgR0VORVJBVE9SIDExOiBXZWJLaXQg
VmVyc2lvbgorIyBHRU5FUkFUT1IgMTI6IFdlYktpdCBWZXJzaW9uCiAjIFRoZSBhcHByb3ByaWF0
ZSBBcHBsZS1tYWludGFpbmVkIFZlcnNpb24ueGNjb25maWcgZmlsZSBmb3IgV2ViS2l0IHZlcnNp
b24gaW5mb3JtYXRpb24gaXMgaW4gU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvLgog
d2Via2l0dmVyc2lvbi5zY3JpcHQgPSAkJFBXRC8uLi9XZWJLaXQvc2NyaXB0cy9nZW5lcmF0ZS13
ZWJraXR2ZXJzaW9uLnBsCiB3ZWJraXR2ZXJzaW9uLm91dHB1dCA9IFdlYktpdFZlcnNpb24uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBkZmQxN2IyLi42NGNmZDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtMjc5LDYgKzI3OSwxMCBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKIAkk
KFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyBcCiAJJChXZWJDb3JlKS9jc3MvcGx1Z0lucy5j
c3MKIAorIyBwbHVnLWluIHJlc291cmNlcworUExVR19JTlNfUkVTT1VSQ0VTID0gXAorCSQoV2Vi
Q29yZSkvUmVzb3VyY2VzL3BsdWdJbnMuanMKKwogIyBuZXctc3R5bGUgSmF2YVNjcmlwdCBiaW5k
aW5ncwogU0NSSVBUU19GT1JfR0VORVJBVEVfQklORElOR1MgPSBcCiAJJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXApAQCAtMjk1LDYgKzI5OSwxMCBAQCBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHA6IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvVXNlcgogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTdHls
ZVNoZWV0cy5oOiAkKFdlYkNvcmUpL2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBtICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRz
ICQ8ICAtLWRlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgJEAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Vc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMpCiAKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwOiBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1BsdWdJbnNSZXNvdXJjZXMuaAorRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzLmg6ICQoV2ViQ29yZSkvY3NzL21ha2UtY3NzLWZpbGUt
YXJyYXlzLnBsICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0gJChQ
TFVHX0lOU19SRVNPVVJDRVMpCisJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzICQ8ICAtLWRlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgJEAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgJChQTFVHX0lOU19SRVNP
VVJDRVMpCisKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNw
cDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuaAogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuaDogJChXZWJDb3JlKS9kb20v
bWFrZV9uYW1lcy5wbCAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gJChXZWJDb3JlKS9jc3MvV2Vi
S2l0Rm9udEZhbWlseU5hbWVzLmluCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzICQ8IC0tZm9udHMgJChXZWJDb3JlKS9jc3MvV2ViS2l0Rm9udEZhbWls
eU5hbWVzLmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09SRSkiCkBAIC02OTEsNiAr
Njk5LDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
biBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9tYWtlLWNoYXJzZXQtdGFibGUucGwgXAorCVNvdXJj
ZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvc3Zn
YXR0cnMuaW4gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9zdmd0YWdzLmluIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdmcveGxpbmthdHRycy5pbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCA3ZTU5Njk0Li5lNzQ3MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTg5
Myw2ICs4OTMsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9NYXRoTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMu
aCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGx1Z0luc1Jlc291cmNlcy5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL1NldHRpbmdzTWFjcm9zLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
VXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9V
c2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9wbHVnSW5zLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BsdWdJbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4Y2I5MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCkBAIC0wLDAgKzEsMzYgQEAK
KworLy8gRnVuY3Rpb24gY2FsbGVkIGZyb20gV2ViQ29yZS4KK2Z1bmN0aW9uIGNyZWF0ZU92ZXJs
YXkoc2hhZG93Um9vdCwgdGl0bGVUZXh0LCBzdWJ0aXRsZVRleHQpCit7CisgICAgLy8gR2VuZXJh
dGUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisgICAgLy8KKyAgICAvLyA8ZGl2IHBzZXVkbz0i
LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCI+CisgICAgLy8gICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRsZV06IFtTdWJ0aXRsZV0iIHJv
bGU9ImJ1dHRvbiI+CisgICAgLy8gICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+
CisgICAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPltUaXRsZV08
L2Rpdj4KKyAgICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+
W1N1YnRpdGxlXTwvZGl2PgorICAgIC8vICAgICAgICAgPC9kaXY+CisgICAgLy8gICAgIDwvZGl2
PgorICAgIC8vIDwvZGl2PgorCisgICAgdmFyIHNoYWRvd0NvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHNoYWRvd0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBz
ZXVkbyIsICItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50Iik7CisKKyAgICB2YXIg
b3ZlcmxheSA9IHNoYWRvd0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7CisgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCB0aGlz
LnRpdGxlVGV4dCArICI6ICIgKyB0aGlzLnN1YnRpdGxlVGV4dCk7CisgICAgb3ZlcmxheS5zZXRB
dHRyaWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7CisgICAgb3ZlcmxheS5jbGFzc05hbWUgPSAic25h
cHNob3Qtb3ZlcmxheSI7CisKKyAgICB2YXIgc25hcHNob3RMYWJlbCA9IG92ZXJsYXkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIHNuYXBzaG90TGFiZWwu
Y2xhc3NOYW1lID0gInNuYXBzaG90LWxhYmVsIjsKKworICAgIHZhciB0aXRsZSA9IHRoaXMudGl0
bGUgPSBzbmFwc2hvdExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpKTsKKyAgICB0aXRsZS5jbGFzc05hbWUgPSAic25hcHNob3QtdGl0bGUiOworICAgIHRpdGxl
LnRleHRDb250ZW50ID0gdGl0bGVUZXh0OworCisgICAgdmFyIHN1YnRpdGxlID0gdGhpcy5zdWJ0
aXRsZSA9IHNuYXBzaG90TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworICAgIHN1YnRpdGxlLmNsYXNzTmFtZSA9ICJzbmFwc2hvdC1zdWJ0aXRsZSI7Cisg
ICAgc3VidGl0bGUudGV4dENvbnRlbnQgPSBzdWJ0aXRsZVRleHQ7CisKKyAgICBzaGFkb3dSb290
LmFwcGVuZENoaWxkKHNoYWRvd0NvbnRhaW5lcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2YTBmYzcyLi41OGE4YWJmIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg2NjMsNiAr
Mzg2NjMsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cUmVzb3VyY2VzXHBsdWdJbnMuanMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDljNDViMjEuLmFmNjM3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTM2MDEsNiArMTM2
MDEsNyBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcV29ya2Vy
c1NpZGViYXJQYW5lLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcV29ya3NwYWNlLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxm
cm9udC1lbmRcY21ceG1sLmpzIiAvPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFJlc291cmNlc1xw
bHVnSW5zLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9IldlYkNvcmVQb3N0QnVpbGQuY21kIiAv
PgogICAgIDxOb25lIEluY2x1ZGU9IldlYkNvcmVQcmVCdWlsZC5jbWQiIC8+CiAgIDwvSXRlbUdy
b3VwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCmluZGV4IDM1YzA2NDQuLjc3ZDQ2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTE1MjA4LDYgKzE1MjA4LDkgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXGNtXHhtbC5qcyI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvclxmcm9udC1lbmQ8L0Zp
bHRlcj4KICAgICA8L05vbmU+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUmVzb3VyY2VzXHBsdWdJ
bnMuanMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iV2ViQ29yZVBvc3RCdWlsZC5jbWQiIC8+CiAgICAgPE5vbmUgSW5j
bHVkZT0iV2ViQ29yZVByZUJ1aWxkLmNtZCIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTA5YTUx
OC4uYjljOGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODMwOCw2ICs4MzA4LDcgQEAKIAkJNzExOEZFRDMxNTY4NUNDNjAw
MzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdWaWV3U3BlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTM0NDk2
QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTNFNzBBRjE3MzNFOEIzMDBBMjJE
MDAgLyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTM3OUZFMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQ
YXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRo
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTM3OUZGMTQ2QkQ5RDYw
MDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQYXRoRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTU3RjA2MTE1
MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzI2MSw2ICsxMzI2Miw3IEBACiAJCQkJ
ODUxMzZDOTEwQUVENjY1OTAwRjkwQTNEIC8qIG5vcnRoU291dGhSZXNpemVDdXJzb3IucG5nICov
LAogCQkJCTg1MTM2QzkyMEFFRDY2NTkwMEY5MEEzRCAvKiBub3J0aFdlc3RSZXNpemVDdXJzb3Iu
cG5nICovLAogCQkJCTg1MTM2QzkzMEFFRDY2NTkwMEY5MEEzRCAvKiBub3J0aFdlc3RTb3V0aEVh
c3RSZXNpemVDdXJzb3IucG5nICovLAorCQkJCTcxM0U3MEFGMTczM0U4QjMwMEEyMkQwMCAvKiBw
bHVnSW5zLmpzICovLAogCQkJCTQ2RjlENURDMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1
cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTQwQUVENjY1OTAwRjkwQTNEIC8qIHNvdXRoRWFzdFJl
c2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTUwQUVENjY1OTAwRjkwQTNEIC8qIHNvdXRo
UmVzaXplQ3Vyc29yLnBuZyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NE
ZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHls
ZVNoZWV0cy5jcHAKaW5kZXggYjNiYTViOC4uM2M5YzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTIwMSw3ICsyMDEsOSBAQCB2b2lkIENT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChF
bGVtZW50KiBlbGVtZW50LAogI2VuZGlmCiAKICAgICBpZiAoIXBsdWdJbnNTdHlsZVNoZWV0ICYm
IChlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShl
bWJlZFRhZykpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnSW5zUnVsZXMgPSBTdHJpbmcocGx1Z0lu
c1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCkp
ICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkp
LT5leHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCk7CisgICAgICAgIFN0
cmluZyBwbHVnSW5zUnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQtPmRv
Y3VtZW50KCktPnBhZ2UoKSktPmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKSArIGVsZW1lbnQtPmRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5FeHRyYVN0eWxlU2hl
ZXQoKTsKKyAgICAgICAgaWYgKHBsdWdJbnNSdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBw
bHVnSW5zUnVsZXMgPSBTdHJpbmcocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihw
bHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBwbHVnSW5zU3R5bGVTaGVldCA9
IHBhcnNlVUFTaGVldChwbHVnSW5zUnVsZXMpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KHBsdWdJbnNTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgICAgICBj
aGFuZ2VkRGVmYXVsdFN0eWxlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wbHVnSW5zLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwppbmRleCBmZTMx
ODhhLi42NjIxMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCkBAIC0yOSwyMCArMjksMTggQEAK
ICAqIHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CiAgKgogICogPG9iamVjdD4KLSAqICAg
I1NoYWRvd1Jvb3QKLSAqICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1jb250YWluZXIiPgotICog
ICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtb3ZlcmxheSI+PC9kaXY+IDwhLS0gZS5nLiBmb3Ig
ZGltbWluZyBjb250ZW50IC0tPgotICogICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJl
bCI+Ci0gKiAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPlNuYXBzaG90dGVk
IFBsdWctSW48L2Rpdj4KLSAqICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRs
ZSI+Q2xpY2sgdG8gcmVzdGFydDwvZGl2PgorICogICAgICNTaGFkb3dSb290CisgKiAgICAgICAg
IDxkaXYgcHNldWRvPSItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50Ij4KKyAqICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRs
ZV06IFtTdWJ0aXRsZV0iIHJvbGU9ImJ1dHRvbiI+CisgKiAgICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic25hcHNob3QtbGFiZWwiPgorICogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzbmFwc2hvdC10aXRsZSI+W1RpdGxlXTwvZGl2PgorICogICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+W1N1YnRpdGxlXTwvZGl2PgorICogICAgICAg
ICAgICAgICAgIDwvZGl2PgorICogICAgICAgICAgICAgPC9kaXY+CiAgKiAgICAgICAgIDwvZGl2
PgotICogICAgICAgPC9kaXY+Ci0gKiAgICAgPC9kaXY+Ci0gKgogICovCiAKLW9iamVjdDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90
dGVkLXBsdWdpbi1jb250ZW50CisqOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50
CiB7CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
QEAgLTUwLDQxICs0OCw0MiBAQCBlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29u
dGVudAogICAgIGhlaWdodDogMTAwJTsKIH0KIAotb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVk
LXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIsCi1lbWJlZDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyCisqOjotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkKIHsKICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQor
ICAgIAorICAgIHRvcDogNXB4OworICAgIHJpZ2h0OiA1cHg7CisgICAgYm90dG9tOiA1cHg7Cisg
ICAgbGVmdDogNXB4OworICAgIAorICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgMC43NSk7CisgICAgY3Vyc29yOiBwb2ludGVyOwogCi1vYmplY3Q6Oi13ZWJraXQtc25h
cHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3Zl
cmxheSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hv
dC1jb250YWluZXIgLnNuYXBzaG90LW92ZXJsYXkKLXsKLSAgICBkaXNwbGF5OiBub25lOworICAg
IGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2Vu
dGVyOworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKIH0KIAotb2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBz
aG90LWxhYmVsLAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNu
YXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwKKyo6Oi13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbAogewot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAg
ICBjb2xvcjogYmxhY2s7Ci0gICAgbWFyZ2luOiAxZW07Ci0gICAgcGFkZGluZzogMC4yNWVtIDJl
bTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwogICAgIC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRl
ZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25h
cHNob3QtdGl0bGUsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAu
c25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3QtdGl0bGUKKyo6Oi13
ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5z
bmFwc2hvdC1sYWJlbCA+IGRpdgoreworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUt
c3BhY2U6IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKK30KKworKjo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNu
YXBzaG90LWxhYmVsID4gLnNuYXBzaG90LXRpdGxlCiB7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7
CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNo
b3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUsCi1lbWJlZDo6
LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5z
bmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUKKyo6Oi13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5z
bmFwc2hvdC1zdWJ0aXRsZQogewogICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICBjb2xvcjog
IzQ0NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGE0NTdhODIuLjk5Y2ViMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTI5LDYgKzEyOSw4IEBACiAjaW5jbHVkZSAiUGFnZVRy
YW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCisjaW5jbHVkZSAiUGx1Z0luc1Jlc291cmNlcy5oIgor
I2luY2x1ZGUgIlBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1
bWVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBv
cFN0YXRlRXZlbnQuaCIKQEAgLTE0OSw2ICsxNTEsOCBAQAogI2luY2x1ZGUgIlNjcmlwdEVsZW1l
bnQuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
UnVubmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCkBAIC02MDQ5LDQg
KzYwNTMsMjAgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxEb2N1bWVudD4qIHRpbWVyKQogICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9s
cy5jbGVhcigpOwogfQogCitET01XcmFwcGVyV29ybGQqIERvY3VtZW50OjpwbHVnSW5zSXNvbGF0
ZWRXb3JsZCgpCit7CisgICAgaWYgKCFtX3BsdWdJbnNJc29sYXRlZFdvcmxkKSB7CisgICAgICAg
IG1fcGx1Z0luc0lzb2xhdGVkV29ybGQgPSBET01XcmFwcGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdp
bmRvdzo6Y29tbW9uVk0oKSk7CisKKyAgICAgICAgLy8gVXNlIHRoZSBKUyBmaWxlIHByb3ZpZGVk
IGJ5IHRoZSBDaHJvbWUgY2xpZW50LCBvciBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBvbmUuCisg
ICAgICAgIFN0cmluZyBqc1N0cmluZyA9IHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVn
SW5FeHRyYVNjcmlwdCgpOworICAgICAgICBpZiAoIWpzU3RyaW5nKQorICAgICAgICAgICAganNT
dHJpbmcgPSBwbHVnSW5zSmF2YVNjcmlwdDsKKworICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgp
LT5zY3JpcHQoKS0+ZXZhbHVhdGVJbldvcmxkKFNjcmlwdFNvdXJjZUNvZGUoanNTdHJpbmcpLCBt
X3BsdWdJbnNJc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9wbHVn
SW5zSXNvbGF0ZWRXb3JsZC5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAzZDYzMzUxLi40NDg0NjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTU5h
bWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5kb3c7
CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNl
VGhyZWFkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKQEAgLTEyMDMsNiArMTIwNCw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRsb2FkZXIoKTsKICNlbmRpZgog
CisgICAgRE9NV3JhcHBlcldvcmxkKiBwbHVnSW5zSXNvbGF0ZWRXb3JsZCgpOworCiBwcm90ZWN0
ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpc1hIVE1MLCBib29s
IGlzSFRNTCk7CiAKQEAgLTE1ODEsNiArMTU4NCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8RG9j
dW1lbnQ+IG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXI7CiAgICAgSGFzaFNldDxSZWZQ
dHI8RWxlbWVudD4gPiBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHM7CiAKKyAgICBSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiBtX3BsdWdJbnNJc29sYXRlZFdvcmxkOwogfTsKIAogaW5saW5lIHZvaWQg
RG9jdW1lbnQ6Om5vdGlmeVJlbW92ZVBlbmRpbmdTaGVldElmTmVlZGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDhlOTkzMmUuLjY2
ODVhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJK
U0RvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKQEAgLTQ5LDExICs1MCwx
NCBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwordXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ+ID4gSFRNTFBsdWdJbkltYWdlRWxlbWVudExpc3Q7CiAKQEAgLTY4
LDYgKzcyLDI2IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBhdXRvc3RhcnRTb29uQWZ0ZXJVc2VyR2Vz
dHVyZVRocmVzaG9sZCA9IDUuMDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc2ltdWxhdGVkTW91c2VD
bGlja1RpbWVyRGVsYXkgPSAuNzU7CiBzdGF0aWMgY29uc3QgZG91YmxlIHJlbW92ZVNuYXBzaG90
VGltZXJEZWxheSA9IDEuNTsKIAorc3RhdGljIGNvbnN0IFN0cmluZyYgdGl0bGVUZXh0KFBhZ2Uq
IHBhZ2UsIFN0cmluZyBtaW1lVHlwZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdGl0bGVUZXh0LCAoKSk7CisgICAgaWYgKHRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAg
IHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRp
dGxlKG1pbWVUeXBlKTsKKyAgICBpZiAodGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgdGl0
bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CisgICAgcmV0dXJuIHRpdGxl
VGV4dDsKK307CisKK3N0YXRpYyBjb25zdCBTdHJpbmcmIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdl
LCBTdHJpbmcgbWltZVR5cGUpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN1
YnRpdGxlVGV4dCwgKCkpOworICAgIGlmIChzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQorICAgICAg
ICBzdWJ0aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFi
ZWxTdWJ0aXRsZShtaW1lVHlwZSk7CisgICAgaWYgKHN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgIHN1YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOwor
ICAgIHJldHVybiBzdWJ0aXRsZVRleHQ7Cit9OworCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFn
ZXNPcHRpb24gcHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbikKICAgICA6IEhUTUxQbHVnSW5F
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgIC8vIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNy
ZWF0ZWRCeVBhcnNlcikgYWxsb3dzIEhUTUxPYmplY3RFbGVtZW50IHRvIGRlbGF5CkBAIC0zMTgs
MjkgKzM0Miw2IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3Qo
UGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsK
IH0KIAotc3RhdGljIEF0b21pY1N0cmluZyBjbGFzc05hbWVGb3JTaGFkb3dSb290KGNvbnN0IE5v
ZGUqIG5vZGUpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHBsdWdJblRpbnlTaXplQ2xhc3NOYW1lLCAoInRpbnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZSwgKCJzbWFsbCIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgcGx1Z0luTWVkaXVtU2l6ZUNsYXNzTmFtZSwgKCJtZWRpdW0iLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBBdG9taWNTdHJpbmcsIHBsdWdJbkxhcmdlU2l6ZUNsYXNzTmFtZSwgKCJsYXJnZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIFJlbmRlckJveCogcmVuZGVy
Qm94ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQm94Kj4obm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgTGF5
b3V0VW5pdCB3aWR0aCA9IHJlbmRlckJveC0+Y29udGVudFdpZHRoKCk7Ci0gICAgTGF5b3V0VW5p
dCBoZWlnaHQgPSByZW5kZXJCb3gtPmNvbnRlbnRIZWlnaHQoKTsKLQotICAgIGlmICh3aWR0aCA8
IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQgfHwgaGVpZ2h0IDwgc2l6aW5nVGlueURpbWVu
c2lvblRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIHBsdWdJblRpbnlTaXplQ2xhc3NOYW1lOwot
Ci0gICAgaWYgKHdpZHRoIDwgc2l6aW5nU21hbGxXaWR0aFRocmVzaG9sZCkKLSAgICAgICAgcmV0
dXJuIHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZTsKLQotICAgIGlmICh3aWR0aCA8IHNpemluZ01l
ZGl1bVdpZHRoVGhyZXNob2xkIHx8IGhlaWdodCA8IHNpemluZ01lZGl1bUhlaWdodFRocmVzaG9s
ZCkKLSAgICAgICAgcmV0dXJuIHBsdWdJbk1lZGl1bVNpemVDbGFzc05hbWU7Ci0KLSAgICByZXR1
cm4gcGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lOwotfQotCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogewogICAgIGlmICghcmVuZGVyZXIoKS0+aXNT
bmFwc2hvdHRlZFBsdWdJbigpKSB7CkBAIC0zNDksNjkgKzM1MCw0NyBAQCB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgU2hhZG93Um9vdCogcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAg
ICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVsZW1lbnQqIHNoYWRvd0NvbnRh
aW5lciA9IHRvRWxlbWVudChyb290LT5maXJzdENoaWxkKCkpOwotICAgIHNoYWRvd0NvbnRhaW5l
ci0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgY2xhc3NOYW1lRm9yU2hhZG93Um9vdCh0aGlzKSk7
CisgICAgLy8gTm90aWZ5IHRoZSBzaGFkb3cgcm9vdCB0aGF0IHRoZSBzaXplIGNoYW5nZWQgc28g
dGhhdCB3ZSBtYXkgdXBkYXRlIHRoZSBvdmVybGF5IGxheW91dC4KKyAgICBlbnN1cmVVc2VyQWdl
bnRTaGFkb3dSb290KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
cmVzaXplRXZlbnQsIHRydWUsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogewotICAg
IERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwotCi0gICAgbV9zaGFkb3dDb250YWluZXIgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgbV9zaGFkb3dDb250YWluZXItPnNldFBz
ZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVu
dD4gY29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIGNvbnRhaW5l
ci0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1jb250YWlu
ZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBSZWZQdHI8
RWxlbWVudD4gb3ZlcmxheSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBvdmVy
bGF5LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LW92ZXJs
YXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgY29udGFpbmVy
LT5hcHBlbmRDaGlsZChvdmVybGF5LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFN0cmluZyBtaW1lVHlwZSA9IGxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBt
X3NuYXBzaG90TGFiZWwgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgbV9zbmFw
c2hvdExhYmVsLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90
LWxhYmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIFNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBwYWdlLT5tYWluRnJhbWUoKS0+c2NyaXB0
KCk7CisgICAgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkID0gZG9jdW1lbnQoKS0+cGx1
Z0luc0lzb2xhdGVkV29ybGQoKTsKIAotICAgIFN0cmluZyB0aXRsZVRleHQgPSBzbmFwc2hvdHRl
ZFBsdWdJbkxhYmVsVGl0bGUoKTsKLSAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0
ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7Ci0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkgewot
ICAgICAgICBTdHJpbmcgY2xpZW50VGl0bGVUZXh0ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOwotICAgICAgICBpZiAoIWNs
aWVudFRpdGxlVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB0aXRsZVRleHQgPSBjbGllbnRU
aXRsZVRleHQ7Ci0gICAgICAgIFN0cmluZyBjbGllbnRTdWJ0aXRsZVRleHQgPSBkb2N1bWVudCgp
LT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCk7
Ci0gICAgICAgIGlmICghY2xpZW50U3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHN1YnRpdGxlVGV4dCA9IGNsaWVudFN1YnRpdGxlVGV4dDsKLSAgICB9CisgICAgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlw
dENvbnRyb2xsZXItPmdsb2JhbE9iamVjdChpc29sYXRlZFdvcmxkKSk7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBSZWZQdHI8RWxlbWVu
dD4gdGl0bGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgdGl0bGUtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtdGl0bGUiLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgdGl0bGUtPmFwcGVuZENoaWxkKGRv
Yy0+Y3JlYXRlVGV4dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAg
bV9zbmFwc2hvdExhYmVsLT5hcHBlbmRDaGlsZCh0aXRsZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gc3Vi
VGl0bGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgc3ViVGl0bGUtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtc3VidGl0bGUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgc3ViVGl0bGUtPmFwcGVuZENo
aWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoc3VidGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7Ci0gICAgbV9zbmFwc2hvdExhYmVsLT5hcHBlbmRDaGlsZChzdWJUaXRsZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKKyAgICBhcmdM
aXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgcm9vdCkpOworICAgIGFyZ0xpc3Qu
YXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHRpdGxlVGV4dChwYWdlLCBtaW1lVHlwZSkpKTsKKyAgICBh
cmdMaXN0LmFwcGVuZChqc1N0cmluZyhleGVjLCBzdWJ0aXRsZVRleHQocGFnZSwgbWltZVR5cGUp
KSk7CiAKLSAgICBjb250YWluZXItPmFwcGVuZENoaWxkKG1fc25hcHNob3RMYWJlbCwgQVNTRVJU
X05PX0VYQ0VQVElPTik7Ci0KLSAgICAvLyBNYWtlIHRoaXMgaW50byBhIGJ1dHRvbiBmb3IgYWNj
ZXNzaWJpbGl0eSBjbGllbnRzLgotICAgIFN0cmluZyBjb21iaW5lZFRleHQgPSB0aXRsZVRleHQ7
Ci0gICAgaWYgKCFjb21iaW5lZFRleHQuaXNFbXB0eSgpICYmICFzdWJ0aXRsZVRleHQuaXNFbXB0
eSgpKQotICAgICAgICBjb21iaW5lZFRleHQuYXBwZW5kKCIgIik7Ci0gICAgY29tYmluZWRUZXh0
LmFwcGVuZChzdWJ0aXRsZVRleHQpOwotICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGFyaWFf
bGFiZWxBdHRyLCBjb21iaW5lZFRleHQpOwotICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKHJv
bGVBdHRyLCAiYnV0dG9uIik7CisgICAgLy8gSXQgaXMgZXhwZWN0ZWQgdGhlIEpTIGZpbGUgcHJv
dmlkZXMgYSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBzdWJ0aXRsZSkgZnVuY3Rp
b24uCisgICAgSlNPYmplY3QqIG92ZXJsYXkgPSBnbG9iYWxPYmplY3QtPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJjcmVhdGVPdmVybGF5IikpLnRvT2JqZWN0KGV4ZWMpOworICAgIENhbGxE
YXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gb3ZlcmxheS0+bWV0aG9kVGFi
bGUoKS0+Z2V0Q2FsbERhdGEob3ZlcmxheSwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fc2hhZG93Q29udGFpbmVy
LT5hcHBlbmRDaGlsZChjb250YWluZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHJvb3Qt
PmFwcGVuZENoaWxkKG1fc2hhZG93Q29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAg
ICAvLyBGSVhNRTogZ2xvYmFsT2JqZWN0IHNob3VsZCBiZSB1c2VkIGFzIHRoaXNPYmogaGVyZS4K
KyAgICBjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb3ZlcmxheSwgYXJn
TGlzdCk7CiB9CiAKLWJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RM
YWJlbChOb2RlKiBub2RlKQorYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFw
c2hvdE92ZXJsYXkoTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZSAmJiAobm9kZSA9PSBt
X3NuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2YobV9zbmFwc2hvdExh
YmVsLmdldCgpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVj
dG9yLCAoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFwc2hvdExhYmVsID0gZW5zdXJlVXNlckFn
ZW50U2hhZG93Um9vdCgpLT5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICByZXR1cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBz
aG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQo
KSkpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVy
RmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCAyMzQ5ZjQyLi44OTczNTI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihj
b25zdCBXaWRnZXQqKTsKIAogICAgIHZvaWQgc2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4o
Ym9vbCk7Ci0gICAgYm9vbCBwYXJ0T2ZTbmFwc2hvdExhYmVsKE5vZGUqKTsKKyAgICBib29sIHBh
cnRPZlNuYXBzaG90T3ZlcmxheShOb2RlKik7CiAKICAgICBib29sIG5lZWRzQ2hlY2tGb3JTaXpl
Q2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZTsgfQogICAg
IHZvaWQgc2V0TmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSB7IG1fbmVlZHNDaGVja0ZvclNpemVD
aGFuZ2UgPSB0cnVlOyB9CkBAIC0xNTUsOCArMTU1LDYgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBtX3N3YXBSZW5kZXJlclRpbWVyOwogICAgIFRpbWVyPEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fcmVtb3ZlU25hcHNob3RUaW1lcjsKICAgICBSZWZQdHI8
SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9zaGFkb3dDb250
YWluZXI7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IG1fc25hcHNob3RMYWJlbDsKICAgICBib29sIG1f
Y3JlYXRlZER1cmluZ1VzZXJHZXN0dXJlOwogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFBsdWdpbjsK
ICAgICBib29sIG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBjNmMxZTdkLi4wYTg0Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTM2OSw5ICszNjksMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
RW1wdHlDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVh
bCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxU
aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlw
ZSk7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFi
ZWxTdWJ0aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTSht
aW1lVHlwZSk7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4
dHJhU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBT
dHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAg
ICAgLy8gRklYTUU6IFBvcnQgc2hvdWxkIHJldHVybiB0cnVlIHVzaW5nIGhldXJpc3RpYyBiYXNl
ZCBvbiBzY3JvbGxhYmxlKFJlbmRlckJveCkuCiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9z
Y3JvbGxGb3JEcmFnQW5kRHJvcChSZW5kZXJCb3gqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1
Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAKaW5kZXggNzU5ODMwYS4uM2M2YTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNzMsOSArMTczLDkg
QEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50
KQogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgfHwg
KG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50KSkgewogICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0
aW9uID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgY2xpY2tXYXNPbkxhYmVsID0gcGx1Z0luSW1hZ2VF
bGVtZW50KCktPnBhcnRPZlNuYXBzaG90TGFiZWwoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7
Ci0gICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNP
bkxhYmVsID8gSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcgOiBIVE1MUGx1Z0luRWxlbWVu
dDo6UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0gICAgICAgIHBsdWdJbkltYWdl
RWxlbWVudCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50LCAhY2xpY2tXYXNPbkxh
YmVsKTsKKyAgICAgICAgYm9vbCBjbGlja1dhc09uT3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVu
dCgpLT5wYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7Cisg
ICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbk92
ZXJsYXkgPyBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50
OjpSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKKyAgICAgICAgcGx1Z0luSW1hZ2VF
bGVtZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsICFjbGlja1dhc09uT3Zl
cmxheSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAg
ICAgbV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAppbmRleCA0ZGMwY2VmLi4y
NjllMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5jcHAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBs
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogCiB2b2lkIERyYXdpbmdBcmVhUHJv
eHlJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0JiBsYXllclRyZWVDb250ZXh0KQogewotICAgIEFTU0VSVChpc0luQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoKSk7CisgICAgLy8gQVNTRVJUKGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpKTsKIAogICAgIG1fbGF5ZXJUcmVlQ29udGV4dCA9IGxheWVyVHJlZUNvbnRleHQ7
CiAgICAgbV93ZWJQYWdlUHJveHktPnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxh
eWVyVHJlZUNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggMzg3MjliMi4u
NDU2ZDU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC0yNTAsOSArMjUwLDEwIEBA
IHR5cGVkZWYgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZU1l
bnVCYXJJc1Zpc2libGVDYWxsYmFjaykoCiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZp
c2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VUb29sYmFyc0FyZVZpc2libGVDYWxsYmFjaykoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgq
V0tCdW5kbGVQYWdlUmVhY2hlZEFwcENhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0
ZXNOZWVkZWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB1aW50NjRfdCAoKldL
QnVuZGxlUGFnZUV4Y2VlZGVkRGF0YWJhc2VRdW90YUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFt
ZSwgV0tTdHJpbmdSZWYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3Rh
Qnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50
RGF0YWJhc2VVc2FnZUJ5dGVzLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlQnl0ZXMsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJ
bkNyZWF0ZVN0YXJ0TGFiZWxUaXRsZUNhbGxiYWNrKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LXR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVs
U3VidGl0bGVDYWxsYmFjaykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3Ry
aW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJhY2sp
KFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
V0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsU3VidGl0bGVD
YWxsYmFjaykoV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwog
dHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU3R5bGVT
aGVldENhbGxiYWNrKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdS
ZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVFeHRyYVNjcmlwdENhbGxiYWNrKShjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLQnVuZGxlUGFnZVVJQ2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC0yODAsNiArMjgxLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFn
ZVVJQ2xpZW50IHsKICAgICBXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsVGl0bGVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRsZTsK
ICAgICBXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsU3VidGl0bGVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZTsKICAgICBXS0J1
bmRsZVBhZ2VQbHVnSW5DcmVhdGVFeHRyYVN0eWxlU2hlZXRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVBsdWdJbkV4dHJhU3R5bGVTaGVldDsKKyAgICBXS0J1bmRsZVBhZ2VQbHVn
SW5DcmVhdGVFeHRyYVNjcmlwdENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVBsdWdJbkV4dHJhU2NyaXB0OwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZVVJQ2xp
ZW50IFdLQnVuZGxlUGFnZVVJQ2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuY3BwCmluZGV4IGI2YWY2NDIuLjhlOWM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCkBAIC0xNjMsMjEgKzE2MywyMSBAQCB1aW50
NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShX
ZWJQYWdlKiBwYWdlLCBXZWJTZQogICAgIHJldHVybiBtX2NsaWVudC5kaWRFeGNlZWREYXRhYmFz
ZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1w
bCgpKSwgdG9BUEkoZGF0YWJhc2VEaXNwbGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGFCeXRl
cywgY3VycmVudE9yaWdpblVzYWdlQnl0ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4
cGVjdGVkVXNhZ2VCeXRlcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLVN0cmluZyBJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QKK1N0
cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQ
bHVnSW5TdGFydExhYmVsVGl0bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFJl
ZlB0cjxXZWJTdHJpbmc+IHRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBs
dWdJblN0YXJ0TGFiZWxUaXRsZShtX2NsaWVudC5jbGllbnRJbmZvKSkpOworICAgIFJlZlB0cjxX
ZWJTdHJpbmc+IHRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJblN0
YXJ0TGFiZWxUaXRsZSh0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZv
KSkpOwogICAgIHJldHVybiB0aXRsZSA/IHRpdGxlLT5zdHJpbmcoKSA6IFN0cmluZygpOwogfQog
Ci1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0
aXRsZSgpIGNvbnN0CitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0
YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewogICAgIGlm
ICghbV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViU3RyaW5nPiBzdWJ0aXRsZSA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsU3VidGl0bGUobV9jbGllbnQu
Y2xpZW50SW5mbykpKTsKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiBzdWJ0aXRsZSA9IGFkb3B0UmVm
KHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsU3VidGl0bGUodG9BUEkobWlt
ZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKICAgICByZXR1cm4gc3VidGl0
bGUgPyBzdWJ0aXRsZS0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIApAQCAtMTkwLDQgKzE5MCwx
MyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJbkV4dHJhU3R5bGVT
aGVldCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlU2hlZXQgPyBzdHlsZVNoZWV0LT5zdHJpbmco
KSA6IFN0cmluZygpOwogfQogCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBs
dWdJbkV4dHJhU2NyaXB0KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJ
bkV4dHJhU2NyaXB0KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8V2Vi
U3RyaW5nPiBzY3JpcHQgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luRXh0
cmFTY3JpcHQobV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICByZXR1cm4gc2NyaXB0ID8gc2Ny
aXB0LT5zdHJpbmcoKSA6IFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaAppbmRleCBhZDhmZTI0Li40MjNl
NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCkBAIC03MCw5
ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsQnl0ZXNO
ZWVkZWQpOwogICAgIHVpbnQ2NF90IGRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSosIFdl
YlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2Fn
ZUJ5dGVzLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlQnl0ZXMpOwogCi0gICAgU3RyaW5nIHBsdWdJ
blN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0OwotICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3Vi
dGl0bGUoKSBjb25zdDsKKyAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0OworICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0
bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdJbkV4dHJh
U3R5bGVTaGVldCgpIGNvbnN0OworICAgIFN0cmluZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0
OwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNjJiNzg1Ni4uOGM1NjI1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtODI0LDE0ICs4MjQsMTQgQEAgdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1fcGFnZSwgbWVzc2FnZSwgZGVzY3JpcHRp
b24sIHN1Y2Nlc3MpOwogfQogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExh
YmVsVGl0bGUoKSBjb25zdAorU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJl
bFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOworICAg
IHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVs
VGl0bGUobWltZVR5cGUpOwogfQogCi1TdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFy
dExhYmVsU3VidGl0bGUoKSBjb25zdAorU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3Rh
cnRMYWJlbFN1YnRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxTdWJ0
aXRsZSgpOworICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVn
SW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUpOwogfQogCiBTdHJpbmcgV2ViQ2hyb21lQ2xp
ZW50OjpwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdApAQCAtODM5LDQgKzgzOSw5IEBAIFN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJbkV4dHJhU3R5bGVT
aGVldCgpOwogfQogCitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBs
dWdJbkV4dHJhU2NyaXB0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggZDQ1ZjE4Mi4uZGQ2OWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC0yMTksOSArMjE5LDEwIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBTdHJpbmcmIHN1Y2Nlc3MpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJp
bmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0
aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgU3Ry
aW5nIG1fY2FjaGVkVG9vbFRpcDsKICAgICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4gbV9jYWNo
ZWRGcmFtZVNldExhcmdlc3RGcmFtZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAyMzNm
ZThhLi5lMDQyMDM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0zNzIsNiArMzcyLDcg
QEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UpCiAgICAgICAgIDAsIC8qcGx1Z0luU3RhcnRMYWJlbFRpdGxlKi8KICAgICAgICAgMCwg
LypwbHVnSW5TdGFydExhYmVsU3VidGl0bGUqLwogICAgICAgICAwLCAvKnBsdWdJbkV4dHJhU3R5
bGVTaGVldCovCisgICAgICAgIDAsIC8qcGx1Z0luRXh0cmFTY3JpcHQqLwogICAgIH07CiAgICAg
V0tCdW5kbGVQYWdlU2V0VUlDbGllbnQobV9wYWdlLCAmdWlDbGllbnQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200541</attachid>
            <date>2013-05-04 13:14:14 -0700</date>
            <delta_ts>2013-05-04 15:21:01 -0700</delta_ts>
            <desc>Updated patch for build, hopefully fixes GTK and Windows failures.</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>46078</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmY2ZTgzZi4uMGM5ZTY5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTI1NzgsNiArMjU3OCwxMCBAQCBzZXQoV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxF
X1NIRUVUUwogICAgICR7V0VCQ09SRV9ESVJ9L2Nzcy92aWV3LXNvdXJjZS5jc3MKICkKIAorc2V0
KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCisgICAgJHtXRUJDT1JFX0RJUn0vUmVzb3VyY2Vz
L3BsdWdJbnMuanMKKykKKwogc2V0KFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtXVEZfTElCUkFS
WV9OQU1FfQogICAgICR7SmF2YVNjcmlwdENvcmVfTElCUkFSWV9OQU1FfQpAQCAtMzA4Miw2ICsz
MDg2LDE1IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vVXNlckFnZW50U3R5bGVTaGVldHNEYXRh
LmNwcCkKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVf
RElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBV
c2VyQWdlbnRTdHlsZVNoZWV0cy5oKQogCisjIEdlbmVyYXRlIHBsdWctaW4gcmVzb3VyY2VzCith
ZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L1BsdWdJbnNSZXNvdXJjZXMuaAorICAgIE1BSU5fREVQRU5ERU5DWSAke1dFQkNPUkVfRElS
fS9jc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwKKyAgICBERVBFTkRTICR7V2ViQ29yZV9QTFVH
X0lOU19SRVNPVVJDRVN9ICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
c29yLnBtCisgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gLUkke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9zY3JpcHRzICR7V0VCQ09SRV9ESVJ9L2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5w
bCAtLWRlZmluZXMgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIgLS1w
cmVwcm9jZXNzb3IgIiR7Q09ERV9HRU5FUkFUT1JfUFJFUFJPQ0VTU09SfSIgJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXMuaCAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0vUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwICR7V2ViQ29yZV9QTFVHX0lOU19S
RVNPVVJDRVN9CisgICAgVkVSQkFUSU0pCitsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1BsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCkKK0FE
RF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwIFBsdWdJbnNSZXNvdXJj
ZXMuaCkKIAogR0VORVJBVEVfR1JBTU1BUihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3Jh
bW1hci55LmluICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtE
RVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwICIke0ZFQVRVUkVfREVG
SU5FU19XSVRIX1NQQUNFX1NFUEFSQVRPUn0iKQogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcAppbmRleCA0YTRiYWRhLi41MjRkMGRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCkBAIC01MzEsNiArNTMxLDcgQEAKICNpbmNsdWRlICJKU1hQYXRoTlNSZXNv
bHZlci5jcHAiCiAjaW5jbHVkZSAiSlNYUGF0aFJlc3VsdC5jcHAiCiAjaW5jbHVkZSAiSlNYU0xU
UHJvY2Vzc29yLmNwcCIKKyNpbmNsdWRlICJQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAiCiAjaW5j
bHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCIKIAogLy8gT24gTVNWQywgaW5jbHVk
aW5nIFN0YXRpY0NvbnN0cnVjdG9ycy5oIGNhdXNlcyBhbGwgZ2xvYmFsIG9iamVjdHMgbm90IHRv
IGJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA3NDdkNWMzLi4yMjQ0ZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTY3OSw2ICs2NzksNyBAQCBhbGwgOiBc
CiAgICAgSFRNTEVudGl0eVRhYmxlLmNwcCBcCiAgICAgSFRNTE5hbWVzLmNwcCBcCiAgICAgSlNT
VkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIFwKKyAgICBQbHVnSW5zUmVzb3VyY2VzLmggXAog
ICAgIFNWR0VsZW1lbnRGYWN0b3J5LmNwcCBcCiAgICAgU1ZHTmFtZXMuY3BwIFwKICAgICBVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oIFwKQEAgLTgzMCw2ICs4MzEsMTUgQEAgVXNlckFnZW50U3R5bGVT
aGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCBiaW5kaW5ncy9zY3JpcHRzL3By
ZXByb2Nlc3MKIAogIyAtLS0tLS0tLQogCisjIHBsdWdJbnMgcmVzb3VyY2VzCisKK1BMVUdfSU5T
X1JFU09VUkNFUyA9ICQoV2ViQ29yZSkvUmVzb3VyY2VzL3BsdWdJbnMuanMKKworUGx1Z0luc1Jl
c291cmNlcy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJyYXlzLnBsIGJpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzc29yLnBtICQoUExVR19JTlNfUkVTT1VSQ0VTKQorCXBlcmwgLUkkKFdlYkNvcmUp
L2JpbmRpbmdzL3NjcmlwdHMgJDwgLS1kZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykiICRAIFBs
dWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAkKFBMVUdfSU5TX1JFU09VUkNFUykKKworIyAtLS0tLS0t
LQorCiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIFdlYktpdEZvbnRGYW1pbHlOYW1lcy5oIDog
ZG9tL21ha2VfbmFtZXMucGwgYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gYmluZGluZ3Mvc2Ny
aXB0cy9TdGF0aWNTdHJpbmcucG0gY3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbgogCXBlcmwg
LUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQ8IC0tZm9udHMgJChXZWJDb3JlKS9jc3Mv
V2ViS2l0Rm9udEZhbWlseU5hbWVzLmluCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRl
eCA3OTA5ZTFhLi4zM2UzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC04Niw2
ICs4Niw5IEBAIFNUWUxFU0hFRVRTX0VNQkVEID0gXAogICAgICQkUFdEL2Nzcy90aGVtZVF0Tm9M
aXN0Ym94ZXMuY3NzIFwKICAgICAkJFBXRC9jc3MvbW9iaWxlVGhlbWVRdC5jc3MKIAorUExVR0lO
U19FTUJFRCA9IFwKKyAgICAkJFBXRC9SZXNvdXJjZXMvcGx1Z0lucy5qcworCiBJRExfQklORElO
R1MgKz0gXAogICAgICQkUFdEL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmlkbCBc
CiAgICAgJCRQV0QvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCBcCkBA
IC05NTYsMTQgKzk1OSwyMyBAQCBzdHlsZXNoZWV0cy5kZXBlbmRzID0gJCRTVFlMRVNIRUVUU19F
TUJFRAogc3R5bGVzaGVldHMuY2xlYW4gPSAke1FNQUtFX0ZJTEVfT1VUfSAke1FNQUtFX0ZVTkNf
RklMRV9PVVRfUEFUSH0vVXNlckFnZW50U3R5bGVTaGVldHMuaAogR0VORVJBVE9SUyArPSBzdHls
ZXNoZWV0cwogCi0jIEdFTkVSQVRPUiAxMDogWFBBVEggZ3JhbW1hcgorIyBHRU5FUkFUT1IgMTA6
CitwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdCA9ICQkUFdEL2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5
cy5wbAorcGx1Z2luc3Jlc291cmNlcy5vdXRwdXQgPSBQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAK
K3BsdWdpbnNyZXNvdXJjZXMuaW5wdXQgPSBwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdAorcGx1Z2lu
c3Jlc291cmNlcy5jb21tYW5kcyA9IHBlcmwgJCRwbHVnaW5zcmVzb3VyY2VzLnNjcmlwdCAke1FN
QUtFX0ZVTkNfRklMRV9PVVRfUEFUSH0vUGx1Z0luc1Jlc291cmNlcy5oICR7UU1BS0VfRklMRV9P
VVR9ICQkUExVR0lOU19FTUJFRAorcGx1Z2luc3Jlc291cmNlcy5kZXBlbmRzID0gJCRQTFVHSU5T
X0VNQkVECitwbHVnaW5zcmVzb3VyY2VzLmNsZWFuID0gJHtRTUFLRV9GSUxFX09VVH0gJHtRTUFL
RV9GVU5DX0ZJTEVfT1VUX1BBVEh9L1BsdWdJbnNSZXNvdXJjZXMuaAorR0VORVJBVE9SUyArPSBw
bHVnaW5zcmVzb3VyY2VzCisKKyMgR0VORVJBVE9SIDExOiBYUEFUSCBncmFtbWFyCiB4cGF0aGJp
c29uLm91dHB1dCA9ICR7UU1BS0VfRklMRV9CQVNFfS5jcHAKIHhwYXRoYmlzb24uaW5wdXQgPSBY
UEFUSEJJU09OCiB4cGF0aGJpc29uLmNvbW1hbmRzID0gYmlzb24gLWQgLXAgeHBhdGh5eSAke1FN
QUtFX0ZJTEVfTkFNRX0gLW8gJHtRTUFLRV9GVU5DX0ZJTEVfT1VUX1BBVEh9LyR7UU1BS0VfRklM
RV9CQVNFfS50YWIuYyAmJiAkKE1PVkUpICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FN
QUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxFX0JBU0V9LnRhYi5jICR7UU1BS0VfRlVOQ19GSUxFX09V
VF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxFX0JBU0V9LmNwcCAmJiAkKE1PVkUp
ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9JHtRTUFLRV9GSUxF
X0JBU0V9LnRhYi5oICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSQke1FNQUtFX0RJUl9TRVB9
JHtRTUFLRV9GSUxFX0JBU0V9LmgKIHhwYXRoYmlzb24uZGVwZW5kcyA9ICR7UU1BS0VfRklMRV9O
QU1FfQogR0VORVJBVE9SUyArPSB4cGF0aGJpc29uCiAKLSMgR0VORVJBVE9SIDExOiBXZWJLaXQg
VmVyc2lvbgorIyBHRU5FUkFUT1IgMTI6IFdlYktpdCBWZXJzaW9uCiAjIFRoZSBhcHByb3ByaWF0
ZSBBcHBsZS1tYWludGFpbmVkIFZlcnNpb24ueGNjb25maWcgZmlsZSBmb3IgV2ViS2l0IHZlcnNp
b24gaW5mb3JtYXRpb24gaXMgaW4gU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvLgog
d2Via2l0dmVyc2lvbi5zY3JpcHQgPSAkJFBXRC8uLi9XZWJLaXQvc2NyaXB0cy9nZW5lcmF0ZS13
ZWJraXR2ZXJzaW9uLnBsCiB3ZWJraXR2ZXJzaW9uLm91dHB1dCA9IFdlYktpdFZlcnNpb24uaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCBkZmQxN2IyLi42NGNmZDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtMjc5LDYgKzI3OSwxMCBAQCBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKIAkk
KFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcyBcCiAJJChXZWJDb3JlKS9jc3MvcGx1Z0lucy5j
c3MKIAorIyBwbHVnLWluIHJlc291cmNlcworUExVR19JTlNfUkVTT1VSQ0VTID0gXAorCSQoV2Vi
Q29yZSkvUmVzb3VyY2VzL3BsdWdJbnMuanMKKwogIyBuZXctc3R5bGUgSmF2YVNjcmlwdCBiaW5k
aW5ncwogU0NSSVBUU19GT1JfR0VORVJBVEVfQklORElOR1MgPSBcCiAJJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gXApAQCAtMjk1LDYgKzI5OSwxMCBAQCBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1VzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHA6IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvVXNlcgogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Vc2VyQWdlbnRTdHls
ZVNoZWV0cy5oOiAkKFdlYkNvcmUpL2Nzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFdlYkNv
cmUpL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzc29yLnBtICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRz
ICQ8ICAtLWRlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgJEAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9Vc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMpCiAKK0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwOiBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL1BsdWdJbnNSZXNvdXJjZXMuaAorRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzLmg6ICQoV2ViQ29yZSkvY3NzL21ha2UtY3NzLWZpbGUt
YXJyYXlzLnBsICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0gJChQ
TFVHX0lOU19SRVNPVVJDRVMpCisJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9iaW5k
aW5ncy9zY3JpcHRzICQ8ICAtLWRlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgJEAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgJChQTFVHX0lOU19SRVNP
VVJDRVMpCisKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNw
cDogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuaAogRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9XZWJLaXRGb250RmFtaWx5TmFtZXMuaDogJChXZWJDb3JlKS9kb20v
bWFrZV9uYW1lcy5wbCAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gJChXZWJDb3JlKS9jc3MvV2Vi
S2l0Rm9udEZhbWlseU5hbWVzLmluCiAJJChBTV9WX0dFTikkKFBFUkwpIC1JJChXZWJDb3JlKS9i
aW5kaW5ncy9zY3JpcHRzICQ8IC0tZm9udHMgJChXZWJDb3JlKS9jc3MvV2ViS2l0Rm9udEZhbWls
eU5hbWVzLmluIC0tb3V0cHV0RGlyICIkKEdFTlNPVVJDRVNfV0VCQ09SRSkiCkBAIC02OTEsNiAr
Njk5LDcgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5p
biBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9tYWtlLWNoYXJzZXQtdGFibGUucGwgXAorCVNvdXJj
ZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvc3Zn
YXR0cnMuaW4gXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9zdmd0YWdzLmluIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdmcveGxpbmthdHRycy5pbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRl
eCA3ZTU5Njk0Li5lNzQ3MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTg5
Myw2ICs4OTMsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9NYXRoTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvTWF0aE1MTmFtZXMu
aCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9QbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvUGx1Z0luc1Jlc291cmNlcy5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL1NldHRpbmdzTWFjcm9zLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
VXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9V
c2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9wbHVnSW5zLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BsdWdJbnMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4Y2I5MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCkBAIC0wLDAgKzEsMzYgQEAK
KworLy8gRnVuY3Rpb24gY2FsbGVkIGZyb20gV2ViQ29yZS4KK2Z1bmN0aW9uIGNyZWF0ZU92ZXJs
YXkoc2hhZG93Um9vdCwgdGl0bGVUZXh0LCBzdWJ0aXRsZVRleHQpCit7CisgICAgLy8gR2VuZXJh
dGUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisgICAgLy8KKyAgICAvLyA8ZGl2IHBzZXVkbz0i
LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCI+CisgICAgLy8gICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRsZV06IFtTdWJ0aXRsZV0iIHJv
bGU9ImJ1dHRvbiI+CisgICAgLy8gICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+
CisgICAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPltUaXRsZV08
L2Rpdj4KKyAgICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+
W1N1YnRpdGxlXTwvZGl2PgorICAgIC8vICAgICAgICAgPC9kaXY+CisgICAgLy8gICAgIDwvZGl2
PgorICAgIC8vIDwvZGl2PgorCisgICAgdmFyIHNoYWRvd0NvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIHNoYWRvd0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBz
ZXVkbyIsICItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50Iik7CisKKyAgICB2YXIg
b3ZlcmxheSA9IHNoYWRvd0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7CisgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCB0aGlz
LnRpdGxlVGV4dCArICI6ICIgKyB0aGlzLnN1YnRpdGxlVGV4dCk7CisgICAgb3ZlcmxheS5zZXRB
dHRyaWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7CisgICAgb3ZlcmxheS5jbGFzc05hbWUgPSAic25h
cHNob3Qtb3ZlcmxheSI7CisKKyAgICB2YXIgc25hcHNob3RMYWJlbCA9IG92ZXJsYXkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIHNuYXBzaG90TGFiZWwu
Y2xhc3NOYW1lID0gInNuYXBzaG90LWxhYmVsIjsKKworICAgIHZhciB0aXRsZSA9IHRoaXMudGl0
bGUgPSBzbmFwc2hvdExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpKTsKKyAgICB0aXRsZS5jbGFzc05hbWUgPSAic25hcHNob3QtdGl0bGUiOworICAgIHRpdGxl
LnRleHRDb250ZW50ID0gdGl0bGVUZXh0OworCisgICAgdmFyIHN1YnRpdGxlID0gdGhpcy5zdWJ0
aXRsZSA9IHNuYXBzaG90TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworICAgIHN1YnRpdGxlLmNsYXNzTmFtZSA9ICJzbmFwc2hvdC1zdWJ0aXRsZSI7Cisg
ICAgc3VidGl0bGUudGV4dENvbnRlbnQgPSBzdWJ0aXRsZVRleHQ7CisKKyAgICBzaGFkb3dSb290
LmFwcGVuZENoaWxkKHNoYWRvd0NvbnRhaW5lcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2YTBmYzcyLi41OGE4YWJmIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg2NjMsNiAr
Mzg2NjMsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cUmVzb3VyY2VzXHBsdWdJbnMuanMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDljNDViMjEuLmFmNjM3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTM2MDEsNiArMTM2
MDEsNyBAQAogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcV29ya2Vy
c1NpZGViYXJQYW5lLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxmcm9u
dC1lbmRcV29ya3NwYWNlLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxm
cm9udC1lbmRcY21ceG1sLmpzIiAvPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFJlc291cmNlc1xw
bHVnSW5zLmpzIiAvPgogICAgIDxOb25lIEluY2x1ZGU9IldlYkNvcmVQb3N0QnVpbGQuY21kIiAv
PgogICAgIDxOb25lIEluY2x1ZGU9IldlYkNvcmVQcmVCdWlsZC5jbWQiIC8+CiAgIDwvSXRlbUdy
b3VwPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCmluZGV4IDM1YzA2NDQuLjc3ZDQ2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTE1MjA4LDYgKzE1MjA4LDkgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXGNtXHhtbC5qcyI+CiAgICAgICA8RmlsdGVyPmluc3BlY3Rvclxmcm9udC1lbmQ8L0Zp
bHRlcj4KICAgICA8L05vbmU+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUmVzb3VyY2VzXHBsdWdJ
bnMuanMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CiAg
ICAgPE5vbmUgSW5jbHVkZT0iV2ViQ29yZVBvc3RCdWlsZC5jbWQiIC8+CiAgICAgPE5vbmUgSW5j
bHVkZT0iV2ViQ29yZVByZUJ1aWxkLmNtZCIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTA5YTUx
OC4uMzg1YzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTg5MCw2ICsxODkwLDggQEAKIAkJNzFDQzdBMjAxNTJBMEJGRTAw
OUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovOyB9OwogCQk3MURDQjcwMTE1NjgxOTc2MDA4NjIy
NzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQ
YW4uY3BwICovOyB9OwogCQk3MURDQjcwMjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5k
UGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MURD
QjcwMDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggKi87IH07CisJCTcxRTIx
ODNBMTczNTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5zUmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUUyMTgzODE3MzU5RkI4MDA2RTZFNEQg
LyogUGx1Z0luc1Jlc291cmNlcy5oICovOyB9OworCQk3MUUyMTgzQjE3MzU5RkI4MDA2RTZFNEQg
LyogUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzFFMjE4MzkxNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNv
dXJjZXNEYXRhLmNwcCAqLzsgfTsKIAkJNzFFNjIzRDExNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzFFNjIzQ0YxNTFGNzJBNjAwMzZFMkY0IC8qIFNWR0FuaW1h
dGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oICovOyB9OwogCQk3MUZCOTY3QjEzODNENjQ2MDBB
QzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFGQjk2N0ExMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjYyNkUwMjBFRjAy
MkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFz
dFBhdGguY3BwICovOyB9OwpAQCAtODMwOCw2ICs4MzEwLDcgQEAKIAkJNzExOEZFRDMxNTY4NUND
NjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdWaWV3U3BlYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTM0
NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0
aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTNFNzBBRjE3MzNFOEIzMDBB
MjJEMDAgLyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTM3OUZFMTQ2QkQ5RDYwMDhCRDYxNSAvKiBT
VkdQYXRoRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
YXRoRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTM3OUZGMTQ2QkQ5
RDYwMDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdQYXRoRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTU3RjA2
MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzE4LDYgKzgzMjEsOCBAQAogCQk3
MUNDN0ExRjE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I2RkYxNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1NWR1pvb21BbmRQYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MURDQjcwMDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHWm9vbUFuZFBhbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MUUyMTgzODE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291
cmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFBsdWdJbnNSZXNvdXJjZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzFFMjE4MzkxNzM1OUZCODAwNkU2RTRE
IC8qIFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBmaWxlRW5jb2RpbmcgPSA0
OyBwYXRoID0gUGx1Z0luc1Jlc291cmNlc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MUU2MjNDRTE1MUY3MkE2MDAzNkUyRjQgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxRTYyM0NGMTUxRjcyQTYwMDM2RTJGNCAvKiBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxRkI5NjdBMTM4M0Q2NDYwMEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJv
cGVydHlUZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1h
dGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEzMjYxLDYgKzEzMjY2LDcgQEAKIAkJCQk4NTEzNkM5MTBBRUQ2NjU5MDBGOTBBM0Qg
Lyogbm9ydGhTb3V0aFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTIwQUVENjY1OTAw
RjkwQTNEIC8qIG5vcnRoV2VzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCiAJCQkJODUxMzZDOTMwQUVE
NjY1OTAwRjkwQTNEIC8qIG5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvci5wbmcgKi8sCisJ
CQkJNzEzRTcwQUYxNzMzRThCMzAwQTIyRDAwIC8qIHBsdWdJbnMuanMgKi8sCiAJCQkJNDZGOUQ1
REMwQjBENjAxNzAwMjhFRTM2IC8qIHByb2dyZXNzQ3Vyc29yLnBuZyAqLywKIAkJCQk4NTEzNkM5
NDBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhFYXN0UmVzaXplQ3Vyc29yLnBuZyAqLywKIAkJCQk4
NTEzNkM5NTBBRUQ2NjU5MDBGOTBBM0QgLyogc291dGhSZXNpemVDdXJzb3IucG5nICovLApAQCAt
MTQ0ODAsNiArMTQ0ODYsOCBAQAogCQkJCTQ0QTI4QUFCMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5oICovLAogCQkJCUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBN
YXRoTUxOYW1lcy5jcHAgKi8sCiAJCQkJNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhN
TE5hbWVzLmggKi8sCisJCQkJNzFFMjE4MzgxNzM1OUZCODAwNkU2RTREIC8qIFBsdWdJbnNSZXNv
dXJjZXMuaCAqLywKKwkJCQk3MUUyMTgzOTE3MzU5RkI4MDA2RTZFNEQgLyogUGx1Z0luc1Jlc291
cmNlc0RhdGEuY3BwICovLAogCQkJCTUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5n
c01hY3Jvcy5oICovLAogCQkJCTY1NjU4MUU2MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50
RmFjdG9yeS5jcHAgKi8sCiAJCQkJNjU2NTgxRTcwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR0VsZW1l
bnRGYWN0b3J5LmggKi8sCkBAIC0yMTA0NCw2ICsyMTA1Miw3IEBACiAJCQkJRkQzNTkxOTAxMzhE
QjIyMDAwRTFFQkVDIC8qIEF1ZGlvUGFyYW1UaW1lbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMjAxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA4NDEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9Qcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcxRTIxODNBMTczNTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5z
UmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4NjEyQjAyNkY3MDBDMUEzNTkg
LyogQXVkaW9SZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg4MTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb1Jlc2FtcGxlcktlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ4
QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNjc1Myw2ICsyNjc2Miw3IEBACiAJCQkJODQzMDBCREExMjBDOUFFRDAw
MjE5NTRBIC8qIFNWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRD
NUIyRkExMjE2REM4MTAwODhCNTNBIC8qIFNWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhV
dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzFFMjE4M0IxNzM1OUZCODAwNkU2RTRE
IC8qIFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTg3
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjIyN0E4QjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9pbnRMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyMjI3QThFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNo
ZWV0cy5jcHAKaW5kZXggYjNiYTViOC4uM2M5YzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTIwMSw3ICsyMDEsOSBAQCB2b2lkIENTU0Rl
ZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50LAogI2VuZGlmCiAKICAgICBpZiAoIXBsdWdJbnNTdHlsZVNoZWV0ICYmIChl
bGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShlbWJl
ZFRhZykpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnSW5zUnVsZXMgPSBTdHJpbmcocGx1Z0luc1Vz
ZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCkpICsg
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5l
eHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCk7CisgICAgICAgIFN0cmlu
ZyBwbHVnSW5zUnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSktPmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKSArIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5FeHRyYVN0eWxlU2hlZXQo
KTsKKyAgICAgICAgaWYgKHBsdWdJbnNSdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBwbHVn
SW5zUnVsZXMgPSBTdHJpbmcocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVn
SW5zVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBwbHVnSW5zU3R5bGVTaGVldCA9IHBh
cnNlVUFTaGVldChwbHVnSW5zUnVsZXMpOwogICAgICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KHBsdWdJbnNTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgICAgICBjaGFu
Z2VkRGVmYXVsdFN0eWxlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
bHVnSW5zLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcwppbmRleCBmZTMxODhh
Li42NjIxMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCkBAIC0yOSwyMCArMjksMTggQEAKICAq
IHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CiAgKgogICogPG9iamVjdD4KLSAqICAgI1No
YWRvd1Jvb3QKLSAqICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1jb250YWluZXIiPgotICogICAg
ICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtb3ZlcmxheSI+PC9kaXY+IDwhLS0gZS5nLiBmb3IgZGlt
bWluZyBjb250ZW50IC0tPgotICogICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+
Ci0gKiAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPlNuYXBzaG90dGVkIFBs
dWctSW48L2Rpdj4KLSAqICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+
Q2xpY2sgdG8gcmVzdGFydDwvZGl2PgorICogICAgICNTaGFkb3dSb290CisgKiAgICAgICAgIDxk
aXYgcHNldWRvPSItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50Ij4KKyAqICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRsZV06
IFtTdWJ0aXRsZV0iIHJvbGU9ImJ1dHRvbiI+CisgKiAgICAgICAgICAgICAgICAgPGRpdiBjbGFz
cz0ic25hcHNob3QtbGFiZWwiPgorICogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJz
bmFwc2hvdC10aXRsZSI+W1RpdGxlXTwvZGl2PgorICogICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+W1N1YnRpdGxlXTwvZGl2PgorICogICAgICAgICAg
ICAgICAgIDwvZGl2PgorICogICAgICAgICAgICAgPC9kaXY+CiAgKiAgICAgICAgIDwvZGl2Pgot
ICogICAgICAgPC9kaXY+Ci0gKiAgICAgPC9kaXY+Ci0gKgogICovCiAKLW9iamVjdDo6LXdlYmtp
dC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVk
LXBsdWdpbi1jb250ZW50CisqOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50CiB7
CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKQEAg
LTUwLDQxICs0OCw0MiBAQCBlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVu
dAogICAgIGhlaWdodDogMTAwJTsKIH0KIAotb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hv
dHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyCisqOjotd2Via2l0LXNuYXBz
aG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkKIHsKICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQorICAg
IAorICAgIHRvcDogNXB4OworICAgIHJpZ2h0OiA1cHg7CisgICAgYm90dG9tOiA1cHg7CisgICAg
bGVmdDogNXB4OworICAgIAorICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1
NSwgMC43NSk7CisgICAgY3Vyc29yOiBwb2ludGVyOwogCi1vYmplY3Q6Oi13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3Zlcmxh
eSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1j
b250YWluZXIgLnNuYXBzaG90LW92ZXJsYXkKLXsKLSAgICBkaXNwbGF5OiBub25lOworICAgIGRp
c3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVy
OworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKIH0KIAotb2JqZWN0Ojotd2Via2l0
LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90
LWxhYmVsLAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBz
aG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwKKyo6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1
Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbAogewotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICBj
b2xvcjogYmxhY2s7Ci0gICAgbWFyZ2luOiAxZW07Ci0gICAgcGFkZGluZzogMC4yNWVtIDJlbTsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwogICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1w
bHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNo
b3QtdGl0bGUsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25h
cHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3QtdGl0bGUKKyo6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFw
c2hvdC1sYWJlbCA+IGRpdgoreworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKK30KKworKjo6LXdlYmtp
dC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBz
aG90LWxhYmVsID4gLnNuYXBzaG90LXRpdGxlCiB7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiB9
CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3Qt
Y29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUsCi1lbWJlZDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFw
c2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUKKyo6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1
Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5zbmFw
c2hvdC1zdWJ0aXRsZQogewogICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICBjb2xvcjogIzQ0
NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGE0NTdhODIuLmYwMmJiNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiUGFnZVRyYW5z
aXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCisjaW5jbHVkZSAiUGx1Z0luc1Jlc291cmNlcy5oIgogI2lu
Y2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgpAQCAtMTQ5LDYgKzE1MCw4IEBACiAjaW5j
bHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
CisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRv
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xp
Y3kuaCIKQEAgLTQ4Nyw2ICs0OTAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2Zv
bnRsb2FkZXIoMCkKICNlbmRpZgogICAgICwgbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1l
cih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCisg
ICAgLCBtX2luamVjdGVkUGx1Z0luc1NjcmlwdChmYWxzZSkKIHsKICAgICBtX3ByaW50aW5nID0g
ZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKQEAgLTYwNDksNCArNjA1
MywxOSBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVk
KFRpbWVyPERvY3VtZW50PiogdGltZXIpCiAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChE
T01XcmFwcGVyV29ybGQqIHdvcmxkKQoreworICAgIGlmIChtX2luamVjdGVkUGx1Z0luc1Njcmlw
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVXNlIHRoZSBKUyBmaWxlIHByb3ZpZGVkIGJ5
IHRoZSBDaHJvbWUgY2xpZW50LCBvciBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBvbmUuCisgICAg
U3RyaW5nIGpzU3RyaW5nID0gcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJbkV4dHJh
U2NyaXB0KCk7CisgICAgaWYgKCFqc1N0cmluZykKKyAgICAgICAganNTdHJpbmcgPSBwbHVnSW5z
SmF2YVNjcmlwdDsKKworICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5ldmFsdWF0
ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKworICAgIG1faW5q
ZWN0ZWRQbHVnSW5zU2NyaXB0ID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCAzZDYzMzUxLi5lMjllNjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERP
TU5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5k
b3c7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFi
YXNlVGhyZWFkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKQEAgLTEyMDMsNiArMTIwNCw4IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRsb2FkZXIoKTsKICNlbmRp
ZgogCisgICAgdm9pZCBlbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxk
KiB3b3JsZCk7CisKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwm
LCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKTsKIApAQCAtMTU4MSw2ICsxNTg0LDcgQEAgcHJp
dmF0ZToKICAgICBUaW1lcjxEb2N1bWVudD4gbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1l
cjsKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50PiA+IG1fYXNzb2NpYXRlZEZvcm1Db250cm9s
czsKIAorICAgIGJvb2wgbV9pbmplY3RlZFBsdWdJbnNTY3JpcHQ7CiB9OwogCiBpbmxpbmUgdm9p
ZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggOGU5OTMyZS4u
ZTNkNzFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUg
IkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNDksMTEgKzUw
LDE0IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SFRN
TFBsdWdJbkltYWdlRWxlbWVudD4gPiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50TGlzdDsKIApAQCAt
NjgsNiArNzIsMjYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGF1dG9zdGFydFNvb25BZnRlclVzZXJH
ZXN0dXJlVGhyZXNob2xkID0gNS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBzaW11bGF0ZWRNb3Vz
ZUNsaWNrVGltZXJEZWxheSA9IC43NTsKIHN0YXRpYyBjb25zdCBkb3VibGUgcmVtb3ZlU25hcHNo
b3RUaW1lckRlbGF5ID0gMS41OwogCitzdGF0aWMgY29uc3QgU3RyaW5nJiB0aXRsZVRleHQoUGFn
ZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCB0aXRsZVRleHQsICgpKTsKKyAgICBpZiAodGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAg
ICAgdGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVs
VGl0bGUobWltZVR5cGUpOworICAgIGlmICh0aXRsZVRleHQuaXNFbXB0eSgpKQorICAgICAgICB0
aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKKyAgICByZXR1cm4gdGl0
bGVUZXh0OworfTsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgc3VidGl0bGVUZXh0KFBhZ2UqIHBh
Z2UsIFN0cmluZyBtaW1lVHlwZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
c3VidGl0bGVUZXh0LCAoKSk7CisgICAgaWYgKHN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAg
ICAgIHN1YnRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRM
YWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKKyAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkK
KyAgICAgICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7
CisgICAgcmV0dXJuIHN1YnRpdGxlVGV4dDsKK307CisKIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgUHJlZmVyUGx1Z0luc0Zvcklt
YWdlc09wdGlvbiBwcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uKQogICAgIDogSFRNTFBsdWdJ
bkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLy8gbV9uZWVkc1dpZGdldFVwZGF0ZSgh
Y3JlYXRlZEJ5UGFyc2VyKSBhbGxvd3MgSFRNTE9iamVjdEVsZW1lbnQgdG8gZGVsYXkKQEAgLTMx
OCwyOSArMzQyLDYgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hv
dChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgp
OwogfQogCi1zdGF0aWMgQXRvbWljU3RyaW5nIGNsYXNzTmFtZUZvclNoYWRvd1Jvb3QoY29uc3Qg
Tm9kZSogbm9kZSkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmlu
ZywgcGx1Z0luVGlueVNpemVDbGFzc05hbWUsICgidGlueSIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgcGx1Z0luU21hbGxTaXplQ2xhc3NOYW1lLCAoInNtYWxsIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBwbHVnSW5NZWRpdW1TaXplQ2xhc3NOYW1lLCAoIm1lZGl1bSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IEF0b21pY1N0cmluZywgcGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lLCAoImxhcmdlIiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgUmVuZGVyQm94KiByZW5k
ZXJCb3ggPSBzdGF0aWNfY2FzdDxSZW5kZXJCb3gqPihub2RlLT5yZW5kZXJlcigpKTsKLSAgICBM
YXlvdXRVbml0IHdpZHRoID0gcmVuZGVyQm94LT5jb250ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRV
bml0IGhlaWdodCA9IHJlbmRlckJveC0+Y29udGVudEhlaWdodCgpOwotCi0gICAgaWYgKHdpZHRo
IDwgc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBoZWlnaHQgPCBzaXppbmdUaW55RGlt
ZW5zaW9uVGhyZXNob2xkKQotICAgICAgICByZXR1cm4gcGx1Z0luVGlueVNpemVDbGFzc05hbWU7
Ci0KLSAgICBpZiAod2lkdGggPCBzaXppbmdTbWFsbFdpZHRoVGhyZXNob2xkKQotICAgICAgICBy
ZXR1cm4gcGx1Z0luU21hbGxTaXplQ2xhc3NOYW1lOwotCi0gICAgaWYgKHdpZHRoIDwgc2l6aW5n
TWVkaXVtV2lkdGhUaHJlc2hvbGQgfHwgaGVpZ2h0IDwgc2l6aW5nTWVkaXVtSGVpZ2h0VGhyZXNo
b2xkKQotICAgICAgICByZXR1cm4gcGx1Z0luTWVkaXVtU2l6ZUNsYXNzTmFtZTsKLQotICAgIHJl
dHVybiBwbHVnSW5MYXJnZVNpemVDbGFzc05hbWU7Ci19Ci0KIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLT5p
c1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKQEAgLTM0OSw2OSArMzUwLDQ5IEBAIHZvaWQgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBTaGFkb3dSb290KiByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwot
ICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRWxlbWVudCogc2hhZG93Q29u
dGFpbmVyID0gdG9FbGVtZW50KHJvb3QtPmZpcnN0Q2hpbGQoKSk7Ci0gICAgc2hhZG93Q29udGFp
bmVyLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBjbGFzc05hbWVGb3JTaGFkb3dSb290KHRoaXMp
KTsKKyAgICAvLyBOb3RpZnkgdGhlIHNoYWRvdyByb290IHRoYXQgdGhlIHNpemUgY2hhbmdlZCBz
byB0aGF0IHdlIG1heSB1cGRhdGUgdGhlIG92ZXJsYXkgbGF5b3V0LgorICAgIGVuc3VyZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5yZXNpemVFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7Ci0g
ICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7Ci0KLSAgICBtX3NoYWRvd0NvbnRhaW5lciA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBtX3NoYWRvd0NvbnRhaW5lci0+c2V0
UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIFJlZlB0cjxFbGVt
ZW50PiBjb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgY29udGFp
bmVyLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LWNvbnRh
aW5lciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFN0cmluZyBtaW1lVHlwZSA9IGxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBS
ZWZQdHI8RWxlbWVudD4gb3ZlcmxheSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAg
ICBvdmVybGF5LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90
LW92ZXJsYXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgY29u
dGFpbmVyLT5hcHBlbmRDaGlsZChvdmVybGF5LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBpc29sYXRlZFdvcmxk
LCAoRE9NV3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6OmNvbW1vblZNKCkpKSk7Cisg
ICAgZG9jdW1lbnQoKS0+ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KGlzb2xhdGVkV29ybGQu
Z2V0KCkpOwogCi0gICAgbV9zbmFwc2hvdExhYmVsID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2MpOwotICAgIG1fc25hcHNob3RMYWJlbC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWlj
U3RyaW5nKCJzbmFwc2hvdC1sYWJlbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gcGFnZS0+bWFp
bkZyYW1lKCktPnNjcmlwdCgpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmpl
Y3QoaXNvbGF0ZWRXb3JsZC5nZXQoKSkpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVk
UGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBzbmFwc2hvdHRl
ZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0g
ICAgICAgIFN0cmluZyBjbGllbnRUaXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7Ci0gICAgICAgIGlmICghY2xp
ZW50VGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlVGV4dCA9IGNsaWVudFRp
dGxlVGV4dDsKLSAgICAgICAgU3RyaW5nIGNsaWVudFN1YnRpdGxlVGV4dCA9IGRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKTsK
LSAgICAgICAgaWYgKCFjbGllbnRTdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAg
c3VidGl0bGVUZXh0ID0gY2xpZW50U3VidGl0bGVUZXh0OwotICAgIH0KKyAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0aXRsZSA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jKTsKLSAgICB0aXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRv
bWljU3RyaW5nKCJzbmFwc2hvdC10aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKLSAgICB0aXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0aXRs
ZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICBtX3NuYXBzaG90TGFiZWwtPmFwcGVu
ZENoaWxkKHRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdMaXN0OworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCByb290KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdGl0bGVUZXh0KHBh
Z2UsIG1pbWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN1YnRp
dGxlVGV4dChwYWdlLCBtaW1lVHlwZSkpKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiBzdWJUaXRs
ZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBzdWJUaXRsZS0+c2V0QXR0cmli
dXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1zdWJ0aXRsZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzdWJUaXRsZS0+YXBwZW5kQ2hpbGQo
ZG9jLT5jcmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
LSAgICBtX3NuYXBzaG90TGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxlLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKLQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9zbmFwc2hvdExhYmVsLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAvLyBJdCBpcyBleHBlY3RlZCB0aGUgSlMgZmlsZSBw
cm92aWRlcyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGUsIHN1YnRpdGxlKSBmdW5j
dGlvbi4KKyAgICBKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7CisgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RU
YWJsZSgpLT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFrZSB0aGlzIGlu
dG8gYSBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkgY2xpZW50cy4KLSAgICBTdHJpbmcgY29tYmlu
ZWRUZXh0ID0gdGl0bGVUZXh0OwotICAgIGlmICghY29tYmluZWRUZXh0LmlzRW1wdHkoKSAmJiAh
c3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgY29tYmluZWRUZXh0LmFwcGVuZCgiICIp
OwotICAgIGNvbWJpbmVkVGV4dC5hcHBlbmQoc3VidGl0bGVUZXh0KTsKLSAgICBjb250YWluZXIt
PnNldEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0ciwgY29tYmluZWRUZXh0KTsKLSAgICBjb250YWlu
ZXItPnNldEF0dHJpYnV0ZShyb2xlQXR0ciwgImJ1dHRvbiIpOworICAgIEpTT2JqZWN0KiB0aGlz
T2JqID0gZ2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBleGVjKTsKIAotICAgIG1fc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGlsZChjb250YWlu
ZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIHJvb3QtPmFwcGVuZENoaWxkKG1fc2hhZG93
Q29udGFpbmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBjYWxsKGV4ZWMsIG92ZXJsYXks
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLWJvb2wgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RMYWJlbChOb2RlKiBub2RlKQorYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoTm9kZSogbm9kZSkK
IHsKLSAgICByZXR1cm4gbm9kZSAmJiAobm9kZSA9PSBtX3NuYXBzaG90TGFiZWwuZ2V0KCkgfHwg
bm9kZS0+aXNEZXNjZW5kYW50T2YobV9zbmFwc2hvdExhYmVsLmdldCgpKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdG9yLCAoIi5zbmFwc2hvdC1vdmVybGF5
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIFJlZlB0cjxFbGVt
ZW50PiBzbmFwc2hvdExhYmVsID0gZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLT5xdWVyeVNl
bGVjdG9yKHNlbGVjdG9yLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByZXR1cm4gbm9kZSAm
JiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+
aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCiB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaAppbmRleCAyMzQ5ZjQyLi44OTczNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqKTsKIAogICAgIHZv
aWQgc2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7Ci0gICAgYm9vbCBwYXJ0T2ZT
bmFwc2hvdExhYmVsKE5vZGUqKTsKKyAgICBib29sIHBhcnRPZlNuYXBzaG90T3ZlcmxheShOb2Rl
Kik7CiAKICAgICBib29sIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZTsgfQogICAgIHZvaWQgc2V0TmVlZHNDaGVja0ZvclNp
emVDaGFuZ2UoKSB7IG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UgPSB0cnVlOyB9CkBAIC0xNTUs
OCArMTU1LDYgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBt
X3N3YXBSZW5kZXJlclRpbWVyOwogICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1f
cmVtb3ZlU25hcHNob3RUaW1lcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsK
LSAgICBSZWZQdHI8RWxlbWVudD4gbV9zaGFkb3dDb250YWluZXI7Ci0gICAgUmVmUHRyPEVsZW1l
bnQ+IG1fc25hcHNob3RMYWJlbDsKICAgICBib29sIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJl
OwogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFBsdWdpbjsKICAgICBib29sIG1fbmVlZHNDaGVja0Zv
clNpemVDaGFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjNmMxZTdkLi4w
YTg0Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw5ICszNjksMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHlDaHJvbWVDbGllbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJl
bFRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBw
bHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gRklYTUU6IFBvcnQgc2hvdWxk
IHJldHVybiB0cnVlIHVzaW5nIGhldXJpc3RpYyBiYXNlZCBvbiBzY3JvbGxhYmxlKFJlbmRlckJv
eCkuCiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcChSZW5k
ZXJCb3gqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNzU5ODMwYS4uM2M2
YTIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCkBAIC0xNzMsOSArMTczLDkgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogCiAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgfHwgKG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2
YXRpb24gJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSkgewog
ICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uID0gZmFsc2U7Ci0gICAgICAgIGJv
b2wgY2xpY2tXYXNPbkxhYmVsID0gcGx1Z0luSW1hZ2VFbGVtZW50KCktPnBhcnRPZlNuYXBzaG90
TGFiZWwoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7Ci0gICAgICAgIHBsdWdJbkltYWdlRWxl
bWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbkxhYmVsID8gSFRNTFBsdWdJbkVsZW1l
bnQ6OlJlc3RhcnRpbmcgOiBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZ1dpdGhQZW5kaW5n
TW91c2VDbGljayk7Ci0gICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT51c2VyRGlkQ2xpY2tT
bmFwc2hvdChtb3VzZUV2ZW50LCAhY2xpY2tXYXNPbkxhYmVsKTsKKyAgICAgICAgYm9vbCBjbGlj
a1dhc09uT3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVudCgpLT5wYXJ0T2ZTbmFwc2hvdE92ZXJs
YXkoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7CisgICAgICAgIHBsdWdJbkltYWdlRWxlbWVu
dCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbk92ZXJsYXkgPyBIVE1MUGx1Z0luRWxlbWVu
dDo6UmVzdGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nV2l0aFBlbmRpbmdN
b3VzZUNsaWNrKTsKKyAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnVzZXJEaWRDbGlja1Nu
YXBzaG90KG1vdXNlRXZlbnQsICFjbGlja1dhc09uT3ZlcmxheSk7CiAgICAgICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAgbV9pc1BvdGVudGlhbE1vdXNlQWN0
aXZhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmNwcAppbmRleCA0ZGMwY2VmLi4yNjllMWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKQEAgLTM4OSw3ICsz
ODksNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjpleGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoKQogCiB2b2lkIERyYXdpbmdBcmVhUHJveHlJbXBsOjp1cGRhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0
KQogewotICAgIEFTU0VSVChpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSk7CisgICAg
Ly8gQVNTRVJUKGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKTsKIAogICAgIG1fbGF5
ZXJUcmVlQ29udGV4dCA9IGxheWVyVHJlZUNvbnRleHQ7CiAgICAgbV93ZWJQYWdlUHJveHktPnVw
ZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggMzg3MjliMi4uNDU2ZDU1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5oCkBAIC0yNTAsOSArMjUwLDEwIEBAIHR5cGVkZWYgV0tCdW5kbGVQYWdlVUlF
bGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZU1lbnVCYXJJc1Zpc2libGVDYWxsYmFjayko
CiB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VU
b29sYmFyc0FyZVZpc2libGVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlUmVhY2hlZEFwcENh
Y2hlT3JpZ2luUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlP
cmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwogdHlwZWRlZiB1aW50NjRfdCAoKldLQnVuZGxlUGFnZUV4Y2VlZGVkRGF0YWJh
c2VRdW90YUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4sIFdLU3RyaW5nUmVmIGRhdGFiYXNlTmFtZSwgV0tTdHJpbmdSZWYgZGF0YWJhc2VE
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCB1aW50
NjRfdCBleHBlY3RlZFVzYWdlQnl0ZXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRl
ZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZVN0YXJ0TGFiZWxUaXRsZUNh
bGxiYWNrKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgV0tTdHJpbmdSZWYgKCpX
S0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsU3VidGl0bGVDYWxsYmFjaykoY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1
Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJhY2spKFdLU3RyaW5nUmVmIG1pbWVUeXBlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBh
Z2VQbHVnSW5DcmVhdGVTdGFydExhYmVsU3VidGl0bGVDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWlt
ZVR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldL
QnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU3R5bGVTaGVldENhbGxiYWNrKShjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5D
cmVhdGVFeHRyYVNjcmlwdENhbGxiYWNrKShjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogc3Ry
dWN0IFdLQnVuZGxlUGFnZVVJQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC0y
ODAsNiArMjgxLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZVVJQ2xpZW50IHsKICAgICBXS0J1bmRs
ZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsVGl0bGVDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRsZTsKICAgICBXS0J1bmRsZVBhZ2VQbHVnSW5D
cmVhdGVTdGFydExhYmVsU3VidGl0bGVDYWxsYmFjayAgICAgICAgICAgICAgICAgIGNyZWF0ZVBs
dWdJblN0YXJ0TGFiZWxTdWJ0aXRsZTsKICAgICBXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVFeHRy
YVN0eWxlU2hlZXRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBsdWdJbkV4dHJh
U3R5bGVTaGVldDsKKyAgICBXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVFeHRyYVNjcmlwdENhbGxi
YWNrICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0OwogfTsK
IHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZVVJQ2xpZW50IFdLQnVuZGxlUGFnZVVJQ2xpZW50
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCmluZGV4IGI2
YWY2NDIuLjhlOWM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQuY3BwCkBAIC0xNjMsMjEgKzE2MywyMSBAQCB1aW50NjRfdCBJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudDo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdlKiBwYWdlLCBXZWJTZQogICAg
IHJldHVybiBtX2NsaWVudC5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQ
SShvcmlnaW4pLCB0b0FQSShkYXRhYmFzZU5hbWUuaW1wbCgpKSwgdG9BUEkoZGF0YWJhc2VEaXNw
bGF5TmFtZS5pbXBsKCkpLCBjdXJyZW50UXVvdGFCeXRlcywgY3VycmVudE9yaWdpblVzYWdlQnl0
ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4cGVjdGVkVXNhZ2VCeXRlcywgbV9jbGll
bnQuY2xpZW50SW5mbyk7CiB9CiAKLVN0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6
cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QKK1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJTdHJpbmc+IHRpdGxlID0g
YWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRsZShtX2Ns
aWVudC5jbGllbnRJbmZvKSkpOworICAgIFJlZlB0cjxXZWJTdHJpbmc+IHRpdGxlID0gYWRvcHRS
ZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRsZSh0b0FQSShtaW1l
VHlwZS5pbXBsKCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKSkpOwogICAgIHJldHVybiB0aXRsZSA/
IHRpdGxlLT5zdHJpbmcoKSA6IFN0cmluZygpOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0CitTdHJpbmcgSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewogICAgIGlmICghbV9jbGllbnQuY3JlYXRlUGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBSZWZQ
dHI8V2ViU3RyaW5nPiBzdWJ0aXRsZSA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQ
bHVnSW5TdGFydExhYmVsU3VidGl0bGUobV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBSZWZQ
dHI8V2ViU3RyaW5nPiBzdWJ0aXRsZSA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQ
bHVnSW5TdGFydExhYmVsU3VidGl0bGUodG9BUEkobWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQu
Y2xpZW50SW5mbykpKTsKICAgICByZXR1cm4gc3VidGl0bGUgPyBzdWJ0aXRsZS0+c3RyaW5nKCkg
OiBTdHJpbmcoKTsKIH0KIApAQCAtMTkwLDQgKzE5MCwxMyBAQCBTdHJpbmcgSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQ6OnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0eWxlU2hlZXQgPyBzdHlsZVNoZWV0LT5zdHJpbmcoKSA6IFN0cmluZygpOwogfQogCitTdHJp
bmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJbkV4dHJhU2NyaXB0KCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0KQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiBzY3JpcHQgPSBhZG9wdFJl
Zih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luRXh0cmFTY3JpcHQobV9jbGllbnQuY2xpZW50
SW5mbykpKTsKKyAgICByZXR1cm4gc2NyaXB0ID8gc2NyaXB0LT5zdHJpbmcoKSA6IFN0cmluZygp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQuaAppbmRleCBhZDhmZTI0Li40MjNlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oCkBAIC03MCw5ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWFjaEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXZWJQYWdlKiwgV2ViU2Vj
dXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpOwogICAgIHVpbnQ2NF90IGRp
ZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwg
dWludDY0X3QgY3VycmVudFF1b3RhQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZUJ5
dGVzLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCB1aW50NjRfdCBleHBlY3Rl
ZFVzYWdlQnl0ZXMpOwogCi0gICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0
OwotICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdDsKKyAgICBTdHJp
bmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0Owor
ICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0OworICAg
IFN0cmluZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0OwogCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggNjJiNzg1Ni4uOGM1NjI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtODI0LDE0ICs4MjQsMTQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJgogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNN
ZXNzYWdlKG1fcGFnZSwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHN1Y2Nlc3MpOwogfQogCi1TdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdAorU3RyaW5n
IFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVu
dCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpOworICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUobWltZVR5cGUpOwogfQogCi1T
dHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdAor
U3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVVSUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpOworICAgIHJldHVybiBtX3Bh
Z2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUobWlt
ZVR5cGUpOwogfQogCiBTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVN0eWxlU2hl
ZXQoKSBjb25zdApAQCAtODM5LDQgKzgzOSw5IEBAIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBs
dWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVVSUNsaWVudCgpLnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpOwogfQogCitTdHJpbmcgV2Vi
Q2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJbkV4dHJhU2NyaXB0KCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZDQ1ZjE4Mi4u
ZGQ2OWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMTksOSArMjE5LDEwIEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHN1Y2Nl
c3MpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1
YnRpdGxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRM
YWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxl
U2hlZXQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVNj
cmlwdCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgU3RyaW5nIG1fY2FjaGVkVG9vbFRpcDsKICAg
ICBtdXRhYmxlIFJlZlB0cjxXZWJGcmFtZT4gbV9jYWNoZWRGcmFtZVNldExhcmdlc3RGcmFtZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAyMzNmZThhLi5lMDQyMDM4IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCkBAIC0zNzIsNiArMzcyLDcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJ
bmplY3RlZEJ1bmRsZVBhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8qcGx1
Z0luU3RhcnRMYWJlbFRpdGxlKi8KICAgICAgICAgMCwgLypwbHVnSW5TdGFydExhYmVsU3VidGl0
bGUqLwogICAgICAgICAwLCAvKnBsdWdJbkV4dHJhU3R5bGVTaGVldCovCisgICAgICAgIDAsIC8q
cGx1Z0luRXh0cmFTY3JpcHQqLwogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQo
bV9wYWdlLCAmdWlDbGllbnQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200548</attachid>
            <date>2013-05-04 15:21:09 -0700</date>
            <delta_ts>2013-05-06 00:25:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115548-20130505002017.patch</filename>
            <type>text/plain</type>
            <size>38010</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiMWYxMDNiYWJkOTEz
NjYxNzM2MDI1MDVjNTkzY2FmNDAyOTAwZC4uMTMzYWY5ZGU5Njc2YzUyNTMzZDVlMTg4NTU3NWYx
YTU3NjFhOWZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDEzLTA1LTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVz
ZW50YXRpb24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBSZXNvdXJjZXMv
cGx1Z0lucy5qczoKKyAgICAgICAgKGNyZWF0ZU92ZXJsYXkpOgorICAgICAgICBJbXBsZW1lbnQg
dGhlIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGVUZXh0LCBzdWJ0aXRsZVRleHQpIG1l
dGhvZAorICAgICAgICB0aGF0IGlzIGNhbGxlZCBmcm9tIFdlYkNvcmUgKEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QpCisgICAgICAgIHRvIGFsbG93IHRo
ZSBpbmplY3RlZCBzY3JpcHQgdG8gY3VzdG9taXplIHRoZSBzaGFkb3cgcm9vdCBmb3IgYSBzbmFw
c2hvdHRlZAorICAgICAgICBwbHVnLWluLiBUaGlzIGlzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
biwgY2xpZW50cyBhcmUgZXhwZWN0ZWQgdG8gY3VzdG9taXplCisgICAgICAgIHRoaXMgYnkgcHJv
dmlkaW5nIHRoZWlyIG93biBKUyBmaWxlIHdpdGggZW5oYW5jZWQgYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBjc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0eWxlU2hlZXRzRm9yRWxlbWVudCk6
CisgICAgICAgIFNpbmNlIHdlIG5vIGxvbmdlciBoYXZlIGEgZGVmYXVsdCBzaGFkb3cgdHJlZSBn
ZW5lcmF0ZWQgaW4gQysrLCBpdCBtYWtlcyBsaXR0bGUKKyAgICAgICAgc2Vuc2UgZm9yIGNsaWVu
dHMgdG8gZXh0ZW5kIHRoZSBkZWZhdWx0IHNuYXBzaG90dGVkIHBsdWctaW4gc3R5bGVzaGVldCwg
c28gd2UKKyAgICAgICAgb25seSBpbnNlcnQgaXQgaWYgbm8gY3VzdG9tIG9uZSBpcyBwcm92aWRl
ZCBieSB0aGUgY2hyb21lIGNsaWVudC4KKworICAgICAgICAqIGNzcy9wbHVnSW5zLmNzczoKKyAg
ICAgICAgQmV0dGVyIHN0eWxpbmcgb2YgdGhlIGRlZmF1bHQgc25hcHNob3R0ZWQgcGx1Zy1pbiBv
dmVybGF5IGxvb2sgYnkgdXNpbmcgQ1NTCisgICAgICAgIGZsZXggYm94ZXMuIEFsc28gdXNpbmcg
bW9yZSBleHBsaWNpdCBzZWxlY3RvciBhcyBhbiBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVuc3VyZVBsdWdJ
bnNJbmplY3RlZFNjcmlwdCk6CisgICAgICAgIEV4cG9zZSBhIG5ldyBtZXRob2QgdG8gYWxsb3cg
SFRNTFBsdWdJbkltYWdlRWxlbWVudCBpbnN0YW5jZXMgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAg
dGhlIEphdmFTY3JpcHQgY29kZSByZXF1aXJlZCB0byBjdXN0b21pemUgdGhlIHNuYXBzaG90dGVk
IHBsdWctaW4ncyBzaGFkb3cgcm9vdAorICAgICAgICBpcyBpbmRlZWQgaW5qZWN0ZWQgaW4gdGhl
IGN1cnJlbnQgZG9jdW1lbnQuIFRoZSBhY3R1YWwgaW5qZWN0aW9uIHdvdWxkIG9ubHkKKyAgICAg
ICAgaGFwcGVuIG9uY2UgcGVyIGRvY3VtZW50IHNvIGFsbCBzbmFwc2hvdHRlZCBwbHVnLWlucyBz
aGFyZSB0aGUgc2FtZSBzY3JpcHRpbmcKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICBFeHBvc2UgdGhlIG5ldyBlbnN1cmVQbHVnSW5zSW5qZWN0
ZWRTY3JpcHQgbWV0aG9kIGFuZCB0aGUgbV9pbmplY3RlZFBsdWdJbnNTY3JpcHQKKyAgICAgICAg
cHJvcGVydHkgdXNlZCB0byBlbnN1cmUgaW5qZWN0aW9uIGhhcHBlbnMgb25seSBvbmNlIHBlciBk
b2N1bWVudC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0aXRsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6c3VidGl0bGVU
ZXh0KToKKyAgICAgICAgTWFrZSB0aGUgbG9jYWxpemVkIHN0cmluZ3Mgc3RhdGljIG1lbWJlcnMg
c2luY2UgdGhleSB3aWxsIGJlIHNoYXJlZCBieSBhbGwgaW5zdGFuY2VzCisgICAgICAgIGFuZCBp
dCBjYW4gYmUgY29zdGx5IHRvIHJldHJpZXZlIHRob3NlIHN0cmluZ3MgZWFjaCB0aW1lIGZyb20g
dGhlIGNsaWVudC4gQWRkaXRpb25hbGx5LAorICAgICAgICBpdCBpcyBleHBlY3RlZCB0aGUgY2hy
b21lIGNsaWVudCB3aWxsIHdhbnQgdG8gcHJvdmlkZSBsb2NhbGl6ZWQgc3RyaW5ncyB0YWtpbmcg
aW50bworICAgICAgICBhY2NvdW50IHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluJ3MgbWltZS10eXBl
LCBzbyB3ZSdyZSBhZGRpbmcgdGhpcyBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMpOgorICAgICAgICBE
aXNwYXRjaCBhICJyZXNpemUiIGV2ZW50IHRvIHRoZSBzaGFkb3cgcm9vdCB0byBub3RpZnkgdGhl
IGluamVjdGVkIHNjcmlwdCB0aGF0IHRoZQorICAgICAgICBzbmFwc2hvdHRlZCBwbHVnLWluJ3Mg
bWV0cmljcyBoYXZlIGNoYW5nZWQgYW5kIHRvIGFsbG93IHRoZSBvdmVybGF5IHRvIHVwZGF0ZSBp
dHNlbGYKKyAgICAgICAgYXMgYSByZXN1bHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgUmVtb3Zl
IGFsbCB0aGUgRE9NIGdlbmVyYXRpb24gY29kZSBpbiBmYXZvciBvZiBhbiBhcHByb2FjaCB3aGVy
ZSB3ZSBjcmVhdGUgYSBzaGFyZWQKKyAgICAgICAgRE9NIHNjcmlwdGluZyB3b3JsZCBpbiB3aGlj
aCB3ZSBpbmplY3QgSmF2YVNjcmlwdCBjb2RlIHRoYXQgd2lsbCBwZXJmb3JtIHRoZSBzYW1lCisg
ICAgICAgIHRhc2sgYnV0IHdpbGwgYWRkaXRpb25hbGx5IGJlIHByb3ZpZGVkIGJ5IHRoZSBjbGll
bnQgaW4gb3JkZXIgdG8gcHJvdmlkZSBhIGNvbXBsZXRlbHkKKyAgICAgICAgY3VzdG9tIG92ZXJs
YXkgZm9yIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluLiBUaGUgc29sZSBjb250cmFjdCBpcyBmb3Ig
dGhlIEphdmFTY3JpcHQKKyAgICAgICAgdG8gaW1wbGVtZW50IGEgY3JlYXRlT3ZlcmxheShzaGFk
b3dSb290LCB0aXRsZVRleHQsIHN1YnRpdGxlVGV4dCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KToKKyAgICAg
ICAgUmVuYW1lZCBtZXRob2QgdG8gYmUgZ2VuZXJpYyB0byB0aGUgb3ZlcmxheSBhcyBvcHBvc2Vk
IHRvIHRleHQgbGFiZWxzIGFuZCB1c2UgdGhlCisgICAgICAgIGVsZW1lbnQgd2l0aCBDU1MgY2xh
c3MgbmFtZSAic25hcHNob3Qtb3ZlcmxheSIgYXMgdGhlIGNvbXBhcmlzb24gbm9kZS4KKworICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCk6CisgICAgICAgIFJlbW92aW5nIGEgY291cGxlIG9mIHVudXNlZCBtZW1i
ZXJzIHNpbmNlIHdlIG5vIGxvbmdlciBnZW5lcmF0ZSB0aGUgc2hhZG93IERPTSBmcm9tIEMrKwor
ICAgICAgICBhbmQgcmVuYW1lIHRoZSBwYXJ0T2ZTbmFwc2hvdExhYmVsIG1ldGhvZCB0byBwYXJ0
T2ZTbmFwc2hvdE92ZXJsYXkuCisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCk6CisgICAg
ICAgIFBhc3MgaW4gdGhlIG1pbWUtdHlwZSB0byBwbHVnSW5TdGFydExhYmVsVGl0bGUgYW5kIHBs
dWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSBhbmQgZXhwb3NlCisgICAgICAgIGEgbmV3IHBsdWdJbkV4
dHJhU2NyaXB0IG1ldGhvZCB0byBhbGxvdyB0aGUgY2hyb21lIGNsaWVudCB0byBwcm92aWRlIGEg
Y3VzdG9tIEpTIGZpbGUKKyAgICAgICAgZm9yIHRoZSBtYW5hZ2VtZW50IG9mIHRoZSBzaGFkb3cg
cm9vdC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQp
OgorICAgICAgICBVcGRhdGUgdGhlIHRlcm1pbm9sb2d5IGZyb20gImxhYmVsIiB0byAib3Zlcmxh
eSIgcGVyIHRoZSBjaGFuZ2VzIG1hZGUgaW4gSFRNTFBsdWdJbkltYWdlRWxlbWVudC4KKworMjAx
My0wNS0wNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCiAgICAgICAgIFVw
ZGF0ZSBjb2RlIGdlbmVyYXRvcnMgdG8gaGFuZGxlIGEgbmV3IEphdmFTY3JpcHQgZmlsZSBmb3Ig
c25hcHNob3R0ZWQgcGx1Zy1pbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTU5NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFhMWUwMTE1MmMxY2IwZWQxZGNl
Mzk4NjM0MzYyODFhM2YzNWQ2NS4uMjE0MmNmODgyOThhMDA0ZTRjOTA2M2MzNGMyNDIwZmJjNzdl
ZjQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTA1LTA0ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVzZW50YXRp
b24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgbmV3IHBsdWdJ
bkV4dHJhU2NyaXB0IG1ldGhvZCB0byBzdXBwb3J0IHRoZSBpbmplY3Rpb24gb2YKKyAgICAgICAg
YSBKUyBmaWxlIGZyb20gdGhlIGNocm9tZSBjbGllbnQgdG8gY3VzdG9taXplIHRoZSByZW5kZXJp
bmcgb2YgYQorICAgICAgICBzbmFwc2hvdHRlZCBwbHVnLWluJ3Mgc2hhZG93IHRyZWUuIEFkZGl0
aW9uYWxseSwgaXQgaXMgZXhwZWN0ZWQKKyAgICAgICAgdGhlIGNocm9tZSBjbGllbnQgd2lsbCB3
YW50IHRvIHByb3ZpZGUgbG9jYWxpemVkIHN0cmluZ3MgdGFraW5nCisgICAgICAgIGludG8gYWNj
b3VudCB0aGUgc25hcHNob3R0ZWQgcGx1Zy1pbidzIG1pbWUtdHlwZSwgc28gd2UncmUgYWRkaW5n
CisgICAgICAgIHRoaXMgYXMgYSBwYXJhbWV0ZXIgdG8gYm90aCBwbHVnSW5TdGFydExhYmVsVGl0
bGUgYW5kCisgICAgICAgIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSBtZXRob2RzLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBs
dWdJblN0YXJ0TGFiZWxUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luRXh0cmFTY3JpcHQpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50Lmg6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1
YnRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCiAy
MDEzLTA1LTA0ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTc0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGx1Z0lucy5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9wbHVnSW5zLmpzCmluZGV4IDk5ZjJlNThiNWFhOGE2ZGMzMTc0NDVhNTgyYWU3M2E2ZDlh
ZDM4MDEuLjQ3OGNiOTJlZDlkMTU2MTU5ZTM5YjU0NDViMzFiOTFlOWNlNjYxNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCkBAIC0xLDIgKzEsMzYgQEAKIAotLy8gRklYTUU6IEZp
bGwgdXAgd2l0aCB1c2VmdWwgY29kZSBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTE1NTQ4Lgor
Ly8gRnVuY3Rpb24gY2FsbGVkIGZyb20gV2ViQ29yZS4KK2Z1bmN0aW9uIGNyZWF0ZU92ZXJsYXko
c2hhZG93Um9vdCwgdGl0bGVUZXh0LCBzdWJ0aXRsZVRleHQpCit7CisgICAgLy8gR2VuZXJhdGUg
dGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisgICAgLy8KKyAgICAvLyA8ZGl2IHBzZXVkbz0iLXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCI+CisgICAgLy8gICAgIDxkaXYgY2xhc3M9
InNuYXBzaG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRsZV06IFtTdWJ0aXRsZV0iIHJvbGU9
ImJ1dHRvbiI+CisgICAgLy8gICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+Cisg
ICAgLy8gICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPltUaXRsZV08L2Rp
dj4KKyAgICAvLyAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+W1N1
YnRpdGxlXTwvZGl2PgorICAgIC8vICAgICAgICAgPC9kaXY+CisgICAgLy8gICAgIDwvZGl2Pgor
ICAgIC8vIDwvZGl2PgorCisgICAgdmFyIHNoYWRvd0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIHNoYWRvd0NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInBzZXVk
byIsICItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50Iik7CisKKyAgICB2YXIgb3Zl
cmxheSA9IHNoYWRvd0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKSk7CisgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCB0aGlzLnRp
dGxlVGV4dCArICI6ICIgKyB0aGlzLnN1YnRpdGxlVGV4dCk7CisgICAgb3ZlcmxheS5zZXRBdHRy
aWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7CisgICAgb3ZlcmxheS5jbGFzc05hbWUgPSAic25hcHNo
b3Qtb3ZlcmxheSI7CisKKyAgICB2YXIgc25hcHNob3RMYWJlbCA9IG92ZXJsYXkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIHNuYXBzaG90TGFiZWwuY2xh
c3NOYW1lID0gInNuYXBzaG90LWxhYmVsIjsKKworICAgIHZhciB0aXRsZSA9IHRoaXMudGl0bGUg
PSBzbmFwc2hvdExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
KTsKKyAgICB0aXRsZS5jbGFzc05hbWUgPSAic25hcHNob3QtdGl0bGUiOworICAgIHRpdGxlLnRl
eHRDb250ZW50ID0gdGl0bGVUZXh0OworCisgICAgdmFyIHN1YnRpdGxlID0gdGhpcy5zdWJ0aXRs
ZSA9IHNuYXBzaG90TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
IikpOworICAgIHN1YnRpdGxlLmNsYXNzTmFtZSA9ICJzbmFwc2hvdC1zdWJ0aXRsZSI7CisgICAg
c3VidGl0bGUudGV4dENvbnRlbnQgPSBzdWJ0aXRsZVRleHQ7CisKKyAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKHNoYWRvd0NvbnRhaW5lcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzLmNwcAppbmRleCBiM2JhNWI4OThlOTZjNGMzOWJhN2JiNjliMTY1
MGIwY2ZmOWVhMDUyLi4zYzljMzI3ZGE5NDVjZTg3NjNhNGNlOGM2NjUyMjA3OTAxMDA2MGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMjAx
LDcgKzIwMSw5IEBAIHZvaWQgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5
bGVTaGVldHNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsCiAjZW5kaWYKIAogICAgIGlmICgh
cGx1Z0luc1N0eWxlU2hlZXQgJiYgKGVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCBl
bGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkpIHsKLSAgICAgICAgU3RyaW5nIHBsdWdJbnNS
dWxlcyA9IFN0cmluZyhwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHBsdWdJbnNV
c2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQt
PmRvY3VtZW50KCktPnBhZ2UoKSktPmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKSArIGVsZW1lbnQt
PmRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5FeHRyYVN0eWxl
U2hlZXQoKTsKKyAgICAgICAgU3RyaW5nIHBsdWdJbnNSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVT
aGVldCgpICsgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpOworICAgICAgICBpZiAocGx1Z0luc1J1bGVzLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHBsdWdJbnNSdWxlcyA9IFN0cmluZyhwbHVnSW5zVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgICAg
IHBsdWdJbnNTdHlsZVNoZWV0ID0gcGFyc2VVQVNoZWV0KHBsdWdJbnNSdWxlcyk7CiAgICAgICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGx1Z0luc1N0eWxlU2hlZXQsIHNjcmVl
bkV2YWwoKSk7CiAgICAgICAgIGNoYW5nZWREZWZhdWx0U3R5bGUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bs
dWdJbnMuY3NzCmluZGV4IGZlMzE4OGFlMDg3ZjUxZmY3MjMxMThkMDZlYWRlN2ViN2IzMmI2OGQu
LmQxMGFhZWI1ODM4OTY5ODQxZWI2OTNmYzAzMzY2ODg2NWZiY2JhZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1
Z0lucy5jc3MKQEAgLTI5LDIwICsyOSwxOSBAQAogICogd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVj
dHVyZToKICAqCiAgKiA8b2JqZWN0PgotICogICAjU2hhZG93Um9vdAotICogICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LWNvbnRhaW5lciI+Ci0gKiAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1v
dmVybGF5Ij48L2Rpdj4gPCEtLSBlLmcuIGZvciBkaW1taW5nIGNvbnRlbnQgLS0+Ci0gKiAgICAg
ICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LWxhYmVsIj4KLSAqICAgICAgICAgICA8ZGl2IGNsYXNz
PSJzbmFwc2hvdC10aXRsZSI+U25hcHNob3R0ZWQgUGx1Zy1JbjwvZGl2PgotICogICAgICAgICAg
IDxkaXYgY2xhc3M9InNuYXBzaG90LXN1YnRpdGxlIj5DbGljayB0byByZXN0YXJ0PC9kaXY+Cisg
KiAgICAgI1NoYWRvd1Jvb3QKKyAqICAgICAgICAgPGRpdiBwc2V1ZG89Ii13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQiPgorICogICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNo
b3Qtb3ZlcmxheSIgYXJpYS1sYWJlbD0iW1RpdGxlXTogW1N1YnRpdGxlXSIgcm9sZT0iYnV0dG9u
Ij4KKyAqICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+CisgKiAg
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LXRpdGxlIj5bVGl0bGVdPC9k
aXY+CisgKiAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LXN1YnRpdGxl
Ij5bU3VidGl0bGVdPC9kaXY+CisgKiAgICAgICAgICAgICAgICAgPC9kaXY+CisgKiAgICAgICAg
ICAgICA8L2Rpdj4KICAqICAgICAgICAgPC9kaXY+Ci0gKiAgICAgICA8L2Rpdj4KLSAqICAgICA8
L2Rpdj4KLSAqCiAgKi8KIAotb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250
ZW50LAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQKK2VtYmVkOjot
d2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50LAorb2JqZWN0Ojotd2Via2l0LXNuYXBz
aG90dGVkLXBsdWdpbi1jb250ZW50CiB7CiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKQEAgLTUwLDQxICs0OSw0NyBAQCBlbWJlZDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudAogICAgIGhlaWdodDogMTAwJTsKIH0KIAotb2JqZWN0
Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIs
Ci1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29u
dGFpbmVyCitlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFw
c2hvdC1vdmVybGF5LAorb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50
ID4gLnNuYXBzaG90LW92ZXJsYXkKIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgd2lk
dGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiAxMDAlOwotfQorICAgIAorICAgIHRvcDogNXB4OworICAg
IHJpZ2h0OiA1cHg7CisgICAgYm90dG9tOiA1cHg7CisgICAgbGVmdDogNXB4OworICAgIAorICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7CisgICAgY3Vyc29y
OiBwb2ludGVyOwogCi1vYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQg
LnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheSwKLWVtYmVkOjotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LW92
ZXJsYXkKLXsKLSAgICBkaXNwbGF5OiBub25lOworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsK
KyAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOworICAgIC13ZWJraXQtYWxpZ24t
aXRlbXM6IGNlbnRlcjsKIH0KIAotb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1j
b250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsLAotZW1iZWQ6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNo
b3QtbGFiZWwKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNu
YXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJl
bAogewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0
ZTsKICAgICBjb2xvcjogYmxhY2s7Ci0gICAgbWFyZ2luOiAxZW07Ci0gICAgcGFkZGluZzogMC4y
NWVtIDJlbTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwog
ICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJl
bCAuc25hcHNob3QtdGl0bGUsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29u
dGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3QtdGl0bGUK
K2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92
ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwgPiBkaXYsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0
ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+
IGRpdgoreworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsK
KyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKK30KKworZW1iZWQ6Oi13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJl
bCA+IC5zbmFwc2hvdC10aXRsZSwKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4t
Y29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxhYmVsID4gLnNuYXBzaG90
LXRpdGxlCiB7CiAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1s
YWJlbCAuc25hcHNob3Qtc3VidGl0bGUsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVn
aW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qt
c3VidGl0bGUKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNu
YXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwgPiAuc25hcHNob3Qtc3VidGl0bGUsCitv
YmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3Zl
cmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5zbmFwc2hvdC1zdWJ0aXRsZQogewogICAgIGZvbnQt
c3R5bGU6IGl0YWxpYzsKICAgICBjb2xvcjogIzQ0NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDFkNmRmODUzOGY0MmYxMmFjZTI3ZGY0ODhiZDAxZDU3ZTRjYjRhN2UuLmZmMjk3NTBiNDZj
NjE2YTM4NTYzYjdkMzMxNWNiMTg1NWU1OGUwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxl
LmgiCisjaW5jbHVkZSAiUGx1Z0luc1Jlc291cmNlcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9w
U3RhdGVFdmVudC5oIgpAQCAtMTQ5LDYgKzE1MCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRS
dW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKQEAgLTQ4Nyw2ICs0
OTAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2ZvbnRsb2FkZXIoMCkKICNlbmRp
ZgogICAgICwgbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6
OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCisgICAgLCBtX2luamVjdGVkUGx1
Z0luc1NjcmlwdChmYWxzZSkKIHsKICAgICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdp
bmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsKQEAgLTYwNDksNCArNjA1MywxOSBAQCB2b2lkIERvY3Vt
ZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50Piog
dGltZXIpCiAgICAgbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKK3ZvaWQg
RG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdv
cmxkKQoreworICAgIGlmIChtX2luamVjdGVkUGx1Z0luc1NjcmlwdCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVXNlIHRoZSBKUyBmaWxlIHByb3ZpZGVkIGJ5IHRoZSBDaHJvbWUgY2xpZW50
LCBvciBmYWxsYmFjayB0byB0aGUgZGVmYXVsdCBvbmUuCisgICAgU3RyaW5nIGpzU3RyaW5nID0g
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJbkV4dHJhU2NyaXB0KCk7CisgICAgaWYg
KCFqc1N0cmluZykKKyAgICAgICAganNTdHJpbmcgPSBwbHVnSW5zSmF2YVNjcmlwdDsKKworICAg
IHBhZ2UoKS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291
cmNlQ29kZShqc1N0cmluZyksIHdvcmxkKTsKKworICAgIG1faW5qZWN0ZWRQbHVnSW5zU2NyaXB0
ID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCAzZDYzMzUxN2M0ZTk4YTA0N2IxZjkxZjdhODk1NTMyMDFlNTg2NDQ3Li42NDZlYjYxMjNk
YjY2NDE3ZTlhYWJhNTIxYWVhNTMxNWUwY2ZlYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NzgsNiArNzgsNyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTU5hbWVkRmxv
d0NvbGxlY3Rpb247CiBjbGFzcyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5kb3c7CitjbGFz
cyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNlVGhyZWFk
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKQEAgLTEyMDMsNiArMTIwNCw4IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEZvbnRMb2FkZXI+IGZvbnRsb2FkZXIoKTsKICNlbmRpZgogCisgICAg
dm9pZCBlbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKik7CisKIHBy
b3RlY3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUws
IGJvb2wgaXNIVE1MKTsKIApAQCAtMTU4MSw2ICsxNTg0LDcgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxEb2N1bWVudD4gbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcjsKICAgICBIYXNoU2V0
PFJlZlB0cjxFbGVtZW50PiA+IG1fYXNzb2NpYXRlZEZvcm1Db250cm9sczsKIAorICAgIGJvb2wg
bV9pbmplY3RlZFBsdWdJbnNTY3JpcHQ7CiB9OwogCiBpbmxpbmUgdm9pZCBEb2N1bWVudDo6bm90
aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggOGU5OTMyZWVkMTUwYWU5MDZmY2Y3NzY3
OTIxM2RjOThiMmQyMDBhMC4uZTNkNzFiZThjYjVkYzhmZDc2NzA3YTNjOTcxYjk4MThlOTIxOWIz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkpTRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNDksMTEgKzUwLDE0IEBA
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNp
bmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
Cit1c2luZyBuYW1lc3BhY2UgSlNDOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SFRNTFBsdWdJ
bkltYWdlRWxlbWVudD4gPiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50TGlzdDsKIApAQCAtNjgsNiAr
NzIsMjYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJl
VGhyZXNob2xkID0gNS4wOwogc3RhdGljIGNvbnN0IGRvdWJsZSBzaW11bGF0ZWRNb3VzZUNsaWNr
VGltZXJEZWxheSA9IC43NTsKIHN0YXRpYyBjb25zdCBkb3VibGUgcmVtb3ZlU25hcHNob3RUaW1l
ckRlbGF5ID0gMS41OwogCitzdGF0aWMgY29uc3QgU3RyaW5nJiB0aXRsZVRleHQoUGFnZSogcGFn
ZSwgU3RyaW5nIG1pbWVUeXBlKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0
aXRsZVRleHQsICgpKTsKKyAgICBpZiAodGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgdGl0
bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsVGl0bGUo
bWltZVR5cGUpOworICAgIGlmICh0aXRsZVRleHQuaXNFbXB0eSgpKQorICAgICAgICB0aXRsZVRl
eHQgPSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKKyAgICByZXR1cm4gdGl0bGVUZXh0
OworfTsKKworc3RhdGljIGNvbnN0IFN0cmluZyYgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0
cmluZyBtaW1lVHlwZSkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3VidGl0
bGVUZXh0LCAoKSk7CisgICAgaWYgKHN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHN1
YnRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1
YnRpdGxlKG1pbWVUeXBlKTsKKyAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAg
ICAgc3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7CisgICAg
cmV0dXJuIHN1YnRpdGxlVGV4dDsKK307CisKIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgUHJlZmVyUGx1Z0luc0ZvckltYWdlc09w
dGlvbiBwcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0aW9uKQogICAgIDogSFRNTFBsdWdJbkVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLy8gbV9uZWVkc1dpZGdldFVwZGF0ZSghY3JlYXRl
ZEJ5UGFyc2VyKSBhbGxvd3MgSFRNTE9iamVjdEVsZW1lbnQgdG8gZGVsYXkKQEAgLTMxOCwyOSAr
MzQyLDYgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQYXNz
UmVmUHRyPEltYWdlPiBpbWFnZSkKICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOwogfQog
Ci1zdGF0aWMgQXRvbWljU3RyaW5nIGNsYXNzTmFtZUZvclNoYWRvd1Jvb3QoY29uc3QgTm9kZSog
bm9kZSkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcGx1
Z0luVGlueVNpemVDbGFzc05hbWUsICgidGlueSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywg
cGx1Z0luU21hbGxTaXplQ2xhc3NOYW1lLCAoInNtYWxsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBwbHVnSW5NZWRpdW1TaXplQ2xhc3NOYW1lLCAoIm1lZGl1bSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0
b21pY1N0cmluZywgcGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lLCAoImxhcmdlIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgUmVuZGVyQm94KiByZW5kZXJCb3gg
PSBzdGF0aWNfY2FzdDxSZW5kZXJCb3gqPihub2RlLT5yZW5kZXJlcigpKTsKLSAgICBMYXlvdXRV
bml0IHdpZHRoID0gcmVuZGVyQm94LT5jb250ZW50V2lkdGgoKTsKLSAgICBMYXlvdXRVbml0IGhl
aWdodCA9IHJlbmRlckJveC0+Y29udGVudEhlaWdodCgpOwotCi0gICAgaWYgKHdpZHRoIDwgc2l6
aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8fCBoZWlnaHQgPCBzaXppbmdUaW55RGltZW5zaW9u
VGhyZXNob2xkKQotICAgICAgICByZXR1cm4gcGx1Z0luVGlueVNpemVDbGFzc05hbWU7Ci0KLSAg
ICBpZiAod2lkdGggPCBzaXppbmdTbWFsbFdpZHRoVGhyZXNob2xkKQotICAgICAgICByZXR1cm4g
cGx1Z0luU21hbGxTaXplQ2xhc3NOYW1lOwotCi0gICAgaWYgKHdpZHRoIDwgc2l6aW5nTWVkaXVt
V2lkdGhUaHJlc2hvbGQgfHwgaGVpZ2h0IDwgc2l6aW5nTWVkaXVtSGVpZ2h0VGhyZXNob2xkKQot
ICAgICAgICByZXR1cm4gcGx1Z0luTWVkaXVtU2l6ZUNsYXNzTmFtZTsKLQotICAgIHJldHVybiBw
bHVnSW5MYXJnZVNpemVDbGFzc05hbWU7Ci19Ci0KIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLT5pc1NuYXBz
aG90dGVkUGx1Z0luKCkpIHsKQEAgLTM0OSw2OSArMzUwLDQ5IEBAIHZvaWQgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0YXR1cygpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBTaGFkb3dSb290KiByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwotICAgIGlm
ICghcm9vdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRWxlbWVudCogc2hhZG93Q29udGFpbmVy
ID0gdG9FbGVtZW50KHJvb3QtPmZpcnN0Q2hpbGQoKSk7Ci0gICAgc2hhZG93Q29udGFpbmVyLT5z
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBjbGFzc05hbWVGb3JTaGFkb3dSb290KHRoaXMpKTsKKyAg
ICAvLyBOb3RpZnkgdGhlIHNoYWRvdyByb290IHRoYXQgdGhlIHNpemUgY2hhbmdlZCBzbyB0aGF0
IHdlIG1heSB1cGRhdGUgdGhlIG92ZXJsYXkgbGF5b3V0LgorICAgIGVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNp
emVFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7Ci0gICAgRG9j
dW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7Ci0KLSAgICBtX3NoYWRvd0NvbnRhaW5lciA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBtX3NoYWRvd0NvbnRhaW5lci0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIFJlZlB0cjxFbGVtZW50PiBj
b250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgY29udGFpbmVyLT5z
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LWNvbnRhaW5lciIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICBQYWdlKiBwYWdlID0g
ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIFN0cmluZyBtaW1lVHlwZSA9IGxvYWRlZE1pbWVUeXBlKCk7CiAKLSAgICBSZWZQdHI8
RWxlbWVudD4gb3ZlcmxheSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBvdmVy
bGF5LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LW92ZXJs
YXkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgY29udGFpbmVy
LT5hcHBlbmRDaGlsZChvdmVybGF5LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+LCBpc29sYXRlZFdvcmxkLCAoRE9N
V3JhcHBlcldvcmxkOjpjcmVhdGUoSlNET01XaW5kb3c6OmNvbW1vblZNKCkpKSk7CisgICAgZG9j
dW1lbnQoKS0+ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KGlzb2xhdGVkV29ybGQuZ2V0KCkp
OwogCi0gICAgbV9zbmFwc2hvdExhYmVsID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwot
ICAgIG1fc25hcHNob3RMYWJlbC0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5n
KCJzbmFwc2hvdC1sYWJlbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gcGFnZS0+bWFpbkZyYW1l
KCktPnNjcmlwdCgpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoaXNv
bGF0ZWRXb3JsZC5nZXQoKSkpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpOwogCi0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0lu
TGFiZWxUaXRsZSgpOwotICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJ
bkxhYmVsU3VidGl0bGUoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAg
IFN0cmluZyBjbGllbnRUaXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7Ci0gICAgICAgIGlmICghY2xpZW50VGl0
bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlVGV4dCA9IGNsaWVudFRpdGxlVGV4
dDsKLSAgICAgICAgU3RyaW5nIGNsaWVudFN1YnRpdGxlVGV4dCA9IGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKTsKLSAgICAg
ICAgaWYgKCFjbGllbnRTdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgc3VidGl0
bGVUZXh0ID0gY2xpZW50U3VidGl0bGVUZXh0OwotICAgIH0KKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiB0aXRsZSA9IEhUTUxEaXZFbGVtZW50Ojpj
cmVhdGUoZG9jKTsKLSAgICB0aXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3Ry
aW5nKCJzbmFwc2hvdC10aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKLSAgICB0aXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZSh0aXRsZVRleHQp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICBtX3NuYXBzaG90TGFiZWwtPmFwcGVuZENoaWxk
KHRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByb290
KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhlYywgdGl0bGVUZXh0KHBhZ2UsIG1p
bWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN1YnRpdGxlVGV4
dChwYWdlLCBtaW1lVHlwZSkpKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiBzdWJUaXRsZSA9IEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBzdWJUaXRsZS0+c2V0QXR0cmlidXRlKGNs
YXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1zdWJ0aXRsZSIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzdWJUaXRsZS0+YXBwZW5kQ2hpbGQoZG9jLT5j
cmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICBt
X3NuYXBzaG90TGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxlLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKLQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9zbmFwc2hvdExhYmVsLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICAvLyBJdCBpcyBleHBlY3RlZCB0aGUgSlMgZmlsZSBwcm92aWRl
cyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGUsIHN1YnRpdGxlKSBmdW5jdGlvbi4K
KyAgICBKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgImNyZWF0ZU92ZXJsYXkiKSkudG9PYmplY3QoZXhlYyk7CisgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgp
LT5nZXRDYWxsRGF0YShvdmVybGF5LCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFrZSB0aGlzIGludG8gYSBi
dXR0b24gZm9yIGFjY2Vzc2liaWxpdHkgY2xpZW50cy4KLSAgICBTdHJpbmcgY29tYmluZWRUZXh0
ID0gdGl0bGVUZXh0OwotICAgIGlmICghY29tYmluZWRUZXh0LmlzRW1wdHkoKSAmJiAhc3VidGl0
bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgY29tYmluZWRUZXh0LmFwcGVuZCgiICIpOwotICAg
IGNvbWJpbmVkVGV4dC5hcHBlbmQoc3VidGl0bGVUZXh0KTsKLSAgICBjb250YWluZXItPnNldEF0
dHJpYnV0ZShhcmlhX2xhYmVsQXR0ciwgY29tYmluZWRUZXh0KTsKLSAgICBjb250YWluZXItPnNl
dEF0dHJpYnV0ZShyb2xlQXR0ciwgImJ1dHRvbiIpOworICAgIEpTT2JqZWN0KiB0aGlzT2JqID0g
Z2xvYmFsT2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBl
eGVjKTsKIAotICAgIG1fc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGlsZChjb250YWluZXIsIEFT
U0VSVF9OT19FWENFUFRJT04pOwotICAgIHJvb3QtPmFwcGVuZENoaWxkKG1fc2hhZG93Q29udGFp
bmVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLWJvb2wgSFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RMYWJlbChOb2RlKiBub2RlKQorYm9vbCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoTm9kZSogbm9kZSkKIHsKLSAg
ICByZXR1cm4gbm9kZSAmJiAobm9kZSA9PSBtX3NuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+
aXNEZXNjZW5kYW50T2YobV9zbmFwc2hvdExhYmVsLmdldCgpKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdG9yLCAoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRv
bWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBz
bmFwc2hvdExhYmVsID0gZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLT5xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByZXR1cm4gbm9kZSAmJiBzbmFw
c2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNj
ZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxl
bWVudD4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApp
bmRleCAyMzQ5ZjQyYzhkNzgzZDgzOGU4Y2JkMTAzNjk4ZmQ5NmRhMGYwZDJiLi44OTczNTI0M2Qy
ODAxYzZlOWY3NjVhNjI3YWQyOTVmZTgxN2M1NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqKTsKIAogICAg
IHZvaWQgc2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7Ci0gICAgYm9vbCBwYXJ0
T2ZTbmFwc2hvdExhYmVsKE5vZGUqKTsKKyAgICBib29sIHBhcnRPZlNuYXBzaG90T3ZlcmxheShO
b2RlKik7CiAKICAgICBib29sIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZTsgfQogICAgIHZvaWQgc2V0TmVlZHNDaGVja0Zv
clNpemVDaGFuZ2UoKSB7IG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UgPSB0cnVlOyB9CkBAIC0x
NTUsOCArMTU1LDYgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
PiBtX3N3YXBSZW5kZXJlclRpbWVyOwogICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
IG1fcmVtb3ZlU25hcHNob3RUaW1lcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFn
ZTsKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9zaGFkb3dDb250YWluZXI7Ci0gICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fc25hcHNob3RMYWJlbDsKICAgICBib29sIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0
dXJlOwogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFBsdWdpbjsKICAgICBib29sIG1fbmVlZHNDaGVj
a0ZvclNpemVDaGFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjNmMxZTdk
Njc0NzRlODdkMWQ5N2UyOTQzODMwMWJjYmFhYTAwODMzLi4wYTg0Y2E1MzQyNzMwNTFkYzFlYjFj
Yzc4YjBjOGM5YWM0ZTNkYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM2
OSw5ICszNjksMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHlDaHJvbWVD
bGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgcGx1
Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJldHVybiBT
dHJpbmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJl
dHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVl
dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0lu
RXh0cmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gRklYTUU6
IFBvcnQgc2hvdWxkIHJldHVybiB0cnVlIHVzaW5nIGhldXJpc3RpYyBiYXNlZCBvbiBzY3JvbGxh
YmxlKFJlbmRlckJveCkuCiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9zY3JvbGxGb3JEcmFn
QW5kRHJvcChSZW5kZXJCb3gqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXgg
NzU5ODMwYWEwNGM1MDQzYzQ0NmRlNzVmYTdiZDE1YjM0NjAxYjZiNS4uM2M2YTIzYzEyMTIxMmNl
MWEwN2ViMWIwMmNlYjNiOTYzODM4NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNzMsOSArMTczLDkgQEAg
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQog
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgfHwgKG1f
aXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2V1cEV2ZW50KSkgewogICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9u
ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgY2xpY2tXYXNPbkxhYmVsID0gcGx1Z0luSW1hZ2VFbGVt
ZW50KCktPnBhcnRPZlNuYXBzaG90TGFiZWwoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7Ci0g
ICAgICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbkxh
YmVsID8gSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcgOiBIVE1MUGx1Z0luRWxlbWVudDo6
UmVzdGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0gICAgICAgIHBsdWdJbkltYWdlRWxl
bWVudCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50LCAhY2xpY2tXYXNPbkxhYmVs
KTsKKyAgICAgICAgYm9vbCBjbGlja1dhc09uT3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVudCgp
LT5wYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7CisgICAg
ICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbk92ZXJs
YXkgPyBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50OjpS
ZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKKyAgICAgICAgcGx1Z0luSW1hZ2VFbGVt
ZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsICFjbGlja1dhc09uT3Zlcmxh
eSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAg
bV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaAppbmRleCAzODcyOWIyNGE0YzJjNzAwMzFiZWJmNThiYWViY2Y3MjM3MmE4NGI4Li40NTZk
NTU1ZGFiOTZiZjIyM2ZmYTBlMThiOGM0MDdjNGIzZmJmZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmgKQEAgLTI1MCw5ICsyNTAsMTAgQEAgdHlwZWRlZiBXS0J1bmRsZVBhZ2VVSUVsZW1l
bnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlTWVudUJhcklzVmlzaWJsZUNhbGxiYWNrKSgKIHR5
cGVkZWYgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZVRvb2xi
YXJzQXJlVmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZWFjaGVkQXBwQ2FjaGVP
cmlnaW5RdW90YUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHVpbnQ2NF90ICgqV0tCdW5kbGVQYWdlRXhjZWVkZWREYXRhYmFzZVF1
b3RhQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9y
aWdpbiwgV0tTdHJpbmdSZWYgZGF0YWJhc2VOYW1lLCBXS1N0cmluZ1JlZiBkYXRhYmFzZURpc3Bs
YXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2VCeXRlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdL
U3RyaW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJh
Y2spKGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVu
ZGxlUGFnZVBsdWdJbkNyZWF0ZVN0YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrKShjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5D
cmVhdGVTdGFydExhYmVsVGl0bGVDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBs
dWdJbkNyZWF0ZVN0YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtaW1lVHlw
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5k
bGVQYWdlUGx1Z0luQ3JlYXRlRXh0cmFTdHlsZVNoZWV0Q2FsbGJhY2spKGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJbkNyZWF0
ZUV4dHJhU2NyaXB0Q2FsbGJhY2spKGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3Qg
V0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTI4MCw2
ICsyODEsNyBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIFdLQnVuZGxlUGFn
ZVBsdWdJbkNyZWF0ZVN0YXJ0TGFiZWxUaXRsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlOwogICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0
ZVN0YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlOwogICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU3R5
bGVTaGVldENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0luRXh0cmFTdHls
ZVNoZWV0OworICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU2NyaXB0Q2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0luRXh0cmFTY3JpcHQ7CiB9OwogdHlw
ZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgV0tCdW5kbGVQYWdlVUlDbGllbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggYjZhZjY0
MmQ2ODc2YTkxMzc1ODIyZTlhOWZlYjQxZDYwYTczYzRlNC4uOGU5YzgwMmQwMWE1ZTY0NTgyY2Ex
NTM2MzNiYTVmZjgxZTY5MjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudC5jcHAKQEAgLTE2MywyMSArMTYzLDIxIEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50OjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2UqIHBhZ2UsIFdlYlNl
CiAgICAgcmV0dXJuIG1fY2xpZW50LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEodG9BUEkocGFnZSks
IHRvQVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFz
ZURpc3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YUJ5dGVzLCBjdXJyZW50T3JpZ2luVXNh
Z2VCeXRlcywgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgZXhwZWN0ZWRVc2FnZUJ5dGVzLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdAorU3RyaW5nIEluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRs
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmVmUHRyPFdlYlN0cmluZz4gdGl0
bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxl
KG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gdGl0bGUgPSBh
ZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlKHRvQVBJ
KG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pKSk7CiAgICAgcmV0dXJuIHRp
dGxlID8gdGl0bGUtPnN0cmluZygpIDogU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QKK1N0cmlu
ZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQ
bHVnSW5TdGFydExhYmVsU3VidGl0bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAg
IFJlZlB0cjxXZWJTdHJpbmc+IHN1YnRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNy
ZWF0ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShtX2NsaWVudC5jbGllbnRJbmZvKSkpOworICAg
IFJlZlB0cjxXZWJTdHJpbmc+IHN1YnRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNy
ZWF0ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSh0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKSkpOwogICAgIHJldHVybiBzdWJ0aXRsZSA/IHN1YnRpdGxlLT5zdHJp
bmcoKSA6IFN0cmluZygpOwogfQogCkBAIC0xOTAsNCArMTkwLDEzIEBAIFN0cmluZyBJbmplY3Rl
ZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKICAgICBy
ZXR1cm4gc3R5bGVTaGVldCA/IHN0eWxlU2hlZXQtPnN0cmluZygpIDogU3RyaW5nKCk7CiB9CiAK
K1N0cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luRXh0cmFTY3JpcHQoKSBj
b25zdAoreworICAgIGlmICghbV9jbGllbnQuY3JlYXRlUGx1Z0luRXh0cmFTY3JpcHQpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlZlB0cjxXZWJTdHJpbmc+IHNjcmlwdCA9IGFk
b3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5FeHRyYVNjcmlwdChtX2NsaWVudC5j
bGllbnRJbmZvKSkpOworICAgIHJldHVybiBzY3JpcHQgPyBzY3JpcHQtPnN0cmluZygpIDogU3Ry
aW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudC5oCmluZGV4IGFkOGZlMjRkMjE1MzNhNDZhNzQ5ZTcyNWNmMGNmYTEz
ZDg0ZWI2ZjEuLjQyM2U3NDBhNzVmNmQ0YWY4OTcyNWNhZTJiNmM1M2M2MGQzZThhNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTcwLDkgKzcwLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdl
YlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCk7CiAg
ICAgdWludDY0X3QgZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2VCeXRlcyk7CiAKLSAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJl
bFRpdGxlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNv
bnN0OworICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3Q7CisgICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKICAgICBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0
KCkgY29uc3Q7CisgICAgU3RyaW5nIHBsdWdJbkV4dHJhU2NyaXB0KCkgY29uc3Q7CiAKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA2MmI3ODU2YWNmNDgwYmEyNmE3MWU2MzY4NTk3
MTFkYTFlNDUxMjQ1Li44YzU2MjUwNTBlZjU4ODRiYTRkZjM3MDgzYmQ4YzVjMjQwNzJlNzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04MjQsMTQgKzgyNCwxNCBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYWdlLCBtZXNzYWdlLCBkZXNjcmlwdGlv
biwgc3VjY2Vzcyk7CiB9CiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFi
ZWxUaXRsZSgpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVs
VGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7CisgICAg
cmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxU
aXRsZShtaW1lVHlwZSk7CiB9CiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxTdWJ0aXRsZSgpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFy
dExhYmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRp
dGxlKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJ
blN0YXJ0TGFiZWxTdWJ0aXRsZShtaW1lVHlwZSk7CiB9CiAKIFN0cmluZyBXZWJDaHJvbWVDbGll
bnQ6OnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0CkBAIC04MzksNCArODM5LDkgQEAgU3Ry
aW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luRXh0cmFTdHlsZVNo
ZWV0KCk7CiB9CiAKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJbkV4dHJhU2NyaXB0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1
Z0luRXh0cmFTY3JpcHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuaAppbmRleCBkNDVmMTgyZmE2MWJhMTk4NzVkNjg0ODYzMWE3ZjZmYTMxMzhjYTUwLi5k
ZDY5YjY2Y2RmNWVjNGI1ZGExZWU5MTI0NTY3MzNhY2I2MDAyZDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKQEAgLTIxOSw5ICsyMTksMTAgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3VjY2VzcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRM
YWJlbFN1YnRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU2NyaXB0KCkgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1l
PiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiM2E4MTUzYjBjYzNlYTgxYTY0ZDYwM2JhNTlm
NDNjZGQ4MmM1NTMuLmZkMDIxM2QxNDNiMTg4NjQ3MzVhZDhjZjE3MzU4ZjdhMDM4YzcxNGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAxMy0wNS0wNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgor
CisgICAgICAgIE1hbmFnZSB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVn
LWluIHVzaW5nIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQg
bWV0aG9kIGFkZGVkIHRvIHN1cHBvcnQKKyAgICAgICAgdGhlIGluamVjdGlvbiBvZiBhIEpTIGZp
bGUgZnJvbSB0aGUgY2hyb21lIGNsaWVudCB0byBjdXN0b21pemUgdGhlCisgICAgICAgIHJlbmRl
cmluZyBvZiBhIHNuYXBzaG90dGVkIHBsdWctaW4ncyBzaGFkb3cgdHJlZS4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgor
CiAyMDEzLTA1LTA0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDIzM2ZlOGE0M2Ni
NzllNWIwZTliODc3OGYzZTE1NWU1ODIwODJhMjIuLmUwNDIwMzg3ZWE5MjhlM2QwNTQzNWQwYzhl
ZjY3OTYwZGQwMTM2Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTM3Miw2ICszNzIs
NyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICAgICAgMCwgLypwbHVnSW5TdGFydExhYmVsVGl0bGUqLwogICAgICAgICAw
LCAvKnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSovCiAgICAgICAgIDAsIC8qcGx1Z0luRXh0cmFT
dHlsZVNoZWV0Ki8KKyAgICAgICAgMCwgLypwbHVnSW5FeHRyYVNjcmlwdCovCiAgICAgfTsKICAg
ICBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChtX3BhZ2UsICZ1aUNsaWVudCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200595</attachid>
            <date>2013-05-05 14:35:07 -0700</date>
            <delta_ts>2013-05-06 00:25:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>37577</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNmU1Y2M0Li44ZjRlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDUtMDUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYW5hZ2UgdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgc25hcHNob3R0ZWQgcGx1Zy1pbiB1
c2luZyBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTU1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFJlc291cmNlcy9wbHVnSW5zLmpzOgorICAgICAgICAoY3JlYXRlT3ZlcmxheSk6
CisgICAgICAgIEltcGxlbWVudCB0aGUgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZVRl
eHQsIHN1YnRpdGxlVGV4dCkgbWV0aG9kCisgICAgICAgIHRoYXQgaXMgY2FsbGVkIGZyb20gV2Vi
Q29yZSAoSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCkK
KyAgICAgICAgdG8gYWxsb3cgdGhlIGluamVjdGVkIHNjcmlwdCB0byBjdXN0b21pemUgdGhlIHNo
YWRvdyByb290IGZvciBhIHNuYXBzaG90dGVkCisgICAgICAgIHBsdWctaW4uIFRoaXMgaXMgYSBk
ZWZhdWx0IGltcGxlbWVudGF0aW9uLCBjbGllbnRzIGFyZSBleHBlY3RlZCB0byBjdXN0b21pemUK
KyAgICAgICAgdGhpcyBieSBwcm92aWRpbmcgdGhlaXIgb3duIEpTIGZpbGUgd2l0aCBlbmhhbmNl
ZCBiZWhhdmlvci4KKworICAgICAgICAqIGNzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5
bGVTaGVldHNGb3JFbGVtZW50KToKKyAgICAgICAgU2luY2Ugd2Ugbm8gbG9uZ2VyIGhhdmUgYSBk
ZWZhdWx0IHNoYWRvdyB0cmVlIGdlbmVyYXRlZCBpbiBDKyssIGl0IG1ha2VzIGxpdHRsZQorICAg
ICAgICBzZW5zZSBmb3IgY2xpZW50cyB0byBleHRlbmQgdGhlIGRlZmF1bHQgc25hcHNob3R0ZWQg
cGx1Zy1pbiBzdHlsZXNoZWV0LCBzbyB3ZQorICAgICAgICBvbmx5IGluc2VydCBpdCBpZiBubyBj
dXN0b20gb25lIGlzIHByb3ZpZGVkIGJ5IHRoZSBjaHJvbWUgY2xpZW50LgorCisgICAgICAgICog
Y3NzL3BsdWdJbnMuY3NzOgorICAgICAgICBCZXR0ZXIgc3R5bGluZyBvZiB0aGUgZGVmYXVsdCBz
bmFwc2hvdHRlZCBwbHVnLWluIG92ZXJsYXkgbG9vayBieSB1c2luZyBDU1MKKyAgICAgICAgZmxl
eCBib3hlcy4gQWxzbyB1c2luZyBtb3JlIGV4cGxpY2l0IHNlbGVjdG9yIGFzIGFuIG9wdGltaXph
dGlvbi4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KToKKyAgICAgICAgRXhwb3NlIGEg
bmV3IG1ldGhvZCB0byBhbGxvdyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50IGluc3RhbmNlcyB0byBl
bnN1cmUgdGhhdAorICAgICAgICB0aGUgSmF2YVNjcmlwdCBjb2RlIHJlcXVpcmVkIHRvIGN1c3Rv
bWl6ZSB0aGUgc25hcHNob3R0ZWQgcGx1Zy1pbidzIHNoYWRvdyByb290CisgICAgICAgIGlzIGlu
ZGVlZCBpbmplY3RlZCBpbiB0aGUgY3VycmVudCBkb2N1bWVudC4gVGhlIGFjdHVhbCBpbmplY3Rp
b24gd291bGQgb25seQorICAgICAgICBoYXBwZW4gb25jZSBwZXIgZG9jdW1lbnQgc28gYWxsIHNu
YXBzaG90dGVkIHBsdWctaW5zIHNoYXJlIHRoZSBzYW1lIHNjcmlwdGluZworICAgICAgICBjb250
ZXh0LgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIEV4cG9zZSB0aGUgbmV3
IGVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdCBtZXRob2QgYW5kIHRoZSBtX2hhc0luamVjdGVk
UGx1Z0luc1NjcmlwdAorICAgICAgICBwcm9wZXJ0eSB1c2VkIHRvIGVuc3VyZSBpbmplY3Rpb24g
aGFwcGVucyBvbmx5IG9uY2UgcGVyIGRvY3VtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRpdGxlVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpzdWJ0aXRsZVRleHQpOgorICAgICAgICBTdG9yZSB0aGUgbG9jYWxpemVk
IHN0cmluZ3MgZm9yIGVhY2ggbWltZS10eXBlIGluIGEgc3RhdGljIGhhc2ggbWFwIGFzIGl0IGNh
biBiZQorICAgICAgICBjb3N0bHkgdG8gcmV0cmlldmUgdGhlbSBlYWNoIHRpbWUgZnJvbSB0aGUg
Y2xpZW50LiBJdCBpcyBleHBlY3RlZCB0aGUgY2hyb21lIGNsaWVudAorICAgICAgICB3aWxsIHdh
bnQgdG8gcHJvdmlkZSBsb2NhbGl6ZWQgc3RyaW5ncyB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBz
bmFwc2hvdHRlZCBwbHVnLWluJ3MKKyAgICAgICAgbWltZS10eXBlLCBzbyB3ZSdyZSBhZGRpbmcg
dGhpcyBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMpOgorICAgICAgICBEaXNwYXRjaCBhICJyZXNpemUi
IGV2ZW50IHRvIHRoZSBzaGFkb3cgcm9vdCB0byBub3RpZnkgdGhlIGluamVjdGVkIHNjcmlwdCB0
aGF0IHRoZQorICAgICAgICBzbmFwc2hvdHRlZCBwbHVnLWluJ3MgbWV0cmljcyBoYXZlIGNoYW5n
ZWQgYW5kIHRvIGFsbG93IHRoZSBvdmVybGF5IHRvIHVwZGF0ZSBpdHNlbGYKKyAgICAgICAgYXMg
YSByZXN1bHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRB
ZGRVc2VyQWdlbnRTaGFkb3dSb290KToKKyAgICAgICAgUmVtb3ZlIGFsbCB0aGUgRE9NIGdlbmVy
YXRpb24gY29kZSBpbiBmYXZvciBvZiBhbiBhcHByb2FjaCB3aGVyZSB3ZSBjcmVhdGUgYSBzaGFy
ZWQKKyAgICAgICAgRE9NIHNjcmlwdGluZyB3b3JsZCBpbiB3aGljaCB3ZSBpbmplY3QgSmF2YVNj
cmlwdCBjb2RlIHRoYXQgd2lsbCBwZXJmb3JtIHRoZSBzYW1lCisgICAgICAgIHRhc2sgYnV0IHdp
bGwgYWRkaXRpb25hbGx5IGJlIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQgaW4gb3JkZXIgdG8gcHJv
dmlkZSBhIGNvbXBsZXRlbHkKKyAgICAgICAgY3VzdG9tIG92ZXJsYXkgZm9yIHRoZSBzbmFwc2hv
dHRlZCBwbHVnLWluLiBUaGUgc29sZSBjb250cmFjdCBpcyBmb3IgdGhlIEphdmFTY3JpcHQKKyAg
ICAgICAgdG8gaW1wbGVtZW50IGEgY3JlYXRlT3ZlcmxheShzaGFkb3dSb290LCB0aXRsZVRleHQs
IHN1YnRpdGxlVGV4dCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KToKKyAgICAgICAgUmVuYW1lZCBtZXRob2Qg
dG8gYmUgZ2VuZXJpYyB0byB0aGUgb3ZlcmxheSBhcyBvcHBvc2VkIHRvIHRleHQgbGFiZWxzIGFu
ZCB1c2UgdGhlCisgICAgICAgIGVsZW1lbnQgd2l0aCBDU1MgY2xhc3MgbmFtZSAic25hcHNob3Qt
b3ZlcmxheSIgYXMgdGhlIGNvbXBhcmlzb24gbm9kZS4KKworICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJbkltYWdlRWxlbWVudCk6Cisg
ICAgICAgIFJlbW92aW5nIGEgY291cGxlIG9mIHVudXNlZCBtZW1iZXJzIHNpbmNlIHdlIG5vIGxv
bmdlciBnZW5lcmF0ZSB0aGUgc2hhZG93IERPTSBmcm9tIEMrKworICAgICAgICBhbmQgcmVuYW1l
IHRoZSBwYXJ0T2ZTbmFwc2hvdExhYmVsIG1ldGhvZCB0byBwYXJ0T2ZTbmFwc2hvdE92ZXJsYXku
CisKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCk6CisgICAgICAgIFBhc3MgaW4gdGhlIG1p
bWUtdHlwZSB0byBwbHVnSW5TdGFydExhYmVsVGl0bGUgYW5kIHBsdWdJblN0YXJ0TGFiZWxTdWJ0
aXRsZSBhbmQgZXhwb3NlCisgICAgICAgIGEgbmV3IHBsdWdJbkV4dHJhU2NyaXB0IG1ldGhvZCB0
byBhbGxvdyB0aGUgY2hyb21lIGNsaWVudCB0byBwcm92aWRlIGEgY3VzdG9tIEpTIGZpbGUKKyAg
ICAgICAgZm9yIHRoZSBtYW5hZ2VtZW50IG9mIHRoZSBzaGFkb3cgcm9vdC4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQpOgorICAgICAgICBVcGRhdGUg
dGhlIHRlcm1pbm9sb2d5IGZyb20gImxhYmVsIiB0byAib3ZlcmxheSIgcGVyIHRoZSBjaGFuZ2Vz
IG1hZGUgaW4gSFRNTFBsdWdJbkltYWdlRWxlbWVudC4KKwogMjAxMy0wNS0wNCAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQW5pbWF0aW9ucyBhbmQgVHJhbnNpdGlv
bnMgc2hvdWxkIG5vdCBzdGFydCB3aGVuIGdsb2JhbGx5IHN1c3BlbmRlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BsdWdJbnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNv
dXJjZXMvcGx1Z0lucy5qcwppbmRleCA5OWYyZTU4Li5lNjQ0YjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9SZXNvdXJjZXMvcGx1Z0lucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNv
dXJjZXMvcGx1Z0lucy5qcwpAQCAtMSwyICsxLDM2IEBACiAKLS8vIEZJWE1FOiBGaWxsIHVwIHdp
dGggdXNlZnVsIGNvZGUgZm9yIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExNTU0OC4KKy8vIEZ1bmN0
aW9uIGNhbGxlZCBmcm9tIFdlYkNvcmUuCitmdW5jdGlvbiBjcmVhdGVPdmVybGF5KHNoYWRvd1Jv
b3QsIHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KQoreworICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xs
b3dpbmcgc3RydWN0dXJlOgorICAgIC8vCisgICAgLy8gPGRpdiBwc2V1ZG89Ii13ZWJraXQtc25h
cHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiPgorICAgIC8vICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hv
dC1vdmVybGF5IiBhcmlhLWxhYmVsPSJbVGl0bGVdOiBbU3VidGl0bGVdIiByb2xlPSJidXR0b24i
PgorICAgIC8vICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgorICAgIC8vICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LXRpdGxlIj5bVGl0bGVdPC9kaXY+CisgICAg
Ly8gICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPltTdWJ0aXRsZV08
L2Rpdj4KKyAgICAvLyAgICAgICAgIDwvZGl2PgorICAgIC8vICAgICA8L2Rpdj4KKyAgICAvLyA8
L2Rpdj4KKworICAgIHZhciBzaGFkb3dDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICBzaGFkb3dDb250YWluZXIuc2V0QXR0cmlidXRlKCJwc2V1ZG8iLCAiLXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCIpOworCisgICAgdmFyIG92ZXJsYXkgPSBz
aGFkb3dDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikp
OworICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgdGhpcy50aXRsZVRleHQg
KyAiOiAiICsgdGhpcy5zdWJ0aXRsZVRleHQpOworICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCJy
b2xlIiwgImJ1dHRvbiIpOworICAgIG92ZXJsYXkuY2xhc3NOYW1lID0gInNuYXBzaG90LW92ZXJs
YXkiOworCisgICAgdmFyIHNuYXBzaG90TGFiZWwgPSBvdmVybGF5LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICBzbmFwc2hvdExhYmVsLmNsYXNzTmFtZSA9
ICJzbmFwc2hvdC1sYWJlbCI7CisKKyAgICB2YXIgdGl0bGUgPSBzbmFwc2hvdExhYmVsLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICB0aXRsZS5jbGFzc05h
bWUgPSAic25hcHNob3QtdGl0bGUiOworICAgIHRpdGxlLnRleHRDb250ZW50ID0gdGl0bGVUZXh0
OworCisgICAgdmFyIHN1YnRpdGxlID0gc25hcHNob3RMYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgc3VidGl0bGUuY2xhc3NOYW1lID0gInNuYXBz
aG90LXN1YnRpdGxlIjsKKyAgICBzdWJ0aXRsZS50ZXh0Q29udGVudCA9IHN1YnRpdGxlVGV4dDsK
KworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2hhZG93Q29udGFpbmVyKTsKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCmluZGV4IGIzYmE1Yjgu
LjNjOWMzMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVT
aGVldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMu
Y3BwCkBAIC0yMDEsNyArMjAxLDkgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3Vy
ZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgog
CiAgICAgaWYgKCFwbHVnSW5zU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZShvYmpl
Y3RUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpKSkgewotICAgICAgICBTdHJp
bmcgcGx1Z0luc1J1bGVzID0gU3RyaW5nKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXpl
b2YocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjp0aGVtZUZvclBh
Z2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgp
ICsgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJ
bkV4dHJhU3R5bGVTaGVldCgpOworICAgICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0gUmVuZGVy
VGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5leHRyYVBs
dWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCk7CisgICAgICAgIGlmIChwbHVnSW5z
UnVsZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcGx1Z0luc1J1bGVzID0gU3RyaW5nKHBsdWdJ
bnNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQp
KTsKICAgICAgICAgcGx1Z0luc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1bGVz
KTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwbHVnSW5zU3R5bGVT
aGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgY2hhbmdlZERlZmF1bHRTdHlsZSA9IHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGx1Z0lucy5jc3MKaW5kZXggZmUzMTg4YS4uZDEwYWFlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
bHVnSW5zLmNzcwpAQCAtMjksMjAgKzI5LDE5IEBACiAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgc3Ry
dWN0dXJlOgogICoKICAqIDxvYmplY3Q+Ci0gKiAgICNTaGFkb3dSb290Ci0gKiAgICAgPGRpdiBj
bGFzcz0ic25hcHNob3QtY29udGFpbmVyIj4KLSAqICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90
LW92ZXJsYXkiPjwvZGl2PiA8IS0tIGUuZy4gZm9yIGRpbW1pbmcgY29udGVudCAtLT4KLSAqICAg
ICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgotICogICAgICAgICAgIDxkaXYgY2xh
c3M9InNuYXBzaG90LXRpdGxlIj5TbmFwc2hvdHRlZCBQbHVnLUluPC9kaXY+Ci0gKiAgICAgICAg
ICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPkNsaWNrIHRvIHJlc3RhcnQ8L2Rpdj4K
KyAqICAgICAjU2hhZG93Um9vdAorICogICAgICAgICA8ZGl2IHBzZXVkbz0iLXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCI+CisgKiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFw
c2hvdC1vdmVybGF5IiBhcmlhLWxhYmVsPSJbVGl0bGVdOiBbU3VidGl0bGVdIiByb2xlPSJidXR0
b24iPgorICogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LWxhYmVsIj4KKyAq
ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPltUaXRsZV08
L2Rpdj4KKyAqICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0
bGUiPltTdWJ0aXRsZV08L2Rpdj4KKyAqICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAqICAgICAg
ICAgICAgIDwvZGl2PgogICogICAgICAgICA8L2Rpdj4KLSAqICAgICAgIDwvZGl2PgotICogICAg
IDwvZGl2PgotICoKICAqLwogCi1vYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNv
bnRlbnQsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudAorZW1iZWQ6
Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQsCitvYmplY3Q6Oi13ZWJraXQtc25h
cHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQKIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOwpAQCAtNTAsNDEgKzQ5LDQ3IEBAIGVtYmVkOjotd2Via2l0
LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50CiAgICAgaGVpZ2h0OiAxMDAlOwogfQogCi1vYmpl
Y3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5l
ciwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1j
b250YWluZXIKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNu
YXBzaG90LW92ZXJsYXksCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRl
bnQgPiAuc25hcHNob3Qtb3ZlcmxheQogewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB3
aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci19CisgICAgCisgICAgdG9wOiA1cHg7Cisg
ICAgcmlnaHQ6IDVweDsKKyAgICBib3R0b206IDVweDsKKyAgICBsZWZ0OiA1cHg7CisgICAgCisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKKyAgICBjdXJz
b3I6IHBvaW50ZXI7CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVu
dCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1vdmVybGF5LAotZW1iZWQ6Oi13ZWJraXQt
c25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qt
b3ZlcmxheQotewotICAgIGRpc3BsYXk6IG5vbmU7CisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4
OworICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CisgICAgLXdlYmtpdC1hbGln
bi1pdGVtczogY2VudGVyOwogfQogCi1vYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2lu
LWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwsCi1lbWJlZDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFw
c2hvdC1sYWJlbAorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAu
c25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCwKK29iamVjdDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxh
YmVsCiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IHdo
aXRlOwogICAgIGNvbG9yOiBibGFjazsKLSAgICBtYXJnaW46IDFlbTsKLSAgICBwYWRkaW5nOiAw
LjI1ZW0gMmVtOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICBjdXJzb3I6IHBvaW50ZXI7
CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKIH0KIAotb2JqZWN0Ojotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxh
YmVsIC5zbmFwc2hvdC10aXRsZSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1j
b250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC10aXRs
ZQorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qt
b3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IGRpdiwKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hv
dHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxhYmVs
ID4gZGl2Cit7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFw
OworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOworfQorCitlbWJlZDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxh
YmVsID4gLnNuYXBzaG90LXRpdGxlLAorb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdp
bi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwgPiAuc25hcHNo
b3QtdGl0bGUKIHsKICAgICBmb250LXdlaWdodDogYm9sZDsKIH0KIAotb2JqZWN0Ojotd2Via2l0
LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90
LWxhYmVsIC5zbmFwc2hvdC1zdWJ0aXRsZSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hv
dC1zdWJ0aXRsZQorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAu
c25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5zbmFwc2hvdC1zdWJ0aXRsZSwK
K29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1v
dmVybGF5ID4gLnNuYXBzaG90LWxhYmVsID4gLnNuYXBzaG90LXN1YnRpdGxlCiB7CiAgICAgZm9u
dC1zdHlsZTogaXRhbGljOwogICAgIGNvbG9yOiAjNDQ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggYzIzZDNlOC4uYjM5NTFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMjks
NiArMTI5LDcgQEAKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKKyNp
bmNsdWRlICJQbHVnSW5zUmVzb3VyY2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3BTdGF0ZUV2
ZW50LmgiCkBAIC0xNDksNiArMTUwLDggQEAKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5o
IgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgpAQCAtNDg3LDYgKzQ5MCw3IEBA
IERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBp
c1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1fZm9udGxvYWRlcigwKQogI2VuZGlmCiAgICAg
LCBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyKHRoaXMsICZEb2N1bWVudDo6ZGlkQXNz
b2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZCkKKyAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5z
U2NyaXB0KGZhbHNlKQogewogICAgIG1fcHJpbnRpbmcgPSBmYWxzZTsKICAgICBtX3BhZ2luYXRl
ZEZvclNjcmVlbiA9IGZhbHNlOwpAQCAtNjA0OSw0ICs2MDUzLDE5IEBAIHZvaWQgRG9jdW1lbnQ6
OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KiB0aW1l
cikKICAgICBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsKIH0KIAordm9pZCBEb2N1
bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQp
Cit7CisgICAgaWYgKG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBVc2UgdGhlIEpTIGZpbGUgcHJvdmlkZWQgYnkgdGhlIENocm9tZSBjbGllbnQs
IG9yIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IG9uZS4KKyAgICBTdHJpbmcganNTdHJpbmcgPSBw
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTY3JpcHQoKTsKKyAgICBpZiAo
IWpzU3RyaW5nKQorICAgICAgICBqc1N0cmluZyA9IHBsdWdJbnNKYXZhU2NyaXB0OworCisgICAg
cGFnZSgpLT5tYWluRnJhbWUoKS0+c2NyaXB0KCktPmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3Vy
Y2VDb2RlKGpzU3RyaW5nKSwgd29ybGQpOworCisgICAgbV9oYXNJbmplY3RlZFBsdWdJbnNTY3Jp
cHQgPSB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDNkNjMzNTEuLjZmNTNjNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVj
dGlvbjsKIGNsYXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERPTVdy
YXBwZXJXb3JsZDsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwpAQCAtMTIwMyw2ICsxMjA0LDggQEAgcHVibGljOgogICAgIFBh
c3NSZWZQdHI8Rm9udExvYWRlcj4gZm9udGxvYWRlcigpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVu
c3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqKTsKKwogcHJvdGVjdGVk
OgogICAgIERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpOwogCkBAIC0xNTgxLDYgKzE1ODQsNyBAQCBwcml2YXRlOgogICAgIFRpbWVyPERvY3Vt
ZW50PiBtX2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyOwogICAgIEhhc2hTZXQ8UmVmUHRy
PEVsZW1lbnQ+ID4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogCisgICAgYm9vbCBtX2hhc0lu
amVjdGVkUGx1Z0luc1NjcmlwdDsKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlS
ZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4ZTk5MzJlLi4wMzlmN2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxv
YWRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCkBAIC00OSwxOCArNTAsMjAgQEAKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+ID4gSFRNTFBsdWdJbkltYWdl
RWxlbWVudExpc3Q7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IE1pbWVUeXBlVG9M
b2NhbGl6ZWRTdHJpbmdNYXA7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2l6aW5nVGlueURpbWVuc2lv
blRocmVzaG9sZCA9IDQwOwotc3RhdGljIGNvbnN0IGludCBzaXppbmdTbWFsbFdpZHRoVGhyZXNo
b2xkID0gMjUwOwotc3RhdGljIGNvbnN0IGludCBzaXppbmdNZWRpdW1XaWR0aFRocmVzaG9sZCA9
IDQ1MDsKLXN0YXRpYyBjb25zdCBpbnQgc2l6aW5nTWVkaXVtSGVpZ2h0VGhyZXNob2xkID0gMzAw
Owogc3RhdGljIGNvbnN0IGZsb2F0IHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNob2xkID0g
MC45NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBhdXRvc3RhcnRTb29uQWZ0ZXJVc2VyR2VzdHVyZVRo
cmVzaG9sZCA9IDUuMDsKIApAQCAtNjgsNiArNzEsMzQgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGF1
dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkID0gNS4wOwogc3RhdGljIGNvbnN0
IGRvdWJsZSBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSA9IC43NTsKIHN0YXRpYyBjb25z
dCBkb3VibGUgcmVtb3ZlU25hcHNob3RUaW1lckRlbGF5ID0gMS41OwogCitzdGF0aWMgY29uc3Qg
U3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFwLCBtaW1lVHlwZVRv
TGFiZWxUaXRsZU1hcCwgKCkpOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1lVHlwZVRvTGFi
ZWxUaXRsZU1hcC5nZXQobWltZVR5cGUpOworICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKKworICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKKyAgICBpZiAo
dGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgdGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVn
SW5MYWJlbFRpdGxlKCk7CisgICAgbWltZVR5cGVUb0xhYmVsVGl0bGVNYXAuc2V0KG1pbWVUeXBl
LCB0aXRsZVRleHQpOworICAgIHJldHVybiB0aXRsZVRleHQ7Cit9OworCitzdGF0aWMgY29uc3Qg
U3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFwLCBtaW1lVHlw
ZVRvTGFiZWxTdWJ0aXRsZU1hcCwgKCkpOworICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxTdWJ0aXRsZU1hcC5nZXQobWltZVR5cGUpOworICAgIGlmICghc3VidGl0bGVU
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN1YnRpdGxlVGV4dDsKKworICAgIHN1YnRp
dGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1YnRp
dGxlKG1pbWVUeXBlKTsKKyAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAg
c3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7CisgICAgbWlt
ZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0aXRsZVRleHQpOworICAg
IHJldHVybiBzdWJ0aXRsZVRleHQ7Cit9OworCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFnZXNP
cHRpb24gcHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbikKICAgICA6IEhUTUxQbHVnSW5FbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgIC8vIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0
ZWRCeVBhcnNlcikgYWxsb3dzIEhUTUxPYmplY3RFbGVtZW50IHRvIGRlbGF5CkBAIC0zMTgsMjkg
KzM0OSw2IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0K
IAotc3RhdGljIEF0b21pY1N0cmluZyBjbGFzc05hbWVGb3JTaGFkb3dSb290KGNvbnN0IE5vZGUq
IG5vZGUpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBs
dWdJblRpbnlTaXplQ2xhc3NOYW1lLCAoInRpbnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZSwgKCJzbWFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgcGx1Z0luTWVkaXVtU2l6ZUNsYXNzTmFtZSwgKCJtZWRpdW0iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHBsdWdJbkxhcmdlU2l6ZUNsYXNzTmFtZSwgKCJsYXJnZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIFJlbmRlckJveCogcmVuZGVyQm94
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQm94Kj4obm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgTGF5b3V0
VW5pdCB3aWR0aCA9IHJlbmRlckJveC0+Y29udGVudFdpZHRoKCk7Ci0gICAgTGF5b3V0VW5pdCBo
ZWlnaHQgPSByZW5kZXJCb3gtPmNvbnRlbnRIZWlnaHQoKTsKLQotICAgIGlmICh3aWR0aCA8IHNp
emluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQgfHwgaGVpZ2h0IDwgc2l6aW5nVGlueURpbWVuc2lv
blRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIHBsdWdJblRpbnlTaXplQ2xhc3NOYW1lOwotCi0g
ICAgaWYgKHdpZHRoIDwgc2l6aW5nU21hbGxXaWR0aFRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJu
IHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZTsKLQotICAgIGlmICh3aWR0aCA8IHNpemluZ01lZGl1
bVdpZHRoVGhyZXNob2xkIHx8IGhlaWdodCA8IHNpemluZ01lZGl1bUhlaWdodFRocmVzaG9sZCkK
LSAgICAgICAgcmV0dXJuIHBsdWdJbk1lZGl1bVNpemVDbGFzc05hbWU7Ci0KLSAgICByZXR1cm4g
cGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lOwotfQotCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogewogICAgIGlmICghcmVuZGVyZXIoKS0+aXNTbmFw
c2hvdHRlZFBsdWdJbigpKSB7CkBAIC0zNDksNjkgKzM1Nyw0OSBAQCB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU2hhZG93Um9vdCogcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVsZW1lbnQqIHNoYWRvd0NvbnRhaW5l
ciA9IHRvRWxlbWVudChyb290LT5maXJzdENoaWxkKCkpOwotICAgIHNoYWRvd0NvbnRhaW5lci0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgY2xhc3NOYW1lRm9yU2hhZG93Um9vdCh0aGlzKSk7Cisg
ICAgLy8gTm90aWZ5IHRoZSBzaGFkb3cgcm9vdCB0aGF0IHRoZSBzaXplIGNoYW5nZWQgc28gdGhh
dCB3ZSBtYXkgdXBkYXRlIHRoZSBvdmVybGF5IGxheW91dC4KKyAgICBlbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVz
aXplRXZlbnQsIHRydWUsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogewotICAgIERv
Y3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwotCi0gICAgbV9zaGFkb3dDb250YWluZXIgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgbV9zaGFkb3dDb250YWluZXItPnNldFBzZXVk
byhBdG9taWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4g
Y29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIGNvbnRhaW5lci0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1jb250YWluZXIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgUGFnZSogcGFnZSA9
IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwogCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IG92ZXJsYXkgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgb3Zl
cmxheS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1vdmVy
bGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQob3ZlcmxheSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgaXNvbGF0ZWRXb3JsZCwgKERP
TVdyYXBwZXJXb3JsZDo6Y3JlYXRlKEpTRE9NV2luZG93Ojpjb21tb25WTSgpKSkpOworICAgIGRv
Y3VtZW50KCktPmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChpc29sYXRlZFdvcmxkLmdldCgp
KTsKIAotICAgIG1fc25hcHNob3RMYWJlbCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsK
LSAgICBtX3NuYXBzaG90TGFiZWwtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmlu
Zygic25hcHNob3QtbGFiZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHBhZ2UtPm1haW5GcmFt
ZSgpLT5zY3JpcHQoKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmpl
Y3QoaXNvbGF0ZWRXb3JsZC5nZXQoKSkpOworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBTdHJpbmcgdGl0bGVUZXh0ID0gc25hcHNo
b3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7Ci0gICAgU3RyaW5nIHN1YnRpdGxlVGV4dCA9IHNuYXBz
aG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOwotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkp
IHsKLSAgICAgICAgU3RyaW5nIGNsaWVudFRpdGxlVGV4dCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsVGl0bGUoKTsKLSAgICAgICAgaWYg
KCFjbGllbnRUaXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGVUZXh0ID0gY2xp
ZW50VGl0bGVUZXh0OwotICAgICAgICBTdHJpbmcgY2xpZW50U3VidGl0bGVUZXh0ID0gZG9jdW1l
bnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRs
ZSgpOwotICAgICAgICBpZiAoIWNsaWVudFN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBzdWJ0aXRsZVRleHQgPSBjbGllbnRTdWJ0aXRsZVRleHQ7Ci0gICAgfQorICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gdGl0bGUgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgdGl0bGUtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtdGl0bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgdGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4
dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgbV9zbmFwc2hvdExh
YmVsLT5hcHBlbmRDaGlsZCh0aXRsZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCByb290KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhl
YywgdGl0bGVUZXh0KHBhZ2UsIG1pbWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3Ry
aW5nKGV4ZWMsIHN1YnRpdGxlVGV4dChwYWdlLCBtaW1lVHlwZSkpKTsKIAotICAgIFJlZlB0cjxF
bGVtZW50PiBzdWJUaXRsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBzdWJU
aXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1zdWJ0
aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzdWJUaXRs
ZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBtX3NuYXBzaG90TGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9z
bmFwc2hvdExhYmVsLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAvLyBJdCBpcyBleHBlY3Rl
ZCB0aGUgSlMgZmlsZSBwcm92aWRlcyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGUs
IHN1YnRpdGxlKSBmdW5jdGlvbi4KKyAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5ID0gZ2xvYmFs
T2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVPdmVybGF5Iikp
LnRvT2JqZWN0KGV4ZWMpOworICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CisgICAgSlNDOjpD
YWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92
ZXJsYXksIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUp
CisgICAgICAgIHJldHVybjsKIAotICAgIC8vIE1ha2UgdGhpcyBpbnRvIGEgYnV0dG9uIGZvciBh
Y2Nlc3NpYmlsaXR5IGNsaWVudHMuCi0gICAgU3RyaW5nIGNvbWJpbmVkVGV4dCA9IHRpdGxlVGV4
dDsKLSAgICBpZiAoIWNvbWJpbmVkVGV4dC5pc0VtcHR5KCkgJiYgIXN1YnRpdGxlVGV4dC5pc0Vt
cHR5KCkpCi0gICAgICAgIGNvbWJpbmVkVGV4dC5hcHBlbmQoIiAiKTsKLSAgICBjb21iaW5lZFRl
eHQuYXBwZW5kKHN1YnRpdGxlVGV4dCk7Ci0gICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIsIGNvbWJpbmVkVGV4dCk7Ci0gICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUo
cm9sZUF0dHIsICJidXR0b24iKTsKKyAgICBKU0M6OkpTT2JqZWN0KiB0aGlzT2JqID0gZ2xvYmFs
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjKTsK
IAotICAgIG1fc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGlsZChjb250YWluZXIsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHJvb3QtPmFwcGVuZENoaWxkKG1fc2hhZG93Q29udGFpbmVyLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBKU0M6OmNhbGwoZXhlYywgb3ZlcmxheSwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKIH0KIAotYm9vbCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdExhYmVsKE5vZGUqIG5vZGUpCitib29sIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShOb2RlKiBub2RlKQogewotICAg
IHJldHVybiBub2RlICYmIChub2RlID09IG1fc25hcHNob3RMYWJlbC5nZXQoKSB8fCBub2RlLT5p
c0Rlc2NlbmRhbnRPZihtX3NuYXBzaG90TGFiZWwuZ2V0KCkpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCktPnF1ZXJ5U2VsZWN0b3Io
c2VsZWN0b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHJldHVybiBub2RlICYmIHNuYXBz
aG90TGFiZWwgJiYgKG5vZGUgPT0gc25hcHNob3RMYWJlbC5nZXQoKSB8fCBub2RlLT5pc0Rlc2Nl
bmRhbnRPZihzbmFwc2hvdExhYmVsLmdldCgpKSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50PiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmlu
ZGV4IDIzNDlmNDIuLjg5NzM1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1YmZy
YW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCopOwogCiAgICAgdm9pZCBzZXRJ
c1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbihib29sKTsKLSAgICBib29sIHBhcnRPZlNuYXBzaG90
TGFiZWwoTm9kZSopOworICAgIGJvb2wgcGFydE9mU25hcHNob3RPdmVybGF5KE5vZGUqKTsKIAog
ICAgIGJvb2wgbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX25lZWRz
Q2hlY2tGb3JTaXplQ2hhbmdlOyB9CiAgICAgdm9pZCBzZXROZWVkc0NoZWNrRm9yU2l6ZUNoYW5n
ZSgpIHsgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSA9IHRydWU7IH0KQEAgLTE1NSw4ICsxNTUs
NiBAQCBwcml2YXRlOgogICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1fc3dhcFJl
bmRlcmVyVGltZXI7CiAgICAgVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4gbV9yZW1vdmVT
bmFwc2hvdFRpbWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV9zbmFwc2hvdEltYWdlOwotICAgIFJl
ZlB0cjxFbGVtZW50PiBtX3NoYWRvd0NvbnRhaW5lcjsKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9z
bmFwc2hvdExhYmVsOwogICAgIGJvb2wgbV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1cmU7CiAgICAg
Ym9vbCBtX2lzUmVzdGFydGVkUGx1Z2luOwogICAgIGJvb2wgbV9uZWVkc0NoZWNrRm9yU2l6ZUNo
YW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGM2YzFlN2QuLjBhODRjYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzY5LDkgKzM2OSwxMCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUo
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0
YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVh
bCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0IHsgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmly
dHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0IHsgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICAvLyBGSVhNRTogUG9ydCBzaG91bGQgcmV0dXJu
IHRydWUgdXNpbmcgaGV1cmlzdGljIGJhc2VkIG9uIHNjcm9sbGFibGUoUmVuZGVyQm94KS4KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdBbmREcm9wKFJlbmRlckJveCop
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA3NTk4MzBhLi4zYzZhMjNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbi5jcHAKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
OjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCB8fCAobV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiAm
JiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpKSB7CiAgICAgICAg
IG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gPSBmYWxzZTsKLSAgICAgICAgYm9vbCBjbGlj
a1dhc09uTGFiZWwgPSBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+cGFydE9mU25hcHNob3RMYWJlbChl
dmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKLSAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCkt
PnNldERpc3BsYXlTdGF0ZShjbGlja1dhc09uTGFiZWwgPyBIVE1MUGx1Z0luRWxlbWVudDo6UmVz
dGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNs
aWNrKTsKLSAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90
KG1vdXNlRXZlbnQsICFjbGlja1dhc09uTGFiZWwpOworICAgICAgICBib29sIGNsaWNrV2FzT25P
dmVybGF5ID0gcGx1Z0luSW1hZ2VFbGVtZW50KCktPnBhcnRPZlNuYXBzaG90T3ZlcmxheShldmVu
dC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKKyAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNl
dERpc3BsYXlTdGF0ZShjbGlja1dhc09uT3ZlcmxheSA/IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0
YXJ0aW5nIDogSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xp
Y2spOworICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+dXNlckRpZENsaWNrU25hcHNob3Qo
bW91c2VFdmVudCwgIWNsaWNrV2FzT25PdmVybGF5KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZWRvd25FdmVudCkgewogICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9u
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYWUxNzgwLi44MmQwYTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzIgQEAKKzIwMTMtMDUtMDUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KKworICAgICAgICBNYW5hZ2UgdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgc25hcHNob3R0ZWQg
cGx1Zy1pbiB1c2luZyBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTU1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFeHBvc2UgYSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQgbWV0aG9kIHRv
IHN1cHBvcnQgdGhlIGluamVjdGlvbiBvZgorICAgICAgICBhIEpTIGZpbGUgZnJvbSB0aGUgY2hy
b21lIGNsaWVudCB0byBjdXN0b21pemUgdGhlIHJlbmRlcmluZyBvZiBhCisgICAgICAgIHNuYXBz
aG90dGVkIHBsdWctaW4ncyBzaGFkb3cgdHJlZS4gQWRkaXRpb25hbGx5LCBpdCBpcyBleHBlY3Rl
ZAorICAgICAgICB0aGUgY2hyb21lIGNsaWVudCB3aWxsIHdhbnQgdG8gcHJvdmlkZSBsb2NhbGl6
ZWQgc3RyaW5ncyB0YWtpbmcKKyAgICAgICAgaW50byBhY2NvdW50IHRoZSBzbmFwc2hvdHRlZCBw
bHVnLWluJ3MgbWltZS10eXBlLCBzbyB3ZSdyZSBhZGRpbmcKKyAgICAgICAgdGhpcyBhcyBhIHBh
cmFtZXRlciB0byBib3RoIHBsdWdJblN0YXJ0TGFiZWxUaXRsZSBhbmQKKyAgICAgICAgcGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlIG1ldGhvZHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxTdWJ0aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50OjpwbHVnSW5FeHRyYVNjcmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwbHVn
SW5TdGFydExhYmVsVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnBs
dWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVu
dDo6cGx1Z0luRXh0cmFTY3JpcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCiAyMDEz
LTA1LTA0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4ICogcGxh
Y2VtZW50IGluIGEgZmV3IGZ1bmN0aW9ucyBhcyBub3RpY2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oCmluZGV4IDM4NzI5YjIuLjQ1NmQ1NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaApAQCAtMjUwLDkgKzI1MCwxMCBAQCB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJ
RWxlbWVudFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2sp
KAogdHlwZWRlZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdl
VG9vbGJhcnNBcmVWaXNpYmxlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlYWNoZWRBcHBD
YWNoZU9yaWdpblF1b3RhQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5
T3JpZ2luUmVmIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdWludDY0X3QgKCpXS0J1bmRsZVBhZ2VFeGNlZWRlZERhdGFi
YXNlUXVvdGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdLU3RyaW5nUmVmIGRhdGFiYXNl
RGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWlu
dDY0X3QgZXhwZWN0ZWRVc2FnZUJ5dGVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVk
ZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsVGl0bGVD
YWxsYmFjaykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgq
V0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2spKGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBs
dWdJbkNyZWF0ZVN0YXJ0TGFiZWxUaXRsZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtaW1lVHlwZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQ
YWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2spKFdLU3RyaW5nUmVmIG1p
bWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpX
S0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVFeHRyYVN0eWxlU2hlZXRDYWxsYmFjaykoY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1Z0lu
Q3JlYXRlRXh0cmFTY3JpcHRDYWxsYmFjaykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0
cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAt
MjgwLDYgKzI4MSw3IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCB7CiAgICAgV0tCdW5k
bGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGU7CiAgICAgV0tCdW5kbGVQYWdlUGx1Z0lu
Q3JlYXRlU3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICBjcmVhdGVQ
bHVnSW5TdGFydExhYmVsU3VidGl0bGU7CiAgICAgV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlRXh0
cmFTdHlsZVNoZWV0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQbHVnSW5FeHRy
YVN0eWxlU2hlZXQ7CisgICAgV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlRXh0cmFTY3JpcHRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQbHVnSW5FeHRyYVNjcmlwdDsKIH07
CiB0eXBlZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBi
NmFmNjQyLi44ZTljODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmNwcApAQCAtMTYzLDIxICsxNjMsMjEgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQ6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2UKICAg
ICByZXR1cm4gbV9jbGllbnQuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwgdG9B
UEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNlRGlz
cGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2FnZUJ5
dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMsIG1fY2xp
ZW50LmNsaWVudEluZm8pOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6
OnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0CitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdl
VUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBj
b25zdAogewogICAgIGlmICghbV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRsZSA9
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUobV9j
bGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRsZSA9IGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUodG9BUEkobWlt
ZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKICAgICByZXR1cm4gdGl0bGUg
PyB0aXRsZS0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdAorU3RyaW5nIElu
amVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJ
blN0YXJ0TGFiZWxTdWJ0aXRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmVm
UHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRl
UGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVm
UHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRl
UGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50
LmNsaWVudEluZm8pKSk7CiAgICAgcmV0dXJuIHN1YnRpdGxlID8gc3VidGl0bGUtPnN0cmluZygp
IDogU3RyaW5nKCk7CiB9CiAKQEAgLTE5MCw0ICsxOTAsMTMgQEAgU3RyaW5nIEluamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdAogICAgIHJldHVy
biBzdHlsZVNoZWV0ID8gc3R5bGVTaGVldC0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIAorU3Ry
aW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQbHVnSW5FeHRyYVNjcmlwdCkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgUmVmUHRyPFdlYlN0cmluZz4gc2NyaXB0ID0gYWRvcHRS
ZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0KG1fY2xpZW50LmNsaWVu
dEluZm8pKSk7CisgICAgcmV0dXJuIHNjcmlwdCA/IHNjcmlwdC0+c3RyaW5nKCkgOiBTdHJpbmco
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmgKaW5kZXggYWQ4ZmUyNC4uNDIzZTc0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtNzAsOSArNzAsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2ViUGFnZSosIFdlYlNl
Y3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKTsKICAgICB1aW50NjRfdCBk
aWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlzcGxheU5hbWUs
IHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2VC
eXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWludDY0X3QgZXhwZWN0
ZWRVc2FnZUJ5dGVzKTsKIAotICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25z
dDsKLSAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3Q7CisgICAgU3Ry
aW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsK
KyAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpIGNvbnN0OwogICAgIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdDsKKyAg
ICBTdHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQoKSBjb25zdDsKIAogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCmluZGV4IDYyYjc4NTYuLjhjNTYyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTgyNCwxNCArODI0LDE0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpsb2dEaWFnbm9z
dGljTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYKICAgICBtX3Bh
Z2UtPmluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZShtX3BhZ2UsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBzdWNjZXNzKTsKIH0KIAotU3Ry
aW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCkgY29uc3QKK1N0cmlu
ZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGll
bnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUoKTsKKyAgICByZXR1cm4gbV9wYWdlLT5pbmplY3Rl
ZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKIH0KIAot
U3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QK
K1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKTsKKyAgICByZXR1cm4gbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1p
bWVUeXBlKTsKIH0KIAogU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTdHlsZVNo
ZWV0KCkgY29uc3QKQEAgLTgzOSw0ICs4MzksOSBAQCBTdHJpbmcgV2ViQ2hyb21lQ2xpZW50Ojpw
bHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdAogICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlVUlDbGllbnQoKS5wbHVnSW5FeHRyYVN0eWxlU2hlZXQoKTsKIH0KIAorU3RyaW5nIFdl
YkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTY3JpcHQoKSBjb25zdAoreworICAgIHJldHVybiBt
X3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5FeHRyYVNjcmlwdCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGQ0NWYxODIu
LmRkNjliNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMjE5LDkgKzIxOSwxMCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdWNj
ZXNzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRs
ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxT
dWJ0aXRsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0
TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHls
ZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFT
Y3JpcHQoKSBjb25zdCBPVkVSUklERTsKIAogICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAg
ICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODkz
N2MzNi4uZWJiODk4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA1LTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVzZW50YXRpb24gb2YgdGhl
IHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBw
bHVnSW5FeHRyYVNjcmlwdCBtZXRob2QgYWRkZWQgdG8gc3VwcG9ydAorICAgICAgICB0aGUgaW5q
ZWN0aW9uIG9mIGEgSlMgZmlsZSBmcm9tIHRoZSBjaHJvbWUgY2xpZW50IHRvIGN1c3RvbWl6ZSB0
aGUKKyAgICAgICAgcmVuZGVyaW5nIG9mIGEgc25hcHNob3R0ZWQgcGx1Zy1pbidzIHNoYWRvdyB0
cmVlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVj
dGVkQnVuZGxlUGFnZSk6CisKIDIwMTMtMDUtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNDgzMTIpOiBDcmFzaCB3aGVuIGNhbGxpbmcgV0tQ
YWdlQ2xvc2UocGFnZSkgZm9sbG93ZWQgYnkgV0tQYWdlVGVybWluYXRlKHBhZ2UpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAKaW5kZXggMjMzZmU4YS4uZTA0MjAzOCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcApAQCAtMzcyLDYgKzM3Miw3IEBAIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRC
dW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAgICAwLCAvKnBsdWdJblN0YXJ0
TGFiZWxUaXRsZSovCiAgICAgICAgIDAsIC8qcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKi8KICAg
ICAgICAgMCwgLypwbHVnSW5FeHRyYVN0eWxlU2hlZXQqLworICAgICAgICAwLCAvKnBsdWdJbkV4
dHJhU2NyaXB0Ki8KICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KG1fcGFnZSwg
JnVpQ2xpZW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200621</attachid>
            <date>2013-05-06 00:26:00 -0700</date>
            <delta_ts>2013-05-06 00:37:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115548-20130506092503.patch</filename>
            <type>text/plain</type>
            <size>38818</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZlNWNjNGU3MGFhZjNk
MWNjMTc1NThiODJlOTIxYjcyOTAxNDFmYi4uOWIwMTE1OGM3YTE0YTVhNjkzNjNmMjZiOWE0NjFi
M2JiOTE0ZTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEzLTA1LTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVz
ZW50YXRpb24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogUmVzb3VyY2VzL3Bs
dWdJbnMuanM6CisgICAgICAgIChjcmVhdGVPdmVybGF5KToKKyAgICAgICAgSW1wbGVtZW50IHRo
ZSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KSBtZXRo
b2QKKyAgICAgICAgdGhhdCBpcyBjYWxsZWQgZnJvbSBXZWJDb3JlIChIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KQorICAgICAgICB0byBhbGxvdyB0aGUg
aW5qZWN0ZWQgc2NyaXB0IHRvIGN1c3RvbWl6ZSB0aGUgc2hhZG93IHJvb3QgZm9yIGEgc25hcHNo
b3R0ZWQKKyAgICAgICAgcGx1Zy1pbi4gVGhpcyBpcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24s
IGNsaWVudHMgYXJlIGV4cGVjdGVkIHRvIGN1c3RvbWl6ZQorICAgICAgICB0aGlzIGJ5IHByb3Zp
ZGluZyB0aGVpciBvd24gSlMgZmlsZSB3aXRoIGVuaGFuY2VkIGJlaGF2aW9yLgorCisgICAgICAg
ICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQpOgor
ICAgICAgICBTaW5jZSB3ZSBubyBsb25nZXIgaGF2ZSBhIGRlZmF1bHQgc2hhZG93IHRyZWUgZ2Vu
ZXJhdGVkIGluIEMrKywgaXQgbWFrZXMgbGl0dGxlCisgICAgICAgIHNlbnNlIGZvciBjbGllbnRz
IHRvIGV4dGVuZCB0aGUgZGVmYXVsdCBzbmFwc2hvdHRlZCBwbHVnLWluIHN0eWxlc2hlZXQsIHNv
IHdlCisgICAgICAgIG9ubHkgaW5zZXJ0IGl0IGlmIG5vIGN1c3RvbSBvbmUgaXMgcHJvdmlkZWQg
YnkgdGhlIGNocm9tZSBjbGllbnQuCisKKyAgICAgICAgKiBjc3MvcGx1Z0lucy5jc3M6CisgICAg
ICAgIEJldHRlciBzdHlsaW5nIG9mIHRoZSBkZWZhdWx0IHNuYXBzaG90dGVkIHBsdWctaW4gb3Zl
cmxheSBsb29rIGJ5IHVzaW5nIENTUworICAgICAgICBmbGV4IGJveGVzLiBBbHNvIHVzaW5nIG1v
cmUgZXhwbGljaXQgc2VsZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5z
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICBFeHBvc2UgYSBuZXcgbWV0aG9kIHRvIGFsbG93IEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQgaW5zdGFuY2VzIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIHRo
ZSBKYXZhU2NyaXB0IGNvZGUgcmVxdWlyZWQgdG8gY3VzdG9taXplIHRoZSBzbmFwc2hvdHRlZCBw
bHVnLWluJ3Mgc2hhZG93IHJvb3QKKyAgICAgICAgaXMgaW5kZWVkIGluamVjdGVkIGluIHRoZSBj
dXJyZW50IGRvY3VtZW50LiBUaGUgYWN0dWFsIGluamVjdGlvbiB3b3VsZCBvbmx5CisgICAgICAg
IGhhcHBlbiBvbmNlIHBlciBkb2N1bWVudCBzbyBhbGwgc25hcHNob3R0ZWQgcGx1Zy1pbnMgc2hh
cmUgdGhlIHNhbWUgc2NyaXB0aW5nCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgRXhwb3NlIHRoZSBuZXcgZW5zdXJlUGx1Z0luc0luamVjdGVk
U2NyaXB0IG1ldGhvZCBhbmQgdGhlIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0CisgICAgICAg
IHByb3BlcnR5IHVzZWQgdG8gZW5zdXJlIGluamVjdGlvbiBoYXBwZW5zIG9ubHkgb25jZSBwZXIg
ZG9jdW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1YnRpdGxl
VGV4dCk6CisgICAgICAgIFN0b3JlIHRoZSBsb2NhbGl6ZWQgc3RyaW5ncyBmb3IgZWFjaCBtaW1l
LXR5cGUgaW4gYSBzdGF0aWMgaGFzaCBtYXAgYXMgaXQgY2FuIGJlCisgICAgICAgIGNvc3RseSB0
byByZXRyaWV2ZSB0aGVtIGVhY2ggdGltZSBmcm9tIHRoZSBjbGllbnQuIEl0IGlzIGV4cGVjdGVk
IHRoZSBjaHJvbWUgY2xpZW50CisgICAgICAgIHdpbGwgd2FudCB0byBwcm92aWRlIGxvY2FsaXpl
ZCBzdHJpbmdzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4ncwor
ICAgICAgICBtaW1lLXR5cGUsIHNvIHdlJ3JlIGFkZGluZyB0aGlzIGFzIGEgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0
YXR1cyk6CisgICAgICAgIERpc3BhdGNoIGEgInJlc2l6ZSIgZXZlbnQgdG8gdGhlIHNoYWRvdyBy
b290IHRvIG5vdGlmeSB0aGUgaW5qZWN0ZWQgc2NyaXB0IHRoYXQgdGhlCisgICAgICAgIHNuYXBz
aG90dGVkIHBsdWctaW4ncyBtZXRyaWNzIGhhdmUgY2hhbmdlZCBhbmQgdG8gYWxsb3cgdGhlIG92
ZXJsYXkgdG8gdXBkYXRlIGl0c2VsZgorICAgICAgICBhcyBhIHJlc3VsdC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qp
OgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBET00gZ2VuZXJhdGlvbiBjb2RlIGluIGZhdm9yIG9m
IGFuIGFwcHJvYWNoIHdoZXJlIHdlIGNyZWF0ZSBhIHNoYXJlZAorICAgICAgICBET00gc2NyaXB0
aW5nIHdvcmxkIGluIHdoaWNoIHdlIGluamVjdCBKYXZhU2NyaXB0IGNvZGUgdGhhdCB3aWxsIHBl
cmZvcm0gdGhlIHNhbWUKKyAgICAgICAgdGFzayBidXQgd2lsbCBhZGRpdGlvbmFsbHkgYmUgcHJv
dmlkZWQgYnkgdGhlIGNsaWVudCBpbiBvcmRlciB0byBwcm92aWRlIGEgY29tcGxldGVseQorICAg
ICAgICBjdXN0b20gb3ZlcmxheSBmb3IgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4uIFRoZSBzb2xl
IGNvbnRyYWN0IGlzIGZvciB0aGUgSmF2YVNjcmlwdAorICAgICAgICB0byBpbXBsZW1lbnQgYSBj
cmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KSBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hv
dE92ZXJsYXkpOgorICAgICAgICBSZW5hbWVkIG1ldGhvZCB0byBiZSBnZW5lcmljIHRvIHRoZSBv
dmVybGF5IGFzIG9wcG9zZWQgdG8gdGV4dCBsYWJlbHMgYW5kIHVzZSB0aGUKKyAgICAgICAgZWxl
bWVudCB3aXRoIENTUyBjbGFzcyBuYW1lICJzbmFwc2hvdC1vdmVybGF5IiBhcyB0aGUgY29tcGFy
aXNvbiBub2RlLgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6Cisg
ICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KToKKyAgICAgICAgUmVtb3ZpbmcgYSBjb3Vw
bGUgb2YgdW51c2VkIG1lbWJlcnMgc2luY2Ugd2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHRoZSBzaGFk
b3cgRE9NIGZyb20gQysrCisgICAgICAgIGFuZCByZW5hbWUgdGhlIHBhcnRPZlNuYXBzaG90TGFi
ZWwgbWV0aG9kIHRvIHBhcnRPZlNuYXBzaG90T3ZlcmxheS4KKworICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJbkV4
dHJhU2NyaXB0KToKKyAgICAgICAgUGFzcyBpbiB0aGUgbWltZS10eXBlIHRvIHBsdWdJblN0YXJ0
TGFiZWxUaXRsZSBhbmQgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlIGFuZCBleHBvc2UKKyAgICAg
ICAgYSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQgbWV0aG9kIHRvIGFsbG93IHRoZSBjaHJvbWUgY2xp
ZW50IHRvIHByb3ZpZGUgYSBjdXN0b20gSlMgZmlsZQorICAgICAgICBmb3IgdGhlIG1hbmFnZW1l
bnQgb2YgdGhlIHNoYWRvdyByb290LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpoYW5kbGVFdmVudCk6CisgICAgICAgIFVwZGF0ZSB0aGUgdGVybWlub2xvZ3kgZnJvbSAi
bGFiZWwiIHRvICJvdmVybGF5IiBwZXIgdGhlIGNoYW5nZXMgbWFkZSBpbiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LgorCiAyMDEzLTA1LTA0ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBBbmltYXRpb25zIGFuZCBUcmFuc2l0aW9ucyBzaG91bGQgbm90IHN0YXJ0IHdo
ZW4gZ2xvYmFsbHkgc3VzcGVuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMmFlMTc4MGI0Yzk5ZTczNmI4NWM4
OWE2MTc2ZjgwMmM0YjcxOWI0ZC4uNTk3OTZhOTM0YTEyYmMwOWRkY2M1YTIyMmM1OWZjMDdhMDIy
NDY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTA1LTA1ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVzZW50YXRp
b24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBwbHVnSW5F
eHRyYVNjcmlwdCBtZXRob2QgdG8gc3VwcG9ydCB0aGUgaW5qZWN0aW9uIG9mCisgICAgICAgIGEg
SlMgZmlsZSBmcm9tIHRoZSBjaHJvbWUgY2xpZW50IHRvIGN1c3RvbWl6ZSB0aGUgcmVuZGVyaW5n
IG9mIGEKKyAgICAgICAgc25hcHNob3R0ZWQgcGx1Zy1pbidzIHNoYWRvdyB0cmVlLiBBZGRpdGlv
bmFsbHksIGl0IGlzIGV4cGVjdGVkCisgICAgICAgIHRoZSBjaHJvbWUgY2xpZW50IHdpbGwgd2Fu
dCB0byBwcm92aWRlIGxvY2FsaXplZCBzdHJpbmdzIHRha2luZworICAgICAgICBpbnRvIGFjY291
bnQgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4ncyBtaW1lLXR5cGUsIHNvIHdlJ3JlIGFkZGluZwor
ICAgICAgICB0aGlzIGFzIGEgcGFyYW1ldGVyIHRvIGJvdGggcGx1Z0luU3RhcnRMYWJlbFRpdGxl
IGFuZAorICAgICAgICBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUgbWV0aG9kcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVn
SW5TdGFydExhYmVsVGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VV
SUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJbkV4dHJhU2NyaXB0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50Lmg6Cisg
ICAgICAgIChJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRsZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNo
cm9tZUNsaWVudCk6CisKIDIwMTMtMDUtMDQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggKiBwbGFjZW1lbnQgaW4gYSBmZXcgZnVuY3Rpb25zIGFzIG5vdGljZWQg
YnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BsdWdJ
bnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGx1Z0lucy5qcwppbmRleCA5OWYyZTU4
YjVhYThhNmRjMzE3NDQ1YTU4MmFlNzNhNmQ5YWQzODAxLi5lNjQ0YjE5MGJiOTU2MzY2NzZhNDQ0
OGQwMTAwOGJjYWVkMTcwZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGx1Z0lucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGx1Z0lucy5qcwpAQCAt
MSwyICsxLDM2IEBACiAKLS8vIEZJWE1FOiBGaWxsIHVwIHdpdGggdXNlZnVsIGNvZGUgZm9yIGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzExNTU0OC4KKy8vIEZ1bmN0aW9uIGNhbGxlZCBmcm9tIFdlYkNv
cmUuCitmdW5jdGlvbiBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlVGV4dCwgc3VidGl0
bGVUZXh0KQoreworICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorICAg
IC8vCisgICAgLy8gPGRpdiBwc2V1ZG89Ii13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRl
bnQiPgorICAgIC8vICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1vdmVybGF5IiBhcmlhLWxhYmVs
PSJbVGl0bGVdOiBbU3VidGl0bGVdIiByb2xlPSJidXR0b24iPgorICAgIC8vICAgICAgICAgPGRp
diBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgorICAgIC8vICAgICAgICAgICAgIDxkaXYgY2xhc3M9
InNuYXBzaG90LXRpdGxlIj5bVGl0bGVdPC9kaXY+CisgICAgLy8gICAgICAgICAgICAgPGRpdiBj
bGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPltTdWJ0aXRsZV08L2Rpdj4KKyAgICAvLyAgICAgICAg
IDwvZGl2PgorICAgIC8vICAgICA8L2Rpdj4KKyAgICAvLyA8L2Rpdj4KKworICAgIHZhciBzaGFk
b3dDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBzaGFkb3dD
b250YWluZXIuc2V0QXR0cmlidXRlKCJwc2V1ZG8iLCAiLXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVn
aW4tY29udGVudCIpOworCisgICAgdmFyIG92ZXJsYXkgPSBzaGFkb3dDb250YWluZXIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIG92ZXJsYXkuc2V0QXR0
cmlidXRlKCJhcmlhLWxhYmVsIiwgdGhpcy50aXRsZVRleHQgKyAiOiAiICsgdGhpcy5zdWJ0aXRs
ZVRleHQpOworICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCJyb2xlIiwgImJ1dHRvbiIpOworICAg
IG92ZXJsYXkuY2xhc3NOYW1lID0gInNuYXBzaG90LW92ZXJsYXkiOworCisgICAgdmFyIHNuYXBz
aG90TGFiZWwgPSBvdmVybGF5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpKTsKKyAgICBzbmFwc2hvdExhYmVsLmNsYXNzTmFtZSA9ICJzbmFwc2hvdC1sYWJlbCI7CisK
KyAgICB2YXIgdGl0bGUgPSBzbmFwc2hvdExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpKTsKKyAgICB0aXRsZS5jbGFzc05hbWUgPSAic25hcHNob3QtdGl0bGUi
OworICAgIHRpdGxlLnRleHRDb250ZW50ID0gdGl0bGVUZXh0OworCisgICAgdmFyIHN1YnRpdGxl
ID0gc25hcHNob3RMYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7CisgICAgc3VidGl0bGUuY2xhc3NOYW1lID0gInNuYXBzaG90LXN1YnRpdGxlIjsKKyAgICBz
dWJ0aXRsZS50ZXh0Q29udGVudCA9IHN1YnRpdGxlVGV4dDsKKworICAgIHNoYWRvd1Jvb3QuYXBw
ZW5kQ2hpbGQoc2hhZG93Q29udGFpbmVyKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NE
ZWZhdWx0U3R5bGVTaGVldHMuY3BwCmluZGV4IGIzYmE1Yjg5OGU5NmM0YzM5YmE3YmI2OWIxNjUw
YjBjZmY5ZWEwNTIuLjNjOWMzMjdkYTk0NWNlODc2M2E0Y2U4YzY2NTIyMDc5MDEwMDYwZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0yMDEs
NyArMjAxLDkgQEAgdm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHls
ZVNoZWV0c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAgICAgaWYgKCFw
bHVnSW5zU3R5bGVTaGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpIHx8IGVs
ZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpKSkgewotICAgICAgICBTdHJpbmcgcGx1Z0luc1J1
bGVzID0gU3RyaW5nKHBsdWdJbnNVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocGx1Z0luc1Vz
ZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UoZWxlbWVudC0+
ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgpICsgZWxlbWVudC0+
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJbkV4dHJhU3R5bGVT
aGVldCgpOworICAgICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0gUmVuZGVyVGhlbWU6OnRoZW1l
Rm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5leHRyYVBsdWdJbnNTdHlsZVNo
ZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+
cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCk7CisgICAgICAgIGlmIChwbHVnSW5zUnVsZXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgcGx1Z0luc1J1bGVzID0gU3RyaW5nKHBsdWdJbnNVc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKICAgICAgICAg
cGx1Z0luc1N0eWxlU2hlZXQgPSBwYXJzZVVBU2hlZXQocGx1Z0luc1J1bGVzKTsKICAgICAgICAg
ZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwbHVnSW5zU3R5bGVTaGVldCwgc2NyZWVu
RXZhbCgpKTsKICAgICAgICAgY2hhbmdlZERlZmF1bHRTdHlsZSA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGx1
Z0lucy5jc3MKaW5kZXggZmUzMTg4YWUwODdmNTFmZjcyMzExOGQwNmVhZGU3ZWI3YjMyYjY4ZC4u
MzkzMjE4ZjM4MGMzZGYwMDJkNjk4NzBmMWE2ZGM2M2I0YmFmMzg4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BsdWdJbnMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVn
SW5zLmNzcwpAQCAtMjksMjAgKzI5LDE5IEBACiAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0
dXJlOgogICoKICAqIDxvYmplY3Q+Ci0gKiAgICNTaGFkb3dSb290Ci0gKiAgICAgPGRpdiBjbGFz
cz0ic25hcHNob3QtY29udGFpbmVyIj4KLSAqICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LW92
ZXJsYXkiPjwvZGl2PiA8IS0tIGUuZy4gZm9yIGRpbW1pbmcgY29udGVudCAtLT4KLSAqICAgICAg
ICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgotICogICAgICAgICAgIDxkaXYgY2xhc3M9
InNuYXBzaG90LXRpdGxlIj5TbmFwc2hvdHRlZCBQbHVnLUluPC9kaXY+Ci0gKiAgICAgICAgICAg
PGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPkNsaWNrIHRvIHJlc3RhcnQ8L2Rpdj4KKyAq
ICAgICAjU2hhZG93Um9vdAorICogICAgICAgICA8ZGl2IHBzZXVkbz0iLXdlYmtpdC1zbmFwc2hv
dHRlZC1wbHVnaW4tY29udGVudCI+CisgKiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hv
dC1vdmVybGF5IiBhcmlhLWxhYmVsPSJbVGl0bGVdOiBbU3VidGl0bGVdIiByb2xlPSJidXR0b24i
PgorICogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBzaG90LWxhYmVsIj4KKyAqICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtdGl0bGUiPltUaXRsZV08L2Rp
dj4KKyAqICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUi
PltTdWJ0aXRsZV08L2Rpdj4KKyAqICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAqICAgICAgICAg
ICAgIDwvZGl2PgogICogICAgICAgICA8L2Rpdj4KLSAqICAgICAgIDwvZGl2PgotICogICAgIDwv
ZGl2PgotICoKICAqLwogCi1vYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRl
bnQsCi1lbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudAorZW1iZWQ6Oi13
ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNo
b3R0ZWQtcGx1Z2luLWNvbnRlbnQKIHsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOwpAQCAtNTAsNDEgKzQ5LDQ0IEBAIGVtYmVkOjotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50CiAgICAgaGVpZ2h0OiAxMDAlOwogfQogCi1vYmplY3Q6
Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciwK
LWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250
YWluZXIKK2VtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBz
aG90LW92ZXJsYXksCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQg
PiAuc25hcHNob3Qtb3ZlcmxheQogewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB3aWR0
aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7CisgICAgdG9wOiA1cHg7CisgICAgcmlnaHQ6IDVw
eDsKKyAgICBib3R0b206IDVweDsKKyAgICBsZWZ0OiA1cHg7CisgICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAg
ZGlzcGxheTogLXdlYmtpdC1mbGV4OworICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50
ZXI7CisgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogfQogCi1vYmplY3Q6Oi13ZWJr
aXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNo
b3Qtb3ZlcmxheSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5z
bmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LW92ZXJsYXkKK2VtYmVkOjotd2Via2l0LXNuYXBz
aG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFi
ZWwsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNo
b3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbAogewotICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
Y29sb3I6IGJsYWNrOworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiB9CiAKLW9iamVj
dDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVy
IC5zbmFwc2hvdC1sYWJlbCwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250
ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsCitlbWJlZDo6LXdlYmtpdC1z
bmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90
LWxhYmVsID4gZGl2LAorb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50
ID4gLnNuYXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3QtbGFiZWwgPiBkaXYKIHsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci0gICAgY29sb3I6
IGJsYWNrOwotICAgIG1hcmdpbjogMWVtOwotICAgIHBhZGRpbmc6IDAuMjVlbSAyZW07Ci0gICAg
dGV4dC1hbGlnbjogY2VudGVyOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLSAgICAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgd2hpdGUtc3BhY2U6
IG5vd3JhcDsKKyAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKIH0KIAotb2JqZWN0Ojotd2Vi
a2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBz
aG90LWxhYmVsIC5zbmFwc2hvdC10aXRsZSwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBs
dWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hv
dC10aXRsZQorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25h
cHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5zbmFwc2hvdC10aXRsZSwKK29iamVj
dDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5
ID4gLnNuYXBzaG90LWxhYmVsID4gLnNuYXBzaG90LXRpdGxlCiB7CiAgICAgZm9udC13ZWlnaHQ6
IGJvbGQ7CiB9CiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAu
c25hcHNob3QtY29udGFpbmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUsCi1l
bWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFp
bmVyIC5zbmFwc2hvdC1sYWJlbCAuc25hcHNob3Qtc3VidGl0bGUKK2VtYmVkOjotd2Via2l0LXNu
YXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkgPiAuc25hcHNob3Qt
bGFiZWwgPiAuc25hcHNob3Qtc3VidGl0bGUsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IC5z
bmFwc2hvdC1zdWJ0aXRsZQogewogICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICBjb2xvcjog
IzQ0NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGMyM2QzZThlZThlMzliM2MyYmYxZjBk
Mzc5YmMzNmNjYjk5OTQ4NzEuLmIzOTUxZjZkNzJhYWE4NzJkY2M2MmI1MTllY2Y2OTg4MzI4ZTE1
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVk
ZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCisjaW5jbHVkZSAiUGx1Z0luc1Jlc291
cmNlcy5oIgogI2luY2x1ZGUgIlBsdWdpbkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxv
Y2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgpAQCAtMTQ5LDYgKzE1
MCw4IEBACiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKQEAgLTQ4Nyw2ICs0OTAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwp
CiAgICAgLCBtX2ZvbnRsb2FkZXIoMCkKICNlbmRpZgogICAgICwgbV9kaWRBc3NvY2lhdGVGb3Jt
Q29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1Rp
bWVyRmlyZWQpCisgICAgLCBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdChmYWxzZSkKIHsKICAg
ICBtX3ByaW50aW5nID0gZmFsc2U7CiAgICAgbV9wYWdpbmF0ZWRGb3JTY3JlZW4gPSBmYWxzZTsK
QEAgLTYwNDksNCArNjA1MywxOSBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHNUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiogdGltZXIpCiAgICAgbV9hc3NvY2lhdGVk
Rm9ybUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJ
bmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQoreworICAgIGlmIChtX2hhc0lu
amVjdGVkUGx1Z0luc1NjcmlwdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVXNlIHRoZSBK
UyBmaWxlIHByb3ZpZGVkIGJ5IHRoZSBDaHJvbWUgY2xpZW50LCBvciBmYWxsYmFjayB0byB0aGUg
ZGVmYXVsdCBvbmUuCisgICAgU3RyaW5nIGpzU3RyaW5nID0gcGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnBsdWdJbkV4dHJhU2NyaXB0KCk7CisgICAgaWYgKCFqc1N0cmluZykKKyAgICAgICAg
anNTdHJpbmcgPSBwbHVnSW5zSmF2YVNjcmlwdDsKKworICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCkt
PnNjcmlwdCgpLT5ldmFsdWF0ZUluV29ybGQoU2NyaXB0U291cmNlQ29kZShqc1N0cmluZyksIHdv
cmxkKTsKKworICAgIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0ID0gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzZDYzMzUxN2M0ZTk4
YTA0N2IxZjkxZjdhODk1NTMyMDFlNTg2NDQ3Li42ZjUzYzYwYjAyNGQ0MmZkNGVjZmU1MDNmY2Rm
YWVhNzVlZWI0NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFz
cyBET01JbXBsZW1lbnRhdGlvbjsKIGNsYXNzIERPTU5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFz
cyBET01TZWxlY3Rpb247CiBjbGFzcyBET01XaW5kb3c7CitjbGFzcyBET01XcmFwcGVyV29ybGQ7
CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNlVGhyZWFkOwogY2xhc3MgRG9jdW1lbnRG
cmFnbWVudDsKQEAgLTEyMDMsNiArMTIwNCw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZv
bnRMb2FkZXI+IGZvbnRsb2FkZXIoKTsKICNlbmRpZgogCisgICAgdm9pZCBlbnN1cmVQbHVnSW5z
SW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkKik7CisKIHByb3RlY3RlZDoKICAgICBEb2N1
bWVudChGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKTsKIApA
QCAtMTU4MSw2ICsxNTg0LDcgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxEb2N1bWVudD4gbV9kaWRB
c3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcjsKICAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50PiA+
IG1fYXNzb2NpYXRlZEZvcm1Db250cm9sczsKIAorICAgIGJvb2wgbV9oYXNJbmplY3RlZFBsdWdJ
bnNTY3JpcHQ7CiB9OwogCiBpbmxpbmUgdm9pZCBEb2N1bWVudDo6bm90aWZ5UmVtb3ZlUGVuZGlu
Z1NoZWV0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggOGU5OTMyZWVkMTUwYWU5MDZmY2Y3NzY3OTIxM2RjOThiMmQyMDBh
MC4uMDM5ZjdmZWE3Y2E0ZDE0YjM0NGFkOWJjZWMxMzNmMjlhNGI1YTdjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5o
IgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNDksMTggKzUwLDIwIEBACiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiA+IEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnRMaXN0OwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBNaW1lVHlwZVRvTG9j
YWxpemVkU3RyaW5nTWFwOwogCiBzdGF0aWMgY29uc3QgaW50IHNpemluZ1RpbnlEaW1lbnNpb25U
aHJlc2hvbGQgPSA0MDsKLXN0YXRpYyBjb25zdCBpbnQgc2l6aW5nU21hbGxXaWR0aFRocmVzaG9s
ZCA9IDI1MDsKLXN0YXRpYyBjb25zdCBpbnQgc2l6aW5nTWVkaXVtV2lkdGhUaHJlc2hvbGQgPSA0
NTA7Ci1zdGF0aWMgY29uc3QgaW50IHNpemluZ01lZGl1bUhlaWdodFRocmVzaG9sZCA9IDMwMDsK
IHN0YXRpYyBjb25zdCBmbG9hdCBzaXppbmdGdWxsUGFnZUFyZWFSYXRpb1RocmVzaG9sZCA9IDAu
OTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgYXV0b3N0YXJ0U29vbkFmdGVyVXNlckdlc3R1cmVUaHJl
c2hvbGQgPSA1LjA7CiAKQEAgLTY4LDYgKzcxLDM0IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBhdXRv
c3RhcnRTb29uQWZ0ZXJVc2VyR2VzdHVyZVRocmVzaG9sZCA9IDUuMDsKIHN0YXRpYyBjb25zdCBk
b3VibGUgc2ltdWxhdGVkTW91c2VDbGlja1RpbWVyRGVsYXkgPSAuNzU7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIHJlbW92ZVNuYXBzaG90VGltZXJEZWxheSA9IDEuNTsKIAorc3RhdGljIGNvbnN0IFN0
cmluZyB0aXRsZVRleHQoUGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVUb0xh
YmVsVGl0bGVNYXAsICgpKTsKKyAgICBTdHJpbmcgdGl0bGVUZXh0ID0gbWltZVR5cGVUb0xhYmVs
VGl0bGVNYXAuZ2V0KG1pbWVUeXBlKTsKKyAgICBpZiAoIXRpdGxlVGV4dC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB0aXRsZVRleHQ7CisKKyAgICB0aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxUaXRsZShtaW1lVHlwZSk7CisgICAgaWYgKHRp
dGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0lu
TGFiZWxUaXRsZSgpOworICAgIG1pbWVUeXBlVG9MYWJlbFRpdGxlTWFwLnNldChtaW1lVHlwZSwg
dGl0bGVUZXh0KTsKKyAgICByZXR1cm4gdGl0bGVUZXh0OworfTsKKworc3RhdGljIGNvbnN0IFN0
cmluZyBzdWJ0aXRsZVRleHQoUGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoTWltZVR5cGVUb0xvY2FsaXplZFN0cmluZ01hcCwgbWltZVR5cGVU
b0xhYmVsU3VidGl0bGVNYXAsICgpKTsKKyAgICBTdHJpbmcgc3VidGl0bGVUZXh0ID0gbWltZVR5
cGVUb0xhYmVsU3VidGl0bGVNYXAuZ2V0KG1pbWVUeXBlKTsKKyAgICBpZiAoIXN1YnRpdGxlVGV4
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdWJ0aXRsZVRleHQ7CisKKyAgICBzdWJ0aXRs
ZVRleHQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRs
ZShtaW1lVHlwZSk7CisgICAgaWYgKHN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCisgICAgICAgIHN1
YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOworICAgIG1pbWVU
eXBlVG9MYWJlbFN1YnRpdGxlTWFwLnNldChtaW1lVHlwZSwgc3VidGl0bGVUZXh0KTsKKyAgICBy
ZXR1cm4gc3VidGl0bGVUZXh0OworfTsKKwogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBs
dWdJbkltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzT3B0
aW9uIHByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24pCiAgICAgOiBIVE1MUGx1Z0luRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAvLyBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVk
QnlQYXJzZXIpIGFsbG93cyBIVE1MT2JqZWN0RWxlbWVudCB0byBkZWxheQpAQCAtMzE4LDI5ICsz
NDksNiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKQogICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAK
LXN0YXRpYyBBdG9taWNTdHJpbmcgY2xhc3NOYW1lRm9yU2hhZG93Um9vdChjb25zdCBOb2RlKiBu
b2RlKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwbHVn
SW5UaW55U2l6ZUNsYXNzTmFtZSwgKCJ0aW55IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBw
bHVnSW5TbWFsbFNpemVDbGFzc05hbWUsICgic21hbGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJp
bmcsIHBsdWdJbk1lZGl1bVNpemVDbGFzc05hbWUsICgibWVkaXVtIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRv
bWljU3RyaW5nLCBwbHVnSW5MYXJnZVNpemVDbGFzc05hbWUsICgibGFyZ2UiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9
IHN0YXRpY19jYXN0PFJlbmRlckJveCo+KG5vZGUtPnJlbmRlcmVyKCkpOwotICAgIExheW91dFVu
aXQgd2lkdGggPSByZW5kZXJCb3gtPmNvbnRlbnRXaWR0aCgpOwotICAgIExheW91dFVuaXQgaGVp
Z2h0ID0gcmVuZGVyQm94LT5jb250ZW50SGVpZ2h0KCk7Ci0KLSAgICBpZiAod2lkdGggPCBzaXpp
bmdUaW55RGltZW5zaW9uVGhyZXNob2xkIHx8IGhlaWdodCA8IHNpemluZ1RpbnlEaW1lbnNpb25U
aHJlc2hvbGQpCi0gICAgICAgIHJldHVybiBwbHVnSW5UaW55U2l6ZUNsYXNzTmFtZTsKLQotICAg
IGlmICh3aWR0aCA8IHNpemluZ1NtYWxsV2lkdGhUaHJlc2hvbGQpCi0gICAgICAgIHJldHVybiBw
bHVnSW5TbWFsbFNpemVDbGFzc05hbWU7Ci0KLSAgICBpZiAod2lkdGggPCBzaXppbmdNZWRpdW1X
aWR0aFRocmVzaG9sZCB8fCBoZWlnaHQgPCBzaXppbmdNZWRpdW1IZWlnaHRUaHJlc2hvbGQpCi0g
ICAgICAgIHJldHVybiBwbHVnSW5NZWRpdW1TaXplQ2xhc3NOYW1lOwotCi0gICAgcmV0dXJuIHBs
dWdJbkxhcmdlU2l6ZUNsYXNzTmFtZTsKLX0KLQogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpjaGVja1NuYXBzaG90U3RhdHVzKCkKIHsKICAgICBpZiAoIXJlbmRlcmVyKCktPmlzU25hcHNo
b3R0ZWRQbHVnSW4oKSkgewpAQCAtMzQ5LDY5ICszNTcsNDkgQEAgdm9pZCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjaGVja1NuYXBzaG90U3RhdHVzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7Ci0gICAgaWYg
KCFyb290KQotICAgICAgICByZXR1cm47Ci0KLSAgICBFbGVtZW50KiBzaGFkb3dDb250YWluZXIg
PSB0b0VsZW1lbnQocm9vdC0+Zmlyc3RDaGlsZCgpKTsKLSAgICBzaGFkb3dDb250YWluZXItPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsIGNsYXNzTmFtZUZvclNoYWRvd1Jvb3QodGhpcykpOworICAg
IC8vIE5vdGlmeSB0aGUgc2hhZG93IHJvb3QgdGhhdCB0aGUgc2l6ZSBjaGFuZ2VkIHNvIHRoYXQg
d2UgbWF5IHVwZGF0ZSB0aGUgb3ZlcmxheSBsYXlvdXQuCisgICAgZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlc2l6
ZUV2ZW50LCB0cnVlLCBmYWxzZSkpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIHsKLSAgICBEb2N1
bWVudCogZG9jID0gZG9jdW1lbnQoKTsKLQotICAgIG1fc2hhZG93Q29udGFpbmVyID0gSFRNTERp
dkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIG1fc2hhZG93Q29udGFpbmVyLT5zZXRQc2V1ZG8o
QXRvbWljU3RyaW5nKCItd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGNv
bnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBjb250YWluZXItPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtY29udGFpbmVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgU3RyaW5nIG1pbWVUeXBlID0gbG9hZGVkTWltZVR5cGUoKTsKIAotICAgIFJlZlB0cjxF
bGVtZW50PiBvdmVybGF5ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIG92ZXJs
YXktPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtb3Zlcmxh
eSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBjb250YWluZXIt
PmFwcGVuZENoaWxkKG92ZXJsYXksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIGlzb2xhdGVkV29ybGQsIChET01X
cmFwcGVyV29ybGQ6OmNyZWF0ZShKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSkpKTsKKyAgICBkb2N1
bWVudCgpLT5lbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoaXNvbGF0ZWRXb3JsZC5nZXQoKSk7
CiAKLSAgICBtX3NuYXBzaG90TGFiZWwgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0g
ICAgbV9zbmFwc2hvdExhYmVsLT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmco
InNuYXBzaG90LWxhYmVsIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBwYWdlLT5tYWluRnJhbWUo
KS0+c2NyaXB0KCk7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0
KGlzb2xhdGVkV29ybGQuZ2V0KCkpKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0gICAgU3RyaW5nIHRpdGxlVGV4dCA9IHNuYXBzaG90
dGVkUGx1Z0luTGFiZWxUaXRsZSgpOwotICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBzbmFwc2hv
dHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpKSB7
Ci0gICAgICAgIFN0cmluZyBjbGllbnRUaXRsZVRleHQgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7Ci0gICAgICAgIGlmICgh
Y2xpZW50VGl0bGVUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHRpdGxlVGV4dCA9IGNsaWVu
dFRpdGxlVGV4dDsKLSAgICAgICAgU3RyaW5nIGNsaWVudFN1YnRpdGxlVGV4dCA9IGRvY3VtZW50
KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUo
KTsKLSAgICAgICAgaWYgKCFjbGllbnRTdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgc3VidGl0bGVUZXh0ID0gY2xpZW50U3VidGl0bGVUZXh0OwotICAgIH0KKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHRpdGxlID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIHRpdGxlLT5zZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyLCBBdG9taWNTdHJpbmcoInNuYXBzaG90LXRpdGxlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwotICAgIHRpdGxlLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHRO
b2RlKHRpdGxlVGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIG1fc25hcHNob3RMYWJl
bC0+YXBwZW5kQ2hpbGQodGl0bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIEpTQzo6TWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKKyAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCwgcm9vdCkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3RyaW5nKGV4ZWMs
IHRpdGxlVGV4dChwYWdlLCBtaW1lVHlwZSkpKTsKKyAgICBhcmdMaXN0LmFwcGVuZChqc1N0cmlu
ZyhleGVjLCBzdWJ0aXRsZVRleHQocGFnZSwgbWltZVR5cGUpKSk7CiAKLSAgICBSZWZQdHI8RWxl
bWVudD4gc3ViVGl0bGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgc3ViVGl0
bGUtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3Qtc3VidGl0
bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgc3ViVGl0bGUt
PmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoc3VidGl0bGVUZXh0KSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7Ci0gICAgbV9zbmFwc2hvdExhYmVsLT5hcHBlbmRDaGlsZChzdWJUaXRsZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7Ci0KLSAgICBjb250YWluZXItPmFwcGVuZENoaWxkKG1fc25h
cHNob3RMYWJlbCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgLy8gSXQgaXMgZXhwZWN0ZWQg
dGhlIEpTIGZpbGUgcHJvdmlkZXMgYSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlLCBz
dWJ0aXRsZSkgZnVuY3Rpb24uCisgICAgSlNDOjpKU09iamVjdCogb3ZlcmxheSA9IGdsb2JhbE9i
amVjdC0+Z2V0KGV4ZWMsIEpTQzo6SWRlbnRpZmllcihleGVjLCAiY3JlYXRlT3ZlcmxheSIpKS50
b09iamVjdChleGVjKTsKKyAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOworICAgIEpTQzo6Q2Fs
bFR5cGUgY2FsbFR5cGUgPSBvdmVybGF5LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvdmVy
bGF5LCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGVOb25lKQor
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBNYWtlIHRoaXMgaW50byBhIGJ1dHRvbiBmb3IgYWNj
ZXNzaWJpbGl0eSBjbGllbnRzLgotICAgIFN0cmluZyBjb21iaW5lZFRleHQgPSB0aXRsZVRleHQ7
Ci0gICAgaWYgKCFjb21iaW5lZFRleHQuaXNFbXB0eSgpICYmICFzdWJ0aXRsZVRleHQuaXNFbXB0
eSgpKQotICAgICAgICBjb21iaW5lZFRleHQuYXBwZW5kKCIgIik7Ci0gICAgY29tYmluZWRUZXh0
LmFwcGVuZChzdWJ0aXRsZVRleHQpOwotICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGFyaWFf
bGFiZWxBdHRyLCBjb21iaW5lZFRleHQpOwotICAgIGNvbnRhaW5lci0+c2V0QXR0cmlidXRlKHJv
bGVBdHRyLCAiYnV0dG9uIik7CisgICAgSlNDOjpKU09iamVjdCogdGhpc09iaiA9IGdsb2JhbE9i
amVjdC0+bWV0aG9kVGFibGUoKS0+dG9UaGlzT2JqZWN0KGdsb2JhbE9iamVjdCwgZXhlYyk7CiAK
LSAgICBtX3NoYWRvd0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKLSAgICByb290LT5hcHBlbmRDaGlsZChtX3NoYWRvd0NvbnRhaW5lciwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisgICAgSlNDOjpjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLWJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cGFydE9mU25hcHNob3RMYWJlbChOb2RlKiBub2RlKQorYm9vbCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoTm9kZSogbm9kZSkKIHsKLSAgICBy
ZXR1cm4gbm9kZSAmJiAobm9kZSA9PSBtX3NuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNE
ZXNjZW5kYW50T2YobV9zbmFwc2hvdExhYmVsLmdldCgpKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIHNlbGVjdG9yLCAoIi5zbmFwc2hvdC1vdmVybGF5IiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIFJlZlB0cjxFbGVtZW50PiBzbmFw
c2hvdExhYmVsID0gZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpLT5xdWVyeVNlbGVjdG9yKHNl
bGVjdG9yLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByZXR1cm4gbm9kZSAmJiBzbmFwc2hv
dExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkgfHwgbm9kZS0+aXNEZXNjZW5k
YW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnN3YXBSZW5kZXJlclRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVu
dD4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRl
eCAyMzQ5ZjQyYzhkNzgzZDgzOGU4Y2JkMTAzNjk4ZmQ5NmRhMGYwZDJiLi44OTczNTI0M2QyODAx
YzZlOWY3NjVhNjI3YWQyOTVmZTgxN2M1NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzdWJmcmFtZUxvYWRlckRpZENyZWF0ZVBsdWdJbihjb25zdCBXaWRnZXQqKTsKIAogICAgIHZv
aWQgc2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4oYm9vbCk7Ci0gICAgYm9vbCBwYXJ0T2ZT
bmFwc2hvdExhYmVsKE5vZGUqKTsKKyAgICBib29sIHBhcnRPZlNuYXBzaG90T3ZlcmxheShOb2Rl
Kik7CiAKICAgICBib29sIG5lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4g
bV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZTsgfQogICAgIHZvaWQgc2V0TmVlZHNDaGVja0ZvclNp
emVDaGFuZ2UoKSB7IG1fbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UgPSB0cnVlOyB9CkBAIC0xNTUs
OCArMTU1LDYgQEAgcHJpdmF0ZToKICAgICBUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50PiBt
X3N3YXBSZW5kZXJlclRpbWVyOwogICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+IG1f
cmVtb3ZlU25hcHNob3RUaW1lcjsKICAgICBSZWZQdHI8SW1hZ2U+IG1fc25hcHNob3RJbWFnZTsK
LSAgICBSZWZQdHI8RWxlbWVudD4gbV9zaGFkb3dDb250YWluZXI7Ci0gICAgUmVmUHRyPEVsZW1l
bnQ+IG1fc25hcHNob3RMYWJlbDsKICAgICBib29sIG1fY3JlYXRlZER1cmluZ1VzZXJHZXN0dXJl
OwogICAgIGJvb2wgbV9pc1Jlc3RhcnRlZFBsdWdpbjsKICAgICBib29sIG1fbmVlZHNDaGVja0Zv
clNpemVDaGFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAppbmRleCBjNmMxZTdkNjc0
NzRlODdkMWQ5N2UyOTQzODMwMWJjYmFhYTAwODMzLi4wYTg0Y2E1MzQyNzMwNTFkYzFlYjFjYzc4
YjBjOGM5YWM0ZTNkYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw5
ICszNjksMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHlDaHJvbWVDbGll
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0lu
U3RhcnRMYWJlbFRpdGxlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmco
KTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJldHVybiBTdHJp
bmcoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCB7IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7IHJldHVy
biBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0
cmFTY3JpcHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgLy8gRklYTUU6IFBv
cnQgc2hvdWxkIHJldHVybiB0cnVlIHVzaW5nIGhldXJpc3RpYyBiYXNlZCBvbiBzY3JvbGxhYmxl
KFJlbmRlckJveCkuCiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5k
RHJvcChSZW5kZXJCb3gqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggNzU5
ODMwYWEwNGM1MDQzYzQ0NmRlNzVmYTdiZDE1YjM0NjAxYjZiNS4uM2M2YTIzYzEyMTIxMmNlMWEw
N2ViMWIwMmNlYjNiOTYzODM4NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNzMsOSArMTczLDkgQEAgdm9p
ZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogCiAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgfHwgKG1faXNQ
b3RlbnRpYWxNb3VzZUFjdGl2YXRpb24gJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2V1cEV2ZW50KSkgewogICAgICAgICBtX2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uID0g
ZmFsc2U7Ci0gICAgICAgIGJvb2wgY2xpY2tXYXNPbkxhYmVsID0gcGx1Z0luSW1hZ2VFbGVtZW50
KCktPnBhcnRPZlNuYXBzaG90TGFiZWwoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7Ci0gICAg
ICAgIHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbkxhYmVs
ID8gSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcgOiBIVE1MUGx1Z0luRWxlbWVudDo6UmVz
dGFydGluZ1dpdGhQZW5kaW5nTW91c2VDbGljayk7Ci0gICAgICAgIHBsdWdJbkltYWdlRWxlbWVu
dCgpLT51c2VyRGlkQ2xpY2tTbmFwc2hvdChtb3VzZUV2ZW50LCAhY2xpY2tXYXNPbkxhYmVsKTsK
KyAgICAgICAgYm9vbCBjbGlja1dhc09uT3ZlcmxheSA9IHBsdWdJbkltYWdlRWxlbWVudCgpLT5w
YXJ0T2ZTbmFwc2hvdE92ZXJsYXkoZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSk7CisgICAgICAg
IHBsdWdJbkltYWdlRWxlbWVudCgpLT5zZXREaXNwbGF5U3RhdGUoY2xpY2tXYXNPbk92ZXJsYXkg
PyBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0
YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKKyAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50
KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsICFjbGlja1dhc09uT3ZlcmxheSk7
CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0gZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKICAgICAgICAgbV9p
c1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
aAppbmRleCAzODcyOWIyNGE0YzJjNzAwMzFiZWJmNThiYWViY2Y3MjM3MmE4NGI4Li40NTZkNTU1
ZGFiOTZiZjIyM2ZmYTBlMThiOGM0MDdjNGIzZmJmZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmgKQEAgLTI1MCw5ICsyNTAsMTAgQEAgdHlwZWRlZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRW
aXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlTWVudUJhcklzVmlzaWJsZUNhbGxiYWNrKSgKIHR5cGVk
ZWYgV0tCdW5kbGVQYWdlVUlFbGVtZW50VmlzaWJpbGl0eSAoKldLQnVuZGxlUGFnZVRvb2xiYXJz
QXJlVmlzaWJsZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VSZWFjaGVkQXBwQ2FjaGVPcmln
aW5RdW90YUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1cml0eU9yaWdpblJl
ZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIHVpbnQ2NF90ICgqV0tCdW5kbGVQYWdlRXhjZWVkZWREYXRhYmFzZVF1b3Rh
Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdp
biwgV0tTdHJpbmdSZWYgZGF0YWJhc2VOYW1lLCBXS1N0cmluZ1JlZiBkYXRhYmFzZURpc3BsYXlO
YW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVudE9yaWdpblVz
YWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2NF90IGV4
cGVjdGVkVXNhZ2VCeXRlcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3Ry
aW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJhY2sp
KGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxl
UGFnZVBsdWdJbkNyZWF0ZVN0YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrKShjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVh
dGVTdGFydExhYmVsVGl0bGVDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJ
bkNyZWF0ZVN0YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtaW1lVHlwZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQ
YWdlUGx1Z0luQ3JlYXRlRXh0cmFTdHlsZVNoZWV0Q2FsbGJhY2spKGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4
dHJhU2NyaXB0Q2FsbGJhY2spKGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tC
dW5kbGVQYWdlVUlDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKQEAgLTI4MCw2ICsy
ODEsNyBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgewogICAgIFdLQnVuZGxlUGFnZVBs
dWdJbkNyZWF0ZVN0YXJ0TGFiZWxUaXRsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlOwogICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZVN0
YXJ0TGFiZWxTdWJ0aXRsZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0luU3Rh
cnRMYWJlbFN1YnRpdGxlOwogICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU3R5bGVT
aGVldENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0luRXh0cmFTdHlsZVNo
ZWV0OworICAgIFdLQnVuZGxlUGFnZVBsdWdJbkNyZWF0ZUV4dHJhU2NyaXB0Q2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUGx1Z0luRXh0cmFTY3JpcHQ7CiB9OwogdHlwZWRl
ZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgV0tCdW5kbGVQYWdlVUlDbGllbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKaW5kZXggYjZhZjY0MmQ2
ODc2YTkxMzc1ODIyZTlhOWZlYjQxZDYwYTczYzRlNC4uOGU5YzgwMmQwMWE1ZTY0NTgyY2ExNTM2
MzNiYTVmZjgxZTY5MjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNs
aWVudC5jcHAKQEAgLTE2MywyMSArMTYzLDIxIEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50OjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2UqIHBhZ2UsIFdlYlNlCiAg
ICAgcmV0dXJuIG1fY2xpZW50LmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEodG9BUEkocGFnZSksIHRv
QVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFzZURp
c3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YUJ5dGVzLCBjdXJyZW50T3JpZ2luVXNhZ2VC
eXRlcywgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgZXhwZWN0ZWRVc2FnZUJ5dGVzLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKIH0KIAotU3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdAorU3RyaW5nIEluamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
Y29uc3QKIHsKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBsdWdJblN0YXJ0TGFiZWxUaXRsZSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUmVmUHRyPFdlYlN0cmluZz4gdGl0bGUg
PSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1f
Y2xpZW50LmNsaWVudEluZm8pKSk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gdGl0bGUgPSBhZG9w
dFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxlKHRvQVBJKG1p
bWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmNsaWVudEluZm8pKSk7CiAgICAgcmV0dXJuIHRpdGxl
ID8gdGl0bGUtPnN0cmluZygpIDogU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29uc3QKK1N0cmluZyBJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQbHVn
SW5TdGFydExhYmVsU3VidGl0bGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIFJl
ZlB0cjxXZWJTdHJpbmc+IHN1YnRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0
ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShtX2NsaWVudC5jbGllbnRJbmZvKSkpOworICAgIFJl
ZlB0cjxXZWJTdHJpbmc+IHN1YnRpdGxlID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0
ZVBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSh0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKSkpOwogICAgIHJldHVybiBzdWJ0aXRsZSA/IHN1YnRpdGxlLT5zdHJpbmco
KSA6IFN0cmluZygpOwogfQogCkBAIC0xOTAsNCArMTkwLDEzIEBAIFN0cmluZyBJbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKICAgICByZXR1
cm4gc3R5bGVTaGVldCA/IHN0eWxlU2hlZXQtPnN0cmluZygpIDogU3RyaW5nKCk7CiB9CiAKK1N0
cmluZyBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudDo6cGx1Z0luRXh0cmFTY3JpcHQoKSBjb25z
dAoreworICAgIGlmICghbV9jbGllbnQuY3JlYXRlUGx1Z0luRXh0cmFTY3JpcHQpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIFJlZlB0cjxXZWJTdHJpbmc+IHNjcmlwdCA9IGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5FeHRyYVNjcmlwdChtX2NsaWVudC5jbGll
bnRJbmZvKSkpOworICAgIHJldHVybiBzY3JpcHQgPyBzY3JpcHQtPnN0cmluZygpIDogU3RyaW5n
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oCmluZGV4IGFkOGZlMjRkMjE1MzNhNDZhNzQ5ZTcyNWNmMGNmYTEzZDg0
ZWI2ZjEuLjQyM2U3NDBhNzVmNmQ0YWY4OTcyNWNhZTJiNmM1M2M2MGQzZThhNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmgKQEAgLTcwLDkgKzcwLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdlYlBh
Z2UqLCBXZWJTZWN1cml0eU9yaWdpbiosIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCk7CiAgICAg
dWludDY0X3QgZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXZWJQYWdlKiwgV2ViU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURp
c3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGFCeXRlcywgdWludDY0X3QgY3VycmVudE9y
aWdpblVzYWdlQnl0ZXMsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2VCeXRlcyk7CiAKLSAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRp
dGxlKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0
OworICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgY29uc3Q7CisgICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdDsKICAgICBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkg
Y29uc3Q7CisgICAgU3RyaW5nIHBsdWdJbkV4dHJhU2NyaXB0KCkgY29uc3Q7CiAKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA2MmI3ODU2YWNmNDgwYmEyNmE3MWU2MzY4NTk3MTFk
YTFlNDUxMjQ1Li44YzU2MjUwNTBlZjU4ODRiYTRkZjM3MDgzYmQ4YzVjMjQwNzJlNzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC04MjQsMTQgKzgyNCwxNCBAQCB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYWdlLCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwg
c3VjY2Vzcyk7CiB9CiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxU
aXRsZSgpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0
bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRpdGxlKCk7CisgICAgcmV0
dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJblN0YXJ0TGFiZWxUaXRs
ZShtaW1lVHlwZSk7CiB9CiAKLVN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFi
ZWxTdWJ0aXRsZSgpIGNvbnN0CitTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExh
YmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxl
KCk7CisgICAgcmV0dXJuIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLnBsdWdJblN0
YXJ0TGFiZWxTdWJ0aXRsZShtaW1lVHlwZSk7CiB9CiAKIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6
OnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0CkBAIC04MzksNCArODM5LDkgQEAgU3RyaW5n
IFdlYkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luRXh0cmFTdHlsZVNoZWV0
KCk7CiB9CiAKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJbkV4dHJhU2NyaXB0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0lu
RXh0cmFTY3JpcHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBkNDVmMTgyZmE2MWJhMTk4NzVkNjg0ODYzMWE3ZjZmYTMxMzhjYTUwLi5kZDY5
YjY2Y2RmNWVjNGI1ZGExZWU5MTI0NTY3MzNhY2I2MDAyZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKQEAgLTIxOSw5ICsyMTksMTAgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3VjY2VzcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExhYmVsVGl0bGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJl
bFN1YnRpdGxlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIHBsdWdJbkV4dHJhU2NyaXB0KCkgY29uc3QgT1ZFUlJJREU7CiAKICAg
ICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBt
X2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDg5MzdjMzZjZGJlOGE4NTM4MzljMjczZmY4N2M1YjZl
MmI4OWIwODIuLjBmZDJlZDhkZTEzOGQ2NDFiYWY0ZTQwNTgwZjQ0MzYxZmVmYzg3MjAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMy0wNS0wNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisg
ICAgICAgIE1hbmFnZSB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWlu
IHVzaW5nIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKwor
ICAgICAgICBUYWtlIGludG8gYWNjb3VudCB0aGUgbmV3IHBsdWdJbkV4dHJhU2NyaXB0IG1ldGhv
ZCBhZGRlZCB0byBzdXBwb3J0CisgICAgICAgIHRoZSBpbmplY3Rpb24gb2YgYSBKUyBmaWxlIGZy
b20gdGhlIGNocm9tZSBjbGllbnQgdG8gY3VzdG9taXplIHRoZQorICAgICAgICByZW5kZXJpbmcg
b2YgYSBzbmFwc2hvdHRlZCBwbHVnLWluJ3Mgc2hhZG93IHRyZWUuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKwogMjAx
My0wNS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjE0ODMxMik6IENyYXNoIHdoZW4gY2FsbGluZyBXS1BhZ2VDbG9zZShwYWdlKSBmb2xsb3dl
ZCBieSBXS1BhZ2VUZXJtaW5hdGUocGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAy
MzNmZThhNDNjYjc5ZTViMGU5Yjg3NzhmM2UxNTVlNTgyMDgyYTIyLi5lMDQyMDM4N2VhOTI4ZTNk
MDU0MzVkMGM4ZWY2Nzk2MGRkMDEzNmNmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC0z
NzIsNiArMzcyLDcgQEAgSW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgICAgIDAsIC8qcGx1Z0luU3RhcnRMYWJlbFRpdGxlKi8K
ICAgICAgICAgMCwgLypwbHVnSW5TdGFydExhYmVsU3VidGl0bGUqLwogICAgICAgICAwLCAvKnBs
dWdJbkV4dHJhU3R5bGVTaGVldCovCisgICAgICAgIDAsIC8qcGx1Z0luRXh0cmFTY3JpcHQqLwog
ICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQobV9wYWdlLCAmdWlDbGllbnQpOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200638</attachid>
            <date>2013-05-06 00:37:30 -0700</date>
            <delta_ts>2013-05-06 01:24:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-115548-20130506093636.patch</filename>
            <type>text/plain</type>
            <size>38792</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFmNzJkNDMwOThmMThj
YzU5OGYxODE2ZmZkNGY2ODVkZWFkYWU4My4uMWI1ZjcyNTFjNjQzMDM4ZWFkZjMyYzNkNTNmMjYy
YzY3YjZkNGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEzLTA1LTA2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFuYWdlIHRoZSBwcmVz
ZW50YXRpb24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4gdXNpbmcgSmF2YVNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogUmVzb3VyY2VzL3Bs
dWdJbnMuanM6CisgICAgICAgIChjcmVhdGVPdmVybGF5KToKKyAgICAgICAgSW1wbGVtZW50IHRo
ZSBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KSBtZXRo
b2QKKyAgICAgICAgdGhhdCBpcyBjYWxsZWQgZnJvbSBXZWJDb3JlIChIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KQorICAgICAgICB0byBhbGxvdyB0aGUg
aW5qZWN0ZWQgc2NyaXB0IHRvIGN1c3RvbWl6ZSB0aGUgc2hhZG93IHJvb3QgZm9yIGEgc25hcHNo
b3R0ZWQKKyAgICAgICAgcGx1Zy1pbi4gVGhpcyBpcyBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24s
IGNsaWVudHMgYXJlIGV4cGVjdGVkIHRvIGN1c3RvbWl6ZQorICAgICAgICB0aGlzIGJ5IHByb3Zp
ZGluZyB0aGVpciBvd24gSlMgZmlsZSB3aXRoIGVuaGFuY2VkIGJlaGF2aW9yLgorCisgICAgICAg
ICogY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NE
ZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVsZW1lbnQpOgor
ICAgICAgICBTaW5jZSB3ZSBubyBsb25nZXIgaGF2ZSBhIGRlZmF1bHQgc2hhZG93IHRyZWUgZ2Vu
ZXJhdGVkIGluIEMrKywgaXQgbWFrZXMgbGl0dGxlCisgICAgICAgIHNlbnNlIGZvciBjbGllbnRz
IHRvIGV4dGVuZCB0aGUgZGVmYXVsdCBzbmFwc2hvdHRlZCBwbHVnLWluIHN0eWxlc2hlZXQsIHNv
IHdlCisgICAgICAgIG9ubHkgaW5zZXJ0IGl0IGlmIG5vIGN1c3RvbSBvbmUgaXMgcHJvdmlkZWQg
YnkgdGhlIGNocm9tZSBjbGllbnQuCisKKyAgICAgICAgKiBjc3MvcGx1Z0lucy5jc3M6CisgICAg
ICAgIEJldHRlciBzdHlsaW5nIG9mIHRoZSBkZWZhdWx0IHNuYXBzaG90dGVkIHBsdWctaW4gb3Zl
cmxheSBsb29rIGJ5IHVzaW5nIENTUworICAgICAgICBmbGV4IGJveGVzLiBBbHNvIHVzaW5nIG1v
cmUgZXhwbGljaXQgc2VsZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVQbHVnSW5z
SW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICBFeHBvc2UgYSBuZXcgbWV0aG9kIHRvIGFsbG93IEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQgaW5zdGFuY2VzIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIHRo
ZSBKYXZhU2NyaXB0IGNvZGUgcmVxdWlyZWQgdG8gY3VzdG9taXplIHRoZSBzbmFwc2hvdHRlZCBw
bHVnLWluJ3Mgc2hhZG93IHJvb3QKKyAgICAgICAgaXMgaW5kZWVkIGluamVjdGVkIGluIHRoZSBj
dXJyZW50IGRvY3VtZW50LiBUaGUgYWN0dWFsIGluamVjdGlvbiB3b3VsZCBvbmx5CisgICAgICAg
IGhhcHBlbiBvbmNlIHBlciBkb2N1bWVudCBzbyBhbGwgc25hcHNob3R0ZWQgcGx1Zy1pbnMgc2hh
cmUgdGhlIHNhbWUgc2NyaXB0aW5nCisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgRXhwb3NlIHRoZSBuZXcgZW5zdXJlUGx1Z0luc0luamVjdGVk
U2NyaXB0IG1ldGhvZCBhbmQgdGhlIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0CisgICAgICAg
IHByb3BlcnR5IHVzZWQgdG8gZW5zdXJlIGluamVjdGlvbiBoYXBwZW5zIG9ubHkgb25jZSBwZXIg
ZG9jdW1lbnQuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGl0bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1YnRpdGxl
VGV4dCk6CisgICAgICAgIFN0b3JlIHRoZSBsb2NhbGl6ZWQgc3RyaW5ncyBmb3IgZWFjaCBtaW1l
LXR5cGUgaW4gYSBzdGF0aWMgaGFzaCBtYXAgYXMgaXQgY2FuIGJlCisgICAgICAgIGNvc3RseSB0
byByZXRyaWV2ZSB0aGVtIGVhY2ggdGltZSBmcm9tIHRoZSBjbGllbnQuIEl0IGlzIGV4cGVjdGVk
IHRoZSBjaHJvbWUgY2xpZW50CisgICAgICAgIHdpbGwgd2FudCB0byBwcm92aWRlIGxvY2FsaXpl
ZCBzdHJpbmdzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4ncwor
ICAgICAgICBtaW1lLXR5cGUsIHNvIHdlJ3JlIGFkZGluZyB0aGlzIGFzIGEgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTbmFwc2hvdFN0
YXR1cyk6CisgICAgICAgIERpc3BhdGNoIGEgInJlc2l6ZSIgZXZlbnQgdG8gdGhlIHNoYWRvdyBy
b290IHRvIG5vdGlmeSB0aGUgaW5qZWN0ZWQgc2NyaXB0IHRoYXQgdGhlCisgICAgICAgIHNuYXBz
aG90dGVkIHBsdWctaW4ncyBtZXRyaWNzIGhhdmUgY2hhbmdlZCBhbmQgdG8gYWxsb3cgdGhlIG92
ZXJsYXkgdG8gdXBkYXRlIGl0c2VsZgorICAgICAgICBhcyBhIHJlc3VsdC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qp
OgorICAgICAgICBSZW1vdmUgYWxsIHRoZSBET00gZ2VuZXJhdGlvbiBjb2RlIGluIGZhdm9yIG9m
IGFuIGFwcHJvYWNoIHdoZXJlIHdlIGNyZWF0ZSBhIHNoYXJlZAorICAgICAgICBET00gc2NyaXB0
aW5nIHdvcmxkIGluIHdoaWNoIHdlIGluamVjdCBKYXZhU2NyaXB0IGNvZGUgdGhhdCB3aWxsIHBl
cmZvcm0gdGhlIHNhbWUKKyAgICAgICAgdGFzayBidXQgd2lsbCBhZGRpdGlvbmFsbHkgYmUgcHJv
dmlkZWQgYnkgdGhlIGNsaWVudCBpbiBvcmRlciB0byBwcm92aWRlIGEgY29tcGxldGVseQorICAg
ICAgICBjdXN0b20gb3ZlcmxheSBmb3IgdGhlIHNuYXBzaG90dGVkIHBsdWctaW4uIFRoZSBzb2xl
IGNvbnRyYWN0IGlzIGZvciB0aGUgSmF2YVNjcmlwdAorICAgICAgICB0byBpbXBsZW1lbnQgYSBj
cmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxlVGV4dCwgc3VidGl0bGVUZXh0KSBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hv
dE92ZXJsYXkpOgorICAgICAgICBSZW5hbWVkIG1ldGhvZCB0byBiZSBnZW5lcmljIHRvIHRoZSBv
dmVybGF5IGFzIG9wcG9zZWQgdG8gdGV4dCBsYWJlbHMgYW5kIHVzZSB0aGUKKyAgICAgICAgZWxl
bWVudCB3aXRoIENTUyBjbGFzcyBuYW1lICJzbmFwc2hvdC1vdmVybGF5IiBhcyB0aGUgY29tcGFy
aXNvbiBub2RlLgorCisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg6Cisg
ICAgICAgIChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KToKKyAgICAgICAgUmVtb3ZpbmcgYSBjb3Vw
bGUgb2YgdW51c2VkIG1lbWJlcnMgc2luY2Ugd2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHRoZSBzaGFk
b3cgRE9NIGZyb20gQysrCisgICAgICAgIGFuZCByZW5hbWUgdGhlIHBhcnRPZlNuYXBzaG90TGFi
ZWwgbWV0aG9kIHRvIHBhcnRPZlNuYXBzaG90T3ZlcmxheS4KKworICAgICAgICAqIHBhZ2UvQ2hy
b21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxTdWJ0aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnBsdWdJbkV4
dHJhU2NyaXB0KToKKyAgICAgICAgUGFzcyBpbiB0aGUgbWltZS10eXBlIHRvIHBsdWdJblN0YXJ0
TGFiZWxUaXRsZSBhbmQgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlIGFuZCBleHBvc2UKKyAgICAg
ICAgYSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQgbWV0aG9kIHRvIGFsbG93IHRoZSBjaHJvbWUgY2xp
ZW50IHRvIHByb3ZpZGUgYSBjdXN0b20gSlMgZmlsZQorICAgICAgICBmb3IgdGhlIG1hbmFnZW1l
bnQgb2YgdGhlIHNoYWRvdyByb290LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpoYW5kbGVFdmVudCk6CisgICAgICAgIFVwZGF0ZSB0aGUgdGVybWlub2xvZ3kgZnJvbSAi
bGFiZWwiIHRvICJvdmVybGF5IiBwZXIgdGhlIGNoYW5nZXMgbWFkZSBpbiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LgorCiAyMDEzLTA1LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFZlY3Rvcjo6cHJlcGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDky
NzUxYmJkODMyMjI0M2M0ODg3YjZlZmJjZTk1ZTU1NjU0YjcxZTAuLjc4MTcxMWUyNDUxMTU3N2Jm
NzBlMmE0NzExZjFiYTg4ZWE3YjBjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAx
My0wNS0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIE1h
bmFnZSB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluIHVzaW5nIEph
dmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBF
eHBvc2UgYSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQgbWV0aG9kIHRvIHN1cHBvcnQgdGhlIGluamVj
dGlvbiBvZgorICAgICAgICBhIEpTIGZpbGUgZnJvbSB0aGUgY2hyb21lIGNsaWVudCB0byBjdXN0
b21pemUgdGhlIHJlbmRlcmluZyBvZiBhCisgICAgICAgIHNuYXBzaG90dGVkIHBsdWctaW4ncyBz
aGFkb3cgdHJlZS4gQWRkaXRpb25hbGx5LCBpdCBpcyBleHBlY3RlZAorICAgICAgICB0aGUgY2hy
b21lIGNsaWVudCB3aWxsIHdhbnQgdG8gcHJvdmlkZSBsb2NhbGl6ZWQgc3RyaW5ncyB0YWtpbmcK
KyAgICAgICAgaW50byBhY2NvdW50IHRoZSBzbmFwc2hvdHRlZCBwbHVnLWluJ3MgbWltZS10eXBl
LCBzbyB3ZSdyZSBhZGRpbmcKKyAgICAgICAgdGhpcyBhcyBhIHBhcmFtZXRlciB0byBib3RoIHBs
dWdJblN0YXJ0TGFiZWxUaXRsZSBhbmQKKyAgICAgICAgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxl
IG1ldGhvZHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlVUlDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudDo6cGx1Z0luU3RhcnRMYWJlbFRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVNj
cmlwdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VVSUNsaWVudC5oOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsVGl0bGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxTdWJ0
aXRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTY3Jp
cHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQpOgorCiAyMDEzLTA1LTA1ICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgV0VCIFNQRUVDSDogZGVueSBm
aWxlLXJlYWQtZGF0YSAvTGlicmFyeS9TcGVlY2gvU3ludGhlc2l6ZXJzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGx1Z0lucy5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291
cmNlcy9wbHVnSW5zLmpzCmluZGV4IGQ0YmQ2ZDVmOTJmM2FmYmI3YjY4NmFhYTgyY2I1ZmFhZGMx
ZDdhMDQuLjg2NDE5M2Y3OWM4MWEyYWUzM2Y3NzhlNTliMmZlN2JmZGZjMDc2OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wbHVnSW5zLmpzCkBAIC0xLDMgKzEsMzYgQEAKIAotLy8gRklYTUU6IEZp
bGwgdXAgd2l0aCB1c2VmdWwgY29kZSBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTE1NTQ4Lgot
dW5kZWZpbmVkOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKy8vIEZ1bmN0aW9uIGNhbGxl
ZCBmcm9tIFdlYkNvcmUuCitmdW5jdGlvbiBjcmVhdGVPdmVybGF5KHNoYWRvd1Jvb3QsIHRpdGxl
VGV4dCwgc3VidGl0bGVUZXh0KQoreworICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgc3Ry
dWN0dXJlOgorICAgIC8vCisgICAgLy8gPGRpdiBwc2V1ZG89Ii13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQiPgorICAgIC8vICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1vdmVybGF5
IiBhcmlhLWxhYmVsPSJbVGl0bGVdOiBbU3VidGl0bGVdIiByb2xlPSJidXR0b24iPgorICAgIC8v
ICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgorICAgIC8vICAgICAgICAgICAg
IDxkaXYgY2xhc3M9InNuYXBzaG90LXRpdGxlIj5bVGl0bGVdPC9kaXY+CisgICAgLy8gICAgICAg
ICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qtc3VidGl0bGUiPltTdWJ0aXRsZV08L2Rpdj4KKyAg
ICAvLyAgICAgICAgIDwvZGl2PgorICAgIC8vICAgICA8L2Rpdj4KKyAgICAvLyA8L2Rpdj4KKwor
ICAgIHZhciBzaGFkb3dDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBzaGFkb3dDb250YWluZXIuc2V0QXR0cmlidXRlKCJwc2V1ZG8iLCAiLXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudCIpOworCisgICAgdmFyIG92ZXJsYXkgPSBzaGFkb3dDb250
YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIG92
ZXJsYXkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgdGl0bGVUZXh0ICsgIjogIiArIHN1YnRp
dGxlVGV4dCk7CisgICAgb3ZlcmxheS5zZXRBdHRyaWJ1dGUoInJvbGUiLCAiYnV0dG9uIik7Cisg
ICAgb3ZlcmxheS5jbGFzc05hbWUgPSAic25hcHNob3Qtb3ZlcmxheSI7CisKKyAgICB2YXIgc25h
cHNob3RMYWJlbCA9IG92ZXJsYXkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworICAgIHNuYXBzaG90TGFiZWwuY2xhc3NOYW1lID0gInNuYXBzaG90LWxhYmVsIjsK
KworICAgIHZhciB0aXRsZSA9IHNuYXBzaG90TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2IikpOworICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJzbmFwc2hvdC10aXRs
ZSI7CisgICAgdGl0bGUudGV4dENvbnRlbnQgPSB0aXRsZVRleHQ7CisKKyAgICB2YXIgc3VidGl0
bGUgPSBzbmFwc2hvdExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpKTsKKyAgICBzdWJ0aXRsZS5jbGFzc05hbWUgPSAic25hcHNob3Qtc3VidGl0bGUiOworICAg
IHN1YnRpdGxlLnRleHRDb250ZW50ID0gc3VidGl0bGVUZXh0OworCisgICAgc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChzaGFkb3dDb250YWluZXIpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKaW5kZXggYjNiYTViODk4ZTk2YzRjMzliYTdiYjY5YjE2
NTBiMGNmZjllYTA1Mi4uM2M5YzMyN2RhOTQ1Y2U4NzYzYTRjZThjNjY1MjIwNzkwMTAwNjBlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHAKQEAgLTIw
MSw3ICsyMDEsOSBAQCB2b2lkIENTU0RlZmF1bHRTdHlsZVNoZWV0czo6ZW5zdXJlRGVmYXVsdFN0
eWxlU2hlZXRzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LAogI2VuZGlmCiAKICAgICBpZiAo
IXBsdWdJbnNTdHlsZVNoZWV0ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykpKSB7Ci0gICAgICAgIFN0cmluZyBwbHVnSW5z
UnVsZXMgPSBTdHJpbmcocGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5z
VXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5leHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50
LT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTdHls
ZVNoZWV0KCk7CisgICAgICAgIFN0cmluZyBwbHVnSW5zUnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhl
bWVGb3JQYWdlKGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSktPmV4dHJhUGx1Z0luc1N0eWxl
U2hlZXQoKSArIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgp
LT5wbHVnSW5FeHRyYVN0eWxlU2hlZXQoKTsKKyAgICAgICAgaWYgKHBsdWdJbnNSdWxlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBwbHVnSW5zUnVsZXMgPSBTdHJpbmcocGx1Z0luc1VzZXJBZ2Vu
dFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAg
ICBwbHVnSW5zU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChwbHVnSW5zUnVsZXMpOwogICAgICAg
ICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHBsdWdJbnNTdHlsZVNoZWV0LCBzY3Jl
ZW5FdmFsKCkpOwogICAgICAgICBjaGFuZ2VkRGVmYXVsdFN0eWxlID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wbHVnSW5zLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
bHVnSW5zLmNzcwppbmRleCBmZTMxODhhZTA4N2Y1MWZmNzIzMTE4ZDA2ZWFkZTdlYjdiMzJiNjhk
Li4zOTMyMThmMzgwYzNkZjAwMmQ2OTg3MGYxYTZkYzYzYjRiYWYzODg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGx1Z0lucy5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bs
dWdJbnMuY3NzCkBAIC0yOSwyMCArMjksMTkgQEAKICAqIHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1
Y3R1cmU6CiAgKgogICogPG9iamVjdD4KLSAqICAgI1NoYWRvd1Jvb3QKLSAqICAgICA8ZGl2IGNs
YXNzPSJzbmFwc2hvdC1jb250YWluZXIiPgotICogICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3Qt
b3ZlcmxheSI+PC9kaXY+IDwhLS0gZS5nLiBmb3IgZGltbWluZyBjb250ZW50IC0tPgotICogICAg
ICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1sYWJlbCI+Ci0gKiAgICAgICAgICAgPGRpdiBjbGFz
cz0ic25hcHNob3QtdGl0bGUiPlNuYXBzaG90dGVkIFBsdWctSW48L2Rpdj4KLSAqICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRsZSI+Q2xpY2sgdG8gcmVzdGFydDwvZGl2Pgor
ICogICAgICNTaGFkb3dSb290CisgKiAgICAgICAgIDxkaXYgcHNldWRvPSItd2Via2l0LXNuYXBz
aG90dGVkLXBsdWdpbi1jb250ZW50Ij4KKyAqICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNuYXBz
aG90LW92ZXJsYXkiIGFyaWEtbGFiZWw9IltUaXRsZV06IFtTdWJ0aXRsZV0iIHJvbGU9ImJ1dHRv
biI+CisgKiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic25hcHNob3QtbGFiZWwiPgorICog
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC10aXRsZSI+W1RpdGxlXTwv
ZGl2PgorICogICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzbmFwc2hvdC1zdWJ0aXRs
ZSI+W1N1YnRpdGxlXTwvZGl2PgorICogICAgICAgICAgICAgICAgIDwvZGl2PgorICogICAgICAg
ICAgICAgPC9kaXY+CiAgKiAgICAgICAgIDwvZGl2PgotICogICAgICAgPC9kaXY+Ci0gKiAgICAg
PC9kaXY+Ci0gKgogICovCiAKLW9iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29u
dGVudCwKLWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50CitlbWJlZDo6
LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCwKK29iamVjdDo6LXdlYmtpdC1zbmFw
c2hvdHRlZC1wbHVnaW4tY29udGVudAogewogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CkBAIC01MCw0MSArNDksNDQgQEAgZW1iZWQ6Oi13ZWJraXQt
c25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQKICAgICBoZWlnaHQ6IDEwMCU7CiB9CiAKLW9iamVj
dDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVy
LAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNv
bnRhaW5lcgorZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25h
cHNob3Qtb3ZlcmxheSwKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVu
dCA+IC5zbmFwc2hvdC1vdmVybGF5CiB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHdp
ZHRoOiAxMDAlOwotICAgIGhlaWdodDogMTAwJTsKKyAgICB0b3A6IDVweDsKKyAgICByaWdodDog
NXB4OworICAgIGJvdHRvbTogNXB4OworICAgIGxlZnQ6IDVweDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOworICAgIGN1cnNvcjogcG9pbnRlcjsKKyAg
ICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNl
bnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiB9CiAKLW9iamVjdDo6LXdl
YmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCAuc25hcHNob3QtY29udGFpbmVyIC5zbmFw
c2hvdC1vdmVybGF5LAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQg
LnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3Qtb3ZlcmxheQorZW1iZWQ6Oi13ZWJraXQtc25h
cHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1s
YWJlbCwKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5zbmFw
c2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxhYmVsCiB7Ci0gICAgZGlzcGxheTogbm9uZTsKKyAg
ICBjb2xvcjogYmxhY2s7CisgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKIH0KIAotb2Jq
ZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250YWlu
ZXIgLnNuYXBzaG90LWxhYmVsLAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNv
bnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwKK2VtYmVkOjotd2Via2l0
LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJsYXkgPiAuc25hcHNo
b3QtbGFiZWwgPiBkaXYsCitvYmplY3Q6Oi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRl
bnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hvdC1sYWJlbCA+IGRpdgogewotICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAgICBjb2xv
cjogYmxhY2s7Ci0gICAgbWFyZ2luOiAxZW07Ci0gICAgcGFkZGluZzogMC4yNWVtIDJlbTsKLSAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotICAgIC13ZWJraXQt
dXNlci1zZWxlY3Q6IG5vbmU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB3aGl0ZS1zcGFj
ZTogbm93cmFwOworICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogfQogCi1vYmplY3Q6Oi13
ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25h
cHNob3QtbGFiZWwgLnNuYXBzaG90LXRpdGxlLAotZW1iZWQ6Oi13ZWJraXQtc25hcHNob3R0ZWQt
cGx1Z2luLWNvbnRlbnQgLnNuYXBzaG90LWNvbnRhaW5lciAuc25hcHNob3QtbGFiZWwgLnNuYXBz
aG90LXRpdGxlCitlbWJlZDo6LXdlYmtpdC1zbmFwc2hvdHRlZC1wbHVnaW4tY29udGVudCA+IC5z
bmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxhYmVsID4gLnNuYXBzaG90LXRpdGxlLAorb2Jq
ZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50ID4gLnNuYXBzaG90LW92ZXJs
YXkgPiAuc25hcHNob3QtbGFiZWwgPiAuc25hcHNob3QtdGl0bGUKIHsKICAgICBmb250LXdlaWdo
dDogYm9sZDsKIH0KIAotb2JqZWN0Ojotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50
IC5zbmFwc2hvdC1jb250YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC1zdWJ0aXRsZSwK
LWVtYmVkOjotd2Via2l0LXNuYXBzaG90dGVkLXBsdWdpbi1jb250ZW50IC5zbmFwc2hvdC1jb250
YWluZXIgLnNuYXBzaG90LWxhYmVsIC5zbmFwc2hvdC1zdWJ0aXRsZQorZW1iZWQ6Oi13ZWJraXQt
c25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQgPiAuc25hcHNob3Qtb3ZlcmxheSA+IC5zbmFwc2hv
dC1sYWJlbCA+IC5zbmFwc2hvdC1zdWJ0aXRsZSwKK29iamVjdDo6LXdlYmtpdC1zbmFwc2hvdHRl
ZC1wbHVnaW4tY29udGVudCA+IC5zbmFwc2hvdC1vdmVybGF5ID4gLnNuYXBzaG90LWxhYmVsID4g
LnNuYXBzaG90LXN1YnRpdGxlCiB7CiAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgIGNvbG9y
OiAjNDQ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZGZjNDY1NGYyZWVmMWYxYjUzNmM1
Yzc5ZWFjMWE3ZDFkODA4NDBhOC4uMzVkODkyNTA4NDM3MGM2NThhZWJlZDcxZjNlMjJmMjMyMzAx
MjgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNs
dWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKKyNpbmNsdWRlICJQbHVnSW5zUmVz
b3VyY2VzLmgiCiAjaW5jbHVkZSAiUGx1Z2luRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQb2ludGVy
TG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmgiCkBAIC0xNDksNiAr
MTUwLDggQEAKICNpbmNsdWRlICJTY3JpcHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZl
bnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgorI2luY2x1ZGUgIlNjcmlw
dFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZWN1cml0eVBvbGljeS5oIgpAQCAtNDg3LDYgKzQ5MCw3IEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRN
TCkKICAgICAsIG1fZm9udGxvYWRlcigwKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyKHRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
VGltZXJGaXJlZCkKKyAgICAsIG1faGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogewog
ICAgIG1fcHJpbnRpbmcgPSBmYWxzZTsKICAgICBtX3BhZ2luYXRlZEZvclNjcmVlbiA9IGZhbHNl
OwpAQCAtNjA1MCw0ICs2MDU0LDE5IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1D
b250cm9sc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KiB0aW1lcikKICAgICBtX2Fzc29jaWF0
ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0lu
c0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCit7CisgICAgaWYgKG1faGFz
SW5qZWN0ZWRQbHVnSW5zU2NyaXB0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBVc2UgdGhl
IEpTIGZpbGUgcHJvdmlkZWQgYnkgdGhlIENocm9tZSBjbGllbnQsIG9yIGZhbGxiYWNrIHRvIHRo
ZSBkZWZhdWx0IG9uZS4KKyAgICBTdHJpbmcganNTdHJpbmcgPSBwYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+cGx1Z0luRXh0cmFTY3JpcHQoKTsKKyAgICBpZiAoIWpzU3RyaW5nKQorICAgICAg
ICBqc1N0cmluZyA9IHBsdWdJbnNKYXZhU2NyaXB0OworCisgICAgcGFnZSgpLT5tYWluRnJhbWUo
KS0+c2NyaXB0KCktPmV2YWx1YXRlSW5Xb3JsZChTY3JpcHRTb3VyY2VDb2RlKGpzU3RyaW5nKSwg
d29ybGQpOworCisgICAgbV9oYXNJbmplY3RlZFBsdWdJbnNTY3JpcHQgPSB0cnVlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDNkNjMzNTE3YzRl
OThhMDQ3YjFmOTFmN2E4OTU1MzIwMWU1ODY0NDcuLjZmNTNjNjBiMDI0ZDQyZmQ0ZWNmZTUwM2Zj
ZGZhZWE3NWVlYjQ1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03OCw2ICs3OCw3IEBAIGNs
YXNzIERPTUltcGxlbWVudGF0aW9uOwogY2xhc3MgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjsKIGNs
YXNzIERPTVNlbGVjdGlvbjsKIGNsYXNzIERPTVdpbmRvdzsKK2NsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwpAQCAtMTIwMyw2ICsxMjA0LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
Rm9udExvYWRlcj4gZm9udGxvYWRlcigpOwogI2VuZGlmCiAKKyAgICB2b2lkIGVuc3VyZVBsdWdJ
bnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqKTsKKwogcHJvdGVjdGVkOgogICAgIERv
Y3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpOwog
CkBAIC0xNTgxLDYgKzE1ODQsNyBAQCBwcml2YXRlOgogICAgIFRpbWVyPERvY3VtZW50PiBtX2Rp
ZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyOwogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1lbnQ+
ID4gbV9hc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogCisgICAgYm9vbCBtX2hhc0luamVjdGVkUGx1
Z0luc1NjcmlwdDsKIH07CiAKIGlubGluZSB2b2lkIERvY3VtZW50Ojpub3RpZnlSZW1vdmVQZW5k
aW5nU2hlZXRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1h
Z2VFbGVtZW50LmNwcAppbmRleCA4ZTk5MzJlZWQxNTBhZTkwNmZjZjc3Njc5MjEzZGM5OGIyZDIw
MGEwLi4wMzlmN2ZlYTdjYTRkMTRiMzQ0YWQ5YmNlYzEzM2YyOWE0YjVhN2MwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxv
YWRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSlNEb2N1bWVudEZyYWdtZW50
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCkBAIC00OSwxOCArNTAsMjAgQEAKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+ID4gSFRNTFBsdWdJbkltYWdl
RWxlbWVudExpc3Q7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IE1pbWVUeXBlVG9M
b2NhbGl6ZWRTdHJpbmdNYXA7CiAKIHN0YXRpYyBjb25zdCBpbnQgc2l6aW5nVGlueURpbWVuc2lv
blRocmVzaG9sZCA9IDQwOwotc3RhdGljIGNvbnN0IGludCBzaXppbmdTbWFsbFdpZHRoVGhyZXNo
b2xkID0gMjUwOwotc3RhdGljIGNvbnN0IGludCBzaXppbmdNZWRpdW1XaWR0aFRocmVzaG9sZCA9
IDQ1MDsKLXN0YXRpYyBjb25zdCBpbnQgc2l6aW5nTWVkaXVtSGVpZ2h0VGhyZXNob2xkID0gMzAw
Owogc3RhdGljIGNvbnN0IGZsb2F0IHNpemluZ0Z1bGxQYWdlQXJlYVJhdGlvVGhyZXNob2xkID0g
MC45NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBhdXRvc3RhcnRTb29uQWZ0ZXJVc2VyR2VzdHVyZVRo
cmVzaG9sZCA9IDUuMDsKIApAQCAtNjgsNiArNzEsMzQgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGF1
dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkID0gNS4wOwogc3RhdGljIGNvbnN0
IGRvdWJsZSBzaW11bGF0ZWRNb3VzZUNsaWNrVGltZXJEZWxheSA9IC43NTsKIHN0YXRpYyBjb25z
dCBkb3VibGUgcmVtb3ZlU25hcHNob3RUaW1lckRlbGF5ID0gMS41OwogCitzdGF0aWMgY29uc3Qg
U3RyaW5nIHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFwLCBtaW1lVHlwZVRv
TGFiZWxUaXRsZU1hcCwgKCkpOworICAgIFN0cmluZyB0aXRsZVRleHQgPSBtaW1lVHlwZVRvTGFi
ZWxUaXRsZU1hcC5nZXQobWltZVR5cGUpOworICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKKworICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKKyAgICBpZiAo
dGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgdGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVn
SW5MYWJlbFRpdGxlKCk7CisgICAgbWltZVR5cGVUb0xhYmVsVGl0bGVNYXAuc2V0KG1pbWVUeXBl
LCB0aXRsZVRleHQpOworICAgIHJldHVybiB0aXRsZVRleHQ7Cit9OworCitzdGF0aWMgY29uc3Qg
U3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChNaW1lVHlwZVRvTG9jYWxpemVkU3RyaW5nTWFwLCBtaW1lVHlw
ZVRvTGFiZWxTdWJ0aXRsZU1hcCwgKCkpOworICAgIFN0cmluZyBzdWJ0aXRsZVRleHQgPSBtaW1l
VHlwZVRvTGFiZWxTdWJ0aXRsZU1hcC5nZXQobWltZVR5cGUpOworICAgIGlmICghc3VidGl0bGVU
ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN1YnRpdGxlVGV4dDsKKworICAgIHN1YnRp
dGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFN1YnRp
dGxlKG1pbWVUeXBlKTsKKyAgICBpZiAoc3VidGl0bGVUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAg
c3VidGl0bGVUZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFN1YnRpdGxlKCk7CisgICAgbWlt
ZVR5cGVUb0xhYmVsU3VidGl0bGVNYXAuc2V0KG1pbWVUeXBlLCBzdWJ0aXRsZVRleHQpOworICAg
IHJldHVybiBzdWJ0aXRsZVRleHQ7Cit9OworCiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIFByZWZlclBsdWdJbnNGb3JJbWFnZXNP
cHRpb24gcHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbikKICAgICA6IEhUTUxQbHVnSW5FbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgIC8vIG1fbmVlZHNXaWRnZXRVcGRhdGUoIWNyZWF0
ZWRCeVBhcnNlcikgYWxsb3dzIEhUTUxPYmplY3RFbGVtZW50IHRvIGRlbGF5CkBAIC0zMTgsMjkg
KzM0OSw2IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKIH0K
IAotc3RhdGljIEF0b21pY1N0cmluZyBjbGFzc05hbWVGb3JTaGFkb3dSb290KGNvbnN0IE5vZGUq
IG5vZGUpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBs
dWdJblRpbnlTaXplQ2xhc3NOYW1lLCAoInRpbnkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcs
IHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZSwgKCJzbWFsbCIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0
cmluZywgcGx1Z0luTWVkaXVtU2l6ZUNsYXNzTmFtZSwgKCJtZWRpdW0iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBB
dG9taWNTdHJpbmcsIHBsdWdJbkxhcmdlU2l6ZUNsYXNzTmFtZSwgKCJsYXJnZSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgIFJlbmRlckJveCogcmVuZGVyQm94
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyQm94Kj4obm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgTGF5b3V0
VW5pdCB3aWR0aCA9IHJlbmRlckJveC0+Y29udGVudFdpZHRoKCk7Ci0gICAgTGF5b3V0VW5pdCBo
ZWlnaHQgPSByZW5kZXJCb3gtPmNvbnRlbnRIZWlnaHQoKTsKLQotICAgIGlmICh3aWR0aCA8IHNp
emluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQgfHwgaGVpZ2h0IDwgc2l6aW5nVGlueURpbWVuc2lv
blRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIHBsdWdJblRpbnlTaXplQ2xhc3NOYW1lOwotCi0g
ICAgaWYgKHdpZHRoIDwgc2l6aW5nU21hbGxXaWR0aFRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJu
IHBsdWdJblNtYWxsU2l6ZUNsYXNzTmFtZTsKLQotICAgIGlmICh3aWR0aCA8IHNpemluZ01lZGl1
bVdpZHRoVGhyZXNob2xkIHx8IGhlaWdodCA8IHNpemluZ01lZGl1bUhlaWdodFRocmVzaG9sZCkK
LSAgICAgICAgcmV0dXJuIHBsdWdJbk1lZGl1bVNpemVDbGFzc05hbWU7Ci0KLSAgICByZXR1cm4g
cGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lOwotfQotCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogewogICAgIGlmICghcmVuZGVyZXIoKS0+aXNTbmFw
c2hvdHRlZFBsdWdJbigpKSB7CkBAIC0zNDksNjkgKzM1Nyw0OSBAQCB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmNoZWNrU25hcHNob3RTdGF0dXMoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU2hhZG93Um9vdCogcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVsZW1lbnQqIHNoYWRvd0NvbnRhaW5l
ciA9IHRvRWxlbWVudChyb290LT5maXJzdENoaWxkKCkpOwotICAgIHNoYWRvd0NvbnRhaW5lci0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgY2xhc3NOYW1lRm9yU2hhZG93Um9vdCh0aGlzKSk7Cisg
ICAgLy8gTm90aWZ5IHRoZSBzaGFkb3cgcm9vdCB0aGF0IHRoZSBzaXplIGNoYW5nZWQgc28gdGhh
dCB3ZSBtYXkgdXBkYXRlIHRoZSBvdmVybGF5IGxheW91dC4KKyAgICBlbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVz
aXplRXZlbnQsIHRydWUsIGZhbHNlKSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogewotICAgIERv
Y3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwotCi0gICAgbV9zaGFkb3dDb250YWluZXIgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgbV9zaGFkb3dDb250YWluZXItPnNldFBzZXVk
byhBdG9taWNTdHJpbmcoIi13ZWJraXQtc25hcHNob3R0ZWQtcGx1Z2luLWNvbnRlbnQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0KLSAgICBSZWZQdHI8RWxlbWVudD4g
Y29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwotICAgIGNvbnRhaW5lci0+
c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1jb250YWluZXIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgUGFnZSogcGFnZSA9
IGRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwogCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IG92ZXJsYXkgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgb3Zl
cmxheS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1vdmVy
bGF5IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIGNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQob3ZlcmxheSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiwgaXNvbGF0ZWRXb3JsZCwgKERP
TVdyYXBwZXJXb3JsZDo6Y3JlYXRlKEpTRE9NV2luZG93Ojpjb21tb25WTSgpKSkpOworICAgIGRv
Y3VtZW50KCktPmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChpc29sYXRlZFdvcmxkLmdldCgp
KTsKIAotICAgIG1fc25hcHNob3RMYWJlbCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsK
LSAgICBtX3NuYXBzaG90TGFiZWwtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmlu
Zygic25hcHNob3QtbGFiZWwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IHBhZ2UtPm1haW5GcmFt
ZSgpLT5zY3JpcHQoKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLT5nbG9iYWxPYmpl
Y3QoaXNvbGF0ZWRXb3JsZC5nZXQoKSkpOworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKLSAgICBTdHJpbmcgdGl0bGVUZXh0ID0gc25hcHNo
b3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7Ci0gICAgU3RyaW5nIHN1YnRpdGxlVGV4dCA9IHNuYXBz
aG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOwotICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkp
IHsKLSAgICAgICAgU3RyaW5nIGNsaWVudFRpdGxlVGV4dCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsVGl0bGUoKTsKLSAgICAgICAgaWYg
KCFjbGllbnRUaXRsZVRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgdGl0bGVUZXh0ID0gY2xp
ZW50VGl0bGVUZXh0OwotICAgICAgICBTdHJpbmcgY2xpZW50U3VidGl0bGVUZXh0ID0gZG9jdW1l
bnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRs
ZSgpOwotICAgICAgICBpZiAoIWNsaWVudFN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBzdWJ0aXRsZVRleHQgPSBjbGllbnRTdWJ0aXRsZVRleHQ7Ci0gICAgfQorICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gdGl0bGUgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7Ci0gICAgdGl0bGUtPnNldEF0dHJpYnV0ZShjbGFz
c0F0dHIsIEF0b21pY1N0cmluZygic25hcHNob3QtdGl0bGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgdGl0bGUtPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4
dE5vZGUodGl0bGVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgbV9zbmFwc2hvdExh
YmVsLT5hcHBlbmRDaGlsZCh0aXRsZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0OworICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCByb290KSk7CisgICAgYXJnTGlzdC5hcHBlbmQoanNTdHJpbmcoZXhl
YywgdGl0bGVUZXh0KHBhZ2UsIG1pbWVUeXBlKSkpOworICAgIGFyZ0xpc3QuYXBwZW5kKGpzU3Ry
aW5nKGV4ZWMsIHN1YnRpdGxlVGV4dChwYWdlLCBtaW1lVHlwZSkpKTsKIAotICAgIFJlZlB0cjxF
bGVtZW50PiBzdWJUaXRsZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKLSAgICBzdWJU
aXRsZS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgQXRvbWljU3RyaW5nKCJzbmFwc2hvdC1zdWJ0
aXRsZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBzdWJUaXRs
ZS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9kZShzdWJ0aXRsZVRleHQpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKLSAgICBtX3NuYXBzaG90TGFiZWwtPmFwcGVuZENoaWxkKHN1YlRpdGxl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLQotICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9z
bmFwc2hvdExhYmVsLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAvLyBJdCBpcyBleHBlY3Rl
ZCB0aGUgSlMgZmlsZSBwcm92aWRlcyBhIGNyZWF0ZU92ZXJsYXkoc2hhZG93Um9vdCwgdGl0bGUs
IHN1YnRpdGxlKSBmdW5jdGlvbi4KKyAgICBKU0M6OkpTT2JqZWN0KiBvdmVybGF5ID0gZ2xvYmFs
T2JqZWN0LT5nZXQoZXhlYywgSlNDOjpJZGVudGlmaWVyKGV4ZWMsICJjcmVhdGVPdmVybGF5Iikp
LnRvT2JqZWN0KGV4ZWMpOworICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CisgICAgSlNDOjpD
YWxsVHlwZSBjYWxsVHlwZSA9IG92ZXJsYXktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG92
ZXJsYXksIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZU5vbmUp
CisgICAgICAgIHJldHVybjsKIAotICAgIC8vIE1ha2UgdGhpcyBpbnRvIGEgYnV0dG9uIGZvciBh
Y2Nlc3NpYmlsaXR5IGNsaWVudHMuCi0gICAgU3RyaW5nIGNvbWJpbmVkVGV4dCA9IHRpdGxlVGV4
dDsKLSAgICBpZiAoIWNvbWJpbmVkVGV4dC5pc0VtcHR5KCkgJiYgIXN1YnRpdGxlVGV4dC5pc0Vt
cHR5KCkpCi0gICAgICAgIGNvbWJpbmVkVGV4dC5hcHBlbmQoIiAiKTsKLSAgICBjb21iaW5lZFRl
eHQuYXBwZW5kKHN1YnRpdGxlVGV4dCk7Ci0gICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIsIGNvbWJpbmVkVGV4dCk7Ci0gICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGUo
cm9sZUF0dHIsICJidXR0b24iKTsKKyAgICBKU0M6OkpTT2JqZWN0KiB0aGlzT2JqID0gZ2xvYmFs
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT50b1RoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjKTsK
IAotICAgIG1fc2hhZG93Q29udGFpbmVyLT5hcHBlbmRDaGlsZChjb250YWluZXIsIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIHJvb3QtPmFwcGVuZENoaWxkKG1fc2hhZG93Q29udGFpbmVyLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBKU0M6OmNhbGwoZXhlYywgb3ZlcmxheSwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzT2JqLCBhcmdMaXN0KTsKIH0KIAotYm9vbCBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdExhYmVsKE5vZGUqIG5vZGUpCitib29sIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnBhcnRPZlNuYXBzaG90T3ZlcmxheShOb2RlKiBub2RlKQogewotICAg
IHJldHVybiBub2RlICYmIChub2RlID09IG1fc25hcHNob3RMYWJlbC5nZXQoKSB8fCBub2RlLT5p
c0Rlc2NlbmRhbnRPZihtX3NuYXBzaG90TGFiZWwuZ2V0KCkpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgc2VsZWN0b3IsICgiLnNuYXBzaG90LW92ZXJsYXkiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IHNu
YXBzaG90TGFiZWwgPSBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCktPnF1ZXJ5U2VsZWN0b3Io
c2VsZWN0b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHJldHVybiBub2RlICYmIHNuYXBz
aG90TGFiZWwgJiYgKG5vZGUgPT0gc25hcHNob3RMYWJlbC5nZXQoKSB8fCBub2RlLT5pc0Rlc2Nl
bmRhbnRPZihzbmFwc2hvdExhYmVsLmdldCgpKSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6c3dhcFJlbmRlcmVyVGltZXJGaXJlZChUaW1lcjxIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50PiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmlu
ZGV4IDIzNDlmNDJjOGQ3ODNkODM4ZThjYmQxMDM2OThmZDk2ZGEwZjBkMmIuLjg5NzM1MjQzZDI4
MDFjNmU5Zjc2NWE2MjdhZDI5NWZlODE3YzU0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCopOwogCiAgICAg
dm9pZCBzZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbihib29sKTsKLSAgICBib29sIHBhcnRP
ZlNuYXBzaG90TGFiZWwoTm9kZSopOworICAgIGJvb2wgcGFydE9mU25hcHNob3RPdmVybGF5KE5v
ZGUqKTsKIAogICAgIGJvb2wgbmVlZHNDaGVja0ZvclNpemVDaGFuZ2UoKSBjb25zdCB7IHJldHVy
biBtX25lZWRzQ2hlY2tGb3JTaXplQ2hhbmdlOyB9CiAgICAgdm9pZCBzZXROZWVkc0NoZWNrRm9y
U2l6ZUNoYW5nZSgpIHsgbV9uZWVkc0NoZWNrRm9yU2l6ZUNoYW5nZSA9IHRydWU7IH0KQEAgLTE1
NSw4ICsxNTUsNiBAQCBwcml2YXRlOgogICAgIFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+
IG1fc3dhcFJlbmRlcmVyVGltZXI7CiAgICAgVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4g
bV9yZW1vdmVTbmFwc2hvdFRpbWVyOwogICAgIFJlZlB0cjxJbWFnZT4gbV9zbmFwc2hvdEltYWdl
OwotICAgIFJlZlB0cjxFbGVtZW50PiBtX3NoYWRvd0NvbnRhaW5lcjsKLSAgICBSZWZQdHI8RWxl
bWVudD4gbV9zbmFwc2hvdExhYmVsOwogICAgIGJvb2wgbV9jcmVhdGVkRHVyaW5nVXNlckdlc3R1
cmU7CiAgICAgYm9vbCBtX2lzUmVzdGFydGVkUGx1Z2luOwogICAgIGJvb2wgbV9uZWVkc0NoZWNr
Rm9yU2l6ZUNoYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGM2YzFlN2Q2
NzQ3NGU4N2QxZDk3ZTI5NDM4MzAxYmNiYWFhMDA4MzMuLjBhODRjYTUzNDI3MzA1MWRjMWViMWNj
NzhiMGM4YzlhYzRlM2RhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzY5
LDkgKzM2OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eUNocm9tZUNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwbHVn
SW5TdGFydExhYmVsVGl0bGUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0IHsgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsgcmV0dXJuIFN0
cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0IHsgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5F
eHRyYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICAvLyBGSVhNRTog
UG9ydCBzaG91bGQgcmV0dXJuIHRydWUgdXNpbmcgaGV1cmlzdGljIGJhc2VkIG9uIHNjcm9sbGFi
bGUoUmVuZGVyQm94KS4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b3Njcm9sbEZvckRyYWdB
bmREcm9wKFJlbmRlckJveCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA3
NTk4MzBhYTA0YzUwNDNjNDQ2ZGU3NWZhN2JkMTViMzQ2MDFiNmI1Li4zYzZhMjNjMTIxMjEyY2Ux
YTA3ZWIxYjAyY2ViM2I5NjM4Mzg0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE3Myw5ICsxNzMsOSBAQCB2
b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCiAK
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCB8fCAobV9p
c1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbiAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZXVwRXZlbnQpKSB7CiAgICAgICAgIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24g
PSBmYWxzZTsKLSAgICAgICAgYm9vbCBjbGlja1dhc09uTGFiZWwgPSBwbHVnSW5JbWFnZUVsZW1l
bnQoKS0+cGFydE9mU25hcHNob3RMYWJlbChldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKLSAg
ICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShjbGlja1dhc09uTGFi
ZWwgPyBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZyA6IEhUTUxQbHVnSW5FbGVtZW50OjpS
ZXN0YXJ0aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKLSAgICAgICAgcGx1Z0luSW1hZ2VFbGVt
ZW50KCktPnVzZXJEaWRDbGlja1NuYXBzaG90KG1vdXNlRXZlbnQsICFjbGlja1dhc09uTGFiZWwp
OworICAgICAgICBib29sIGNsaWNrV2FzT25PdmVybGF5ID0gcGx1Z0luSW1hZ2VFbGVtZW50KCkt
PnBhcnRPZlNuYXBzaG90T3ZlcmxheShldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpKTsKKyAgICAg
ICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShjbGlja1dhc09uT3Zlcmxh
eSA/IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nIDogSFRNTFBsdWdJbkVsZW1lbnQ6OlJl
c3RhcnRpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spOworICAgICAgICBwbHVnSW5JbWFnZUVsZW1l
bnQoKS0+dXNlckRpZENsaWNrU25hcHNob3QobW91c2VFdmVudCwgIWNsaWNrV2FzT25PdmVybGF5
KTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfSBlbHNlIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgewogICAgICAgICBt
X2lzUG90ZW50aWFsTW91c2VBY3RpdmF0aW9uID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5oCmluZGV4IDM4NzI5YjI0YTRjMmM3MDAzMWJlYmY1OGJhZWJjZjcyMzcyYTg0YjguLjQ1NmQ1
NTVkYWI5NmJmMjIzZmZhMGUxOGI4YzQwN2M0YjNmYmZkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaApAQCAtMjUwLDkgKzI1MCwxMCBAQCB0eXBlZGVmIFdLQnVuZGxlUGFnZVVJRWxlbWVu
dFZpc2liaWxpdHkgKCpXS0J1bmRsZVBhZ2VNZW51QmFySXNWaXNpYmxlQ2FsbGJhY2spKAogdHlw
ZWRlZiBXS0J1bmRsZVBhZ2VVSUVsZW1lbnRWaXNpYmlsaXR5ICgqV0tCdW5kbGVQYWdlVG9vbGJh
cnNBcmVWaXNpYmxlQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZVJlYWNoZWRBcHBDYWNoZU9y
aWdpblF1b3RhQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIG9yaWdpbiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdWludDY0X3QgKCpXS0J1bmRsZVBhZ2VFeGNlZWRlZERhdGFiYXNlUXVv
dGFDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luLCBXS1N0cmluZ1JlZiBkYXRhYmFzZU5hbWUsIFdLU3RyaW5nUmVmIGRhdGFiYXNlRGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZUJ5dGVzLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgV0tT
dHJpbmdSZWYgKCpXS0J1bmRsZVBhZ2VQbHVnSW5DcmVhdGVTdGFydExhYmVsVGl0bGVDYWxsYmFj
aykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5k
bGVQYWdlUGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2spKGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQnVuZGxlUGFnZVBsdWdJbkNy
ZWF0ZVN0YXJ0TGFiZWxUaXRsZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtaW1lVHlwZSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1
Z0luQ3JlYXRlU3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2spKFdLU3RyaW5nUmVmIG1pbWVUeXBl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0J1bmRs
ZVBhZ2VQbHVnSW5DcmVhdGVFeHRyYVN0eWxlU2hlZXRDYWxsYmFjaykoY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRl
RXh0cmFTY3JpcHRDYWxsYmFjaykoY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiAKIHN0cnVjdCBX
S0J1bmRsZVBhZ2VVSUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtMjgwLDYg
KzI4MSw3IEBAIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCB7CiAgICAgV0tCdW5kbGVQYWdl
UGx1Z0luQ3JlYXRlU3RhcnRMYWJlbFRpdGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGU7CiAgICAgV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRl
U3RhcnRMYWJlbFN1YnRpdGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICBjcmVhdGVQbHVnSW5T
dGFydExhYmVsU3VidGl0bGU7CiAgICAgV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlRXh0cmFTdHls
ZVNoZWV0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQbHVnSW5FeHRyYVN0eWxl
U2hlZXQ7CisgICAgV0tCdW5kbGVQYWdlUGx1Z0luQ3JlYXRlRXh0cmFTY3JpcHRDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQbHVnSW5FeHRyYVNjcmlwdDsKIH07CiB0eXBl
ZGVmIHN0cnVjdCBXS0J1bmRsZVBhZ2VVSUNsaWVudCBXS0J1bmRsZVBhZ2VVSUNsaWVudDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAppbmRleCBiNmFmNjQy
ZDY4NzZhOTEzNzU4MjJlOWE5ZmViNDFkNjBhNzNjNGU0Li44ZTljODAyZDAxYTVlNjQ1ODJjYTE1
MzYzM2JhNWZmODFlNjkyMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJ
Q2xpZW50LmNwcApAQCAtMTYzLDIxICsxNjMsMjEgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQ6OmRpZEV4Y2VlZERhdGFiYXNlUXVvdGEoV2ViUGFnZSogcGFnZSwgV2ViU2UK
ICAgICByZXR1cm4gbV9jbGllbnQuZGlkRXhjZWVkRGF0YWJhc2VRdW90YSh0b0FQSShwYWdlKSwg
dG9BUEkob3JpZ2luKSwgdG9BUEkoZGF0YWJhc2VOYW1lLmltcGwoKSksIHRvQVBJKGRhdGFiYXNl
RGlzcGxheU5hbWUuaW1wbCgpKSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2Fn
ZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMsIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCi1TdHJpbmcgSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGll
bnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0CitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVQ
YWdlVUlDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdAogewogICAgIGlmICghbV9jbGllbnQuY3JlYXRlUGx1Z0luU3RhcnRMYWJlbFRpdGxl
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRs
ZSA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUo
bV9jbGllbnQuY2xpZW50SW5mbykpKTsKKyAgICBSZWZQdHI8V2ViU3RyaW5nPiB0aXRsZSA9IGFk
b3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVQbHVnSW5TdGFydExhYmVsVGl0bGUodG9BUEko
bWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbykpKTsKICAgICByZXR1cm4gdGl0
bGUgPyB0aXRsZS0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIEluamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoKSBjb25zdAorU3RyaW5n
IEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKICAgICBpZiAoIW1fY2xpZW50LmNyZWF0ZVBs
dWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
UmVmUHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3Jl
YXRlUGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKG1fY2xpZW50LmNsaWVudEluZm8pKSk7CisgICAg
UmVmUHRyPFdlYlN0cmluZz4gc3VidGl0bGUgPSBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3Jl
YXRlUGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xp
ZW50LmNsaWVudEluZm8pKSk7CiAgICAgcmV0dXJuIHN1YnRpdGxlID8gc3VidGl0bGUtPnN0cmlu
ZygpIDogU3RyaW5nKCk7CiB9CiAKQEAgLTE5MCw0ICsxOTAsMTMgQEAgU3RyaW5nIEluamVjdGVk
QnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdAogICAgIHJl
dHVybiBzdHlsZVNoZWV0ID8gc3R5bGVTaGVldC0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKIH0KIAor
U3RyaW5nIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50OjpwbHVnSW5FeHRyYVNjcmlwdCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2NsaWVudC5jcmVhdGVQbHVnSW5FeHRyYVNjcmlwdCkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgUmVmUHRyPFdlYlN0cmluZz4gc2NyaXB0ID0gYWRv
cHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZVBsdWdJbkV4dHJhU2NyaXB0KG1fY2xpZW50LmNs
aWVudEluZm8pKSk7CisgICAgcmV0dXJuIHNjcmlwdCA/IHNjcmlwdC0+c3RyaW5nKCkgOiBTdHJp
bmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZVVJQ2xpZW50LmgKaW5kZXggYWQ4ZmUyNGQyMTUzM2E0NmE3NDllNzI1Y2YwY2ZhMTNk
ODRlYjZmMS4uNDIzZTc0MGE3NWY2ZDRhZjg5NzI1Y2FlMmI2YzUzYzYwZDNlOGE0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaApAQCAtNzAsOSArNzAsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV2Vi
UGFnZSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkKTsKICAg
ICB1aW50NjRfdCBkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2UqLCBXZWJTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YUJ5dGVzLCB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2VCeXRlcywgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2VCeXRlcywgdWlu
dDY0X3QgZXhwZWN0ZWRVc2FnZUJ5dGVzKTsKIAotICAgIFN0cmluZyBwbHVnSW5TdGFydExhYmVs
VGl0bGUoKSBjb25zdDsKLSAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKCkgY29u
c3Q7CisgICAgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdDsKKyAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFN1YnRpdGxlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0OwogICAgIFN0cmluZyBwbHVnSW5FeHRyYVN0eWxlU2hlZXQo
KSBjb25zdDsKKyAgICBTdHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQoKSBjb25zdDsKIAogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDYyYjc4NTZhY2Y0ODBiYTI2YTcxZTYzNjg1OTcx
MWRhMWU0NTEyNDUuLjhjNTYyNTA1MGVmNTg4NGJhNGRmMzcwODNiZDhjNWMyNDA3MmU3MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTgyNCwxNCArODI0LDE0IEBAIHZvaWQgV2ViQ2hy
b21lQ2xpZW50Ojpsb2dEaWFnbm9zdGljTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhZ2UsIG1lc3NhZ2UsIGRlc2NyaXB0aW9u
LCBzdWNjZXNzKTsKIH0KIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRMYWJl
bFRpdGxlKCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0TGFiZWxU
aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsVGl0bGUoKTsKKyAgICBy
ZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0luU3RhcnRMYWJlbFRp
dGxlKG1pbWVUeXBlKTsKIH0KIAotU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luU3RhcnRM
YWJlbFN1YnRpdGxlKCkgY29uc3QKK1N0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnBsdWdJblN0YXJ0
TGFiZWxTdWJ0aXRsZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewotICAgIHJldHVy
biBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5TdGFydExhYmVsU3VidGl0
bGUoKTsKKyAgICByZXR1cm4gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZVVJQ2xpZW50KCkucGx1Z0lu
U3RhcnRMYWJlbFN1YnRpdGxlKG1pbWVUeXBlKTsKIH0KIAogU3RyaW5nIFdlYkNocm9tZUNsaWVu
dDo6cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QKQEAgLTgzOSw0ICs4MzksOSBAQCBTdHJp
bmcgV2ViQ2hyb21lQ2xpZW50OjpwbHVnSW5FeHRyYVN0eWxlU2hlZXQoKSBjb25zdAogICAgIHJl
dHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVnSW5FeHRyYVN0eWxlU2hl
ZXQoKTsKIH0KIAorU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6cGx1Z0luRXh0cmFTY3JpcHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS5wbHVn
SW5FeHRyYVNjcmlwdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IGQ0NWYxODJmYTYxYmExOTg3NWQ2ODQ4NjMxYTdmNmZhMzEzOGNhNTAuLmRk
NjliNjZjZGY1ZWM0YjVkYTFlZTkxMjQ1NjczM2FjYjYwMDJkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtMjE5LDkgKzIxOSwxMCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGxv
Z0RpYWdub3N0aWNNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdWNjZXNzKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRsZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5TdGFydExh
YmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+
IG1fY2FjaGVkRnJhbWVTZXRMYXJnZXN0RnJhbWU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjk5NjJkMmViOTcyZGE5NjJhYjEzZDQ4YzRmZTNl
MmRjZTI5OGE1My4uMDAzNDc2NDlmZjY0ZTJjZmJmODgxYTMzNWU1ZDYzZGZmOTg3Y2NkNSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDEzLTA1LTA2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisK
KyAgICAgICAgTWFuYWdlIHRoZSBwcmVzZW50YXRpb24gb2YgdGhlIHNuYXBzaG90dGVkIHBsdWct
aW4gdXNpbmcgSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE1NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgor
CisgICAgICAgIFRha2UgaW50byBhY2NvdW50IHRoZSBuZXcgcGx1Z0luRXh0cmFTY3JpcHQgbWV0
aG9kIGFkZGVkIHRvIHN1cHBvcnQKKyAgICAgICAgdGhlIGluamVjdGlvbiBvZiBhIEpTIGZpbGUg
ZnJvbSB0aGUgY2hyb21lIGNsaWVudCB0byBjdXN0b21pemUgdGhlCisgICAgICAgIHJlbmRlcmlu
ZyBvZiBhIHNuYXBzaG90dGVkIHBsdWctaW4ncyBzaGFkb3cgdHJlZS4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorCiAy
MDEzLTA1LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHRoZSBWZWN0b3I6OmFwcGVuZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgVmVjdG9y
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMjMzZmU4YTQzY2I3OWU1YjBlOWI4Nzc4ZjNl
MTU1ZTU4MjA4MmEyMi4uZTA0MjAzODdlYTkyOGUzZDA1NDM1ZDBjOGVmNjc5NjBkZDAxMzZjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtMzcyLDYgKzM3Miw3IEBAIEluamVjdGVkQnVu
ZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgICAg
ICAwLCAvKnBsdWdJblN0YXJ0TGFiZWxUaXRsZSovCiAgICAgICAgIDAsIC8qcGx1Z0luU3RhcnRM
YWJlbFN1YnRpdGxlKi8KICAgICAgICAgMCwgLypwbHVnSW5FeHRyYVN0eWxlU2hlZXQqLworICAg
ICAgICAwLCAvKnBsdWdJbkV4dHJhU2NyaXB0Ki8KICAgICB9OwogICAgIFdLQnVuZGxlUGFnZVNl
dFVJQ2xpZW50KG1fcGFnZSwgJnVpQ2xpZW50KTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>