<?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>125765</bug_id>
          
          <creation_ts>2013-12-15 21:11:32 -0800</creation_ts>
          <short_desc>[iOS] Upstream WebCore/html changes</short_desc>
          <delta_ts>2013-12-17 16:11:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>125646</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959983</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-15 21:11:32 -0800</bug_when>
    <thetext>Upstream the iOS related changes to WebCore/html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959984</commentid>
    <comment_count>1</comment_count>
      <attachid>219294</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-15 21:14:08 -0800</bug_when>
    <thetext>Created attachment 219294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959988</commentid>
    <comment_count>2</comment_count>
      <attachid>219294</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-15 21:29:21 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/47808242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959990</commentid>
    <comment_count>3</comment_count>
      <attachid>219294</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-12-15 21:48:31 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/49638148</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959991</commentid>
    <comment_count>4</comment_count>
      <attachid>219294</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-15 21:48:48 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/49568144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959992</commentid>
    <comment_count>5</comment_count>
      <attachid>219294</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-15 21:49:37 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/47808246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960004</commentid>
    <comment_count>6</comment_count>
      <attachid>219294</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-15 22:41:22 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/46378183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960009</commentid>
    <comment_count>7</comment_count>
      <attachid>219294</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-15 23:38:02 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

Attachment 219294 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/44578096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960086</commentid>
    <comment_count>8</comment_count>
      <attachid>219324</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-16 09:36:35 -0800</bug_when>
    <thetext>Created attachment 219324
For EWS: Concatenated patches from Bug 125646 And Bug 125765

Please don&apos;t review this patch. It&apos;s for the EWS bots.

This patch represents the concatenation of the patch on Bug 125646 and the patch on this bug (bug #125765).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960089</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-16 09:38:53 -0800</bug_when>
    <thetext>Attachment 219324 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/dom/ActiveDOMObject.h&apos;, u&apos;Source/WebCore/dom/DOMImplementation.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionClient.h&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationClient.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationEvent.idl&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Document.idl&apos;, u&apos;Source/WebCore/dom/DocumentMarker.h&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.cpp&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/EventContext.cpp&apos;, u&apos;Source/WebCore/dom/EventContext.h&apos;, u&apos;Source/WebCore/dom/EventDispatcher.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/dom/MouseRelatedEvent.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/Position.h&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/Range.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/TreeScope.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.h&apos;, u&apos;Source/WebCore/dom/make_names.pl&apos;, u&apos;Source/WebCore/html/Autocapitalize.cpp&apos;, u&apos;Source/WebCore/html/Autocapitalize.h&apos;, u&apos;Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseDateAndTimeInputType.h&apos;, u&apos;Source/WebCore/html/FileInputType.cpp&apos;, u&apos;Source/WebCore/html/FileInputType.h&apos;, u&apos;Source/WebCore/html/FormController.cpp&apos;, u&apos;Source/WebCore/html/FormController.h&apos;, u&apos;Source/WebCore/html/HTMLAnchorElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLAppletElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLAreaElement.h&apos;, u&apos;Source/WebCore/html/HTMLAttributeNames.in&apos;, u&apos;Source/WebCore/html/HTMLBodyElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLButtonElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.h&apos;, u&apos;Source/WebCore/html/HTMLDocument.cpp&apos;, u&apos;Source/WebCore/html/HTMLDocument.h&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.h&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.h&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.h&apos;, u&apos;Source/WebCore/html/HTMLFormElement.idl&apos;, u&apos;Source/WebCore/html/HTMLIFrameElement.h&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.h&apos;, u&apos;Source/WebCore/html/HTMLInputElement.idl&apos;, u&apos;Source/WebCore/html/HTMLLabelElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.idl&apos;, u&apos;Source/WebCore/html/HTMLMetaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLObjectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLPlugInElement.h&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.h&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.h&apos;, u&apos;Source/WebCore/html/HTMLSummaryElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextAreaElement.h&apos;, u&apos;Source/WebCore/html/HTMLTextAreaElement.idl&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextFormControlElement.h&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.h&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.idl&apos;, u&apos;Source/WebCore/html/ImageDocument.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/InputType.h&apos;, u&apos;Source/WebCore/html/PluginDocument.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.h&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.h&apos;, u&apos;Source/WebCore/html/WebAutocapitalize.h&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLConstructionSite.h&apos;, u&apos;Source/WebCore/html/parser/HTMLParserScheduler.h&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.h&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.h&apos;, u&apos;Source/WebCore/html/shadow/TextControlInnerElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/TextControlInnerElements.h&apos;, u&apos;Source/WebCore/page/Settings.cpp&apos;, u&apos;Source/WebCore/page/Settings.h&apos;, u&apos;Source/WebCore/page/Settings.in&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/dom/EventNames.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:271:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:273:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 114 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>960102</commentid>
    <comment_count>10</comment_count>
      <attachid>219294</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-16 10:03:33 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

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

&gt; Source/WebCore/html/Autocapitalize.cpp:36
&gt; +static const AtomicString&amp; valueDefault()
&gt; +{
&gt; +    return nullAtom;
&gt; +}

No reason for this function to exist. Caller should just return nullAtom.

&gt; Source/WebCore/html/Autocapitalize.h:30
&gt; +#include &lt;wtf/text/AtomicString.h&gt;

No reason to include the AtomicString header just to compile const AtomicString&amp;. This should instead be a forward declaration.

&gt; Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp:58
&gt; +#if !PLATFORM(IOS)
&gt;      m_dateTimeChooser = element().document().page()-&gt;chrome().openDateTimeChooser(this, parameters);
&gt; +#endif

Why not on iOS? Needs a comment. And ideally a better #if in the future.

&gt; Source/WebCore/html/FileInputType.cpp:91
&gt; +#if PLATFORM(IOS)
&gt; +    , m_displayString(String())
&gt; +#endif

This is not needed. m_displayString will get initialized to the null string without explicit code to do so.

&gt; Source/WebCore/html/FileInputType.cpp:103
&gt; +#if !PLATFORM(IOS)
&gt;      if (m_fileIconLoader)
&gt;          m_fileIconLoader-&gt;invalidate();
&gt; +#endif

Why not on iOS? Needs a comment. And ideally a better #if in the future.

&gt; Source/WebCore/html/FileInputType.cpp:339
&gt; +#if !PLATFORM(IOS)
&gt;      Chrome* chrome = this-&gt;chrome();

The entire function should be #if&apos;d out, not just the end of the function.

&gt; Source/WebCore/html/FileInputType.cpp:452
&gt; +#if ENABLE(DRAG_SUPPORT)

I don’t understand why we are putting this #if only around the body of the function rather than around the entire function.

&gt; Source/WebCore/html/FormController.cpp:386
&gt; +    for (auto it = m_formElementsWithState.begin(), end = m_formElementsWithState.end(); it != end; ++it) {
&gt; +        HTMLFormControlElementWithState* element = it-&gt;get();

Should write this with new style for loop:

    for (auto element : m_formElementsWithState.begin)

&gt; Source/WebCore/html/HTMLAnchorElement.cpp:619
&gt; +    // FIXME: We should reconcile the difference in disjunct ordering between iOS and OpenSource.
&gt; +#if PLATFORM(IOS)
&gt; +    return HTMLElement::willRespondToMouseClickEvents() || isLink();
&gt; +#else
&gt;      return isLink() || HTMLElement::willRespondToMouseClickEvents();
&gt; +#endif

Yes. Reconcile by always calling isLink first.

&gt; Source/WebCore/html/HTMLButtonElement.cpp:163
&gt; +#if PLATFORM(IOS)
&gt; +    return !isDisabledFormControl();
&gt; +#else
&gt;      if (!isDisabledFormControl() &amp;&amp; form() &amp;&amp; (m_type == SUBMIT || m_type == RESET))
&gt;          return true;
&gt;      return HTMLFormControlElement::willRespondToMouseClickEvents();
&gt; +#endif

Why the difference?

&gt; Source/WebCore/html/HTMLCanvasElement.h:132
&gt; +    void setMaxiumDecodedImageSize(float maximumDecodedImageSize) { m_maximumDecodedImageSize = maximumDecodedImageSize; }

Typo: &quot;setMaxium&quot;

&gt; Source/WebCore/html/HTMLElement.cpp:1100
&gt; +#if PLATFORM(IOS)
&gt; +bool HTMLElement::willRespondToMouseMoveEvents()
&gt; +{
&gt; +    return !isDisabledFormControl() &amp;&amp; Element::willRespondToMouseMoveEvents();
&gt; +}
&gt; +
&gt; +bool HTMLElement::willRespondToMouseWheelEvents()
&gt; +{
&gt; +    return !isDisabledFormControl() &amp;&amp; Element::willRespondToMouseWheelEvents();
&gt; +}
&gt; +
&gt; +bool HTMLElement::willRespondToMouseClickEvents()
&gt; +{
&gt; +    return !isDisabledFormControl() &amp;&amp; Element::willRespondToMouseClickEvents();
&gt; +}
&gt; +#endif

Why are these iOS-specific? I think we want these on all platforms.

&gt; Source/WebCore/html/HTMLFormElement.cpp:394
&gt; +    const AtomicString&amp; autocorrectValue = fastGetAttribute(autocorrectAttr);
&gt; +    if (!autocorrectValue.isEmpty())
&gt; +        return !equalIgnoringCase(autocorrectValue, &quot;off&quot;);
&gt; +    if (HTMLFormElement* form = this-&gt;form())
&gt; +        return form-&gt;autocorrect();
&gt; +    return true;

A real shame that this (and all the other related functions) repeats the code from HTMLFormControlElement. We should find a way to share code.

&gt; Source/WebCore/html/HTMLInputElement.cpp:1207
&gt; +    // FIXME: Is this code necessary given that we check evt-&gt;isTouchEvent() (above)?
&gt; +    if (evt-&gt;eventInterface() == TouchEventInterfaceType) {

This check is not needed. The call to eventInterface is irrelevant.

&gt; Source/WebCore/html/HTMLInputElement.cpp:1224
&gt; +#if PLATFORM(IOS)
&gt; +    return !isDisabledFormControl();
&gt; +#else

Why different on iOS?

&gt; Source/WebCore/html/HTMLInputElement.cpp:1662
&gt; +#endif
&gt; +
&gt; +
&gt;  bool HTMLInputElement::isTextButton() const

Please don’t add the extra blank line.

&gt; Source/WebCore/html/HTMLInputElement.idl:128
&gt; +#if WTF_PLATFORM_IOS

This is not the correct way to do the #if in the IDL file, I don’t think.

&gt; Source/WebCore/html/HTMLLabelElement.cpp:148
&gt; +#if PLATFORM(IOS)
&gt; +    return control() || HTMLElement::willRespondToMouseClickEvents();
&gt; +#else
&gt; +    return (control() &amp;&amp; control()-&gt;willRespondToMouseClickEvents()) || HTMLElement::willRespondToMouseClickEvents();
&gt; +#endif

Why the difference on iOS?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1926
&gt; +#if PLATFORM(IOS)
&gt; +    bool shouldUpdatePlayState = false;
&gt; +#endif

Makes no sense to check in code with a boolean that is always false.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1955
&gt; +#if PLATFORM(IOS)
&gt; +    if (shouldUpdatePlayState)
&gt; +        updatePlayState();
&gt; +#endif

This code always does nothing since shouldUpdatePlayState is always false.

&gt; Source/WebCore/html/HTMLPlugInElement.h:86
&gt; +#if PLATFORM(IOS)
&gt; +    virtual bool willRespondToMouseMoveEvents() OVERRIDE { return false; }
&gt; +#endif

Not sure we should have mousemove events at all on iOS. It seems strange to override this function like this rather than turning off additional code regarding mouse move events.

&gt; Source/WebCore/html/HTMLSummaryElement.cpp:167
&gt; +#if PLATFORM(IOS)
&gt; +    return HTMLElement::willRespondToMouseClickEvents() || (isMainSummary() &amp;&amp; renderer() &amp;&amp; detailsElement());
&gt; +#else
&gt;      if (isMainSummary() &amp;&amp; renderer())
&gt;          return true;
&gt;  
&gt;      return HTMLElement::willRespondToMouseClickEvents();
&gt; +#endif

Doesn’t seem right to have a different case for iOS here.

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:553
&gt; +#if PLATFORM(IOS)
&gt; +bool HTMLTextAreaElement::willRespondToMouseClickEvents()
&gt; +{
&gt; +    return !isDisabledFormControl();
&gt;  }
&gt; +#endif

Seems like we want this code on all platforms, not just iOS.

&gt; Source/WebCore/html/ImageDocument.cpp:258
&gt; +    return;

No need for this return statement.

&gt; Source/WebCore/html/ImageDocument.cpp:279
&gt; +    return;

No need for this return statement.

&gt; Source/WebCore/html/InputType.cpp:564
&gt; +#if PLATFORM(IOS)
&gt; +    if (element().isReadOnly())
&gt; +        return false;
&gt; +#endif

Is this rule really iOS-specific?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:68
&gt; +#if PLATFORM(IOS)
&gt; +#include &quot;SoftLinking.h&quot;
&gt; +
&gt; +#ifdef __has_include
&gt; +#if __has_include(&lt;DataDetectorsCore/DDDFACache.h&gt;)
&gt; +#include &lt;DataDetectorsCore/DDDFACache.h&gt;
&gt; +#else
&gt; +typedef void* DDDFACacheRef;
&gt; +#endif
&gt; +
&gt; +#if __has_include(&lt;DataDetectorsCore/DDDFAScanner.h&gt;)
&gt; +#include &lt;DataDetectorsCore/DDDFAScanner.h&gt;
&gt; +#else
&gt; +typedef void* DDDFAScannerRef;
&gt; +#endif
&gt; +#endif
&gt; +
&gt; +SOFT_LINK_PRIVATE_FRAMEWORK_OPTIONAL(DataDetectorsCore)
&gt; +SOFT_LINK(DataDetectorsCore, DDDFACacheCreateFromFramework, DDDFACacheRef, (), ())
&gt; +SOFT_LINK(DataDetectorsCore, DDDFAScannerCreateFromCache, DDDFAScannerRef, (DDDFACacheRef cache), (cache))
&gt; +SOFT_LINK(DataDetectorsCore, DDDFAScannerFirstResultInUnicharArray, Boolean, (DDDFAScannerRef scanner, const UniChar* str, unsigned length, int* startPos, int* endPos), (scanner, str, length, startPos, endPos))
&gt; +#endif

I’d like to see this code in a separate file, not in HTMLTreeBuilder.cpp itself.

&gt; Source/WebCore/html/shadow/MediaControlElements.h:298
&gt; -#if PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(GTK)
&gt; +#if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(GTK)

Why is this change needed? Doesn’t PLATFORM(IOS) also imply PLATFORM(MAC) at this time?

&gt; Source/WebCore/html/shadow/SliderThumbElement.h:47
&gt; +#if ENABLE(TOUCH_EVENTS) &amp;&amp; PLATFORM(IOS)
&gt; +class TouchEvent;
&gt; +#endif

Seems pointless to put this inside an #if. Just make it an unconditional forward declaration, please.

&gt; Source/WebCore/html/shadow/SliderThumbElement.h:62
&gt; +    virtual void didAttachRenderers() OVERRIDE;
&gt; +    void handleTouchEvent(TouchEvent*);
&gt; +
&gt; +    void disabledAttributeChanged();

Can one or more of these be private instead of public?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960121</commentid>
    <comment_count>11</comment_count>
      <attachid>219294</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-16 10:34:00 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

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

&gt;&gt; Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp:58
&gt;&gt; +#endif
&gt; 
&gt; Why not on iOS? Needs a comment. And ideally a better #if in the future.

The reason for this specific #if is that iOS ifdef&apos;d out Chrome::openDateTimeChooser, and this is a call site. This is the only call site of openDateTimeChooser, so unifdefing the method on iOS and keeping it empty sounds like it would be fine.

FWIW, I don&apos;t know if iOS actually reaches this code anyways. We handle form controls above WebCore, so tapping on an &lt;input type=&quot;date&quot;&gt; probably never even runs this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960209</commentid>
    <comment_count>12</comment_count>
      <attachid>219294</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-16 13:35:20 -0800</bug_when>
    <thetext>Comment on attachment 219294
Patch

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

&gt;&gt; Source/WebCore/html/Autocapitalize.cpp:36
&gt;&gt; +}
&gt; 
&gt; No reason for this function to exist. Caller should just return nullAtom.

Will inline nullAtom in caller and remove this function.

&gt;&gt; Source/WebCore/html/Autocapitalize.h:30
&gt;&gt; +#include &lt;wtf/text/AtomicString.h&gt;
&gt; 
&gt; No reason to include the AtomicString header just to compile const AtomicString&amp;. This should instead be a forward declaration.

Yes, I agree. When I forward declare this it caused many compiler errors when merging this patch back to iOS. I hope you don&apos;t mind that I add a FIXME comment for now and defer fixing this until more of the iOS port is upstream given the directory-specific nature of this patch.

&gt;&gt; Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp:58
&gt;&gt; +#endif
&gt; 
&gt; Why not on iOS? Needs a comment. And ideally a better #if in the future.

I don&apos;t know the reason for this change. When I have a moment I&apos;ll blame/look at the history of this file. Will add a FIXME comment for now.

&gt;&gt; Source/WebCore/html/FileInputType.cpp:91
&gt;&gt; +#endif
&gt; 
&gt; This is not needed. m_displayString will get initialized to the null string without explicit code to do so.

Will remove.

&gt;&gt; Source/WebCore/html/FileInputType.cpp:103
&gt;&gt; +#endif
&gt; 
&gt; Why not on iOS? Needs a comment. And ideally a better #if in the future.

I don&apos;t know the reason for this change. When I have a moment I&apos;ll blame/look at the history of this file. Will add a FIXME comment for now.

&gt;&gt; Source/WebCore/html/FileInputType.cpp:339
&gt;&gt;      Chrome* chrome = this-&gt;chrome();
&gt; 
&gt; The entire function should be #if&apos;d out, not just the end of the function.

Will fix.

&gt;&gt; Source/WebCore/html/FileInputType.cpp:452
&gt;&gt; +#if ENABLE(DRAG_SUPPORT)
&gt; 
&gt; I don’t understand why we are putting this #if only around the body of the function rather than around the entire function.

Ditto.

&gt;&gt; Source/WebCore/html/FormController.cpp:386
&gt;&gt; +        HTMLFormControlElementWithState* element = it-&gt;get();
&gt; 
&gt; Should write this with new style for loop:
&gt; 
&gt;     for (auto element : m_formElementsWithState.begin)

Will write using C++11 range-based for loop.

&gt;&gt; Source/WebCore/html/HTMLAnchorElement.cpp:619
&gt;&gt; +#endif
&gt; 
&gt; Yes. Reconcile by always calling isLink first.

Will fix.

&gt;&gt; Source/WebCore/html/HTMLButtonElement.cpp:163
&gt;&gt; +#endif
&gt; 
&gt; Why the difference?

Ditto.

&gt;&gt; Source/WebCore/html/HTMLCanvasElement.h:132
&gt;&gt; +    void setMaxiumDecodedImageSize(float maximumDecodedImageSize) { m_maximumDecodedImageSize = maximumDecodedImageSize; }
&gt; 
&gt; Typo: &quot;setMaxium&quot;

Ditto.

&gt;&gt; Source/WebCore/html/HTMLElement.cpp:1100
&gt;&gt; +#endif
&gt; 
&gt; Why are these iOS-specific? I think we want these on all platforms.

Will make these available to all platforms.

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:394
&gt;&gt; +    return true;
&gt; 
&gt; A real shame that this (and all the other related functions) repeats the code from HTMLFormControlElement. We should find a way to share code.

For now, I&apos;ll add a FIXME comment to this file and in file HTMLFormControlElement.cpp.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1207
&gt;&gt; +    if (evt-&gt;eventInterface() == TouchEventInterfaceType) {
&gt; 
&gt; This check is not needed. The call to eventInterface is irrelevant.

Then I&apos;ll remove this code since we have existing logic in this function for touch events.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1224
&gt;&gt; +#else
&gt; 
&gt; Why different on iOS?

Will fix.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:1662
&gt;&gt;  bool HTMLInputElement::isTextButton() const
&gt; 
&gt; Please don’t add the extra blank line.

Will remove extraneous empty line such that there is exactly one empty line between the #endif (line 1659) and the prototype for HTMLInputElement::isTextButton() (line 1662).

&gt;&gt; Source/WebCore/html/HTMLInputElement.idl:128
&gt;&gt; +#if WTF_PLATFORM_IOS
&gt; 
&gt; This is not the correct way to do the #if in the IDL file, I don’t think.

From reading WebCore/bindings/scripts/CodeGenerator.pm, the IDL attribute, [Conditional=X], only works for ENABLE_X defines (*). That is, we cannot use this attribute to generate &quot;#if WTF_PLATFORM_IOS&quot;. I&apos;ll define an enable macro, called IOS_AUTOCORRECT_AND_AUTOCAPITALIZE, and then use it to guard the iOS autocorrect and autocapitalization code, including our IDL attributes.

(*) This is also consistent with the documentation for the IDL attribute Conditional: &lt;http://trac.webkit.org/wiki/WebKitIDL#Conditional&gt;.

&gt;&gt; Source/WebCore/html/HTMLLabelElement.cpp:148
&gt;&gt; +#endif
&gt; 
&gt; Why the difference on iOS?

Will fix.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:1926
&gt;&gt; +#endif
&gt; 
&gt; Makes no sense to check in code with a boolean that is always false.

Will remove.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:1955
&gt;&gt; +#endif
&gt; 
&gt; This code always does nothing since shouldUpdatePlayState is always false.

Ditto.

&gt;&gt; Source/WebCore/html/HTMLPlugInElement.h:86
&gt;&gt; +#endif
&gt; 
&gt; Not sure we should have mousemove events at all on iOS. It seems strange to override this function like this rather than turning off additional code regarding mouse move events.

We talked about this in person today. This code is related to our tap highlight logic on iOS.

&gt;&gt; Source/WebCore/html/HTMLSummaryElement.cpp:167
&gt;&gt; +#endif
&gt; 
&gt; Doesn’t seem right to have a different case for iOS here.

Will fix.

&gt;&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:553
&gt;&gt; +#endif
&gt; 
&gt; Seems like we want this code on all platforms, not just iOS.

Will compile this code for all platforms.

&gt;&gt; Source/WebCore/html/ImageDocument.cpp:258
&gt;&gt; +    return;
&gt; 
&gt; No need for this return statement.

Will remove.

&gt;&gt; Source/WebCore/html/ImageDocument.cpp:279
&gt;&gt; +    return;
&gt; 
&gt; No need for this return statement.

Ditto.

&gt;&gt; Source/WebCore/html/InputType.cpp:564
&gt;&gt; +#endif
&gt; 
&gt; Is this rule really iOS-specific?

This seems applicable to non-iOS ports. Will remove PLATFORM(iOS) guards.

&gt;&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:68
&gt;&gt; +#endif
&gt; 
&gt; I’d like to see this code in a separate file, not in HTMLTreeBuilder.cpp itself.

As we discussed in person today, I will defer such a clean up at this time and add a FIXME comment to this file.

&gt;&gt; Source/WebCore/html/shadow/MediaControlElements.h:298
&gt;&gt; +#if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(GTK)
&gt; 
&gt; Why is this change needed? Doesn’t PLATFORM(IOS) also imply PLATFORM(MAC) at this time?

It isn&apos;t needed and I&apos;ll remove it.

Additional remarks:

When I put together this patch I thought to keep it towards separating the concept of PLATFORM(IOS) from PLATFORM(MAC) in the future (if deemed desirable). Having said that, we&apos;ll need to audit all uses of PLATFORM(MAC) should we choose to separate these concepts, including its use here. So, I&apos;ll remove PLATFORM(IOS).

&gt;&gt; Source/WebCore/html/shadow/SliderThumbElement.h:47
&gt;&gt; +#endif
&gt; 
&gt; Seems pointless to put this inside an #if. Just make it an unconditional forward declaration, please.

Will make an forward declaration unconditional.

&gt;&gt; Source/WebCore/html/shadow/SliderThumbElement.h:62
&gt;&gt; +    void disabledAttributeChanged();
&gt; 
&gt; Can one or more of these be private instead of public?

Will make SliderThumbElement::didAttachRenderers() private.

As it turns out SliderThumbElement::{handleTouchEvent, disabledAttributeChanged}() have exactly one caller: RangeInputType::{handleTouchEvent, disabledAttributeChanged}(), respectively. Unless we make RangeInputType::{handleTouchEvent, disabledAttributeChanged}() friend functions or RangeInputType a friend class, SliderThumbElement::{handleTouchEvent, disabledAttributeChanged}() will need to be public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960705</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-17 16:11:54 -0800</bug_when>
    <thetext>Committed r160733: &lt;http://trac.webkit.org/changeset/160733&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219294</attachid>
            <date>2013-12-15 21:14:08 -0800</date>
            <delta_ts>2013-12-16 13:35:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125765-20131215211407.patch</filename>
            <type>text/plain</type>
            <size>171549</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU5MDRlOTQ3NGExYzcw
YzAwM2ZhYzgxNjA5Yzk5ZTBjOGIxMzRkNi4uYWY4YWQyNGEzM2EwOWE1YTk3ZDdjMTg0YTUxOWVh
NjJjNzZjMGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NSBAQAorMjAxMy0xMi0xNSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZS9odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjU3NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1s
L0F1dG9jYXBpdGFsaXplLmNwcDogQWRkZWQuCisgICAgICAgICogaHRtbC9BdXRvY2FwaXRhbGl6
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KTogT3B0IG91dCBvZiBjb2RlIHdoZW4g
YnVpbGRpbmcgZm9yIGlPUy4KKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmlzS2V5
Ym9hcmRGb2N1c2FibGUpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGh0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUpOiBBZGRl
ZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6On5G
aWxlSW5wdXRUeXBlKTogT3B0IG91dCBvZiBjb2RlIHdoZW4gYnVpbGRpbmcgZm9yIGlPUy4KKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpmaWxlc0Nob3Nlbik6IEFkZGVkOyBpT1Mtc3Bl
Y2lmaWMuCisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjpkaXNwbGF5U3RyaW5nKTog
QWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OnJl
Y2VpdmVEcm9wcGVkRmlsZXMpOiBHdWFyZGVkIGNvZGUgd2l0aCBFTkFCTEUoRFJBR19TVVBQT1JU
KS4KKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0Zvcm1D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpmb3JtRWxl
bWVudHNDaGFyYWN0ZXJDb3VudCk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBbmNob3JFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6
IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlIGFuZCBGSVhNRSBjb21tZW50LgorICAgICAgICAqIGh0
bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVs
ZW1lbnQ6OnVwZGF0ZVdpZGdldCk6IE9wdCBvdXQgb2YgY29kZSB3aGVuIGJ1aWxkaW5nIGZvciBp
T1MuCisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUGF0aCk6IENoYW5nZWQgYXJndW1lbnQgZGF0YXR5
cGUgZnJvbSBSZW5kZXJFbGVtZW50KiB0byBSZW5kZXJPYmplY3QqLgorICAgICAgICBBbHNvLCBh
ZGRlZCBGSVhNRSBjb21tZW50IHRvIGZpeCB0aGlzIHVwIG9uY2Ugd2UgdXBzdHJlYW0gaU9TJ3Mg
RE9NVUlLaXRFeHRlbnNpb25zLntoLCBtbX0uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVs
ZW1lbnQ6OmNvbXB1dGVSZWN0KTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogQWRkZWQgYXR0cmli
dXRlcyBvbmdlc3R1cmV7c3RhcnQsIGNoYW5nZSwgZW5kfSwgYXV0b2NvcnJlY3QsIGF1dG9jYXBp
dGFsaXplLAorICAgICAgICBkYXRhLXlvdXR1YmUtaWQsIG9ud2Via2l0e2N1cnJlbnRwbGF5YmFj
a3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkLCBwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5n
ZWR9LCB3ZWJraXQtcGxheXNpbmxpbmUsCisgICAgICAgIHgtd2Via2l0LWFpcnBsYXksIGFuZCB4
LXdlYmtpdC13aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZC4KKyAgICAgICAgKiBodG1sL0hU
TUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnNj
cm9sbExlZnQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxCb2R5RWxlbWVudDo6c2Nyb2xsVG9wKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQnV0dG9uRWxlbWVudDo6d2ls
bFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpI
VE1MQ2FudmFzRWxlbWVudCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlIGFuZCBGSVhNRSBjb21t
ZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZSBhbmQgRklYTUUgY29tbWVudC4KKyAg
ICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9j
dW1lbnQ6OkhUTUxEb2N1bWVudCk6IEFkZGVkIGFyZ3VtZW50IGlzU3ludGhlc2l6ZWQgKGRlZmF1
bHQgdG8gZmFsc2UpLCB3aGljaCBpcworICAgICAgICBwYXNzZWQgdGhyb3VnaCB0byBEb2N1bWVu
dDo6RG9jdW1lbnQoKSwgdG8gY3JlYXRlIGEgc3ludGhlc2l6ZWQgZG9jdW1lbnQuCisgICAgICAg
ICogaHRtbC9IVE1MRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6
Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAg
ICAoV2ViQ29yZTo6cG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXApOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VN
b3ZlRXZlbnRzKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VXaGVlbEV2ZW50cyk6IEFkZGVkOyBpT1Mtc3BlY2lm
aWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NvcnJlY3QpOiBBZGRlZDsg
Z3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJ
T1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0
YWxpemVUeXBlKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFsaXplKTogQWRkZWQ7IGd1
YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnNldEF1dG9jYXBpdGFsaXplKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0o
SU9TKS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVs
ZW1lbnQ6OnN1Ym1pdEltcGxpY2l0bHkpOiBNb2RpZmllZCB0byBjb2RlIHRvIGFsbG93IGltcGxp
Y2l0IHN1Ym1pc3Npb24gb2YgbXVsdGktaW5wdXQKKyAgICAgICAgZm9ybXMgb25seSBpZiBTZXR0
aW5nczo6YWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdFN1Ym1pc3Npb24oKSByZXR1cm5zIHRydWUu
IFN1Y2ggYmVoYXZpb3IgaXMgZXhwZWN0ZWQgYnkgb2xkZXIKKyAgICAgICAgaU9TIGFwcHMuIEFs
c28sIGNoYW5nZWQgZGF0YXR5cGUgb2YgdmFyaWFibGUgc3VibWlzc2lvblRyaWdnZXJDb3VudCBm
cm9tIGludCB0byB1bnNpZ25lZCBiZWNhdXNlIGl0IHJlcHJlc2VudHMKKyAgICAgICAgYSBub24t
bmVnYXRpdmUgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmF1dG9j
b3JyZWN0KTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QpOiBBZGRlZDsgZ3VhcmRlZCBieSBQ
TEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphdXRvY2Fw
aXRhbGl6ZVR5cGUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjphdXRvY2FwaXRhbGl6ZSk6IEFkZGVkOyBndWFyZGVk
IGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnNl
dEF1dG9jYXBpdGFsaXplKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVt
ZW50LmlkbDogQWRkZWQgaU9TLXNwZWNpZmljIGF0dHJpYnV0ZXM6IGF1dG9jb3JyZWN0IGFuZCBh
dXRvY2FwaXRhbGl6ZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29k
ZS4gQWxzbyBhZGRlZCBGSVhNRSBjb21tZW50IHRvCisgICAgICAgIHJlbW92ZSB0aGlzIGNvZGUg
YXMgaXQgc2VlbXMgdG8gZHVwbGljYXRlIGVhcmxpZXIgbG9naWMgaW4gdGhpcyBmdW5jdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpkaXNwbGF5U3RyaW5nKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZP
Uk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRhdGVUeXBlKTog
QWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgYXR0cmlidXRlczogYXV0b2NvcnJlY3QgYW5kIGF1dG9jYXBpdGFsaXplLgor
ICAgICAgICAqIGh0bWwvSFRNTExhYmVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGFiZWxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KTogQWRk
ZWQgaU9TLXNwZWNpZmljIGNvZGUgYW5kIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IEFkZGVkIGlPUy1zcGVjaWZp
YyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNZWRpYVBs
YXllckF0dHJpYnV0ZSk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphdXRvcGxheSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bW5lKTogT3B0
IG91dCBvZiBjb2RlIHdoZW4gYnVpbGRpbmcgZm9yIGlPUy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKTogQWRkZWQgaU9TLXNwZWNpZmlj
IGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlT
dGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlckNh
bmNlbGxlZExvYWQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZSBhbmQgRklYTUUgY29tbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSk6IEFkZGVkIGlPUy1z
cGVjaWZpYyBjb21tZW50LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzk3NTEzMDM+LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGVsaXZlck5vdGlmaWNhdGlvbik6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Z2V0
UGx1Z2luUHJveHlQYXJhbXMpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4gQWxzbywgY2hhbmdl
ZCBzcmMoKSB0byBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZSgpCisgICAgICAgIGluIHRoZSBub24t
aU9TIGNvZGUgYXMgdGhlaXIgZG9lc24ndCBleGlzdCBhIG1ldGhvZCBjYWxsZWQgc3JjIGluIHRo
aXMgY2xhc3Mgb3IgaXRzIHN1cGVyY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcik6IEFkZGVkOyBndWFyZGVk
IGJ5IEVOQUJMRShJT1NfQUlSUExBWSkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKTogQWRkZWQ7IGd1YXJk
ZWQgYnkgRU5BQkxFKElPU19BSVJQTEFZKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQp
OiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0FJUlBMQVkpLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUNoYW5nZWQpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0FJUlBMQVkpLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6IEFkZGVkOyBn
dWFyZGVkIGJ5IEVOQUJMRShJT1NfQUlSUExBWSkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxF
KElPU19BSVJQTEFZKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVucXVl
dWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCk6IEFkZGVkOyBndWFyZGVk
IGJ5IEVOQUJMRShJT1NfQUlSUExBWSkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjplbnRlckZ1bGxzY3JlZW4pOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcik6IEFkZGVk
IEVOQUJMRShJT1NfQUlSUExBWSktZ3VhcmRlZCBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dXNlclJlcXVlc3RzTWVkaWFMb2FkaW5nKTogQWRkZWQ7IGd1YXJkZWQg
YnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNo
b3VsZFVzZVZpZGVvUGx1Z2luUHJveHkpOiBVc2UgZG90IG9wZXJhdG9yIGluc3RlYWQgb2YgZGVy
ZWZlcmVuY2Ugb3BlcmF0b3IgKC0+KQorICAgICAgICB3aGVuIGFjY2Vzc2luZyBEb2N1bWVudDo6
c2V0dGluZ3MoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOiBBZGRlZCBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykt
Z3VhcmRlZCBjb2RlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXNlckdlc3R1cmVSZXF1aXJlZFRvU2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKElPU19BSVJQTEFZ
KS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGRlZCBFTkFCTEVfSU9T
X0FJUlBMQVktZ3VhcmRlZCBhdHRyaWJ1dGVzIGFuZCBmdW5jdGlvbnM6d2Via2l0Q3VycmVudFBs
YXliYWNrVGFyZ2V0SXNXaXJlbGVzcywKKyAgICAgICAgb253ZWJraXR7Y3VycmVudHBsYXliYWNr
dGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQsIHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdl
ZH0sIGFuZCB3ZWJraXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKS4KKyAgICAgICAgKiBodG1s
L0hUTUxNZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0YUVsZW1lbnQ6
OnByb2Nlc3MpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE5vdFBlcmZvcm1VUkxB
ZGp1c3RtZW50KTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
YmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKTogTW9kaWZpZWQgdG8gY2FsbCBzaG91
bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCgpIHdoZW4KKyAgICAgICAgYnVpbGRpbmcgZm9yIGlP
Uy4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVTaGFkb3dJRnJh
bWVTdWJ0cmVlKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKiBodG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1c2VzTWVudUxpc3QpOiBBZGRl
ZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVs
ZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IEFk
ZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
dXBkYXRlTGlzdEJveFNlbGVjdGlvbik6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRP
blJlbmRlcmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6
bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKTogT3B0IG91dCBvZiBjb2RlIHdoZW4gYnVpbGRp
bmcgZm9yIGlPUy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1tYXJ5RWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5pZGw6IEFkZGVkIGlPUy1zcGVjaWZpYyBhdHRyaWJ1dGVzOiBhdXRvY29ycmVjdCBhbmQg
YXV0b2NhcGl0YWxpemUuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2Vs
ZWN0KTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUgYW5kIEZJWE1FIGNvbW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2Up
OiBPcHQgb3V0IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmhpZGVQbGFjZWhvbGRlcik6IEFkZGVkOyBn
dWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6c2hvd1BsYWNlaG9sZGVySWZOZWNlc3NhcnkpOiBBZGRlZDsgZ3VhcmRl
ZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBGaXggdXAgY2FsbCB0
byBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcigpLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29k
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVl
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Via2l0V2ly
ZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoSU9T
X0FJUlBMQVkpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2V0V2Via2l0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUo
SU9TX0FJUlBMQVkpLgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGw6IEFkZGVkIEVOQUJMRV9JT1NfQUlSUExBWS1n
dWFyZGVkIGF0dHJpYnV0ZTogd2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQuCisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKTogQWRkZWQgaU9TLXNwZWNpZmljIGNv
ZGUuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpzY2FsZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6cmVzaXplSW1hZ2VUb0ZpdCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6aW1hZ2VDbGlja2VkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjppbWFnZUZpdHNJbldpbmRvdyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6d2luZG93U2l6ZUNoYW5nZWQpOiBE
aXR0by4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmRhdGVUeXBlKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6aXNLZXlib2FyZEZvY3VzYWJsZSk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpkaXNwbGF5U3Ry
aW5nKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBodG1sL0lu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKTog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmRpc2FibGVkQXR0cmli
dXRlQ2hhbmdlZCk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICogaHRtbC9SYW5nZUlu
cHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KTogT3B0IG91dCBvZiBj
b2RlIHdoZW4gYnVpbGRpbmcgZm9yIGlPUy4KKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmlzS2V5Ym9h
cmRGb2N1c2FibGUpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBodG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvV2ViQXV0b2NhcGl0YWxpemUuaDog
QWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlSW1h
Z2VEYXRhKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0YSk6IERpdHRvLgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29uc3RydWN0aW9uU2l0ZTo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCk6IEFkZGVk
OyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBh
cnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6
Y2hlY2tGb3JZaWVsZEJlZm9yZVRva2VuKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0UGhvbmVOdW1iZXJMaW5rKTogQWRkZWQ7IGd1YXJkZWQg
YnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6bGlu
a2lmeVBob25lTnVtYmVycyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpkaXNhbGxvd1RlbGVwaG9uZU51bWJlclBhcnNpbmcpOiBBZGRlZDsgZ3Vh
cmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUGFyc2VUZWxl
cGhvbmVOdW1iZXJzSW5Ob2RlKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZv
ckluQm9keSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
VHJhY2tMaXN0RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50KTogR3VhcmRlZCBtZW1iZXIgaW5pdGlhbGl6YXRpb24gb2YgbV9jb250cm9scyB3aXRoIEVO
QUJMRShWSURFT19UUkFDSykuIEFsc28gYWRkZWQgVU5VU0VEX1BBUkFNKGV2ZW50KSB3aGVuIGJ1
aWxkaW5nIHdpdGgKKyAgICAgICAgVklERU9fVFJBQ0sgZGlzYWJsZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOiBBZGRlZCBVTlVTRURfUEFSQU0oZXZlbnQpIHdoZW4KKyAgICAgICAgYnVp
bGRpbmcgd2l0aCBWSURFT19UUkFDSyBkaXNhYmxlZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bHMuaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpTbGlkZXJUaHVtYkVsZW1lbnQpOiBB
ZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxl
bWVudDo6ZHJhZ0Zyb20pOiBPcHQgb3V0IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgor
ICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsRGV0YWNoUmVuZGVyZXJz
KTogIEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1
bWJFbGVtZW50OjpleGNsdXNpdmVUb3VjaElkZW50aWZpZXIpOiBBZGRlZDsgZ3VhcmRlZCBieSBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyVGh1bWJFbGVtZW50OjpzZXRFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIpOiBBZGRlZDsg
Z3VhcmRlZCBieSBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAgICAg
ICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpjbGVhckV4Y2x1c2l2ZVRvdWNoSWRlbnRp
Zmllcik6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JN
KElPUykuCisgICAgICAgIChXZWJDb3JlOjpmaW5kVG91Y2hXaXRoSWRlbnRpZmllcik6IEFkZGVk
OyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNoU3RhcnQpOiBBZGRl
ZDsgZ3VhcmRlZCBieSBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAg
ICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVUb3VjaE1vdmUpOiBBZGRl
ZDsgZ3VhcmRlZCBieSBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAg
ICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVUb3VjaEVuZEFuZENhbmNl
bCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElP
UykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmRpZEF0dGFjaFJlbmRl
cmVycyk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JN
KElPUykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNo
RXZlbnQpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9S
TShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVtZW50OjpzaG91bGRBY2Nl
cHRUb3VjaEV2ZW50cyk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnJl
Z2lzdGVyRm9yVG91Y2hFdmVudHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVyVGh1bWJFbGVt
ZW50Ojp1bnJlZ2lzdGVyRm9yVG91Y2hFdmVudHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
VGh1bWJFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQpOiBBZGRlZDsgZ3VhcmRlZCBi
eSBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpLgorICAgICAgICAqIGh0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogT3B0IG91dCBvZiBjb2Rl
IHdoZW4gYnVpbGRpbmcgZm9yIGlPUy4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmluOiBBZGRlZCBzZXR0
aW5nIGFsbG93TXVsdGlFbGVtZW50SW1wbGljaXRTdWJtaXNzaW9uIHRvIGVuYWJsZS9kaXNhYmxl
IG11bHRpLWlucHV0IGltcGxpY2l0IGZvcm0KKyAgICAgICAgc3VibWlzc2lvbiAoZGlzYWJsZWQg
YnkgZGVmYXVsdCkuIEFsc28gYWRkZWQgRklYTUUgY29tbWVudCB0byByZW5hbWUgdGhpcyBzZXR0
aW5nIHRvIGFsbG93TXVsdGlFbGVtZW50SW1wbGljaXRGb3JtU3VibWlzc2lvbgorICAgICAgICBv
bmNlIHdlIHVwc3RyZWFtIHRoZSBpT1MgY2hhbmdlcyB0byBXZWJWaWV3Lm1tLgorCiAyMDEzLTEy
LTEyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBV
cHN0cmVhbSBXZWJDb3JlL2RvbSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGU0MDg2ZmYxMjcxYmE3MTM4MGE1MThl
NTdkNzYzZTY3Yzg5NjY4Ny4uN2NlNThjZjVhOTczNGY4ZDMwMGE0NmRkZDY4NTI5ZmU1M2M4ZTU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzUxNyw2ICszNTE3LDcgQEAKIAkJQTQ1NDQyNEYxMTlCMzY4NzAwOUJFOTEyIC8q
IFJlbmRlck1ldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNDU0NDI0RDExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuaCAqLzsgfTsKIAkJ
QTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE0NTZGQTI0MTFBRDRBODMwMDIw
QjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5jcHAgKi87IH07CiAJCUE0NTZGQTI3MTFBRDRBODMwMDIw
QjQyMCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0
LmggKi87IH07CisJCUE1MDE5MjBFMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwMTkyMEMx
MzJFQkYyRTAwOEJGRTU1IC8qIEF1dG9jYXBpdGFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUwMkM1REYxMzA0OUIzNTAwRkM3RDUzIC8q
IFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDJDNUREMTMwNDlCMzUwMEZDN0Q1MyAvKiBXZWJTYWZl
R0NBY3Rpdml0eUNhbGxiYWNrSU9TLmggKi87IH07CiAJCUE1MTNCM0Q3MTE0QjE2NjYwMDFDNDI5
QiAvKiBLZXlFdmVudENvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICov
OyB9OwogCQlBNTEzQjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NEQwMTE0ODVG
RjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLm1tICovOyB9OwpAQCAtMzUyNywxMCArMzUyOCwx
MiBAQAogCQlBNTkzQ0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4
QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAw
REUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5jcHAgKi87IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdn
YWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVB
MkFGMEExODI5NzM0MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CisJCUE1QTdB
QTQzMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBN0FBNDIxMzJGMEVDQzAwRDNBM0My
IC8qIFdlYkF1dG9jYXBpdGFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0
ZXJhdG9yUG9vbElDVS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVBQkI3ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oICovOyB9OwogCQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzREMTE1
MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovOyB9OwogCQlBNUFGQjM1MDExNTE1MUE3
MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVDNTY2QUIx
MjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM1NjZBQTEyN0EzQUFEMDBFOEEz
RkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUY2RTE2QjEzMkVENDZFMDA4RURBRTMgLyogQXV0
b2NhcGl0YWxpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCAqLzsg
fTsKIAkJQTVGOUVGNzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkUxMjY2
NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwogCQlBNUY5RUY3MTEy
NjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBE
aXNrSW1hZ2VDYWNoZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE2MTQ4QTYyMTJFNDFEM0EwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxl
bWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNjE0OEE2MTEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRl
cm5hbC5oICovOyB9OwpAQCAtMTAzNDcsNiArMTAzNTAsNyBAQAogCQlBNDU0NDI0RDExOUIzNjg3
MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyTWV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQ1NkZBMjQx
MUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IExhYmVsc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVsc05vZGVMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDE5MjBDMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRv
Y2FwaXRhbGl6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvY2FwaXRh
bGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAyQzVERDEzMDQ5QjM1MDBG
QzdENTMgLyogV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmg7IHBhdGggPSBp
b3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTE4MjI1MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNjcmlw
dHM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU0MTdFMkEwRDQwMEE5QkEx
RCAvKiBJbnNwZWN0b3JPdmVybGF5UGFnZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQ
YWdlLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzU5LDEyICsxMDM2Mywx
NCBAQAogCQlBNTkzQ0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkFnZW50QmFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3
MjkgLyogUGFnZURlYnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFnZURlYnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NUEyQUYwQTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZURlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTVBN0FBNDIxMzJGMEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9jYXBpdGFsaXpl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9jYXBpdGFsaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAv
KiBMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1QUZCMzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFn
ZUNhY2hlQ2xpZW50SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJ
bWFnZUNhY2hlQ2xpZW50SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3
NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEtleUV2ZW50Q29jb2EuaDsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29j
b2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZG
MkFCIC8qIEtleUV2ZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBLZXlFdmVudENvY29hLm1tOyBwYXRoID0gY29jb2EvS2V5RXZlbnRDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8q
IEF1dG9jYXBpdGFsaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEF1dG9jYXBpdGFsaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGOUVG
NkUxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1h
Z2VDYWNoZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VD
YWNoZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2MTEyRTQxRDNB
MDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY1Myw2ICsxNjY1OSw4IEBACiAJCQkJOTdDMUY1
NTExMjI4NTU4ODAwRURFNjE2IC8qIHBhcnNlciAqLywKIAkJCQk0MTUwRjlFRDEyQjZFMDk5MDAw
OEM4NjAgLyogc2hhZG93ICovLAogCQkJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFj
ayAqLywKKwkJCQlBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3Bw
ICovLAorCQkJCUE1MDE5MjBDMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5oICov
LAogCQkJCTM3OUU2MUM1MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNw
cCAqLywKIAkJCQkzNzlFNjFDNjEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5oICovLAogCQkJCTM3OUU2MUM3MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5w
dXRUeXBlLmNwcCAqLywKQEAgLTE3MDQyLDYgKzE3MDUwLDcgQEAKIAkJCQkxNUM3NzA4OTEwMEQz
QzZBMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5pZGwgKi8sCiAJCQkJRTQ0NjEzQjQwQ0Q2MzQ0
RTAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5oICovLAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZB
REE3NSAvKiBWb2lkQ2FsbGJhY2suaWRsICovLAorCQkJCUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTND
MiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2
OSAvKiBXZWVrSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkg
LyogV2Vla0lucHV0VHlwZS5oICovLAogCQkJKTsKQEAgLTI1MDU2LDYgKzI1MDY1LDcgQEAKIAkJ
CQkyNkU5OEExMDEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBM0MwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lD
VS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBM0UwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRD
b2RlY0xhdGluMS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTVBN0FBNDMxMzJGMEVDQzAwRDNBM0My
IC8qIFdlYkF1dG9jYXBpdGFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkFGRkM5QTBEMDBB
NURGMDAzMDA3NEQgLyogVGV4dENvZGVjTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0
MDBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjVXNlckRlZmluZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyQzNEQTQyMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVVEYxNi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNTE1OCw2ICsyNTE2OCw3IEBACiAJCQkJRTRENThFQjkxN0I0RUQ4OTAw
Q0JEQ0E4IC8qIFN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFG
QUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJFM0JCRjA4MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNTAxOTIwRTEzMkVCRjJFMDA4QkZFNTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUwRDMyODU4MTYzQjMxM0YwMDE2MTExRSAvKiBWYWxpZGF0ZWRDdXN0b21GaWx0
ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUY1QTE1NDI4MTI3OTUzNEQwMEQwQjBD
MCAvKiBWYWxpZGF0aW9uTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjUxM0EzRUExNUZG
NDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI3ODMxLDYgKzI3ODQyLDcgQEAKIAkJCQk5MzFDQkQwQzE2MUE0NEU5MDBFNEM4NzQgLyog
U2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMUNCRDEzMTYxQTQ0
RjgwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5MzFDQkQwRTE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRv
Y2FwaXRhbGl6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE4OEVCRDE2QThEMUJEMDBGOTk5
ODQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZCODg5MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzFDQkQxMDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBp
dGFsaXplLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2I0NzkzZjk2YjA5YzBmY2FiZTIxZmY4NGJiODg0ZWFm
YTQ4ZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRh
bGl6ZS5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXV0b2NhcGl0
YWxpemUuaCIKKworI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlRGVmYXVsdCgpCit7
CisgICAgcmV0dXJuIG51bGxBdG9tOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZU9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiB2YWx1ZU9uKCJvbiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHJldHVybiB2YWx1ZU9uOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZU9m
ZigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gdmFs
dWVPZmYoIm9mZiIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJl
dHVybiB2YWx1ZU9mZjsKK30KKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWVOb25l
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB2YWx1
ZU5vbmUoIm5vbmUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBy
ZXR1cm4gdmFsdWVOb25lOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZVdv
cmRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB2
YWx1ZVdvcmRzKCJ3b3JkcyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwor
ICAgIHJldHVybiB2YWx1ZVdvcmRzOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZVNlbnRlbmNlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21p
Y1N0cmluZz4gdmFsdWVTZW50ZW5jZXMoInNlbnRlbmNlcyIsIEF0b21pY1N0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB2YWx1ZVNlbnRlbmNlczsKK30KKworc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWVBbGxDaGFyYWN0ZXJzKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB2YWx1ZUFsbENoYXJhY3RlcnMoImNo
YXJhY3RlcnMiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1
cm4gdmFsdWVBbGxDaGFyYWN0ZXJzOworfQorCitXZWJBdXRvY2FwaXRhbGl6ZVR5cGUgYXV0b2Nh
cGl0YWxpemVUeXBlRm9yQXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVWYWx1ZSkKK3sKKyAgICAvLyBPbWl0dGVkIC8gbWlzc2luZyB2YWx1ZXMgYXJlIHRoZSBEZWZh
dWx0IHN0YXRlLgorICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSB8fCBhdHRyaWJ1dGVW
YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVEZWZh
dWx0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCB2YWx1ZU9u
KCkpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCB2YWx1ZVNlbnRlbmNlcygp
KSkKKyAgICAgICAgcmV0dXJuIFdlYkF1dG9jYXBpdGFsaXplVHlwZVNlbnRlbmNlczsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlT2ZmKCkpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCB2YWx1ZU5vbmUoKSkpCisgICAgICAgIHJldHVy
biBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVOb25lOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyaWJ1dGVWYWx1ZSwgdmFsdWVXb3JkcygpKSkKKyAgICAgICAgcmV0dXJuIFdlYkF1dG9jYXBp
dGFsaXplVHlwZVdvcmRzOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGVWYWx1
ZSwgdmFsdWVBbGxDaGFyYWN0ZXJzKCkpKQorICAgICAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxp
emVUeXBlQWxsQ2hhcmFjdGVyczsKKworICAgIC8vIFVucmVjb2duaXplZCB2YWx1ZXMgZmFsbCBi
YWNrIHRvICJvbiIuCisgICAgcmV0dXJuIFdlYkF1dG9jYXBpdGFsaXplVHlwZVNlbnRlbmNlczsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoV2Vi
QXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVEZWZhdWx0OgorICAgICAgICByZXR1cm4gdmFsdWVEZWZh
dWx0KCk7CisgICAgY2FzZSBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVOb25lOgorICAgICAgICByZXR1
cm4gdmFsdWVOb25lKCk7CisgICAgY2FzZSBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVTZW50ZW5jZXM6
CisgICAgICAgIHJldHVybiB2YWx1ZVNlbnRlbmNlcygpOworICAgIGNhc2UgV2ViQXV0b2NhcGl0
YWxpemVUeXBlV29yZHM6CisgICAgICAgIHJldHVybiB2YWx1ZVdvcmRzKCk7CisgICAgY2FzZSBX
ZWJBdXRvY2FwaXRhbGl6ZVR5cGVBbGxDaGFyYWN0ZXJzOgorICAgICAgICByZXR1cm4gdmFsdWVB
bGxDaGFyYWN0ZXJzKCk7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHZhbHVlRGVmYXVsdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmI3MjQ0NGQ0OGJlNWIyZjlh
MzdmNmUwYzE1ZDM1NmNiY2YwOWUwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQXV0b2NhcGl0YWxpemUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBdXRvY2FwaXRhbGl6ZV9oCisj
ZGVmaW5lIEF1dG9jYXBpdGFsaXplX2gKKworI2luY2x1ZGUgIldlYkF1dG9jYXBpdGFsaXplLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZUZvckF0dHJpYnV0
ZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYpOworY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoV2ViQXV0b2NhcGl0YWxpemVUeXBlKTsKKworfQorCisjZW5k
aWYgLy8gQXV0b2NhcGl0YWxpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCAwMmQ0ZTY1
MWIzYzhkMWVkYTdhMzc1YmNlYWVkYzk4OGFjYmYxY2NjLi44ODcyYTRiMWNkODA4ZDJlNDVhN2Iz
NjVmNWE0OGNhZGYyNDA5NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtNTMsNyArNTMs
OSBAQCB2b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpoYW5kbGVET01B
Y3RpdmF0ZUV2ZW50KEV2ZW50KikKICAgICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzIHBhcmFt
ZXRlcnM7CiAgICAgaWYgKCFlbGVtZW50KCkuc2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpKQogICAgICAgICByZXR1cm47CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBt
X2RhdGVUaW1lQ2hvb3NlciA9IGVsZW1lbnQoKS5kb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCku
b3BlbkRhdGVUaW1lQ2hvb3Nlcih0aGlzLCBwYXJhbWV0ZXJzKTsKKyNlbmRpZgogfQogCiB2b2lk
IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cAppbmRleCAyMTNjOWZmZmM3MTQ4NWY1Yzk4OTRlNTJkOWVlNzUwNTAxZjIxYTNiLi4xNmY1ZGY3
ZTA5MTQ4M2FlYjNlMWZkNzEyYjdkM2IwMDBjZmI3OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC0xNzMsNSArMTczLDEyIEBA
IGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCgpLmlzUmVxdWlyZWQoKSAmJiB2YWx1
ZS5pc0VtcHR5KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitib29sIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QKK3sK
KyAgICByZXR1cm4gIWVsZW1lbnQoKS5pc1JlYWRPbmx5KCkgJiYgZWxlbWVudCgpLmlzVGV4dEZv
cm1Db250cm9sRm9jdXNhYmxlKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuaAppbmRleCA2OGQyMGE4Yzc1MWM3ZDMzNzYxNjZiZDAyMmJhYmM0OGJhZDhiMzBkLi5lOTE5
MDVlNDRhN2JmN2I1ZmMyMDg0NjA1MTZkODAxNzA1OWRlYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTQ5LDEwICs0OSwxNSBAQCBw
cm90ZWN0ZWQ6CiAgICAgU3RyaW5nIHNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERhdGVD
b21wb25lbnRzJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRl
Q29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50Kikg
Y29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcGFy
c2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgs
IERhdGVDb21wb25lbnRzKikgY29uc3QgPSAwOworI2lmICFQTEFURk9STShJT1MpCiAgICAgdmly
dHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0ID0gMDsKKyNlbmRpZgog
ICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEb3VibGUoKSBjb25zdCBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDRkYjQzODE1ZjliM2Yw
Yjg4OTA3ZThkYTQzZmU2ZTU2YjFmOWE2NDcuLjc4NzlmOGIwODI5MjhkOWQ2YWFlMzk3NDA5Zjg2
ZTg5MzA3OTA3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtODYs
NiArODYsOSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKIEZpbGVJbnB1dFR5cGU6OkZpbGVJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCYgZWxlbWVudCkKICAgICA6IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlKGVs
ZW1lbnQpCiAgICAgLCBtX2ZpbGVMaXN0KEZpbGVMaXN0OjpjcmVhdGUoKSkKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgLCBtX2Rpc3BsYXlTdHJpbmcoU3RyaW5nKCkpCisjZW5kaWYKIHsKIH0KIApA
QCAtOTQsOCArOTcsMTAgQEAgRmlsZUlucHV0VHlwZTo6fkZpbGVJbnB1dFR5cGUoKQogICAgIGlm
IChtX2ZpbGVDaG9vc2VyKQogICAgICAgICBtX2ZpbGVDaG9vc2VyLT5pbnZhbGlkYXRlKCk7CiAK
KyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChtX2ZpbGVJY29uTG9hZGVyKQogICAgICAgICBt
X2ZpbGVJY29uTG9hZGVyLT5pbnZhbGlkYXRlKCk7CisjZW5kaWYKIH0KIAogVmVjdG9yPEZpbGVD
aG9vc2VyRmlsZUluZm8+IEZpbGVJbnB1dFR5cGU6OmZpbGVzRnJvbUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCkBAIC0zMzAsNiArMzM1LDcgQEAgdm9pZCBG
aWxlSW5wdXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAg
ICAgaWYgKCFwYXRocy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmICFQTEFURk9STShJ
T1MpCiAgICAgQ2hyb21lKiBjaHJvbWUgPSB0aGlzLT5jaHJvbWUoKTsKICAgICBpZiAoIWNocm9t
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzQwLDYgKzM0Niw3IEBAIHZvaWQgRmlsZUlucHV0VHlw
ZTo6cmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogICAgIG1fZmlsZUlj
b25Mb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZpbGVJY29uTG9hZGVyPihzdGF0aWNfY2FzdDxG
aWxlSWNvbkxvYWRlckNsaWVudCY+KCp0aGlzKSk7CiAKICAgICBjaHJvbWUtPmxvYWRJY29uRm9y
RmlsZXMocGF0aHMsIG1fZmlsZUljb25Mb2FkZXIuZ2V0KCkpOworI2VuZGlmCiB9CiAKIHZvaWQg
RmlsZUlucHV0VHlwZTo6YXBwbHlGaWxlQ2hvb3NlclNldHRpbmdzKGNvbnN0IEZpbGVDaG9vc2Vy
U2V0dGluZ3MmIHNldHRpbmdzKQpAQCAtMzkxLDYgKzM5OCwyMCBAQCB2b2lkIEZpbGVJbnB1dFR5
cGU6OnNldEZpbGVzKFBhc3NSZWZQdHI8RmlsZUxpc3Q+IGZpbGVzKQogICAgIGlucHV0LT5zZXRD
aGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChmYWxzZSk7CiB9CiAKKyNpZiBQ
TEFURk9STShJT1MpCit2b2lkIEZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKGNvbnN0IFZlY3Rv
cjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgcGF0aHMsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmlu
ZywgSWNvbiogaWNvbikKK3sKKyAgICBtX2Rpc3BsYXlTdHJpbmcgPSBkaXNwbGF5U3RyaW5nOwor
ICAgIGZpbGVzQ2hvc2VuKHBhdGhzKTsKKyAgICB1cGRhdGVSZW5kZXJpbmcoaWNvbik7Cit9CisK
K1N0cmluZyBGaWxlSW5wdXRUeXBlOjpkaXNwbGF5U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kaXNwbGF5U3RyaW5nOworfQorI2VuZGlmCisKIHZvaWQgRmlsZUlucHV0VHlwZTo6Zmls
ZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBmaWxlcykKIHsKICAg
ICBzZXRGaWxlcyhjcmVhdGVGaWxlTGlzdChmaWxlcykpOwpAQCAtNDI4LDYgKzQ0OSw3IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6dXBkYXRlUmVuZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4gaWNvbikK
IAogYm9vbCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzOwogICAgIGRyYWdEYXRhLmFzRmlsZW5hbWVzKHBhdGhzKTsKICAgICBpZiAocGF0
aHMuaXNFbXB0eSgpKQpAQCAtNDUzLDYgKzQ3NSwxMCBAQCBib29sIEZpbGVJbnB1dFR5cGU6OnJl
Y2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBmaWxl
c0Nob3NlbihmaXJzdEZpbGVPbmx5KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShkcmFnRGF0YSk7CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmIC8v
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiB9CiAKIEljb24qIEZpbGVJbnB1dFR5cGU6Omljb24oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAppbmRleCA5Y2ZhY2NmMTI5NWE5M2Fj
MGRhMzMwNmMwZDJkYzRiNjc4NWVmMWQwLi5kYmM2NDVjZjFiN2ZjNWYwOTZlZGI1ZTEzMzM5ZjBi
MTdjNWM4NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaApAQCAtNDEsNiArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRmlsZUxp
c3Q7CitjbGFzcyBJY29uOwogCiBjbGFzcyBGaWxlSW5wdXRUeXBlIDogcHVibGljIEJhc2VDbGlj
a2FibGVXaXRoS2V5SW5wdXRUeXBlLCBwcml2YXRlIEZpbGVDaG9vc2VyQ2xpZW50LCBwcml2YXRl
IEZpbGVJY29uTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTYyLDYgKzYzLDkgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3RoZXJUeXBlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmlsZXMoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RmlsZXMoUGFzc1JlZlB0cjxGaWxlTGlzdD4pIE9WRVJSSURFOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5U3RyaW5nKCkgY29uc3QgT1ZF
UlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWUoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGdldFR5cGVTcGVjaWZpY1ZhbHVlKFN0cmlu
ZyYpIE9WRVJSSURFOyAvLyBDaGVja2VkIGZpcnN0LCBiZWZvcmUgaW50ZXJuYWwgc3RvcmFnZSBv
ciB0aGUgdmFsdWUgYXR0cmlidXRlLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgT1ZFUlJJ
REU7CkBAIC03NSw2ICs3OSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBGaWxlQ2hvb3NlckNsaWVu
dCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVj
dG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JikgT1ZFUlJJREU7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxl
SW5mbz4mLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlTdHJpbmcsIEljb24qKSBPVkVSUklERTsKKyNl
bmRpZgogCiAgICAgLy8gRmlsZUljb25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlbmRlcmluZyhQYXNzUmVmUHRyPEljb24+KSBPVkVSUklERTsK
QEAgLTg4LDEwICs5NSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlGaWxlQ2hvb3NlclNl
dHRpbmdzKGNvbnN0IEZpbGVDaG9vc2VyU2V0dGluZ3MmKTsKIAogICAgIFJlZlB0cjxGaWxlQ2hv
b3Nlcj4gbV9maWxlQ2hvb3NlcjsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGaWxlSWNvbkxvYWRlcj4gbV9maWxlSWNvbkxvYWRlcjsKKyNlbmRpZgogCiAgICAgUmVm
UHRyPEZpbGVMaXN0PiBtX2ZpbGVMaXN0OwogICAgIFJlZlB0cjxJY29uPiBtX2ljb247CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIFN0cmluZyBtX2Rpc3BsYXlTdHJpbmc7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5j
cHAKaW5kZXggNDdlMjMxMmI5MjRiZGZiMGM4ZDQ5NzhmYzU0NmViZDE0MmIxZDNlNi4uM2UwMTY2
N2FlZjE3Yzc4NDhmMWFhMTUyYjY4NWQ0ZmZjZTMwMzFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAKQEAgLTM3OSw2ICszNzksMTggQEAgRm9ybUNvbnRyb2xsZXI6On5G
b3JtQ29udHJvbGxlcigpCiB7CiB9CiAKK3Vuc2lnbmVkIEZvcm1Db250cm9sbGVyOjpmb3JtRWxl
bWVudHNDaGFyYWN0ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOwor
ICAgIGZvciAoYXV0byBpdCA9IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmJlZ2luKCksIGVuZCA9
IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSogZWxlbWVudCA9IGl0LT5nZXQoKTsK
KyAgICAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IGVsZW1lbnQtPnNhdmVGb3JtQ29udHJv
bFN0YXRlKCk7CisgICAgICAgIGlmIChzdGF0ZS52YWx1ZVNpemUoKSAmJiBlbGVtZW50LT5pc1Rl
eHRGb3JtQ29udHJvbCgpKQorICAgICAgICAgICAgY291bnQgKz0gc3RhdGVbMF0ubGVuZ3RoKCk7
CisgICAgfQorICAgIHJldHVybiBjb3VudDsKK30KKwogc3RhdGljIFN0cmluZyBmb3JtU3RhdGVT
aWduYXR1cmUoKQogewogICAgIC8vIEluIHRoZSBsZWdhY3kgdmVyc2lvbiBvZiBzZXJpYWxpemVk
IHN0YXRlLCB0aGUgZmlyc3QgaXRlbSB3YXMgYSBuYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmgKaW5kZXggOWRiY2E2MjUyNjllNGIyN2Q2M2NkNjRkMTg0NjJkMjNjMWRiZjIxZS4u
ZTE0NmI2NGY2MGNiZWRhNzg0YzEwOWJkOTE0MDFlZTdlMmExZmZlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtODQsNiArODQsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZSopOwogICAgIHZvaWQgdW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUqKTsKKworICAgIHVuc2lnbmVkIGZvcm1FbGVtZW50c0No
YXJhY3RlckNvdW50KCkgY29uc3Q7CisKICAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsbGVkIG9u
bHkgYnkgRG9jdW1lbnQ6OmZvcm1FbGVtZW50c1N0YXRlKCkuCiAgICAgVmVjdG9yPFN0cmluZz4g
Zm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdDsKICAgICAvLyBUaGlzIHNob3VsZCBiZSBjYWxsbGVk
IG9ubHkgYnkgRG9jdW1lbnQ6OnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDc0NDY0ZWNhMDhjMjY5OWQy
ODZlYzBjNjAxZWQ3ODU4YTg5ZWNmNTIuLmQyZjhkMjU1NzRlODE3M2Q3ZDkzNWQ2MTI3MTBlN2Ux
NjVlNDkzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBA
IC02MTEsNyArNjExLDEyIEBAIGJvb2wgc2hvdWxkUHJvaGliaXRMaW5rcyhFbGVtZW50KiBlbGVt
ZW50KQogCiBib29sIEhUTUxBbmNob3JFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpCiB7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWNvbmNpbGUgdGhlIGRpZmZlcmVu
Y2UgaW4gZGlzanVuY3Qgb3JkZXJpbmcgYmV0d2VlbiBpT1MgYW5kIE9wZW5Tb3VyY2UuCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIHJldHVybiBIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSB8fCBpc0xpbmsoKTsKKyNlbHNlCiAgICAgcmV0dXJuIGlzTGluaygpIHx8
IEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOworI2VuZGlmCiB9
CiAKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBIVE1MQW5jaG9yRWxlbWVudCosIFJlZlB0cjxFbGVt
ZW50Pj4gUm9vdEVkaXRhYmxlRWxlbWVudE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5jcHAKaW5kZXggNzMyZDhlNzg5NTRmMDgyNmUwNmIxY2NkODY0NzcxYzhmZTU4
MmFlZC4uYmYyMTM1MjIyNWFjNDkyMzNmZDU0OTM2MzhiYTgzOWNlZDAwYjQwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAgLTk5LDYgKzk5LDkgQEAgdm9p
ZCBIVE1MQXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBs
dWdpbkNyZWF0aW9uT3B0aW9uKQogICAgIGlmICghaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigp
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgVU5VU0VEX1BBUkFN
KHBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKKyNlbHNlCiAgICAgLy8gRklYTUU6IEl0J3Mgc2FkbmVz
cyB0aGF0IHdlIGhhdmUgdGhpcyBzcGVjaWFsIGNhc2UgaGVyZS4KICAgICAvLyAgICAgICAgU2Vl
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1MTI4IGFuZAogICAgIC8vICAgICAg
ICBwbHVnaW5zL25ldHNjYXBlLXBsdWdpbi1zZXR3aW5kb3ctc2l6ZS5odG1sCkBAIC0xNjAsNiAr
MTYzLDcgQEAgdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0
aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgIEFTU0VSVChmcmFtZSk7CiAKICAg
ICByZW5kZXJlci0+c2V0V2lkZ2V0KGZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQocm91bmRlZEludFNpemUoTGF5b3V0U2l6ZShjb250ZW50V2lk
dGgsIGNvbnRlbnRIZWlnaHQpKSwgKnRoaXMsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKSk7Cisj
ZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIH0KIAogYm9vbCBIVE1MQXBwbGV0RWxlbWVudDo6Y2Fu
RW1iZWRKYXZhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApp
bmRleCA3MTk2MjA3ZGNmZTRmNzc1ZDMwMGU0NWY3NjljNzYxZmYxYTkwZjMzLi5lMDkzMWU2ODcw
OWZhNzAxNjViN2Q5OThmZTk0MjhhOWY2YjljZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXJlYUVsZW1lbnQuY3BwCkBAIC05MSw3ICs5MSw4IEBAIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojpt
YXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhdGggSFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUGF0
aChSZW5kZXJFbGVtZW50KiBvYmopIGNvbnN0CisvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBSZW5k
ZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCogb25jZSB3ZSB1cHN0cmVhbSBpT1Mn
cyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KK1BhdGggSFRNTEFyZWFFbGVtZW50Ojpjb21w
dXRlUGF0aChSZW5kZXJPYmplY3QqIG9iaikgY29uc3QKIHsKICAgICBpZiAoIW9iaikKICAgICAg
ICAgcmV0dXJuIFBhdGgoKTsKQEAgLTExNSw4ICsxMTYsOSBAQCBQYXRoIEhUTUxBcmVhRWxlbWVu
dDo6Y29tcHV0ZVBhdGgoUmVuZGVyRWxlbWVudCogb2JqKSBjb25zdAogICAgIHAudHJhbnNsYXRl
KHRvRmxvYXRTaXplKGFic1BvcykpOwogICAgIHJldHVybiBwOwogfQotICAgIAotTGF5b3V0UmVj
dCBIVE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVSZWN0KFJlbmRlckVsZW1lbnQqIG9iaikgY29uc3QK
KworLy8gRklYTUU6IFVzZSBSZW5kZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCog
b25jZSB3ZSB1cHN0cmVhbSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KK0xheW91
dFJlY3QgSFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUmVjdChSZW5kZXJPYmplY3QqIG9iaikgY29u
c3QKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChjb21wdXRlUGF0aChvYmopLmZh
c3RCb3VuZGluZ1JlY3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaApp
bmRleCAxYzJjOGUzYjQ0NGEzODdmOGY0ZWJkZDE5MzcxMGI4MTIyMTBlOThiLi4yZDYxMTY4ZjI5
ZGFhYmMyNTcyMzg5Yzg5ZDc4NmQxNDY2OGFlNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmgKQEAgLTQxLDggKzQxLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXBNb3Vz
ZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJl
c3VsdCYpOwogCi0gICAgTGF5b3V0UmVjdCBjb21wdXRlUmVjdChSZW5kZXJFbGVtZW50KikgY29u
c3Q7Ci0gICAgUGF0aCBjb21wdXRlUGF0aChSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgLy8g
RklYTUU6IFVzZSBSZW5kZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCogb25jZSB3
ZSB1cHN0cmVhbSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KKyAgICBMYXlvdXRS
ZWN0IGNvbXB1dGVSZWN0KFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIFBhdGggY29tcHV0ZVBh
dGgoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKICAgICAvLyBUaGUgcGFyZW50IG1hcCdzIGltYWdl
LgogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA2NDRiMjRmZGM0M2E3NmRkMWQ0
ZTUzYmQ1NTEzYzkxZDlkYWYyMjhmLi45NDlkMDRmZGY2NDljYTY2YzE3MjZlNzJiMmE4ZGY2MjI5
ZTI5MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAt
MjAzLDYgKzIwMyw5IEBAIG9uaW52YWxpZAogb25rZXlkb3duCiBvbmtleXByZXNzCiBvbmtleXVw
Citvbmdlc3R1cmVzdGFydAorb25nZXN0dXJlY2hhbmdlCitvbmdlc3R1cmVlbmQKIG9ubG9hZAog
b25sb2FkZWRkYXRhCiBvbmxvYWRlZG1ldGFkYXRhCkBAIC0zNDIsMyArMzQ1LDEyIEBAIHdlYmtp
dGFsbG93ZnVsbHNjcmVlbgogd2Via2l0ZGlyZWN0b3J5CiB3aWR0aAogd3JhcAorCithdXRvY29y
cmVjdAorYXV0b2NhcGl0YWxpemUKK2RhdGEteW91dHViZS1pZAorb253ZWJraXRjdXJyZW50cGxh
eWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZAorb253ZWJraXRwbGF5YmFja3RhcmdldGF2YWls
YWJpbGl0eWNoYW5nZWQKK3dlYmtpdC1wbGF5c2lubGluZQoreC13ZWJraXQtYWlycGxheQoreC13
ZWJraXQtd2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAppbmRleCBmMWM2NWU1MDg1YTMzY2M3ZDg5MGM4NDA0ZDdjZTljNDQz
ZWJkNmE2Li44ZTNlMjk5YmY2MjFhM2EyZjFlYzhmZmIyZWIyODFhYzEzMjJhOWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDExIEBAIGlu
dCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbExlZnQoKQogICAgIEZyYW1lVmlldyogdmlldyA9IGZy
YW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgcmV0dXJuIGFkanVzdEZvclpvb20odmlldy0+YWN0dWFsVmlzaWJsZUNv
bnRlbnRSZWN0KCkueCgpLCAqZnJhbWUpOworI2Vsc2UKICAgICByZXR1cm4gYWRqdXN0Rm9yWm9v
bSh2aWV3LT5zY3JvbGxYKCksICpmcmFtZSk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MQm9keUVs
ZW1lbnQ6OnNldFNjcm9sbExlZnQoaW50IHNjcm9sbExlZnQpCkBAIC0yMzIsNyArMjM2LDExIEBA
IGludCBIVE1MQm9keUVsZW1lbnQ6OnNjcm9sbFRvcCgpCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
ZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICByZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1YWxWaXNpYmxl
Q29udGVudFJlY3QoKS55KCksICpmcmFtZSk7CisjZWxzZQogICAgIHJldHVybiBhZGp1c3RGb3Ja
b29tKHZpZXctPnNjcm9sbFkoKSwgKmZyYW1lKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxCb2R5
RWxlbWVudDo6c2V0U2Nyb2xsVG9wKGludCBzY3JvbGxUb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IDcyYTkwNDhiZjQ5MmQ5OWM1Y2NhNWU3NGViZDAz
ODU0NmY3NmJlYTQuLjcyMjFkNzQxYWNjNGI1NTYzOTA5YTQyOTM2MDk0MDUyMDMwYmMxNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCkBAIC0xNTQsOSArMTU0
LDEzIEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogCiBib29sIEhUTUxCdXR0b25FbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiAhaXNEaXNhYmxlZEZv
cm1Db250cm9sKCk7CisjZWxzZQogICAgIGlmICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYg
Zm9ybSgpICYmIChtX3R5cGUgPT0gU1VCTUlUIHx8IG1fdHlwZSA9PSBSRVNFVCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIHJldHVybiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpOworI2VuZGlmCiB9CiAKIGJvb2wgSFRNTEJ1dHRvbkVs
ZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDlmOGFjZWM5NTNjNGRmNmNiMjUyYjA3Nzhj
ODIwMGU3MzdhYTU0MzAuLjJkZDg0NWE1MzEwMjMxMmUyODJkMDhjMGM2MzE5ZDYzYTBhYjRiMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC02NSw3ICs2
NSw5IEBAIHN0YXRpYyBjb25zdCBpbnQgRGVmYXVsdEhlaWdodCA9IDE1MDsKIC8vIEZpcmVmb3gg
bGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBwaXhlbHMsIGJ1dCBzbG93cyBkb3duIGRyYW1h
dGljYWxseSBiZWZvcmUgaXQKIC8vIHJlYWNoZXMgdGhhdCBsaW1pdC4gV2UgbGltaXQgYnkgYXJl
YSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0gZGltZW5zaW9ucywKIC8vIGluIGV4
Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMgc2l6ZS4KKyNpZiAhUExBVEZPUk0o
SU9TKQogc3RhdGljIGNvbnN0IGZsb2F0IE1heENhbnZhc0FyZWEgPSAzMjc2OCAqIDgxOTI7IC8v
IE1heGltdW0gY2FudmFzIGFyZWEgaW4gQ1NTIHBpeGVscworI2VuZGlmCiAKIEhUTUxDYW52YXNF
bGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
QEAgLTc0LDYgKzc2LDEwIEBAIEhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jCiAgICAgLCBtX2lnbm9y
ZVJlc2V0KGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcih0YXJnZXREZXZpY2VTY2Fs
ZUZhY3RvcigpKQogICAgICwgbV9vcmlnaW5DbGVhbih0cnVlKQorI2lmIFBMQVRGT1JNKElPUykK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHVzYWdlIG9mIE1heENh
bnZhc0FyZWEgYW5kIG1fbWF4aW11bURlY29kZWRJbWFnZVNpemUuCisgICAgLCBtX21heGltdW1E
ZWNvZGVkSW1hZ2VTaXplKGRvY3VtZW50LnNldHRpbmdzKCkgPyBkb2N1bWVudC5zZXR0aW5ncygp
LT5tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpIDogMCkKKyNlbmRpZgogICAgICwgbV9oYXNDcmVh
dGVkSW1hZ2VCdWZmZXIoZmFsc2UpCiAgICAgLCBtX2RpZENsZWFySW1hZ2VCdWZmZXIoZmFsc2Up
CiB7CkBAIC01NzMsOCArNTc5LDEzIEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoIWRldmljZVNpemUuaXNFeHByZXNzaWJsZUFzSW50
U2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKGRl
dmljZVNpemUud2lkdGgoKSAqIGRldmljZVNpemUuaGVpZ2h0KCkgKiA0ID4gbV9tYXhpbXVtRGVj
b2RlZEltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKICAgICBpZiAoZGV2aWNlU2l6
ZS53aWR0aCgpICogZGV2aWNlU2l6ZS5oZWlnaHQoKSA+IE1heENhbnZhc0FyZWEpCiAgICAgICAg
IHJldHVybjsKKyNlbmRpZgogCiAgICAgSW50U2l6ZSBidWZmZXJTaXplKGRldmljZVNpemUud2lk
dGgoKSwgZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYgKCFidWZmZXJTaXplLndpZHRoKCkg
fHwgIWJ1ZmZlclNpemUuaGVpZ2h0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKaW5kZXggNmI1MDMxOTJmMmFhNWU0YzJmYjA2OWNjOGQ1YTQxOGQyZmQzY2FjMC4uZWFj
YWIxNmY2YWQ1YmQzNDk2MTUxYmRhOWJiNDdkYzhlYjFmNjdmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRPcmlnaW5UYWludGVkKCkgeyBtX29yaWdpbkNsZWFuID0gZmFsc2U7IH0KICAgICBi
b29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVhbjsgfQogCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgdXNlIHVuc2lnbmVkIGRhdGEgdHlw
ZXMsIHVuc2lnbmVkIG9yIHNpemVfdD8KKyAgICB2b2lkIHNldE1heGl1bURlY29kZWRJbWFnZVNp
emUoZmxvYXQgbWF4aW11bURlY29kZWRJbWFnZVNpemUpIHsgbV9tYXhpbXVtRGVjb2RlZEltYWdl
U2l6ZSA9IG1heGltdW1EZWNvZGVkSW1hZ2VTaXplOyB9CisgICAgZmxvYXQgbWF4aW11bURlY29k
ZWRJbWFnZVNpemUoKSB7IHJldHVybiBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplOyB9CisjZW5k
aWYKKwogICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3Q7CiAKICNpZiBF
TkFCTEUoV0VCR0wpICAgIApAQCAtMTc2LDYgKzE4MiwxMSBAQCBwcml2YXRlOgogICAgIGZsb2F0
IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX29yaWdpbkNsZWFuOwogCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgdXNlIGEgdW5zaWduZWQgZGF0YSB0eXBl
LCB1bnNpZ25lZCBvciBzaXplX3Q/CisgICAgZmxvYXQgbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6
ZTsKKyNlbmRpZgorCiAgICAgLy8gbV9jcmVhdGVkSW1hZ2VCdWZmZXIgbWVhbnMgd2UgdHJpZWQg
dG8gbWFsbG9jIHRoZSBidWZmZXIuICBXZSBkaWRuJ3QgbmVjZXNzYXJpbHkgZ2V0IGl0LgogICAg
IG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsKICAgICBtdXRhYmxlIGJvb2wg
bV9kaWRDbGVhckltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmlu
ZGV4IDE3ZTIwNmUyYTU1NjMyZjlmZDJiZDRhNmU3NzY5MDZiOGI4ZTBjODIuLjIwYjYwZGMyZDJl
YmRkMTI3NjQyYzY3NGFiNTgwMDc4NjJkODJjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAKQEAgLTgxLDggKzgxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2Vz
KQotICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3Vt
ZW50Q2xhc3MpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCBib29sIGlzU3lu
dGhlc2l6ZWQpCisgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBkb2N1bWVudENsYXNzZXMgfCBI
VE1MRG9jdW1lbnRDbGFzcywgaXNTeW50aGVzaXplZCkKIHsKICAgICBjbGVhclhNTFZlcnNpb24o
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDE1MzQwZGUxMTExMTUyNmRi
NTEyODQ2MWY2NGNmZTY5OGEyMmVmMWUuLmU5MDYyYzg1YjA0NTY4NTI4OGY2YzdkM2Y1YWJmODI3
Mzk5N2QyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzUsNiArMzUsMTIg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1l
bnQoZnJhbWUsIHVybCkpOwogICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1
bWVudD4gY3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJh
bWUsIHVybCwgdHJ1ZSkpOworICAgIH0KKwogICAgIHZpcnR1YWwgfkhUTUxEb2N1bWVudCgpOwog
CiAgICAgaW50IHdpZHRoKCk7CkBAIC04MCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBpc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgRG9jdW1lbnRD
bGFzc0ZsYWdzID0gMCk7CisgICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgRG9j
dW1lbnRDbGFzc0ZsYWdzID0gMCwgYm9vbCBpc1N5bnRoZXNpemVkID0gZmFsc2UpOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAppbmRleCA0MjVmNjE3MTQ5YjZhMDU1NTU1NjA5ZTEyZDJkYThjYTg1OTJl
YjhhLi41YzM2MGU4YzQzODViOGIzODA5ZTY3NWQzZDBlMWI4YTZhN2Y3OTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTc1LDExICsxNzUsMTcgQEAgdm9pZCBIVE1MRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOwog
ICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlXZWJraXRMaW5lQnJlYWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIENTU1ZhbHVlTm9uZSk7
CisjZW5kaWYKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInBs
YWludGV4dC1vbmx5IikpIHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1
ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpOwogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1
ZUJyZWFrV29yZCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2Up
OwogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2Up
OworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwg
Q1NTVmFsdWVOb25lKTsKKyNlbmRpZgogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAiZmFsc2UiKSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NW
YWx1ZVJlYWRPbmx5KTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGlkZGVuQXR0cikgewpAQCAt
Mjc4LDYgKzI4NCwxMSBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGVFdmVudE5h
bWVGb3JBdHRyaWJ1dGVMb2NhbE5hbWVNYXAoSGFzaE1hcDxBdG9taQogICAgICAgICAmb252b2x1
bWVjaGFuZ2VBdHRyLAogICAgICAgICAmb253YWl0aW5nQXR0ciwKICAgICAgICAgJm9ud2hlZWxB
dHRyLAorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisgICAgICAgICZvbmdlc3R1cmVj
aGFuZ2VBdHRyLAorICAgICAgICAmb25nZXN0dXJlZW5kQXR0ciwKKyAgICAgICAgJm9uZ2VzdHVy
ZXN0YXJ0QXR0ciwKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAg
Jm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIsCiAgICAgICAgICZvbndlYmtpdGZ1bGxzY3Jl
ZW5lcnJvckF0dHIsCkBAIC0xMDcxLDYgKzEwODIsMjMgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRk
SFRNTENvbG9yVG9TdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVy
dHkKICAgICBzdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVDb2xvclZhbHVlKHBhcnNlZENvbG9yLnJnYigpKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
Citib29sIEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKK3sKKyAg
ICByZXR1cm4gIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmIEVsZW1lbnQ6OndpbGxSZXNwb25k
VG9Nb3VzZU1vdmVFdmVudHMoKTsKK30KKworYm9vbCBIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRU
b01vdXNlV2hlZWxFdmVudHMoKQoreworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9s
KCkgJiYgRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMoKTsKK30KKworYm9v
bCBIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQoreworICAgIHJl
dHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzc0YWJlNWRm
MDg1OThkMDU5NjI1Yzc2MzU4ODdjMDQwYjIzYmMxMi4uM2FiZDhhNDJhM2Y0NTgxZjUxMzRlNWIz
ZTViZGNjMTc2MmMwYjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtOTIsNiAr
OTIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0hUTUxVbmtub3duRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJ
bm5lclRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorI2lmIFBMQVRGT1JN
KElPUykKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VXaGVlbEV2ZW50cygp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIE9WRVJSSURFOworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgRm9ybU5hbWVkSXRlbSogYXNGb3Jt
TmFtZWRJdGVtKCkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzMjk2NjNmYTM3MmJhNTBlZWRmZmJjZTg2MDVl
YTNmNjIxZjNiNjhhLi5jZmYwOGYxZTkzYzNlNDliMzJiODdhM2NiZDE0ZjczMjBhYTNiNTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTQ2OSw2ICs0NjksNDMgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc0RlZmF1bHRC
dXR0b25Gb3JGb3JtKCkgY29uc3QKICAgICByZXR1cm4gaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9u
KCkgJiYgZm9ybSgpICYmIGZvcm0oKS0+ZGVmYXVsdEJ1dHRvbigpID09IHRoaXM7CiB9CiAKKyNp
ZiBQTEFURk9STShJT1MpCitib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jb3JyZWN0
KCkgY29uc3QKK3sKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9jb3JyZWN0VmFsdWUgPSBm
YXN0R2V0QXR0cmlidXRlKGF1dG9jb3JyZWN0QXR0cik7CisgICAgaWYgKCFhdXRvY29ycmVjdFZh
bHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICFlcXVhbElnbm9yaW5nQ2FzZShhdXRvY29y
cmVjdFZhbHVlLCAib2ZmIik7CisgICAgaWYgKEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHRoaXMt
PmZvcm0oKSkKKyAgICAgICAgcmV0dXJuIGZvcm0tPmF1dG9jb3JyZWN0KCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NvcnJlY3Qo
Ym9vbCBhdXRvY29ycmVjdCkKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyLCBh
dXRvY29ycmVjdCA/IEF0b21pY1N0cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSA6IEF0b21pY1N0cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RG
cm9tTGl0ZXJhbCkpOworfQorCitXZWJBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCkgY29uc3QKK3sKKyAgICBXZWJBdXRvY2FwaXRh
bGl6ZVR5cGUgdHlwZSA9IGF1dG9jYXBpdGFsaXplVHlwZUZvckF0dHJpYnV0ZVZhbHVlKGZhc3RH
ZXRBdHRyaWJ1dGUoYXV0b2NhcGl0YWxpemVBdHRyKSk7CisgICAgaWYgKHR5cGUgPT0gV2ViQXV0
b2NhcGl0YWxpemVUeXBlRGVmYXVsdCkgeworICAgICAgICBpZiAoSFRNTEZvcm1FbGVtZW50KiBm
b3JtID0gdGhpcy0+Zm9ybSgpKQorICAgICAgICAgICAgcmV0dXJuIGZvcm0tPmF1dG9jYXBpdGFs
aXplVHlwZSgpOworICAgIH0KKyAgICByZXR1cm4gdHlwZTsKK30KKworY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY2FwaXRhbGl6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXplVHlwZShhdXRvY2FwaXRhbGl6ZVR5cGUo
KSk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NhcGl0YWxpemUo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NhcGl0
YWxpemVBdHRyLCB2YWx1ZSk7Cit9CisjZW5kaWYKKwogSFRNTEZvcm1Db250cm9sRWxlbWVudCog
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KE5vZGUq
IG5vZGUpCiB7CiAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMjhl
Njc5MDc4MmIzYjlmN2ViZWZmNTZjYmFlMTAwZTA0ODk0YmM0MC4uNzY2OGIyMmEyYmMzNGE1MWQz
NzAxYTRhNjYxYzgyNWUzNzEyNDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKQEAgLTI3LDYgKzI3LDEwIEBACiAjaW5jbHVkZSAiRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVudC5oIgogCisjaWYgUExB
VEZPUk0oSU9TKQorI2luY2x1ZGUgIkF1dG9jYXBpdGFsaXplLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YUxpc3Q7CkBAIC04NSw2ICs4OSwxNSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpIHsg
fQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgYXV0b2NvcnJlY3QoKSBjb25zdDsKKyAg
ICB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOworCisgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBl
IGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0
b2NhcGl0YWxpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0
b21pY1N0cmluZyYpOworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Uo
KTsKICAgICB2b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA2Y2UxODVjOWJjZWM0YTNjYmE5YWU2YTAx
NDRhYThkYzIzZDM1ZDFmLi4wMTZjMDgzODdjMjJmYzVkMWJjMmYwYTRiZmU0NjRmMDNjYWUxNDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNzIsNyArMTcy
LDcgQEAgTm9kZSogSFRNTEZvcm1FbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQogCiB2b2lk
IEhUTUxGb3JtRWxlbWVudDo6c3VibWl0SW1wbGljaXRseShFdmVudCogZXZlbnQsIGJvb2wgZnJv
bUltcGxpY2l0U3VibWlzc2lvblRyaWdnZXIpCiB7Ci0gICAgaW50IHN1Ym1pc3Npb25UcmlnZ2Vy
Q291bnQgPSAwOworICAgIHVuc2lnbmVkIHN1Ym1pc3Npb25UcmlnZ2VyQ291bnQgPSAwOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXplKCk7ICsr
aSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWZvcm1Bc3NvY2lhdGVk
RWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKQEAgLTE4Niw3ICsxODYsMTMgQEAgdm9p
ZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqIGV2ZW50LCBib29sIGZy
b21JbXBsaWNpdFN1Ym1pc3Npb24KICAgICAgICAgfSBlbHNlIGlmIChmb3JtRWxlbWVudC0+Y2Fu
VHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpKQogICAgICAgICAgICAgKytzdWJtaXNzaW9uVHJp
Z2dlckNvdW50OwogICAgIH0KLSAgICBpZiAoZnJvbUltcGxpY2l0U3VibWlzc2lvblRyaWdnZXIg
JiYgc3VibWlzc2lvblRyaWdnZXJDb3VudCA9PSAxKQorCisgICAgaWYgKCFzdWJtaXNzaW9uVHJp
Z2dlckNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbGRlciBpT1MgYXBwcyB1c2lu
ZyBXZWJWaWV3cyBleHBlY3QgdGhlIGJlaGF2aW9yIG9mIGF1dG8gc3VibWl0dGluZyBtdWx0aS1p
bnB1dCBmb3Jtcy4KKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdz
KCk7CisgICAgaWYgKGZyb21JbXBsaWNpdFN1Ym1pc3Npb25UcmlnZ2VyICYmIChzdWJtaXNzaW9u
VHJpZ2dlckNvdW50ID09IDEgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd011bHRpRWxl
bWVudEltcGxpY2l0U3VibWlzc2lvbigpKSkpCiAgICAgICAgIHByZXBhcmVGb3JTdWJtaXNzaW9u
KGV2ZW50KTsKIH0KIApAQCAtMzc3LDYgKzM4MywzOCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
cmVzZXQoKQogICAgIG1faXNJblJlc2V0RnVuY3Rpb24gPSBmYWxzZTsKIH0KIAorI2lmIFBMQVRG
T1JNKElPUykKK2Jvb2wgSFRNTEZvcm1FbGVtZW50OjphdXRvY29ycmVjdCgpIGNvbnN0Cit7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvY29ycmVjdFZhbHVlID0gZmFzdEdldEF0dHJpYnV0
ZShhdXRvY29ycmVjdEF0dHIpOworICAgIGlmICghYXV0b2NvcnJlY3RWYWx1ZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoYXV0b2NvcnJlY3RWYWx1ZSwgIm9m
ZiIpOworICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSB0aGlzLT5mb3JtKCkpCisgICAg
ICAgIHJldHVybiBmb3JtLT5hdXRvY29ycmVjdCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9vbCBhdXRvY29ycmVjdCkKK3sK
KyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29ycmVjdCA/IEF0b21pY1N0
cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0b21pY1N0
cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworfQorCitX
ZWJBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1FbGVtZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBhdXRvY2FwaXRhbGl6ZVR5cGVGb3JBdHRyaWJ1dGVWYWx1
ZShmYXN0R2V0QXR0cmlidXRlKGF1dG9jYXBpdGFsaXplQXR0cikpOworfQorCitjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxGb3JtRWxlbWVudDo6YXV0b2NhcGl0YWxpemUoKSBjb25zdAoreworICAg
IHJldHVybiBzdHJpbmdGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoYXV0b2NhcGl0YWxpemVUeXBlKCkp
OworfQorCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NhcGl0YWxpemVBdHRy
LCB2YWx1ZSk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gYWN0aW9uQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oCmluZGV4IDc2MDNkODA5ODQ4NGM0ZmIzZTg1Yjg0NDk1ODQ3MGI1NTBmZDc4NTEu
LjUxMGE1MTcxMDMyZWI5OGRmM2Y1YTRhYzdhNzQ4NTA2OTY3NzI5MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorI2lmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRXZlbnQ7CkBAIC02MSw2ICs2NSwxNSBAQCBwdWJsaWM6CiAKICAgICBib29s
IHNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJv
b2wgYXV0b2NvcnJlY3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOwor
CisgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0Owor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b2NhcGl0YWxpemUoKSBjb25zdDsKKyAgICB2b2lk
IHNldEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYpOworI2VuZGlmCisKICAgICAv
LyBGSVhNRTogU2hvdWxkIHJlbmFtZSB0aGVzZSB0d28gZnVuY3Rpb25zIHRvIHNheSAiZm9ybSBj
b250cm9sIiBvciAiZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQiIGluc3RlYWQgb2YgImZvcm0gZWxl
bWVudCIuCiAgICAgdm9pZCByZWdpc3RlckZvcm1FbGVtZW50KEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCopOwogICAgIHZvaWQgcmVtb3ZlRm9ybUVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKaW5kZXggZmE0YzE1N2U0Njg5
YjAyNzYxMzg1MmRlOGU3NzVlMDE3NTkyNjM5OS4uMGUyNDAzMGNiY2QwMTI2ZjE2NDRkMDQ3MmJk
MzliMmU0ODFjZDEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbApA
QCAtMzYsNiArMzYsMTEgQEAKIAogICAgIGdldHRlciBFbGVtZW50ICh1bnNpZ25lZCBsb25nIGlu
ZGV4KTsKIAorI2lmIFdURl9QTEFURk9STV9JT1MKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRv
Y29ycmVjdDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmlu
ZyBhdXRvY2FwaXRhbGl6ZTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCiAgICAgW0ltcGxlbWVudGVkQXM9c3VibWl0RnJv
bUphdmFTY3JpcHRdIHZvaWQgc3VibWl0KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5oCmluZGV4IDU0YmZmNjU4MzBkOThkMDMxYzliMjU0MzE5Y2M5MGE0NjY4
OGNmNzQuLjQ3MGRkNjFlMzRhMDU5Y2EyOTZkM2I2OTVmYzAwYzFiNzU5NzgwNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKQEAgLTM3LDYgKzM3LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIGlzS2V5
Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZh
bHNlOyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCAzYTRkOTkwMWM0NjRmMTIwZmZiZDZmMTJiNzNiOWZkMmUwNDY3
YmFlLi40ZjVlMjU2OGE5MGNiZGNmZmRiYTU5ZWZhYmViZjc5OTI2NjFjNjQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyMDIsNiArMTIwMiwxNSBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQ
TEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IElzIHRoaXMgY29kZSBuZWNlc3NhcnkgZ2l2ZW4g
dGhhdCB3ZSBjaGVjayBldnQtPmlzVG91Y2hFdmVudCgpIChhYm92ZSk/CisgICAgaWYgKGV2dC0+
ZXZlbnRJbnRlcmZhY2UoKSA9PSBUb3VjaEV2ZW50SW50ZXJmYWNlVHlwZSkgeworICAgICAgICBt
X2lucHV0VHlwZS0+aGFuZGxlVG91Y2hFdmVudChzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Kj4oZXZ0
KSk7CisgICAgICAgIGlmIChldnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisKICAgICBtX2lucHV0VHlwZS0+Zm9yd2FyZEV2ZW50KGV2dCk7
CiAKICAgICBpZiAoIWNhbGxCYXNlQ2xhc3NFYXJseSAmJiAhZXZ0LT5kZWZhdWx0SGFuZGxlZCgp
KQpAQCAtMTIxMCwxMSArMTIxOSwxNSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVy
biAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CisjZWxzZQogICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBpbXBsZW1lbnRpbmcgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBpbiBJbnB1dFR5
cGUgaWYgbW9yZSBhY2N1cmF0ZSByZXN1bHRzIGFyZSBuZWNlc3NhcnkuCiAgICAgaWYgKCFpc0Rp
c2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCk7CisjZW5kaWYKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKQEAgLTEzNjEsNiArMTM3NCwxMyBAQCBJ
Y29uKiBIVE1MSW5wdXRFbGVtZW50OjppY29uKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPmljb24oKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK1N0cmluZyBIVE1MSW5wdXRFbGVt
ZW50OjpkaXNwbGF5U3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRp
c3BsYXlTdHJpbmcoKTsKK30KKyNlbmRpZgorCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNhblJl
Y2VpdmVEcm9wcGVkRmlsZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2NhblJlY2VpdmVEcm9w
cGVkRmlsZXM7CkBAIC0xNjMxLDYgKzE2NTEsMTQgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpp
c1NwZWVjaEVuYWJsZWQoKSBjb25zdAogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKK0Rh
dGVDb21wb25lbnRzOjpUeXBlIEhUTUxJbnB1dEVsZW1lbnQ6OmRhdGVUeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRhdGVUeXBlKCk7Cit9CisjZW5kaWYKKworCiBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dEJ1dHRvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5pc1RleHRCdXR0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggMDJiMmM0ZjdkZWMxOTQ2NjA1MTBjYzE0NDdiY2NlZTBhOTM3M2IwNC4uOTI4
MjljMWQ5OTVjODFkZGIyNzhmZGU3YmRlOTc4N2M5ZWU2MWM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSAiSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKIAorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hlY2tlZFJhZGlvQnV0dG9uczsKQEAgLTEzOCw2ICsx
NDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcGVlY2hFbmFibGVkKCkgY29uc3Q7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlw
ZSgpIGNvbnN0OworI2VuZGlmCisKICAgICBIVE1MRWxlbWVudCogY29udGFpbmVyRWxlbWVudCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRl
eHRFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tF
bGVtZW50KCkgY29uc3Q7CkBAIC0yNDcsNiArMjU1LDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVj
ZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYpOwogCiAgICAgSWNvbiogaWNvbigpIGNv
bnN0OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBTdHJpbmcgZGlzcGxheVN0cmluZygpIGNvbnN0
OworI2VuZGlmCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGZvciByZW5kZXJpbmcg
dGhlIGlucHV0IGFjdGl2ZSBkdXJpbmcgYQogICAgIC8vIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9u
LgogICAgIGJvb2wgY2FuUmVjZWl2ZURyb3BwZWRGaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKaW5kZXggNzI3YmY2OTNhODk0NTgxODcxY2M3YjI5
MzE2MmI2OGM2NmU3YzExOS4uZTNlYmQwN2VlNzNkNzQwZmY2OTE0ODE0NzM4YWUwNmYzMzViMDMy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBAIC0xMjUsNiAr
MTI1LDExIEBAIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVUkwgYWJzb2x1dGVJbWFnZVVSTDsKICNlbmRpZgogCisjaWYg
V1RGX1BMQVRGT1JNX0lPUworICAgIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3JyZWN0OworICAg
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF1dG9jYXBpdGFs
aXplOworI2VuZGlmCisKICAgICAvLyBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1tZWRp
YS1jYXB0dXJlLwogICAgIFtDb25kaXRpb25hbD1NRURJQV9DQVBUVVJFXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGNhcHR1cmU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVsRWxlbWVudC5j
cHAKaW5kZXggMmFkOWEzODc0YzJiZWM2MmY2MmQyOTcyZWExOTU1MGMyNzNmMjJlMS4uZjViNjRh
MDI1N2E5MDI3MGQwNDI1NjIyYzU3OTIzYTk2Mzg5OWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0xNDEsMTAgKzE0MSwxMSBAQCB2b2lkIEhUTUxMYWJl
bEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIAogYm9vbCBIVE1MTGFi
ZWxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7Ci0gICAgaWYgKGNv
bnRyb2woKSAmJiBjb250cm9sKCktPndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gY29u
dHJvbCgpIHx8IEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwor
I2Vsc2UKKyAgICByZXR1cm4gKGNvbnRyb2woKSAmJiBjb250cm9sKCktPndpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkpIHx8IEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTExhYmVsRWxlbWVudDo6Zm9jdXMoYm9v
bCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggZjZiZjgyZmU0ZjIwYTgyMjFmYTNiZjhmNGRjNDgyMmNhZjQ2NmJh
Zi4uYmI1Nzc4MjljMTc0ZGYwMTUxN2UyY2U4NDZjNjI5NzM1MDNhZjNmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9i
amVjdC5oIgorI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0Lmgi
CiAjZW5kaWYKIApAQCAtMTAzLDYgKzEwNCwxNCBAQAogI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShJT1Nf
QUlSUExBWSkKKyNpbmNsdWRlICJXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJEaXNwbGF5U2xlZXBE
aXNhYmxlci5oIgogI2VuZGlmCkBAIC0yNDgsNyArMjU3LDExIEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorI2lm
IEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIDogSFRNTEZyYW1lT3duZXJFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQorI2Vsc2UKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KQorI2VuZGlmCiAgICAgLCBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQogICAg
ICwgbV9sb2FkVGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKQog
ICAgICwgbV9wcm9ncmVzc0V2ZW50VGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dy
ZXNzRXZlbnRUaW1lckZpcmVkKQpAQCAtMzEwLDYgKzMyMywxMCBAQCBIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bQogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgICwgbV9pc0Rpc3Bs
YXlTbGVlcERpc2FibGluZ1N1c3BlbmRlZChkb2N1bWVudC5oaWRkZW4oKSkKICNlbmRpZgorI2lm
IFBMQVRGT1JNKElPUykKKyAgICAsIG1fcmVxdWVzdGluZ1BsYXkoZmFsc2UpCisgICAgLCBtX3Vz
ZXJTdGFydGVkUGxheWJhY2soZmFsc2UpCisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4dFRy
YWNrKGZhbHNlKQpAQCAtMzM1LDYgKzM1Miw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCIpOwogICAg
IHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBjbGVhbiB1cCBhbmQgbG9vayB0byBiZXR0ZXIgbWVyZ2UgdGhlIGlPUyBhbmQgbm9u
LWlPUyBjb2RlIGJlbG93LgorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRp
bmdzKCk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlh
Vm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogCkBAIC0zNDIsMTAgKzM2MiwyMCBA
QCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJp
bGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKGRvY3Vt
ZW50LnNldHRpbmdzKCkgJiYgZG9jdW1lbnQuc2V0dGluZ3MoKS0+bWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmUoKSkgeworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+bWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkgewogICAgICAgICBhZGRCZWhhdmlvclJlc3Ry
aWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CiAgICAg
ICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3Ry
aWN0aW9uKTsKICAgICB9CisjZWxzZQorICAgIG1fc2VuZFByb2dyZXNzRXZlbnRzID0gZmFsc2U7
CisgICAgaWYgKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNl
ckdlc3R1cmUoKSkgeworICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2Vy
R2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZ
KQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3Jl
c3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAK
ICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCgqdGhpcywgZG9jdW1lbnQpOwogCkBAIC0zOTIs
NiArNDIyLDExIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBpZiAobV9wbGF5ZXIgJiYg
IWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWls
YWJpbGl0eWNoYW5nZWRFdmVudCkpCisgICAgICAgIG1fcGxheWVyLT5zZXRIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7CisjZW5kaWYKKwogICAgIGlmIChtX21l
ZGlhQ29udHJvbGxlcikgewogICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFF
bGVtZW50KHRoaXMpOwogICAgICAgICBtX21lZGlhQ29udHJvbGxlciA9IDA7CkBAIC00NTYsMTEg
KzQ5MSw0NiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6cGFyc2VNZWRpYVBsYXllckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQoreworICAgIEFTU0VSVChtX3BsYXll
cik7CisgICAgaWYgKG5hbWUgPT0gZGF0YV95b3V0dWJlX2lkQXR0cikgeworICAgICAgICBtX3Bs
YXllci0+YXR0cmlidXRlQ2hhbmdlZChuYW1lLnRvU3RyaW5nKCksIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChuYW1lID09IHRpdGxlQXR0cikgeworICAgICAg
ICBtX3BsYXllci0+YXR0cmlidXRlQ2hhbmdlZChuYW1lLnRvU3RyaW5nKCksIHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9
IGRvY3VtZW50KCkuc2V0dGluZ3MoKSkgeworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAg
ICAgaWYgKG5hbWUgPT0gd2Via2l0YWlycGxheUF0dHIgJiYgc2V0dGluZ3MtPm1lZGlhUGxheWJh
Y2tBbGxvd3NBaXJQbGF5KCkpIHsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hdHRyaWJ1dGVDaGFu
Z2VkKG5hbWUudG9TdHJpbmcoKSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgICAgICBpZiAobmFtZSA9PSB3ZWJraXRfcGxheXNpbmxpbmVB
dHRyICYmIHNldHRpbmdzLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKCkpIHsKKyAgICAgICAg
ICAgIG1fcGxheWVyLT5hdHRyaWJ1dGVDaGFuZ2VkKG5hbWUudG9TdHJpbmcoKSwgQVNDSUlMaXRl
cmFsKHZhbHVlLmlzTnVsbCgpID8gImZhbHNlIiA6ICJ0cnVlIikpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBzcmNBdHRyKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBOb3RlLCB1bmxlc3Mg
dGhlIHJlc3RyaWN0aW9uIG9uIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiByZW1vdmVk
LAorICAgICAgICAvLyBkbyBub3QgYmVnaW4gZG93bmxvYWRpbmcgZGF0YSBvbiBpT1MuCisgICAg
ICAgIGlmICghdXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhdmFsdWUuaXNOdWxsKCkp
IHsKKyNlbHNlCiAgICAgICAgIC8vIFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdz
cmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50LgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7
CisjZW5kaWYKICAgICAgICAgICAgIGNsZWFyTWVkaWFQbGF5ZXIoTG9hZE1lZGlhUmVzb3VyY2Up
OwogICAgICAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsK
ICAgICAgICAgfQpAQCAtNTM1LDYgKzYwNSwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgog
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRiZWdp
bmZ1bGxzY3JlZW5FdmVudCwgbmFtZSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gb253
ZWJraXRlbmRmdWxsc2NyZWVuQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50LCBuYW1lLCB2YWx1ZSk7Cisj
aWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gb253ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEF0dHIpCisgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3Rhcmdl
dGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQsIG5hbWUsIHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1l
ID09IG9ud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkQXR0cikKKyAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIG5hbWUsIHZhbHVlKTsKKyNlbmRpZgorI2lm
IFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChtX3BsYXllciAmJiBwYXJzZU1lZGlhUGxheWVy
QXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgZWxz
ZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpA
QCAtNjEyLDcgKzY5MiwxMSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgogICAgIGlmIChpbnNl
cnRpb25Qb2ludC5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0g
dHJ1ZTsKIAotICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSAmJiAh
Z2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyNpZiBQTEFURk9STShJT1MpCisgICAg
ICAgIGlmICghdXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9
PSBORVRXT1JLX0VNUFRZICYmICFmYXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkK
KyNlbHNlCisgICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZICYmICFm
YXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyNlbmRpZgogICAgICAgICAgICAg
c2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICB9CiAKQEAgLTgy
NCw2ICs5MDgsMTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkKICAgICAgICAgcmVt
b3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAgICAgcHJl
cGFyZUZvckxvYWQoKTsKICAgICBsb2FkSW50ZXJuYWwoKTsKKworI2lmIFBMQVRGT1JNKElPUykK
KyAgICAvLyBVbmxlc3MgdGhpcyBtZXRob2Qgd2FzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdXNl
ciBvciB0aGUgYXBwbGljYXRpb24gYWxsb3dzIGFueSBzY3JpcHQgdG8gdHJpZ2dlciBwbGF5YmFj
aywKKyAgICAvLyByZXR1cm4gbm93IGJlY2F1c2UgcHJlcGFyZVRvUGxheSgpIHRlbGxzIHRoZSBt
ZWRpYSBlbmdpbmUgdG8gc3RhcnQgbG9hZGluZyBkYXRhIGFzIHNvb24gYXMgdGhlIG1vdmllIHZh
bGlkYXRlcy4KKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7
CisgICAgaWYgKCFtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlICYmICghc2V0dGluZ3MgfHwg
c2V0dGluZ3MtPm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKwogICAgIHByZXBhcmVUb1BsYXkoKTsKIH0KIApAQCAtODYwLDcgKzk1
Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBpZiAoc2hvdWxkVXNlVmlk
ZW9QbHVnaW5Qcm94eSgpKQorICAgIGlmIChzaG91bGRVc2VWaWRlb1BsdWdpblByb3h5KCkpIHsK
ICAgICAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPmNhbmNlbExvYWQo
KTsKICAgICAgICAgZWxzZQpAQCAtOTEyLDYgKzEwMDUsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgaWYgKG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6
Tm9uZSkKICAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygp
OworICAgIGlmIChtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6Ok5vbmUgJiYgc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPm1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpKQorICAgICAgICBwcmVwYXJl
VG9QbGF5KCk7CisjZW5kaWYKKwogICAgIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKIH0KIApA
QCAtMTgyMiw2ICsxOTIxLDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBzaG91bGRVcGRhdGVQbGF5U3RhdGUg
PSBmYWxzZTsKKyNlbmRpZgorCiAgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpJZGxlKSB7
CiAgICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfSURMRSkgewogICAgICAgICAg
ICAgY2hhbmdlTmV0d29ya1N0YXRlRnJvbUxvYWRpbmdUb0lkbGUoKTsKQEAgLTE4NDUsNiArMTk0
OCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXll
cjo6TmV0d29ya1N0YXRlIHN0YXRlKQogCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAg
ICAgICAgbWVkaWFDb250cm9scygpLT51cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKHNob3VsZFVwZGF0ZVBsYXlTdGF0ZSkKKyAgICAgICAgdXBkYXRl
UGxheVN0YXRlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjaGFuZ2VO
ZXR3b3JrU3RhdGVGcm9tTG9hZGluZ1RvSWRsZSgpCkBAIC0yNTExLDYgKzI2MTksMTYgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZCgpIGNvbnN0CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6YXV0b3BsYXkoKSBjb25zdAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBVbmxlc3Mg
dGhlIHJlc3RyaWN0aW9uIG9uIHJlcXVpcmluZyB1c2VyIGFjdGlvbnMgaGFzIGJlZW4gbGlmdGVk
LCB3ZSBkbyBub3QKKyAgICAvLyBhbGxvdyBwbGF5YmFjayB0byBzdGFydCBqdXN0IGJlY2F1c2Ug
dGhlIHBhZ2UgaGFzICJhdXRvcGxheSIuIFRoZXkgYXJlIGVpdGhlcgorICAgIC8vIGxpZnRlZCB0
aHJvdWdoIFNldHRpbmdzLCBvciBvbmNlIHRoZSB1c2VyIGV4cGxpY3RseSBjYWxscyBsb2FkKCkg
b3IgcGxheSgpCisgICAgLy8gYmVjYXVzZSB0aGV5IGhhdmUgT0snZWQgdXMgbG9hZGluZyBkYXRh
LiBUaGlzIGFsbG93cyBwbGF5YmFjayB0byBjb250aW51ZSBpZgorICAgIC8vIHRoZSBVUkwgaXMg
Y2hhbmdlZCB3aGlsZSB0aGUgbW92aWUgaXMgcGxheWluZy4KKyAgICBpZiAodXNlckdlc3R1cmVS
ZXF1aXJlZEZvclJhdGVDaGFuZ2UoKSB8fCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yTG9hZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiBmYXN0SGFzQXR0cmli
dXRlKGF1dG9wbGF5QXR0cik7CiB9CiAKQEAgLTI1NTMsNiArMjY3MSwxMCBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkoKQogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJG
aXJzdFVzZXJHZXN0dXJlKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdXNlclJlcXVlc3Rz
TWVkaWFMb2FkaW5nKCk7CisjZW5kaWYKKwogICAgIHBsYXlJbnRlcm5hbCgpOwogfQogCkBAIC0y
NTgxLDYgKzI3MDMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOwogICAg
IH0KICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1f
cmVxdWVzdGluZ1BsYXkgPSB0cnVlOworI2VuZGlmCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAg
ICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiB9CkBAIC0yNjAxLDggKzI3MjYsMTUgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsIik7CiAKICAgICAvLyA0LjguMTAuOS4gUGxheWlu
ZyB0aGUgbWVkaWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRl
ID09IE5FVFdPUktfRU1QVFkpCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9
PSBORVRXT1JLX0VNUFRZKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBVbmxlc3Mg
dGhlIHJlc3RyaWN0aW9uIG9uIG1lZGlhIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiBs
aWZ0ZWQKKyAgICAgICAgLy8gZG9uJ3QgdHJpZ2dlciBsb2FkaW5nIGlmIGEgc2NyaXB0IGNhbGxz
IHBhdXNlKCkuCisgICAgICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0ZUNoYW5nZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgICAgIHNjaGVkdWxlRGVsYXllZEFj
dGlvbihMb2FkTWVkaWFSZXNvdXJjZSk7CisgICAgfQogCiAgICAgbV9hdXRvcGxheWluZyA9IGZh
bHNlOwogCkBAIC0yNzc3LDEyICsyOTA5LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
Vm9sdW1lKGRvdWJsZSB2b2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKG1fdm9sdW1lICE9IHZvbCkg
ewogICAgICAgICBtX3ZvbHVtZSA9IHZvbDsKICAgICAgICAgbV92b2x1bWVJbml0aWFsaXplZCA9
IHRydWU7CiAgICAgICAgIHVwZGF0ZVZvbHVtZSgpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2
ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wg
SFRNTE1lZGlhRWxlbWVudDo6bXV0ZWQoKSBjb25zdApAQCAtMjc5NCw2ICsyOTI4LDkgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKCVzKSIsIGJvb2xTdHJpbmcobXV0ZWQpKTsK
IAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBVTlVTRURfUEFSQU0obXV0ZWQpOworI2Vsc2UKICAg
ICBpZiAobV9tdXRlZCAhPSBtdXRlZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CiAgICAg
ICAgIC8vIEF2b2lkIHJlY3Vyc2lvbiB3aGVuIHRoZSBwbGF5ZXIgcmVwb3J0cyB2b2x1bWUgY2hh
bmdlcy4KQEAgLTI4MDYsNiArMjk0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0
ZWQoYm9vbCBtdXRlZCkKICAgICAgICAgfQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS52b2x1bWVjaGFuZ2VFdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKQEAgLTM3NTcsOSArMzg5NSwxNCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQog
ICAgICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQorICAgIH0g
ZWxzZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBUaGUgY29udHJvbGxlciBjaGFu
Z2VzIG1vdmllIHRpbWUgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIHRocm91Z2ggaGVyZSBz
byB3ZSBuZWVkCisgICAgICAgIC8vIHRvIHBvc3QgdGltZXVwZGF0ZSBldmVudHMgaW4gcmVzcG9u
c2UgdG8gdGltZSBjaGFuZ2VzLgorICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxz
ZSk7CisjZW5kaWYKICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKKyAgICB9CiAKICAg
ICB1cGRhdGVQbGF5U3RhdGUoKTsKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFj
aygpOwpAQCAtNDA1Myw2ICs0MTk2LDE0IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjptYXhU
aW1lU2Vla2FibGUoKSBjb25zdAogICAgIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVW
b2x1bWUoKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBPbmx5IHRoZSB1c2VyIGNhbiBj
aGFuZ2UgYXVkaW8gdm9sdW1lIHNvIHVwZGF0ZSB0aGUgY2FjaGVkIHZvbHVtZSBhbmQgcG9zdCB0
aGUgY2hhbmdlZCBldmVudC4KKyAgICBmbG9hdCB2b2x1bWUgPSBtX3BsYXllci0+dm9sdW1lKCk7
CisgICAgaWYgKG1fdm9sdW1lICE9IHZvbHVtZSkgeworICAgICAgICBtX3ZvbHVtZSA9IHZvbHVt
ZTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQp
OworICAgIH0KKyNlbHNlCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwogCkBA
IC00MDc0LDYgKzQyMjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgp
CiAKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCkt
PmNoYW5nZWRWb2x1bWUoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVBsYXlTdGF0ZSgpCkBAIC00MDk1LDYgKzQyNDcsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVQbGF5U3RhdGUoKQogICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0gcG90ZW50
aWFsbHlQbGF5aW5nKCk7CiAgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+cGF1c2Vk
KCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiAhbV9y
ZXF1ZXN0aW5nUGxheSAmJiAhbV9wbGF5ZXItPnJlYWR5Rm9yUGxheWJhY2soKSkKKyAgICAgICAg
c2hvdWxkQmVQbGF5aW5nID0gZmFsc2U7CisgICAgZWxzZSBpZiAoIXNob3VsZEJlUGxheWluZyAm
JiBtX3JlcXVlc3RpbmdQbGF5ICYmIG1fcGxheWVyLT5yZWFkeUZvclBsYXliYWNrKCkpCisgICAg
ICAgIHNob3VsZEJlUGxheWluZyA9IHRydWU7CisjZW5kaWYKKwogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSAtIHNob3VsZEJlUGxheWluZyA9ICVzLCBw
bGF5ZXJQYXVzZWQgPSAlcyIsIAogICAgICAgICBib29sU3RyaW5nKHNob3VsZEJlUGxheWluZyks
IGJvb2xTdHJpbmcocGxheWVyUGF1c2VkKSk7CiAKQEAgLTQxNDAsNiArNDI5OSwxMCBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgICAgICBtZWRpYUNv
bnRyb2xzKCktPnBsYXliYWNrU3RvcHBlZCgpOwogICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBu
dWxscHRyOwogICAgIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9yZXF1ZXN0aW5n
UGxheSA9IGZhbHNlOworI2VuZGlmCiAKICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIApA
QCAtNDE2Myw4ICs0MzI2LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxl
ZExvYWQoKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxs
ZWRMb2FkIik7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRo
ZSBpT1MgYW5kIG5vbi1pT1MgY29kZSAoYmVsb3cpLgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBp
ZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX3JlYWR5U3RhdGUgPj0gSEFW
RV9NRVRBREFUQSkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKICAgICBpZiAobV9uZXR3b3JrU3Rh
dGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX2NvbXBsZXRlbHlMb2FkZWQpCiAgICAgICAgIHJldHVy
bjsKKyNlbmRpZgogCiAgICAgLy8gSWYgdGhlIG1lZGlhIGRhdGEgZmV0Y2hpbmcgcHJvY2VzcyBp
cyBhYm9ydGVkIGJ5IHRoZSB1c2VyOgogCkBAIC00MzE1LDYgKzQ0ODQsOSBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlc3VtZSgpCiAgICAgICAgIC8vIG1fZXJyb3IgaXMgb25seSBsZWZ0IGF0
IE1FRElBX0VSUl9BQk9SVEVEIHdoZW4gdGhlIGRvY3VtZW50IGJlY29tZXMgaW5hY3RpdmUgKGl0
IGlzIHNldCB0bwogICAgICAgICAvLyAgTUVESUFfRVJSX0FCT1JURUQgd2hpbGUgdGhlIGFib3J0
RXZlbnQgaXMgYmVpbmcgc2VudCwgYnV0IGNsZWFyZWQgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcyku
CiAgICAgICAgIC8vIFRoaXMgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCBidXQgaXQgc2VlbXMg
bGlrZSBhIHNlbnNpYmxlIHRoaW5nIHRvIGRvLgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAg
Ly8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85NzUxMzAzPiBNZXJnZTogRG9lcyByMTAzMzA5MiBu
ZWVkIHRvIGJlIHJlZml4ZWQgaW4gVG9UPworI2VuZGlmCiAgICAgICAgIC8vIEFzIGl0IGlzIG5v
dCBzYWZlIHRvIGltbWVkYXRlbHkgc3RhcnQgbG9hZGluZyBub3csIGxldCdzIHNjaGVkdWxlIGEg
bG9hZC4KICAgICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsK
ICAgICB9CkBAIC00MzU5LDYgKzQ1MzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKIH0KIAorI2lmICFQTEFURk9STShJT1MpCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKICNpZiBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTQzNjcsNiArNDU0MCw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogI2VuZGlmCiAgICAg
cmV0dXJuIEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQor
I2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25z
dApAQCAtNDM5MiwxMiArNDU2Niw1MyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1l
ZGlhUGxheWVyKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVsaXZlck5vdGlmaWNhdGlvbihN
ZWRpYVBsYXllclByb3h5Tm90aWZpY2F0aW9uVHlwZSBub3RpZmljYXRpb24pCiB7CiAgICAgaWYg
KG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvblBsYXlQYXVzZUJ1dHRvblBy
ZXNzZWQpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIHVzZXJSZXF1ZXN0c01lZGlhTG9h
ZGluZygpOworI2VuZGlmCiAgICAgICAgIHRvZ2dsZVBsYXlTdGF0ZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChub3RpZmljYXRpb24g
PT0gTWVkaWFQbGF5ZXJSZXF1ZXN0QmVnaW5QbGF5YmFjaykgeworICAgICAgICBpZiAobV9wYXVz
ZWQpCisgICAgICAgICAgICBwbGF5SW50ZXJuYWwoKTsKKyAgICB9IGVsc2UgaWYgKG5vdGlmaWNh
dGlvbiA9PSBNZWRpYVBsYXllclJlcXVlc3RQYXVzZVBsYXliYWNrKSB7CisgICAgICAgIGlmICgh
bV9wYXVzZWQpCisgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CisgICAgfSBlbHNlIGlmIChu
b3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25Mb3NlRm9jdXMpIHsKKyAgICAg
ICAgaWYgKCFtX3BhdXNlZCkKKyAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKKyAgICB9IGVs
c2UgaWYgKG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvbkRpZFBsYXlUb1Ro
ZUVuZCkgeworICAgICAgICBpZiAoIW1fcGF1c2VkICYmICFsb29wKCkpCisgICAgICAgICAgICBw
YXVzZUludGVybmFsKCk7CisgICAgfSBlbHNlIGlmIChub3RpZmljYXRpb24gPT0gTWVkaWFQbGF5
ZXJOb3RpZmljYXRpb25NZWRpYVZhbGlkYXRlZCB8fCBub3RpZmljYXRpb24gPT0gTWVkaWFQbGF5
ZXJOb3RpZmljYXRpb25SZWFkeUZvckluc3BlY3Rpb24pIHsKKyAgICAgICAgLy8gVGhlIG1lZGlh
IHBsYXllciBzb21ldGltZXMgcmVwb3J0cyBhbiBhcHBhcmVudGx5IHNwdXJpb3VzIGVycm9yIGp1
c3QgYXMgd2UgcmVxdWVzdCBwbGF5YmFjaywgYW5kIHRoZW4gZm9sbG93cyBhbG1vc3QKKyAgICAg
ICAgLy8gaW1tZWRpYXRlbHkgd2l0aCBSZWFkeUZvckluc3BlY3Rpb24gYW5kL29yIE1lZGlhVmFs
aWRhdGVkLiBUaGUgc3BlYyBkb2Vzbid0IGRlYWwgd2l0aCBhICJmYXRhbCIgZXJyb3IgZm9sbG93
ZWQKKyAgICAgICAgLy8gYnkgcmVzc3VyZWN0aW9uLCBzbyBpZiB3ZSBoYXZlIHNldCBhbiBlcnJv
ciBjbGVhciBpdCBub3cuCisgICAgICAgIG1fZXJyb3IgPSAwOworICAgIH0gZWxzZSBpZiAobm90
aWZpY2F0aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uRW50ZXJlZEZ1bGxzY3JlZW4pIHsK
KyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVu
RXZlbnQpOworICAgICAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7CisgICAgfSBlbHNlIGlmIChu
b3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25FeGl0ZWRGdWxsc2NyZWVuKSB7
CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5F
dmVudCk7CisgICAgICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CisgICAgfQorI2VuZGlmCiAK
ICAgICBpZiAobV9wbGF5ZXIpCiAgICAgICAgIG1fcGxheWVyLT5kZWxpdmVyTm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbik7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKG5vdGlmaWNhdGlv
biA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvbk1lZGlhVmFsaWRhdGVkKSB7CisgICAgICAgIC8v
IElmIHRoZSBlbGVtZW50IGlzIHN1cHBvc2VkIHRvIGF1dG9wbGF5IGFuZCB3ZSBhbGxvdyBpdCwg
dGVsbCB0aGUgbWVkaWEgZW5naW5lIHRvIGJlZ2luIGxvYWRpbmcKKyAgICAgICAgLy8gZGF0YSBu
b3cuIFBsYXliYWNrIHdpbGwgYmVnaW4gYXV0b21hdGljYWxseSB3aGVuIGVub3VnaCBkYXRhIGhh
cyBsb2FkZWQuCisgICAgICAgIGlmIChtX2F1dG9wbGF5aW5nICYmIG1fcGF1c2VkICYmIGF1dG9w
bGF5KCkpCisgICAgICAgICAgICBwcmVwYXJlVG9QbGF5KCk7CisgICAgfSBlbHNlIGlmIChub3Rp
ZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25FbnRlcmVkRnVsbHNjcmVlbikKKyAg
ICAgICAgZGlkQmVjb21lRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyAgICBlbHNlIGlmIChub3RpZmlj
YXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25FeGl0ZWRGdWxsc2NyZWVuKQorICAgICAg
ICB3aWxsU3RvcEJlaW5nRnVsbHNjcmVlbkVsZW1lbnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSog
cHJveHkpCkBAIC00NDI2LDcgKzQ2NDEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQ
bHVnaW5Qcm94eVBhcmFtcyhVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZWMKICAg
ICAgICAgdmFsdWVzLmFwcGVuZChBU0NJSUxpdGVyYWwoInRydWUiKSk7CiAgICAgfQogCi0gICAg
dXJsID0gc3JjKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIERvbid0IHBhc3MgdGhlIFVS
TCB0byB0aGUgcGx1Zy1pbiBhcyBwYXJ0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBhcmd1bWVudHMs
IHdlIGFsd2F5cyBwYXNzIHRoZSBVUkwKKyAgICAvLyBpbiBsb2FkUmVzb3VyY2UgYW5kIGNhbGxp
bmcgc2VsZWN0TmV4dFNvdXJjZUNoaWxkIGhlcmUgY2FuIG1lc3MgdXAgdGhlIHByb2Nlc3Npbmcg
b2YgPHNvdXJjZT4KKyAgICAvLyBlbGVtZW50cyBsYXRlci4KKyAgICBVTlVTRURfUEFSQU0odXJs
KTsKKyNlbHNlCisgICAgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAg
ICAgaWYgKCFpc1NhZmVUb0xvYWRVUkwodXJsLCBDb21wbGFpbikpCiAgICAgICAgIHVybCA9IHNl
bGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCkBAIC00NDM1LDYgKzQ2NTYs
NDQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhVUkwmIHVy
bCwgVmVjdG9yPFN0cmluZz4mIG5hbWVzLCBWZWMKICAgICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJ
TGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfc3JjXyIpKTsKICAgICAgICAgdmFsdWVzLmFwcGVuZCht
X2N1cnJlbnRTcmMuc3RyaW5nKCkpOwogICAgIH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKTsKKyAgICBp
ZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoKSAmJiAo
YXBwbGljYXRpb25Jc0R1bXBSZW5kZXJUcmVlKCkgfHwgZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRf
cGxheXNpbmxpbmVBdHRyKSkpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgi
X21lZGlhX2VsZW1lbnRfYWxsb3dfaW5saW5lXyIpKTsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChB
U0NJSUxpdGVyYWwoInRydWUiKSk7CisgICAgfQorCisgICAgU3RyaW5nIGFpcnBsYXkgPSBmYXN0
R2V0QXR0cmlidXRlKHdlYmtpdGFpcnBsYXlBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWlycGxheSwgImFsbG93IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYWlycGxheSwgImRlbnki
KSkgeworICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9h
aXJwbGF5XyIpKTsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChhaXJwbGF5Lmxvd2VyKCkpOworICAg
IH0KKworICAgIGlmIChmYXN0SGFzQXR0cmlidXRlKGRhdGFfeW91dHViZV9pZEF0dHIpKSB7Cisg
ICAgICAgIG5hbWVzLmFwcGVuZChBU0NJSUxpdGVyYWwoIl9tZWRpYV9lbGVtZW50X3lvdXR1YmVf
dmlkZW9faWRfIikpOworICAgICAgICB2YWx1ZXMuYXBwZW5kKGZhc3RHZXRBdHRyaWJ1dGUoZGF0
YV95b3V0dWJlX2lkQXR0cikpOworICAgIH0KKworICAgIFN0cmluZyBpbnRlcmZhY2VOYW1lID0g
c2V0dGluZ3MgPyBzZXR0aW5ncy0+bmV0d29ya0ludGVyZmFjZU5hbWUoKSA6IFN0cmluZygpOwor
ICAgIGlmICghaW50ZXJmYWNlTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5k
KEFTQ0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfbmV0d29ya19pbnRlcmZhY2VfbmFtZSIpKTsK
KyAgICAgICAgdmFsdWVzLmFwcGVuZChpbnRlcmZhY2VOYW1lKTsKKyAgICB9CisKKyAgICBpZiAo
ZmFzdEhhc0F0dHJpYnV0ZSh0aXRsZUF0dHIpKSB7CisgICAgICAgIG5hbWVzLmFwcGVuZCh0aXRs
ZUF0dHIudG9TdHJpbmcoKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQoZmFzdEdldEF0dHJpYnV0
ZSh0aXRsZUF0dHIpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkK
KyAgICBpZiAoaXNWaWRlbygpICYmIGZhc3RIYXNBdHRyaWJ1dGUod2Via2l0d2lyZWxlc3N2aWRl
b3BsYXliYWNrZGlzYWJsZWRBdHRyKSkgeworICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRl
cmFsKCJfbWVkaWFfZWxlbWVudF93aXJlbGVzc192aWRlb19wbGF5YmFja19kaXNhYmxlZCIpKTsK
KyAgICAgICAgdmFsdWVzLmFwcGVuZChBU0NJSUxpdGVyYWwoInRydWUiKSk7CisgICAgfQorI2Vu
ZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgp
CkBAIC00NDgwLDYgKzQ3MzksNzkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRn
ZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAKICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKIAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6d2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCkKK3sKKyAgICBpZiAoIWRvY3Vt
ZW50KCkucGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcGxheWVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZFRvU2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLT5t
ZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bs
YXllci0+c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxl
bWVudDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcGxheWVyICYmIG1fcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFja1RhcmdldFdp
cmVsZXNzKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBsYXllciopCit7CisgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJl
bGVzc2NoYW5nZWRFdmVudCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQoreworICAg
IGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOworfQorCiti
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNl
Q2FwdHVyZSkKK3sKKyAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5
YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKKyAgICAgICAgcmV0dXJuIE5vZGU6
OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyAg
ICBib29sIGlzRmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIgPSAhaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdl
ZEV2ZW50KTsKKyAgICBpZiAoIU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0
ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9wbGF5
ZXIgJiYgaXNGaXJzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lcikKKyAgICAgICAgbV9wbGF5
ZXItPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKHRydWUpOworCisg
ICAgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7IC8vIEVu
c3VyZSB0aGUgZXZlbnQgbGlzdGVuZXIgZ2V0cyBhdCBsZWFzdCBvbmUgZXZlbnQuCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIs
IGJvb2wgdXNlQ2FwdHVyZSkKK3sKKyAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS53
ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCkKKyAgICAgICAgcmV0
dXJuIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisKKyAgICBpZiAoIU5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBs
aXN0ZW5lciwgdXNlQ2FwdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wg
ZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lciA9ICFoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2Vk
RXZlbnQpOworICAgIGlmIChtX3BsYXllciAmJiBkaWRSZW1vdmVMYXN0QXZhaWxhYmlsaXR5Q2hh
bmdlZExpc3RlbmVyKQorICAgICAgICBtX3BsYXllci0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcnMoZmFsc2UpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRF
dmVudCgpCit7CisgICAgaWYgKCFtX3BsYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIGJvb2wg
aXNBaXJQbGF5QXZhaWxhYmxlID0gbV9wbGF5ZXItPmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRz
KCk7CisgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQsIGlzQWlyUGxheUF2YWlsYWJsZSk7CisgICAgZXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQu
cmVsZWFzZSgpKTsKK30KKyNlbmRpZgorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNj
cmVlbigpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNGdWxsc2NyZWVuKQpAQCAtNDUxOCw4ICs0ODUw
LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBpZiAo
aGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmVudGVyZWRGdWxs
c2NyZWVuKCk7CiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKSB7CisjaWYgIVBMQVRGT1JNKElP
UykKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmVudGVyRnVs
bHNjcmVlbkZvck5vZGUodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKKyNlbHNlCisgICAgICAgIGlmIChtX3BsYXll
cikKKyAgICAgICAgICAgIG1fcGxheWVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyNlbmRpZgogICAg
IH0KIH0KIApAQCAtNDU0MSw4ICs0ODc4LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhp
dEZ1bGxzY3JlZW4oKQogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSkgewogICAgICAgICBpZiAo
ZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKKyNpZiAhUExBVEZPUk0oSU9T
KQogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53
ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOworI2Vsc2UKKyAgICAgICAgaWYgKG1fcGxheWVyKQor
ICAgICAgICAgICAgbV9wbGF5ZXItPmV4aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKICAgICB9CiB9
CiAKQEAgLTQ5MzksNiArNTI4MSwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhUGxheWVyKCkKICAgICAgICAgbV9hdWRpb1NvdXJjZU5vZGUtPnVubG9jaygpOwogICAgIH0K
ICNlbmRpZgorCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIGlmIChoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2Vk
RXZlbnQpKSB7CisgICAgICAgIG1fcGxheWVyLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUxpc3RlbmVycyh0cnVlKTsKKyAgICAgICAgZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5Q2hhbmdlZEV2ZW50KCk7IC8vIEVuc3VyZSB0aGUgZXZlbnQgbGlzdGVuZXIgZ2V0cyBh
dCBsZWFzdCBvbmUgZXZlbnQuCisgICAgfQorI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoV0VCX0FV
RElPKQpAQCAtNDk1OSw2ICs1MzA4LDE2IEBAIEF1ZGlvU291cmNlUHJvdmlkZXIqIEhUTUxNZWRp
YUVsZW1lbnQ6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShJT1MpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJSZXF1ZXN0c01lZGlhTG9hZGluZygp
Cit7CisgICAgLy8gVGhlIHVzZXIgaXMgcmVxdWVzdGluZyBkYXRhIGxvYWRpbmcgYW5kL29yIHBs
YXliYWNrLCBzbyByZW1vdmUgdGhlICJvbmx5IGNoYW5nZSBwbGF5YmFjayBpbiByZXNwb25zZQor
ICAgIC8vIHRvIGEgdXNlciBnZXN0dXJlIiByZXN0cmljdGlvbiBvbiB0aGlzIG1vdmllLgorICAg
IG1fdXNlclN0YXJ0ZWRQbGF5YmFjayA9IHRydWU7CisgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jl
c3RyaWN0aW9uczsKK30KKyNlbmRpZgorCiBjb25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhR3JvdXAoKSBjb25zdAogewogICAgIHJldHVybiBtX21lZGlhR3JvdXA7CkBAIC01MjM2
LDcgKzU1OTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUJlaGF2aW9yc1Jlc3Ry
aWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnNob3VsZFVzZVZpZGVvUGx1Z2luUHJv
eHkoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIGRvY3Vt
ZW50KCktPnNldHRpbmdzKCktPmlzVmlkZW9QbHVnaW5Qcm94eUVuYWJsZWQoKTsKKyAgICByZXR1
cm4gZG9jdW1lbnQoKS5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS0+aXNWaWRl
b1BsdWdpblByb3h5RW5hYmxlZCgpOwogfQogI2VuZGlmCiAKQEAgLTUzMDEsNiArNTY2MCwxMSBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlw
dCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChT
aGFkb3dSb290KiByb290KQogeworI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQor
ICAgIC8vIEphdmFTY3JpcHQgY29udHJvbHMgYXJlIG5vdCBlbmFibGVkIHdpdGggdGhlIHZpZGVv
IHBsdWdpbiBwcm94eS4KKyAgICBVTlVTRURfUEFSQU0ocm9vdCk7CisgICAgcmV0dXJuOworI2Vs
c2UKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CkBAIC01MzM3LDggKzU3MDEsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICBKU0M6
OmNhbGwoZXhlYywgb3ZlcmxheSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFy
Z0xpc3QpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgZXhlYy0+Y2xl
YXJFeGNlcHRpb24oKTsKLX0KICNlbmRpZgorfQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05U
Uk9MU19TQ1JJUFQpCiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBIVE1MTWVkaWFFbGVtZW50OjpmaWxl
U2l6ZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IGMzZDFiZjE3M2Q4YTFmOTNlNjFkYmU4MGUwNjJkZjJjZjY0NjVjOTkuLjFjZjEwOWJiMTJiMzE4
NmE4MTJlNDJhZjBmMjgwMDhiNWNhODZmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJNZWRpYVBsYXllclByb3h5LmgiCiAjZW5kaWYKQEAgLTk3LDcgKzk4LDEzIEBAIHR5cGVk
ZWYgQ3VlSW50ZXJ2YWxUcmVlOjpJbnRlcnZhbFR5cGUgQ3VlSW50ZXJ2YWw7CiB0eXBlZGVmIFZl
Y3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlzdDsKICNlbmRpZgogCi1jbGFzcyBIVE1MTWVkaWFFbGVt
ZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIE1lZGlhUGxheWVyQ2xpZW50LCBwdWJs
aWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExp
c3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250cm9sbGVySW50
ZXJmYWNlCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50CisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCisgICAgOiBwdWJsaWMgSFRNTEZyYW1lT3duZXJFbGVtZW50CisjZWxzZQorICAg
IDogcHVibGljIEhUTUxFbGVtZW50CisjZW5kaWYKKyAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJD
bGllbnQsIHB1YmxpYyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRp
YUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNv
bnRyb2xsZXJJbnRlcmZhY2UKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRl
IEF1ZGlvVHJhY2tDbGllbnQKICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CkBAIC0zMjks
NyArMzM2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKLSAgICB2b2lkIGFsbG9jYXRlTWVkaWFQbGF5ZXJJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgZW5zdXJlTWVkaWFQbGF5ZXIoKTsKICAgICB2b2lkIHNldE5lZWRXaWRnZXRVcGRhdGUo
Ym9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9IG5lZWRXaWRnZXRV
cGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5v
dGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1lZGlhUGxheWVyUHJv
eHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwpAQCAtMzM4LDYgKzM0NSwxNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgdm9pZCB3ZWJraXRTaG93UGxheWJhY2tU
YXJnZXRQaWNrZXIoKTsKKyAgICBib29sIHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2ly
ZWxlc3MoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29s
IHVzZUNhcHR1cmUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKSBPVkVSUklERTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIod2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQpOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkKTsKKyNlbmRpZgorCiAgICAgLy8gRXZlbnRUYXJnZXQgZnVuY3Rpb24uCiAg
ICAgLy8gQm90aCBOb2RlICh2aWEgSFRNTEVsZW1lbnQpIGFuZCBBY3RpdmVET01PYmplY3QgZGVm
aW5lIHRoaXMgbWV0aG9kLCB3aGljaAogICAgIC8vIGNhdXNlcyBhbiBhbWJpZ3VpdHkgZXJyb3Ig
YXQgY29tcGlsZSB0aW1lLiBUaGlzIGNsYXNzJ3MgY29uc3RydWN0b3IKQEAgLTM4OSw3ICs0MDcs
OSBAQCBwdWJsaWM6CiAgICAgTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRDb250cm9sbGVyKFBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPik7CiAKKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICB2b2lkIGVudGVyZWRPckV4aXRlZEZ1
bGxzY3JlZW4oKSB7IGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsgfQogCkBAIC00MzIsNiArNDUy
LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVu
UmVzdHJpY3Rpb24gPSAxIDw8IDIsCiAgICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1l
ZGlhUmVzdHJpY3Rpb24gPSAxIDw8IDMsCiAgICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudFRvUmVz
dW1lTWVkaWFSZXN0cmljdGlvbiA9IDEgPDwgNCwKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisg
ICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyID0gMSA8
PCA1LAorI2VuZGlmCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJp
Y3Rpb25zOwogICAgIApAQCAtNDQwLDYgKzQ2Myw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIHVz
ZXJHZXN0dXJlUmVxdWlyZWRGb3JGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmlj
dGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuUmVzdHJpY3Rpb247IH0KICAg
ICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JMb2FkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0
cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYVJlc3RyaWN0aW9uOyB9CiAg
ICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yUmVzdW1lKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhUmVzdHJpY3Rpb247
IH0KKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgYm9vbCB1c2VyR2VzdHVyZVJlcXVpcmVk
VG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9u
cyAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOyB9CisjZW5k
aWYKICAgICAKICAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmlj
dGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KICAg
ICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVz
dHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CkBAIC01MjIsNiAr
NTQ4LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVk
KE1lZGlhUGxheWVyKiwgVWludDhBcnJheSopIE9WRVJSSURFOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoSU9TX0FJUlBMQVkpCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyQ3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKSBPVkVSUklERTsKKyAgICB2b2lkIGVucXVldWVQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOworI2VuZGlmCisKICAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENPUlNN
b2RlIG1lZGlhUGxheWVyQ09SU01vZGUoKSBjb25zdCBPVkVSUklERTsKQEAgLTYxNSw2ICs2NDcs
MTEgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbWluVGltZVNlZWthYmxlKCkgY29uc3Q7CiAgICAg
ZG91YmxlIG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAg
IGJvb2wgcGFyc2VNZWRpYVBsYXllckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJik7CisgICAgdm9pZCB1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcoKTsK
KyNlbmRpZgorCiAgICAgLy8gUGF1c2VzIHBsYXliYWNrIHdpdGhvdXQgY2hhbmdpbmcgYW55IHN0
YXRlcyBvciBnZW5lcmF0aW5nIGV2ZW50cwogICAgIHZvaWQgc2V0UGF1c2VkSW50ZXJuYWwoYm9v
bCk7CiAKQEAgLTc1OCw2ICs3OTUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEaXNwbGF5
U2xlZXBEaXNhYmxpbmdTdXNwZW5kZWQgOiAxOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgYm9vbCBtX3JlcXVlc3RpbmdQbGF5IDogMTsKKyAgICBib29sIG1fdXNlclN0YXJ0ZWRQ
bGF5YmFjayA6IDE7CisjZW5kaWYKKwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBib29s
IG1fdHJhY2tzQXJlUmVhZHkgOiAxOwogICAgIGJvb2wgbV9oYXZlVmlzaWJsZVRleHRUcmFjayA6
IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCA0M2I2NTgw
NGY1OTI3OGIxZDFlYjk3YTdhNmU5MGFkOTBlMjE3OWU1Li5kYzQxYjU1YzRjNDg3ZGJmMTFmZThm
ZDViMDNlNjlkYzVmNDY5MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwKQEAgLTEyMSw0ICsxMjEsMTEgQEAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9HT0JKRUNU
KSB8fCAhTEFOR1VBR0VfR09CSkVDVAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TT1VSQ0VdIFZp
ZGVvUGxheWJhY2tRdWFsaXR5IGdldFZpZGVvUGxheWJhY2tRdWFsaXR5KCk7CiAjZW5kaWYKKwor
I2lmIGRlZmluZWQoRU5BQkxFX0lPU19BSVJQTEFZKSAmJiBFTkFCTEVfSU9TX0FJUlBMQVkKKyAg
ICB2b2lkIHdlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3M7Cisg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRp
c3dpcmVsZXNzY2hhbmdlZDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtpdHBs
YXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZDsKKyNlbmRpZgogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBhOGZlY2Q5ZmQ0NjBjMTZiNzI3YWVjMmMw
M2Q0MDhjOThkN2MxNjliLi42ZjM2MGZlMmJlY2Q5MDk1NmU3YzkyMDNlNTI5NTYyOTA3MGVkNWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC03Myw2ICs3Mywx
MiBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cHJvY2VzcygpCiAKICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSgpLCAidmlld3BvcnQiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNz
Vmlld3BvcnQoY29udGVudFZhbHVlLCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsK
KyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSgp
LCAiZm9ybWF0LWRldGVjdGlvbiIpKQorICAgICAgICBkb2N1bWVudCgpLnByb2Nlc3NGb3JtYXRE
ZXRlY3Rpb24oY29udGVudFZhbHVlKTsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lKCksICJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiKSkKKyAgICAgICAgZG9j
dW1lbnQoKS5wcm9jZXNzV2ViQXBwT3JpZW50YXRpb25zKCk7CisjZW5kaWYKICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lKCksICJyZWZlcnJlciIpKQogICAgICAgICBkb2N1bWVu
dCgpLnByb2Nlc3NSZWZlcnJlclBvbGljeShjb250ZW50VmFsdWUpOwogI2lmIEVOQUJMRShMRUdB
Q1lfVklFV1BPUlRfQURBUFRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCmluZGV4IDUzM2RmZTEwMGEwMjAyYTVlYTNiOGFiYjE5Yzc2ZDQyZDYwMmQ0ZTYuLjQ4
MTJmMWJmNjIyNzkxZmNiM2VjNGYxZWZiZDQ2NWY4NGYxNDFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC01NCw2ICs1NCwxMSBAQAogI2luY2x1ZGUg
IldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNp
bmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
U3lzdGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTQ2LDYgKzE1MSwxNCBAQCBzdGF0aWMgdm9pZCBt
YXBEYXRhUGFyYW1Ub1NyYyhWZWN0b3I8U3RyaW5nPiogcGFyYW1OYW1lcywgVmVjdG9yPFN0cmlu
Zz4qIHBhcmFtVgogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyBib29sIHNo
b3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRO
b3RQZXJmb3JtVVJMQWRqdXN0bWVudCA9IGFwcGxpY2F0aW9uSXNOQVNBSEQoKSAmJiAhaW9zRXhl
Y3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0ZW1WZXJzaW9uXzVfMCk7
CisgICAgcmV0dXJuIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50OworfQorI2VuZGlmCisK
IC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2
aWNlVHlwZSEKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgU3Ry
aW5nJiB1cmwsIFN0cmluZyYgc2VydmljZVR5cGUpCiB7CkBAIC0yMDQsNiArMjE3LDExIEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIFZlY3RvcjxTCiAgICAgLy8gYXR0cmlidXRlLCBub3QgYnkgYSBwYXJhbSBl
bGVtZW50LiBIb3dldmVyLCBmb3IgY29tcGF0aWJpbGl0eSwgYWxsb3cgdGhlCiAgICAgLy8gcmVz
b3VyY2UncyBVUkwgdG8gYmUgZ2l2ZW4gYnkgYSBwYXJhbSBuYW1lZCAic3JjIiwgIm1vdmllIiwg
ImNvZGUiIG9yICJ1cmwiCiAgICAgLy8gaWYgd2Uga25vdyB0aGF0IHJlc291cmNlIHBvaW50cyB0
byBhIHBsdWctaW4uCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChzaG91bGROb3RQZXJmb3Jt
VVJMQWRqdXN0bWVudCgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIGlmICh1cmwu
aXNFbXB0eSgpICYmICF1cmxQYXJhbWV0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN1YmZyYW1l
TG9hZGVyJiBsb2FkZXIgPSBkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnN1YmZyYW1lTG9h
ZGVyKCk7CiAgICAgICAgIGlmIChsb2FkZXIucmVzb3VyY2VXaWxsVXNlUGx1Z2luKHVybFBhcmFt
ZXRlciwgc2VydmljZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMoKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXggNDQ0MWFlNDkxNGJlNTRmMjIw
OGQ3YWY3NjZjYjNhYjRhOWYyYWY0OC4uODMzZTllZWE1ZDRiMGU5ZDUwNjNmZDFkOGUzMmVkYjQ1
OGI0ZTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaApAQCAtODEs
NiArODEsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3Q7CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1v
dmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAgICAgdmlydHVh
bCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNQbHVnSW5JbWFnZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5k
ZXggYmUyNDQyNzllNGRjZmIzMzNhZmYxODU5OGVjNDI0YTNkZDRiM2I1Ni4uM2UyOWI5Y2Y4NzU4
Y2M5OTYwMmRlOGEwYmE4MzRiZjI0ZWI2Mjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01NSw2ICs1NSwxMiBAQAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCisjaWYg
UExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCisjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiWW91VHViZUVtYmVkU2hhZG93RWxlbWVudC5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKQEAgLTIyMCw2ICsyMjYsMTMgQEAgUmVuZGVyRWxlbWVudCogSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUKICAgICAg
ICAgcmV0dXJuIGltYWdlOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoU2hh
ZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAgICAgICBFbGVt
ZW50KiBzaGFkb3dFbGVtZW50ID0gdG9FbGVtZW50KHNoYWRvd1Jvb3QtPmZpcnN0Q2hpbGQoKSk7
CisgICAgICAgIGlmIChzaGFkb3dFbGVtZW50ICYmIHNoYWRvd0VsZW1lbnQtPnNoYWRvd1BzZXVk
b0lkKCkgPT0gIi1hcHBsZS15b3V0dWJlLXNoYWRvdy1pZnJhbWUiKQorICAgICAgICAgICAgcmV0
dXJuIG5ldyBSZW5kZXJCbG9ja0Zsb3coKnRoaXMsIHN0ZDo6bW92ZShzdHlsZSkpOworICAgIH0K
KyNlbmRpZgogICAgIHJldHVybiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoc3Rk
Ojptb3ZlKHN0eWxlKSk7CiB9CiAKQEAgLTQxMiw2ICs0MjUsMzggQEAgYm9vbCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50OjpwYXJ0T2ZTbmFwc2hvdE92ZXJsYXkoTm9kZSogbm9kZSkKICAgICByZXR1
cm4gbm9kZSAmJiBzbmFwc2hvdExhYmVsICYmIChub2RlID09IHNuYXBzaG90TGFiZWwuZ2V0KCkg
fHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yoc25hcHNob3RMYWJlbC5nZXQoKSkpOwogfQogCisjaWYg
UExBVEZPUk0oSU9TKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVTaGFkb3dJ
RnJhbWVTdWJ0cmVlKGNvbnN0IFN0cmluZyYgc3JjKQoreworICAgIGlmICh0aGlzLT5zaGFkb3dS
b290KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzcmMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8WW91VHViZUVtYmVkU2hhZG93RWxlbWVudD4gc2hhZG93
RWxlbWVudCA9IFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsK
KyAgICBTaGFkb3dSb290JiByb290ID0gdGhpcy0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoc2hhZG93RWxlbWVudCwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisKKyAgICBSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGlmcmFtZUVsZW1lbnQgPSBIVE1M
SUZyYW1lRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aWZyYW1lVGFnLCBkb2N1bWVudCgpKTsK
KyAgICBpZiAoaGFzQXR0cmlidXRlKEhUTUxOYW1lczo6d2lkdGhBdHRyKSkKKyAgICAgICAgaWZy
YW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9taWNTdHJp
bmcoIjEwMCUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaWYg
KGhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIpKSB7CisgICAgICAgIGlmcmFtZUVs
ZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0eWxlQXR0ciwgQXRvbWljU3RyaW5nKCJt
YXgtaGVpZ2h0OiAxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
ICAgICAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRy
LCBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKSk7CisgICAgfQorICAgIGlmcmFt
ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNyY0F0dHIsIHNyYyk7CisgICAgaWZy
YW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6ZnJhbWVib3JkZXJBdHRyLCBBdG9t
aWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAg
ICAvLyBEaXNhYmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgorICAgIGlmcmFt
ZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNjcm9sbGluZ0F0dHIsIEF0b21pY1N0
cmluZygibm8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgc2hh
ZG93RWxlbWVudC0+YXBwZW5kQ2hpbGQoaWZyYW1lRWxlbWVudCwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgU3R5bGU6OnJlYXR0YWNoUmVuZGVy
VHJlZSgqdGhpcyk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZW1vdmVTbmFwc2hvdFRpbWVyRmlyZWQoVGltZXI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4qKQog
ewogICAgIG1fc25hcHNob3RJbWFnZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IGU0ZjU4MmJkYmVjZjEwZTRjZjFjNDJlYzYz
YjE5ZThmZDI5NWJkYmUuLjQxMDI3YzRmYTY1NGJkZTFlYTg2OTgyODBkMjVhZDZhY2JkZjkyYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC03
Myw2ICs3MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gUHVibGljIGZvciBGcmFtZVZpZXc6OmFkZFdp
ZGdldFRvVXBkYXRlKCkKICAgICBib29sIG5lZWRzV2lkZ2V0VXBkYXRlKCkgY29uc3QgeyByZXR1
cm4gbV9uZWVkc1dpZGdldFVwZGF0ZTsgfQogICAgIHZvaWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUo
Ym9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRn
ZXRVcGRhdGU7IH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBjcmVhdGVTaGFk
b3dJRnJhbWVTdWJ0cmVlKGNvbnN0IFN0cmluZyYgc3JjKTsKKyNlbmRpZgogCiAgICAgdm9pZCB1
c2VyRGlkQ2xpY2tTbmFwc2hvdChQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+LCBib29sIGZvcndhcmRF
dmVudCk7CiAgICAgdm9pZCBjaGVja1NuYXBzaG90U3RhdHVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGIwMDcwMmRjOTY1NzIxMWRjOGNmN2U1MjMw
NDVmMTMzYmI1NWY0NGMuLjU1MDY4YWZmYzVjOGMxYzI5ZTE2NWQ3MGZlMzc4NmNiZDgzZDE1ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0xOTEsMTIg
KzE5MSwxNiBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpsaXN0Qm94U2VsZWN0SXRlbShpbnQg
bGlzdEluZGV4LCBib29sIGFsbG93TXVsdGlwbHlTZWxlYwogCiBib29sIEhUTUxTZWxlY3RFbGVt
ZW50Ojp1c2VzTWVudUxpc3QoKSBjb25zdAogeworI2lmICFQTEFURk9STShJT1MpCiAgICAgY29u
c3QgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIFJlZlB0cjxSZW5kZXJUaGVt
ZT4gcmVuZGVyVGhlbWUgPSBwYWdlID8gJnBhZ2UtPnRoZW1lKCkgOiBSZW5kZXJUaGVtZTo6ZGVm
YXVsdFRoZW1lKCk7CiAgICAgaWYgKHJlbmRlclRoZW1lLT5kZWxlZ2F0ZXNNZW51TGlzdFJlbmRl
cmluZygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiAhbV9tdWx0aXBsZSAm
JiBtX3NpemUgPD0gMTsKKyNlbHNlCisgICAgcmV0dXJuICFtX211bHRpcGxlOworI2VuZGlmCiB9
CiAKIGludCBIVE1MU2VsZWN0RWxlbWVudDo6YWN0aXZlU2VsZWN0aW9uU3RhcnRMaXN0SW5kZXgo
KSBjb25zdApAQCAtMzQ1LDE3ICszNDksMjMgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2Fu
U2VsZWN0QWxsKCkgY29uc3QKIAogUmVuZGVyRWxlbWVudCogSFRNTFNlbGVjdEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQogeworI2lmICFQTEFURk9S
TShJT1MpCiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm4gbmV3IFJlbmRl
ck1lbnVMaXN0KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKICAgICByZXR1cm4gbmV3IFJlbmRl
ckxpc3RCb3goKnRoaXMsIHN0ZDo6bW92ZShzdHlsZSkpOworI2Vsc2UKKyAgICByZXR1cm4gbmV3
IFJlbmRlck1lbnVMaXN0KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKKyNlbmRpZgogfQogCiBi
b29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5v
ZGUmIGNoaWxkKSBjb25zdAogewogICAgIGlmICghSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICghdXNlc01lbnVMaXN0KCkpCiAgICAg
ICAgIHJldHVybiBpc0hUTUxPcHRpb25FbGVtZW50KGNoaWxkKSB8fCBpc0hUTUxPcHRHcm91cEVs
ZW1lbnQoY2hpbGQpIHx8IHZhbGlkYXRpb25NZXNzYWdlU2hhZG93VHJlZUNvbnRhaW5zKGNoaWxk
KTsKKyNlbmRpZgogICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1RyZWVDb250YWlu
cyhjaGlsZCk7CiB9CiAKQEAgLTQ5NSw2ICs1MDUsMTMgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6aXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QKICAgICByZXR1cm4gaXNSZXF1aXJlZCgp
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6d2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQoreworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1D
b250cm9sKCk7Cit9CisjZW5kaWYKKwogLy8gUmV0dXJucyB0aGUgMXN0IHZhbGlkIGl0ZW0gfHNr
aXB8IGl0ZW1zIGZyb20gfGxpc3RJbmRleHwgaW4gZGlyZWN0aW9uIHxkaXJlY3Rpb258IGlmIHRo
ZXJlIGlzIG9uZS4KIC8vIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgdmFsaWQgaXRlbSBjbG9z
ZXN0IHRvIHRoYXQgYm91bmRhcnkgd2hpY2ggaXMgcGFzdCB8bGlzdEluZGV4fCBpZiB0aGVyZSBp
cyBvbmUuCiAvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgfGxpc3RJbmRleHwuCkBAIC02MTcsNyAr
NjM0LDExIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldEFjdGl2ZVNlbGVjdGlvbkVuZElu
ZGV4KGludCBpbmRleCkKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEJveFNl
bGVjdGlvbihib29sIGRlc2VsZWN0T3RoZXJPcHRpb25zKQogeworI2lmICFQTEFURk9STShJT1Mp
CiAgICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCktPmlzTGlzdEJveCgpIHx8IG1f
bXVsdGlwbGUpKTsKKyNlbHNlCisgICAgQVNTRVJUKHJlbmRlcmVyKCkgJiYgKHJlbmRlcmVyKCkt
PmlzTWVudUxpc3QoKSB8fCBtX211bHRpcGxlKSk7CisjZW5kaWYKICAgICBBU1NFUlQoIWxpc3RJ
dGVtcygpLnNpemUoKSB8fCBtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4ID49IDApOwogCiAg
ICAgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om1pbihtX2FjdGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4
LCBtX2FjdGl2ZVNlbGVjdGlvbkVuZEluZGV4KTsKQEAgLTY4MywyMCArNzA0LDI5IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQ2hhbmdlRXZlbnRGb3JNZW51TGlzdCgpCiAKIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKCkKIHsKKyNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICB0b1JlbmRlckxp
c3RCb3gocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFuZ2VkKCk7CisjZWxzZQorICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQo
KTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdl
ZE9uUmVuZGVyZXIoKQogewogICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkgeworI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAg
ICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0
cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVy
KS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CisjZWxzZQorICAgICAgICB0b1JlbmRlck1lbnVM
aXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CisjZW5kaWYKICAgICB9CiB9
CiAKQEAgLTEyMjgsNiArMTI1OCw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0
RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgp
ICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKICAgICAgICAgZm9jdXMoKTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc01lbnVMaXN0KCkpIHsKICAgICAgICAgICAgIGlm
IChSZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKCkp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1lbnVMaXN0LT5wb3B1cElzVmlzaWJsZSgpKQpAQCAt
MTI0MywxNSArMTI3NCwxOCBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogICAgIH0KIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCAmJiAhZm9jdXNlZCgpKSB7CiAgICAgICAgIGlmIChS
ZW5kZXJNZW51TGlzdCogbWVudUxpc3QgPSB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKCkpKSB7
CiAgICAgICAgICAgICBpZiAobWVudUxpc3QtPnBvcHVwSXNWaXNpYmxlKCkpCiAgICAgICAgICAg
ICAgICAgbWVudUxpc3QtPmhpZGVQb3B1cCgpOwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiB9
CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoaW50IGxpc3RJ
bmRleCwgYm9vbCBtdWx0aSwgYm9vbCBzaGlmdCkKQEAgLTE0NzIsNiArMTUwNiw3IEBAIHZvaWQg
SFRNTFNlbGVjdEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAg
IGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKICAgICAgICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE0ODEsNiArMTUxNiw5IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBtZW51TGlzdERlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogICAgIGVsc2UgCiAgICAgICAgIGxpc3RCb3hEZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKKyNlbHNlCisgICAgbWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKKyNlbmRpZgogICAgIGlmIChldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXgg
ZGQxOGMxNmIyYmIzYzk0MDU5ZmUzOWVmNDdlNjFlNGVjY2E5NWNlZS4uYzRlNGFmNTUwODVlNjE3
NWIwNGE4ZDllYTZhNmYxMDQzNzZkNjc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuaApAQCAtOTQsNiArOTQsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaXN0Qm94
U2VsZWN0SXRlbShpbnQgbGlzdEluZGV4LCBib29sIGFsbG93TXVsdGlwbHlTZWxlY3Rpb25zLCBi
b29sIHNoaWZ0LCBib29sIGZpcmVPbkNoYW5nZU5vdyA9IHRydWUpOwogCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9W
RVJSSURFOworI2VuZGlmCisKICAgICBib29sIGNhblNlbGVjdEFsbCgpIGNvbnN0OwogICAgIHZv
aWQgc2VsZWN0QWxsKCk7CiAgICAgaW50IGxpc3RUb09wdGlvbkluZGV4KGludCBsaXN0SW5kZXgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCmluZGV4
IGJhMTlkMzM2NjFlYzNiMzYxMGU2NGU3MzllMzQ3OTFkMzhmOGI1NDUuLjRjZTk1OTdjYzA5NWVh
OWMxZWIxN2NiODJiZGExNTJmM2U0N2E5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAKQEAgLTE1NywxMCArMTU3LDE0IEBAIHZvaWQgSFRNTFN1bW1hcnlF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogYm9vbCBIVE1MU3Vt
bWFyeUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIHx8IChpc01haW5TdW1tYXJ5KCkgJiYgcmVuZGVyZXIoKSAmJiBkZXRhaWxzRWxl
bWVudCgpKTsKKyNlbHNlCiAgICAgaWYgKGlzTWFpblN1bW1hcnkoKSAmJiByZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKTsKKyNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBiN2FhNGJiOTA0ZTBjMDQ5OTFiNjcw
YTc0NTg5NGZiNTM2NzAxOWE4Li5iYzdkOTk4NjRjZjRlOGNhMjI0Yzc1NzZlYjkyODc0YzAyZGNk
YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAg
LTU0NSw0ICs1NDUsMTEgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhv
bGRlclRleHQoKQogICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRl
eHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorYm9vbCBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCit7Cisg
ICAgcmV0dXJuICFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0KKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CmluZGV4IGU4OTMzMDg1OGMxZWFiYmU4ZDljZjJlYzY3MGU3ODk2NzQ3NjE1N2UuLmY5ZWQzYzFh
Nzc1NGY3MGRkZTE1ZmY5OTc0Yjc0NTVkYjFjY2U5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC02MCw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDb2xzKGludCk7CiAgICAgdm9pZCBzZXRSb3dzKGludCk7CiAKKyNpZiBQTEFURk9STShJ
T1MpCisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZF
UlJJREU7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmlkbAppbmRleCBiZDViN2E1YzRjM2Jm
NTlkOTVkOWUwMDJhM2M0OGFjMjg3ZTYxOTdkLi5mMTU2ZDk4ZWM0Yjc3M2MwYjk0MzRmYzkzM2Q1
MTZkZTBkODJkYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5pZGwKQEAgLTY1LDYgKzY1LDExIEBAIGludGVyZmFjZSBIVE1MVGV4dEFyZWFFbGVtZW50IDog
SFRNTEVsZW1lbnQgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgRE9NU3Ry
aW5nIGRpcmVjdGlvbik7CiAjZW5kaWYKIAorI2lmIFdURl9QTEFURk9STV9JT1MKKyAgICAgICAg
YXR0cmlidXRlIGJvb2xlYW4gYXV0b2NvcnJlY3Q7CisgICAgICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF1dG9jYXBpdGFsaXplOworI2VuZGlmCisKICNp
ZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwog
ICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCAwNzBiNzU3MDRjODA0NGZjNGY3ZjQzYzgxZWFlMDRkZjQ1MDA2MGQzLi4yN2NiMzEyNzhk
YjFmY2QyMjU2MTU4NGQ0OTk3ODQ4N2E4NmNhZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTg1LDcgKzE4NSwxNCBA
QCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25EaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBkaXJlY3Rpb24pCiAKIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OnNlbGVjdCgpCiB7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhYnN0cmFjdCB0aGUgc2Vs
ZWN0aW9uIGJlaGF2aW9yIGludG8gYW4gRWRpdGluZ0JlaGF2aW9yIGZ1bmN0aW9uIGluc3RlYWQK
KyAgICAvLyBvZiBoYXJkY29kaW5nIHRoZSBiZWhhdmlvciB1c2luZyBhIG1hY3JvIGRlZmluZS4K
KyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZWxlY3QgYWxsIHRo
ZSB0ZXh0IG9uIGlPUy4gSW5zdGVhZCB1c2UgdGhlIHN0YW5kYXJkIHRleHRmaWVsZCBiZWhhdmlv
ciBvZiBnb2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgorICAgIHNldFNlbGVjdGlvblJhbmdl
KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCksIFNlbGVjdGlvbkhhc0ZvcndhcmREaXJlY3Rpb24pOworI2Vsc2UKICAgICBzZXRT
ZWxlY3Rpb25SYW5nZSgwLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBTZWxlY3Rp
b25IYXNOb0RpcmVjdGlvbik7CisjZW5kaWYKIH0KIAogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50OjpzZWxlY3RlZFRleHQoKSBjb25zdApAQCAtMzAwLDEyICszMDcsMTQgQEAgdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoaW50IHN0YXJ0
LCBpbnQgZW5kLCBUZXh0RmllbGQKICAgICBlbHNlCiAgICAgICAgIGVuZFBvc2l0aW9uID0gdmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgoZW5kKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8g
c3RhcnRQb3NpdGlvbiBhbmQgZW5kUG9zaXRpb24gY2FuIGJlIG51bGwgcG9zaXRpb24gZm9yIGV4
YW1wbGUgd2hlbgogICAgIC8vICItd2Via2l0LXVzZXItc2VsZWN0OiBub25lIiBzdHlsZSBhdHRy
aWJ1dGUgaXMgc3BlY2lmaWVkLgogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTm90TnVsbCgpICYm
IGVuZFBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVChzdGFydFBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+c2hhZG93SG9zdCgpID09IHRoaXMK
ICAgICAgICAgICAgICYmIGVuZFBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5v
ZGUoKS0+c2hhZG93SG9zdCgpID09IHRoaXMpOwogICAgIH0KKyNlbmRpZgogICAgIFZpc2libGVT
ZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwogICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uSGFz
QmFja3dhcmREaXJlY3Rpb24pCiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rp
b24oZW5kUG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pOwpAQCAtNTQ0LDYgKzU1MywyNSBAQCBTdHJp
bmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmlubmVyVGV4dFZhbHVlKCkgY29uc3QKICAg
ICByZXR1cm4gZmluaXNoVGV4dChyZXN1bHQpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aGlkZVBsYWNlaG9sZGVyKCkKK3sKKyAgICBp
ZiAoIXN1cHBvcnRzUGxhY2Vob2xkZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEhUTUxFbGVt
ZW50KiBwbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyRWxlbWVudCgpOworICAgIGlmICghcGxhY2Vo
b2xkZXIpIHsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgcGxhY2Vob2xkZXItPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlWaXNpYmlsaXR5LCBBU0NJSUxpdGVyYWwoImhpZGRlbiIpKTsKK30KKwordm9pZCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2hvd1BsYWNlaG9sZGVySWZOZWNlc3NhcnkoKQorewor
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7Cit9CisjZW5kaWYKKwogc3Rh
dGljIHZvaWQgZ2V0TmV4dFNvZnRCcmVhayhSb290SW5saW5lQm94KiYgbGluZSwgTm9kZSomIGJy
ZWFrTm9kZSwgdW5zaWduZWQmIGJyZWFrT2Zmc2V0KQogewogICAgIFJvb3RJbmxpbmVCb3gqIG5l
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmgKaW5kZXggM2RiYjRkZGIyYWI2MjYzMjhkYTEwNjlkYWUyYjVjYzBiM2ZhNDg3MC4uZmJkNzVh
MTY1ZWQ2ZGNlYmNhMzZmNmQ3ZGY1NzBmOWFlNmIyZjA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtODYsNiArODYsMTAgQEAg
cHVibGljOgogICAgIFN0cmluZyBkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0OwogCiAgICAg
dm9pZCBzZXRUZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYg
dGV4dCkgeyBtX3RleHRBc09mTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQgPSB0ZXh0OyB9Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgaGlkZVBsYWNlaG9sZGVyKCk7CisgICAgdm9pZCBz
aG93UGxhY2Vob2xkZXJJZk5lY2Vzc2FyeSgpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBIVE1MRm9ybUVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCmluZGV4IGI2OTEyOTEyOTYxZjE0YzVmYTRmMjVhZTIzM2Y5NzFmMWZkNDAzNTQuLjBiZDkz
N2MwN2QzZDJmYTZhYmQyMTg3NWEzZDc5NDVmMDZmZDg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCBSZW5kZXJFbGVtZW50KiBI
VE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKIHsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICBpZiAoc2hvdWxk
VXNlVmlkZW9QbHVnaW5Qcm94eSgpKQotICAgICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKHN0ZDo6bW92ZShzdHlsZSkpOwogI2VuZGlmCiAgICAgcmV0
dXJuIG5ldyBSZW5kZXJWaWRlbygqdGhpcywgc3RkOjptb3ZlKHN0eWxlKSk7CiB9CkBAIC0xMzEs
OCArMTMxLDIzIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKSkKICAgICAgICAgICAgICAgICB0b1JlbmRlckltYWdlKHJlbmRlcmVyKCkpLT5pbWFn
ZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAgICAgICAgfQotICAgIH0gZWxzZQor
ICAgIH0KKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgZWxzZSBpZiAobmFtZSA9PSB3ZWJr
aXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpIHsKKyAgICAgICAgaWYgKHBsYXll
cigpKQorICAgICAgICAgICAgcGxheWVyKCktPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKHdlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkpOworICAgIH0gZWxzZSB7
CiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
KworICAgICAgICBpZiAobmFtZSA9PSB3ZWJraXRhaXJwbGF5QXR0cikgeworICAgICAgICAgICAg
aWYgKHBsYXllcigpKQorICAgICAgICAgICAgICAgIHBsYXllcigpLT5zZXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCh3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgZWxzZQorICAgICAgICBIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7ICAgIAorI2VuZGlmCiB9CiAKIGJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKQEAgLTE0NCw2ICsx
NTksMTAgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25z
dAogICAgIGlmICghcGxheWVyKCkgfHwgIXBsYXllcigpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZ1bGxz
Y3JlZW4gaW1wbGVtZW50ZWQgYnkgcGxheWVyLgorICAgIHJldHVybiB0cnVlOworI2Vsc2UKICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBp
cyBlbmFibGVkIGFuZCBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQKICAgICAv
LyBkbyBub3QgcmVxdWlyZSB0aGF0IHRoZSBwbGF5ZXIgaGFzIGEgdmlkZW8gdHJhY2sgdG8gZW50
ZXIgZnVsbCBzY3JlZW4uCkBAIC0xNTUsNiArMTc0LDcgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9k
ZSh0aGlzKTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCiB9CiAKIHVuc2lnbmVkIEhUTUxWaWRl
b0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBjb25zdApAQCAtMzA3LDYgKzMyNywyNSBAQCBib29sIEhU
TUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKICAgICByZXR1cm4g
aXNGdWxsc2NyZWVuKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCitib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QK
K3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7CisgICAg
aWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3MtPm1lZGlhUGxheWJhY2tBbGxvd3NBaXJQbGF5KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgU3RyaW5nIGxlZ2FjeUFpcnBsYXlBdHRyaWJ1
dGVWYWx1ZSA9IGZhc3RHZXRBdHRyaWJ1dGUod2Via2l0YWlycGxheUF0dHIpOworICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRlKHdlYmtpdHdp
cmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cik7Cit9CisKK3ZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6c2V0V2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCBkaXNhYmxl
ZCkKK3sKKyAgICBzZXRCb29sZWFuQXR0cmlidXRlKHdlYmtpdHdpcmVsZXNzdmlkZW9wbGF5YmFj
a2Rpc2FibGVkQXR0ciwgZGlzYWJsZWQpOworfQorI2VuZGlmCisKIHZvaWQgSFRNTFZpZGVvRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewogICAg
IGlmIChtX2ltYWdlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApp
bmRleCAwODBmNTdjNGI5MWQ2YTcxYTY4ZWQ0MzZkNTc0OTU5MWE0YTA0MTRlLi4zMTM5MGRlNmMz
Y2M2MzIzNzU2YjQwODVmZWI1ZDMyYTY2Yzk4ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaApAQCAtNTQsNiArNTQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0
RW50ZXJGdWxsU2NyZWVuKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHdlYmtpdEVudGVyRnVsbHNjcmVl
bihlYyk7IH0KICAgICB2b2lkIHdlYmtpdEV4aXRGdWxsU2NyZWVuKCkgeyB3ZWJraXRFeGl0RnVs
bHNjcmVlbigpOyB9CiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCisgICAgYm9vbCB3ZWJraXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0V2Via2l0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbCk7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShNRURJQV9TVEFUSVNUSUNTKQogICAgIC8vIFN0YXRpc3RpY3MKICAgICB1bnNpZ25lZCB3ZWJr
aXREZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5pZGwKaW5kZXggYzYxNWM4OWQwOTI0Y2IzZWNjZjcwYzA4ZjJmZWY3ZDU3NTQ1MzBk
MC4uMzhhM2FjZGZjOGMxOTdiMTM4ZTJjNzMyNDk3MDM3MjBjN2NkNWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCkBAIC00Myw2ICs0MywxMCBAQAogICAgIFtS
YWlzZXNFeGNlcHRpb25dIHZvaWQgd2Via2l0RW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCB3
ZWJraXRFeGl0RnVsbFNjcmVlbigpOwogCisjaWYgZGVmaW5lZChFTkFCTEVfSU9TX0FJUlBMQVkp
ICYmIEVOQUJMRV9JT1NfQUlSUExBWQorICAgIGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOworI2VuZGlmCisKICAgICAvLyBUaGUgbnVtYmVyIG9m
IGZyYW1lcyB0aGF0IGhhdmUgYmVlbiBkZWNvZGVkIGFuZCBtYWRlIGF2YWlsYWJsZSBmb3IKICAg
ICAvLyBwbGF5YmFjay4KICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RBVElTVElDU10gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2Via2l0RGVjb2RlZEZyYW1lQ291bnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA5YWJjMDM5MWZiYjhiMmQxM2ZiYmFi
OGZlOGVhODUyOGM5ZjExNTQ4Li43NTc5ZTE4M2JkMGQzN2NkZjQ0ZDJiMDQwOGM4NjgwYTAzOWY5
NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTIxOSw2ICsyMTks
MTAgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAg
ICAgIGlmIChET01XaW5kb3cqIGRvbVdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygpKQogICAgICAg
ICAgICAgZG9tV2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5lciwgZmFs
c2UpOwogICAgICAgICBpbWFnZUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbGlz
dGVuZXIucmVsZWFzZSgpLCBmYWxzZSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBT
ZXQgdGhlIHZpZXdwb3J0IHRvIGJlIGluIGRldmljZSBwaXhlbHMgKHJhdGhlciB0aGFuIHRoZSBk
ZWZhdWx0IG9mIDk4MCkuCisgICAgICAgIHByb2Nlc3NWaWV3cG9ydChBU0NJSUxpdGVyYWwoIndp
ZHRoPWRldmljZS13aWR0aCIpLCBWaWV3cG9ydEFyZ3VtZW50czo6SW1hZ2VEb2N1bWVudCk7Cisj
ZW5kaWYKICAgICB9CiAKICAgICBtX2ltYWdlRWxlbWVudCA9IGltYWdlRWxlbWVudC5nZXQoKTsK
QEAgLTIyNiw4ICsyMzAsMTIgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0
cnVjdHVyZSgpCiAKIGZsb2F0IEltYWdlRG9jdW1lbnQ6OnNjYWxlKCkgY29uc3QKIHsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gT24gaU9TIGJpZyBpbWFnZXMgYXJlIHN1YnNhbXBsZWQgdG8g
bWFrZSB0aGVtIHNtYWxsZXIuIFNvLCBkb24ndCByZXNpemUgdGhlbS4KKyAgICByZXR1cm4gMTsK
KyNlbHNlCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDEuMGY7Cisg
ICAgICAgIHJldHVybiAxOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUoKS0+dmlldygp
OwogICAgIGlmICghdmlldykKQEAgLTIzNSwxNSArMjQzLDIwIEBAIGZsb2F0IEltYWdlRG9jdW1l
bnQ6OnNjYWxlKCkgY29uc3QKIAogICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50
LT5yZW5kZXJlcigpLCBwYWdlWm9vbUZhY3Rvcih0aGlzKSk7CiAgICAgTGF5b3V0U2l6ZSB3aW5k
b3dTaXplID0gTGF5b3V0U2l6ZSh2aWV3LT53aWR0aCgpLCB2aWV3LT5oZWlnaHQoKSk7Ci0gICAg
Ci0gICAgZmxvYXQgd2lkdGhTY2FsZSA9IChmbG9hdCl3aW5kb3dTaXplLndpZHRoKCkgLyBpbWFn
ZVNpemUud2lkdGgoKTsKLSAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IChmbG9hdCl3aW5kb3dTaXpl
LmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpOworCisgICAgZmxvYXQgd2lkdGhTY2FsZSA9
IHN0YXRpY19jYXN0PGZsb2F0Pih3aW5kb3dTaXplLndpZHRoKCkpIC8gaW1hZ2VTaXplLndpZHRo
KCk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4od2luZG93U2l6
ZS5oZWlnaHQoKSkgLyBpbWFnZVNpemUuaGVpZ2h0KCk7CiAKICAgICByZXR1cm4gc3RkOjptaW4o
d2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworI2VuZGlmCiB9CiAKIHZvaWQgSW1hZ2VEb2N1bWVu
dDo6cmVzaXplSW1hZ2VUb0ZpdCgpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIE9uIGlP
UyBiaWcgaW1hZ2VzIGFyZSBzdWJzYW1wbGVkIHRvIG1ha2UgdGhlbSBzbWFsbGVyLiBTbywgZG9u
J3QgcmVzaXplIHRoZW0uCisgICAgcmV0dXJuOworI2Vsc2UKICAgICBpZiAoIW1faW1hZ2VFbGVt
ZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTI1MiwzMSArMjY1LDM5IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudDo6cmVzaXplSW1hZ2VUb0ZpdCgpCiAgICAgZmxvYXQgc2NhbGUgPSB0aGlzLT5zY2Fs
ZSgpOwogICAgIG1faW1hZ2VFbGVtZW50LT5zZXRXaWR0aChzdGF0aWNfY2FzdDxpbnQ+KGltYWdl
U2l6ZS53aWR0aCgpICogc2NhbGUpKTsKICAgICBtX2ltYWdlRWxlbWVudC0+c2V0SGVpZ2h0KHN0
YXRpY19jYXN0PGludD4oaW1hZ2VTaXplLmhlaWdodCgpICogc2NhbGUpKTsKLSAgICAKKwogICAg
IG1faW1hZ2VFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q3Vyc29y
LCBDU1NWYWx1ZVdlYmtpdFpvb21Jbik7CisjZW5kaWYKIH0KIAogdm9pZCBJbWFnZURvY3VtZW50
OjppbWFnZUNsaWNrZWQoaW50IHgsIGludCB5KQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAv
LyBPbiBpT1MgYmlnIGltYWdlcyBhcmUgc3Vic2FtcGxlZCB0byBtYWtlIHRoZW0gc21hbGxlci4g
U28sIGRvbid0IHJlc2l6ZSB0aGVtLgorICAgIFVOVVNFRF9QQVJBTSh4KTsKKyAgICBVTlVTRURf
UEFSQU0oeSk7CisgICAgcmV0dXJuOworI2Vsc2UKICAgICBpZiAoIW1faW1hZ2VTaXplSXNLbm93
biB8fCBpbWFnZUZpdHNJbldpbmRvdygpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Nob3Vs
ZFNocmlua0ltYWdlID0gIW1fc2hvdWxkU2hyaW5rSW1hZ2U7Ci0gICAgCisKICAgICBpZiAobV9z
aG91bGRTaHJpbmtJbWFnZSkKICAgICAgICAgd2luZG93U2l6ZUNoYW5nZWQoKTsKICAgICBlbHNl
IHsKICAgICAgICAgcmVzdG9yZUltYWdlU2l6ZSgpOwotICAgICAgICAKKwogICAgICAgICB1cGRh
dGVMYXlvdXQoKTsKLSAgICAgICAgCisKICAgICAgICAgZmxvYXQgc2NhbGUgPSB0aGlzLT5zY2Fs
ZSgpOwotICAgICAgICAKKwogICAgICAgICBpbnQgc2Nyb2xsWCA9IHN0YXRpY19jYXN0PGludD4o
eCAvIHNjYWxlIC0gKGZsb2F0KWZyYW1lKCktPnZpZXcoKS0+d2lkdGgoKSAvIDIpOwogICAgICAg
ICBpbnQgc2Nyb2xsWSA9IHN0YXRpY19jYXN0PGludD4oeSAvIHNjYWxlIC0gKGZsb2F0KWZyYW1l
KCktPnZpZXcoKS0+aGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgCisKICAgICAgICAgZnJhbWUoKS0+
dmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzY3JvbGxYLCBzY3JvbGxZKSk7CiAg
ICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSW1hZ2VEb2N1bWVudDo6aW1hZ2VVcGRhdGVkKCkKQEAg
LTMyNCw5ICszNDUsMTIgQEAgYm9vbCBJbWFnZURvY3VtZW50OjppbWFnZUZpdHNJbldpbmRvdygp
IGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUg
PSBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIobV9p
bWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIHBhZ2Vab29tRmFjdG9yKHRoaXMpKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgTGF5b3V0U2l6ZSB3aW5kb3dTaXplID0gdmlldy0+Y29udGVudHNUb1Nj
cmVlbih2aWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKSkuc2l6ZSgpOworI2Vsc2UKICAg
ICBMYXlvdXRTaXplIHdpbmRvd1NpemUgPSBMYXlvdXRTaXplKHZpZXctPndpZHRoKCksIHZpZXct
PmhlaWdodCgpKTsKLSAgICAKLSAgICByZXR1cm4gaW1hZ2VTaXplLndpZHRoKCkgPD0gd2luZG93
U2l6ZS53aWR0aCgpICYmIGltYWdlU2l6ZS5oZWlnaHQoKSA8PSB3aW5kb3dTaXplLmhlaWdodCgp
OyAgICAKKyNlbmRpZgorICAgIHJldHVybiBpbWFnZVNpemUud2lkdGgoKSA8PSB3aW5kb3dTaXpl
LndpZHRoKCkgJiYgaW1hZ2VTaXplLmhlaWdodCgpIDw9IHdpbmRvd1NpemUuaGVpZ2h0KCk7CiB9
CiAKIHZvaWQgSW1hZ2VEb2N1bWVudDo6d2luZG93U2l6ZUNoYW5nZWQoKQpAQCAtMzM1LDcgKzM1
OSwyMSBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFuZ2VkKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYm9vbCBmaXRzSW5XaW5kb3cgPSBpbWFnZUZpdHNJbldpbmRvdygpOwot
ICAgIAorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChmaXRzSW5XaW5kb3cpCisgICAgICAg
IHJldHVybjsKKworICAgIExheW91dFNpemUgaW1hZ2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRlcmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJl
cigpLCBwYWdlWm9vbUZhY3Rvcih0aGlzKSk7CisgICAgTGF5b3V0UmVjdCB2aXNpYmxlU2NyZWVu
U2l6ZSA9IGZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihmcmFtZSgpLT52aWV3KCkt
PmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpKTsKKworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4odmlzaWJsZVNjcmVlblNpemUud2lkdGgoKSkgLyBpbWFnZVNpemUu
d2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aXNp
YmxlU2NyZWVuU2l6ZS5oZWlnaHQoKSkgLyBpbWFnZVNpemUuaGVpZ2h0KCk7CisgICAgaWYgKHdp
ZHRoU2NhbGUgPCBoZWlnaHRTY2FsZSkKKyAgICAgICAgcHJvY2Vzc1ZpZXdwb3J0KFN0cmluZzo6
Zm9ybWF0KCJ3aWR0aD0lZCIsIGltYWdlU2l6ZS53aWR0aCgpLnRvSW50KCkpLCBWaWV3cG9ydEFy
Z3VtZW50czo6SW1hZ2VEb2N1bWVudCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzVmlld3Bv
cnQoU3RyaW5nOjpmb3JtYXQoIndpZHRoPSVkIiwgc3RhdGljX2Nhc3Q8aW50PigxLjBmICsgKDEu
MGYgLSBoZWlnaHRTY2FsZSkpICogaW1hZ2VTaXplLndpZHRoKCkudG9JbnQoKSksIFZpZXdwb3J0
QXJndW1lbnRzOjpJbWFnZURvY3VtZW50KTsKKyNlbHNlCiAgICAgLy8gSWYgdGhlIGltYWdlIGhh
cyBiZWVuIGV4cGxpY2l0bHkgem9vbWVkIGluLCByZXN0b3JlIHRoZSBjdXJzb3IgaWYgdGhlIGlt
YWdlIGZpdHMKICAgICAvLyBhbmQgc2V0IGl0IHRvIGEgem9vbSBvdXQgY3Vyc29yIGlmIHRoZSBp
bWFnZSBkb2Vzbid0IGZpdAogICAgIGlmICghbV9zaG91bGRTaHJpbmtJbWFnZSkgewpAQCAtMzQ1
LDcgKzM4Myw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6d2luZG93U2l6ZUNoYW5nZWQoKQogICAg
ICAgICAgICAgbV9pbWFnZUVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlDdXJzb3IsIENTU1ZhbHVlV2Via2l0Wm9vbU91dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBpZiAobV9kaWRTaHJpbmtJbWFnZSkgewogICAgICAgICAvLyBJZiB0aGUg
d2luZG93IGhhcyBiZWVuIHJlc2l6ZWQgc28gdGhhdCB0aGUgaW1hZ2UgZml0cywgcmVzdG9yZSB0
aGUgaW1hZ2Ugc2l6ZQogICAgICAgICAvLyBvdGhlcndpc2UgdXBkYXRlIHRoZSByZXN0b3JlZCBp
bWFnZSBzaXplLgpAQCAtMzYwLDYgKzM5OCw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6d2luZG93
U2l6ZUNoYW5nZWQoKQogICAgICAgICAgICAgbV9kaWRTaHJpbmtJbWFnZSA9IHRydWU7CiAgICAg
ICAgIH0KICAgICB9CisjZW5kaWYKIH0KIAogQ2FjaGVkSW1hZ2UqIEltYWdlRG9jdW1lbnQ6OmNh
Y2hlZEltYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5YmQzNjQ5YTY2M2Rh
ZDc2ODBmYzM4NTg1NDY4M2NjMjkwOWU0YzQxLi4zMzUyMzgzZDBiMzdkNWEwMmM4NzY2ZTE5NTkw
NjM4ZWVlMmRmMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC01MjUsNiArNTI1
LDEzIEBAIFN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitEYXRlQ29tcG9u
ZW50czo6VHlwZSBJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRGF0
ZUNvbXBvbmVudHM6OkludmFsaWQ7Cit9CisjZW5kaWYKKwogdm9pZCBJbnB1dFR5cGU6OmRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIHsK
ICAgICBpZiAoZWxlbWVudCgpLmFjdGl2ZSgpKQpAQCAtNTUxLDYgKzU1OCwxMCBAQCBib29sIElu
cHV0VHlwZTo6aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0CiAKIGJvb2wgSW5wdXRUeXBlOjpp
c0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogeworI2lmIFBM
QVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLmlzUmVhZE9ubHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJuIGVsZW1lbnQoKS5pc1RleHRGb3JtQ29udHJv
bEtleWJvYXJkRm9jdXNhYmxlKGV2ZW50KTsKIH0KIApAQCAtNzI4LDYgKzczOSwxNCBAQCBJY29u
KiBJbnB1dFR5cGU6Omljb24oKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCisjaWYgUExBVEZP
Uk0oSU9TKQorU3RyaW5nIElucHV0VHlwZTo6ZGlzcGxheVN0cmluZygpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCisK
IGJvb2wgSW5wdXRUeXBlOjpzaG91bGRSZXNldE9uRG9jdW1lbnRBY3RpdmF0aW9uKCkKIHsKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBlNGM4YTQ5NjQzM2Fl
MTFlZGVjMWRlZjE0MzE2MzY2NTExN2QzM2FiLi45OTZkOTM2NDU0NDU4NmYzY2RmMDVjYWFiNTg2
MzZmNGExNDk5ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTQxLDYgKzQxLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudDsK
QEAgLTI0Niw2ICsyNTAsMTAgQEAgcHVibGljOgogICAgIC8vIFNob3VsZCByZXR1cm4gdHJ1ZSBp
ZiB0aGUgZ2l2ZW4gRHJhZ0RhdGEgaGFzIG1vcmUgdGhhbiBvbmUgZHJvcHBlZCBmaWxlcy4KICAg
ICB2aXJ0dWFsIGJvb2wgcmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYpOwogICAg
IHZpcnR1YWwgSWNvbiogaWNvbigpIGNvbnN0OworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0
dWFsIFN0cmluZyBkaXNwbGF5U3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIC8vIFNob3Vs
ZCByZXR1cm4gdHJ1ZSBpZiB0aGUgY29ycmVzcG9uZGluZyByZW5kZXJlciBmb3IgYSB0eXBlIGNh
biBkaXNwbGF5IGEgc3VnZ2VzdGVkIHZhbHVlLgogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTdWdn
ZXN0ZWRWYWx1ZSgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTZW5kQ2hhbmdlRXZlbnRBZnRl
ckNoZWNrZWRDaGFuZ2VkKCk7CkBAIC0yOTQsNiArMzAyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBz
dHJpbmcuIFRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHR5cGVzIHdpdGhvdXQgdmFsdWVB
c051bWJlci4KICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNv
bnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5
cGUgZGF0ZVR5cGUoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
SW5kZXRlcm1pbmF0ZUFwcGVhcmFuY2UoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NlbGVjdGlvbkFQSSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9QbHVnaW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50
LmNwcAppbmRleCAxMTNhNTZiZDhjMTU4NTRjMmNjNGU5ZjMyZWU4Zjg5Y2FmYTVjZWZjLi4wZDRh
OWYyZTRhMGZlNTIxNGU1Zjg4MjEzYWEwODg5YjNhZGMwZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmNwcApAQCAtNzQsMTAgKzc0LDE5IEBAIHZvaWQgUGx1Z2luRG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKICAgICBpZiAoZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkuZGlzcGF0Y2hE
b2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBT
aG91bGQgbm90IGJlIGFibGUgdG8gem9vbSBpbnRvIHN0YW5kYWxvbmUgcGx1Zy1pbiBkb2N1bWVu
dHMuCisgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc1ZpZXdwb3J0KEFTQ0lJTGl0ZXJhbCgidXNlci1z
Y2FsYWJsZT1ubyIpLCBWaWV3cG9ydEFyZ3VtZW50czo6UGx1Z2luRG9jdW1lbnQpOworI2VuZGlm
CisKICAgICBSZWZQdHI8RWxlbWVudD4gYm9keSA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQo
Ym9keVRhZywgZmFsc2UpOwotICAgIGJvZHktPnNldEF0dHJpYnV0ZShtYXJnaW53aWR0aEF0dHIs
ICIwIik7Ci0gICAgYm9keS0+c2V0QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0dHIsICIwIik7Ci0g
ICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgImJhY2tncm91bmQtY29sb3I6IHJnYigz
OCwzOCwzOCkiKTsKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUobWFyZ2lud2lkdGhBdHRyLCBBdG9t
aWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAg
Ym9keS0+c2V0QXR0cmlidXRlKG1hcmdpbmhlaWdodEF0dHIsIEF0b21pY1N0cmluZygiMCIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgYm9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbWljU3RyaW5nKCJiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjE3LDIyNCwyMzMpIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOworI2Vsc2UKKyAgICBib2R5LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBBdG9taWNT
dHJpbmcoImJhY2tncm91bmQtY29sb3I6IHJnYigzOCwzOCwzOCkiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CisjZW5kaWYKIAogICAgIHJvb3RFbGVtZW50LT5hcHBlbmRD
aGlsZChib2R5LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDlmNjExNDQwNmEwNjhlNzJiM2RmNDMyYjNjM2ViOTdi
M2Q5YTAzNjguLjRiMTZhMDA1ZDMzOTNkNjFlY2ZjMzc5NTllMGNiYjNlMWM1YzIzOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAgYm9v
bCBSYW5nZUlucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNl
RG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChlbGVtZW50KCkuaXNEaXNh
YmxlZE9yUmVhZE9ubHkoKSkKQEAgLTE1NCwxMSArMTU1LDE0IEBAIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1
cm47CiAgICAgdGh1bWIuZHJhZ0Zyb20oZXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSk7CiB9Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0jaWYgRU5BQkxFKFRPVUNIX1NMSURF
UikKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCogZXZl
bnQpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHR5cGVkU2xpZGVyVGh1bWJFbGVtZW50KCku
aGFuZGxlVG91Y2hFdmVudChldmVudCk7CisjZWxpZiBFTkFCTEUoVE9VQ0hfU0xJREVSKQogICAg
IGlmIChlbGVtZW50KCkuaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNzIsMTQgKzE3NiwyMyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3VjaEV2
ZW50KFRvdWNoRXZlbnQqIGV2ZW50KQogICAgICAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgp
LnNldFBvc2l0aW9uRnJvbVBvaW50KHRvdWNoZXMtPml0ZW0oMCktPmFic29sdXRlTG9jYXRpb24o
KSk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KKyNlbmRpZgog
fQogCisjaWYgRU5BQkxFKFRPVUNIX1NMSURFUikKIGJvb2wgUmFuZ2VJbnB1dFR5cGU6Omhhc1Rv
dWNoRXZlbnRIYW5kbGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBSYW5nZUlucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1
dGVDaGFuZ2VkKCkKK3sKKyAgICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmRpc2FibGVkQXR0
cmlidXRlQ2hhbmdlZCgpOworfQogI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5U
UykKIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IGQxMTJm
MWIxOGNmYmUwNzg5YzVlMzdlODViMTJmM2YyMGI0N2Q3YzAuLmFjMDFlMjRlZGI0ZWZkNzBiYWY1
MTQ5MTk0ODRiNzZmODdjZTYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgK
QEAgLTUxLDcgKzUxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNSZXF1
aXJlZCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c1N0ZXBwYWJsZSgpIGNvbnN0IE9WRVJSSURFOworI2lmICFQTEFURk9STShJT1MpCiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqKSBPVkVSUklERTsKKyNl
bmRpZgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUGFz
c1JlZjxSZW5kZXJTdHlsZT4pIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7CkBAIC03NywxMCArNzksMTggQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8RGVjaW1hbD4gbV90aWNrTWFya1ZhbHVlczsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykgJiYgRU5BQkxFKFRPVUNIX1NMSURFUikKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQq
KSBPVkVSUklERTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CisjZWxzZQorI2lmIEVOQUJMRShUT1VDSF9T
TElERVIpCiAgICAgdmlydHVhbCBib29sIGhhc1RvdWNoRXZlbnRIYW5kbGVyKCkgY29uc3QgT1ZF
UlJJREU7CiAjZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IGE1NDc1MWRjMzczYzkwZjQ2NjRlNDJj
MDQzYjJkYmFhOWM5MGUwZDcuLjNkZGFlOTcyZDMyYmJjMjU2YjBhOWVhZTdiY2QwOTU1NGQ2YjUy
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAgLTU5LDggKzU5
LDEwIEBAIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjphdHRhY2goKQogCiB2b2lkIFNlYXJjaElucHV0
VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudCgpLnJlbmRlcmVyKCkpCiAgICAgICAgIHRv
UmVuZGVyU2VhcmNoRmllbGQocmVuZGVyZXIpLT5hZGRTZWFyY2hSZXN1bHQoKTsKKyNlbmRpZgog
fQogCiBSZW5kZXJFbGVtZW50KiBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFBhc3NS
ZWY8UmVuZGVyU3R5bGU+IHN0eWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwCmluZGV4IDM4OTFmNjlmZDYwOGYxYmQyZTY0ZDQ2YWY5ODMzMWRlZjVl
OTdmNDcuLjE5NDhmOGZkZDM5ODNjYjdiNjkwOTAzMTg4OTkxMDg2NTQ0Y2ZkYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTcwLDYgKzcwLDEwIEBA
IFRleHRGaWVsZElucHV0VHlwZTo6flRleHRGaWVsZElucHV0VHlwZSgpCiAKIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAog
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZWxlbWVudCgpLmlzUmVhZE9ubHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJuIGVsZW1lbnQoKS5pc1RleHRG
b3JtQ29udHJvbEZvY3VzYWJsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaAppbmRleCA1MjJkZDdmZmUyZDU1NWNlODM2ZWUzMjFmZTczNjE4YzRkOWFhYmU3
Li5kY2ZkZTkwODZmNzQ2OTg2MjQxMWU3NjUzNDcwYjkxN2Q4NGQxYTBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKQEAgLTY5LDYgKzY5LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbm5l
clRleHRWYWx1ZSgpIE9WRVJSSURFOworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIFN0
cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOworI2VuZGlm
CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICBlbnVtIFZhbHVlQ2hhbmdlU3RhdGUgewpAQCAtODcsNyArOTAsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBsaWNpdGx5KEV2ZW50
KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihQ
YXNzUmVmPFJlbmRlclN0eWxlPikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QgT1ZFUlJJREU7CisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlc3BlY3RMaXN0QXR0cmli
dXRlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVt
ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVy
VGV4dCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9XZWJBdXRv
Y2FwaXRhbGl6ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWJBdXRvY2FwaXRhbGl6ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI3NmRkYTU2NDNkYTQ0YTVkYzMwMWM1ZTNiM2NjNzNiM2Q1MzJhODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlYkF1dG9jYXBpdGFsaXplLmgKQEAg
LTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViQXV0b2NhcGl0YWxpemVfaAorI2RlZmluZSBXZWJBdXRvY2FwaXRhbGl6
ZV9oCisKK3R5cGVkZWYgZW51bSB7CisgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdCwK
KyAgICBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVOb25lLAorICAgIFdlYkF1dG9jYXBpdGFsaXplVHlw
ZVdvcmRzLAorICAgIFdlYkF1dG9jYXBpdGFsaXplVHlwZVNlbnRlbmNlcywKKyAgICBXZWJBdXRv
Y2FwaXRhbGl6ZVR5cGVBbGxDaGFyYWN0ZXJzCit9IFdlYkF1dG9jYXBpdGFsaXplVHlwZTsKKwor
I2VuZGlmIC8vIFdlYkF1dG9jYXBpdGFsaXplX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDA5MDljMmFk
Mzk2YTIxNTUwN2IyYWZiZDRjYTE1MmQzNjVlODgxNzEuLjNmN2EzZGQwM2EwZmEyNjQ5NWM0M2Y4
MjgxODk4NWEwNzg5MjAyMzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNjQsNyArNjQsMTMgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBVU0UoQ0cpCisjaWYgIVBM
QVRGT1JNKElPUykKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2Vy
dmljZXMuaD4KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1MpCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xODA5LDYgKzE4MTUsMTUgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6Y3JlYXRlSW1hZ2VEYXRhKGZsb2F0IHN3LCBmbG9hdAogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gSWYgdGhlIGNh
bnZhcyBlbGVtZW50IHdhcyBjcmVhdGVkIGJlZm9yZSBEb2N1bWVudCBoYWQgYSBGcmFtZSwKKyAg
ICAvLyB0aGVuIG5vIG1heGltdW1EZWNvZGVkSW1hZ2VTaXplIHdhcyBzZXQuCisgICAgaWYgKCFj
YW52YXMoKS0+bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSkgeworICAgICAgICBpZiAoU2V0dGlu
Z3MqIHNldHRpbmdzID0gY2FudmFzKCktPmRvY3VtZW50KCkuc2V0dGluZ3MoKSkKKyAgICAgICAg
ICAgIGNhbnZhcygpLT5zZXRNYXhpdW1EZWNvZGVkSW1hZ2VTaXplKHNldHRpbmdzLT5tYXhpbXVt
RGVjb2RlZEltYWdlU2l6ZSgpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIEZsb2F0U2l6ZSBsb2dp
Y2FsU2l6ZShmYWJzKHN3KSwgZmFicyhzaCkpOwogICAgIGlmICghbG9naWNhbFNpemUuaXNFeHBy
ZXNzaWJsZUFzSW50U2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE4NTksNiArMTg3NCwx
NSBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnZXRJ
bWFnZURhdGEoSW1hZ2VCdWZmZXI6OkNvb3JkaQogICAgICAgICBzaCA9IC1zaDsKICAgICB9CiAK
KyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gSWYgdGhlIGNhbnZhcyBlbGVtZW50IHdhcyBjcmVh
dGVkIGJlZm9yZSBEb2N1bWVudCBoYWQgYSBGcmFtZSwKKyAgICAvLyB0aGVuIG5vIG1heGltdW1E
ZWNvZGVkSW1hZ2VTaXplIHdhcyBzZXQuCisgICAgaWYgKCFjYW52YXMoKS0+bWF4aW11bURlY29k
ZWRJbWFnZVNpemUoKSkgeworICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gY2FudmFz
KCktPmRvY3VtZW50KCkuc2V0dGluZ3MoKSkKKyAgICAgICAgICAgIGNhbnZhcygpLT5zZXRNYXhp
dW1EZWNvZGVkSW1hZ2VTaXplKHNldHRpbmdzLT5tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpKTsK
KyAgICB9CisjZW5kaWYKKwogICAgIEZsb2F0UmVjdCBsb2dpY2FsUmVjdChzeCwgc3ksIHN3LCBz
aCk7CiAgICAgaWYgKGxvZ2ljYWxSZWN0LndpZHRoKCkgPCAxKQogICAgICAgICBsb2dpY2FsUmVj
dC5zZXRXaWR0aCgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5oCmluZGV4IDU2MWExZThmOTk5MGI3NTk5NjI3YzE0MDZmM2EwMzFhZjQ1
ZGYyMGQuLjcyN2RhMDc1MDg5MmNhNjc4NjYwYTM4OWUxZjljOTllODQwNmQ0YjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaApAQCAt
MTMzLDYgKzEzMywxMCBAQCBwdWJsaWM6CiAKICAgICBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNl
ckNvbnRlbnRQb2xpY3koKSB7IHJldHVybiBtX3BhcnNlckNvbnRlbnRQb2xpY3k7IH0KIAorI2lm
IFBMQVRGT1JNKElPUykKKyAgICBib29sIGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQo
KSB7IHJldHVybiBtX2RvY3VtZW50LT5pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCk7
IH0KKyNlbmRpZgorCiAgICAgY2xhc3MgUmVkaXJlY3RUb0Zvc3RlclBhcmVudEd1YXJkIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVkaXJlY3RUb0Zvc3RlclBhcmVudEd1YXJkKTsK
ICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
U2NoZWR1bGVyLmgKaW5kZXggZGFiODYyN2ZhNmQ5OWU2OGQ0ZjRlYzlkOGYxZTdjYzhiMzliN2U5
ZS4uODJjOTdjMzRkMzdiMWZlYjM1MDRiM2JkMmFhOGFkNGQ2MjFmZGEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtMzIsNiAr
MzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKQEAgLTY5LDYg
KzczLDEwIEBAIHB1YmxpYzoKICAgICAvLyBJbmxpbmUgYXMgdGhpcyBpcyBjYWxsZWQgYWZ0ZXIg
ZXZlcnkgdG9rZW4gaW4gdGhlIHBhcnNlci4KICAgICB2b2lkIGNoZWNrRm9yWWllbGRCZWZvcmVU
b2tlbihQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
ICAgICBpZiAoV2ViVGhyZWFkU2hvdWxkWWllbGQoKSkKKyAgICAgICAgICAgIHNlc3Npb24ubmVl
ZHNZaWVsZCA9IHRydWU7CisjZW5kaWYKICAgICAgICAgaWYgKHNlc3Npb24ucHJvY2Vzc2VkVG9r
ZW5zID4gbV9wYXJzZXJDaHVua1NpemUgfHwgc2Vzc2lvbi5kaWRTZWVTY3JpcHQpIHsKICAgICAg
ICAgICAgIC8vIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGNhbiBiZSBleHBlbnNpdmUu
IEJ5IGRlbGF5aW5nLCB3ZSBhdm9pZGVkIGNhbGxpbmcKICAgICAgICAgICAgIC8vIG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpIHdoZW4gY29uc3RydWN0aW5nIG5vbi15aWVsZGluZyBQdW1w
U2Vzc2lvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcAppbmRleCAyMGJhMWUxMGQ4MTY4ZTNkYmZlZDM1MDZlNmE2MjIwM2Y3NDMxNWY4Li5lOWMw
YmUyMDVhOTI4MTkzYzE4ZDZmZWJkMGFhZGMzZjA0NWZhYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTQ0LDYgKzQ0LDI5IEBACiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0
ZXJOYW1lcy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgi
CisKKyNpZmRlZiBfX2hhc19pbmNsdWRlCisjaWYgX19oYXNfaW5jbHVkZSg8RGF0YURldGVjdG9y
c0NvcmUvRERERkFDYWNoZS5oPikKKyNpbmNsdWRlIDxEYXRhRGV0ZWN0b3JzQ29yZS9ERERGQUNh
Y2hlLmg+CisjZWxzZQordHlwZWRlZiB2b2lkKiBERERGQUNhY2hlUmVmOworI2VuZGlmCisKKyNp
ZiBfX2hhc19pbmNsdWRlKDxEYXRhRGV0ZWN0b3JzQ29yZS9ERERGQVNjYW5uZXIuaD4pCisjaW5j
bHVkZSA8RGF0YURldGVjdG9yc0NvcmUvRERERkFTY2FubmVyLmg+CisjZWxzZQordHlwZWRlZiB2
b2lkKiBERERGQVNjYW5uZXJSZWY7CisjZW5kaWYKKyNlbmRpZgorCitTT0ZUX0xJTktfUFJJVkFU
RV9GUkFNRVdPUktfT1BUSU9OQUwoRGF0YURldGVjdG9yc0NvcmUpCitTT0ZUX0xJTksoRGF0YURl
dGVjdG9yc0NvcmUsIEREREZBQ2FjaGVDcmVhdGVGcm9tRnJhbWV3b3JrLCBERERGQUNhY2hlUmVm
LCAoKSwgKCkpCitTT0ZUX0xJTksoRGF0YURldGVjdG9yc0NvcmUsIEREREZBU2Nhbm5lckNyZWF0
ZUZyb21DYWNoZSwgRERERkFTY2FubmVyUmVmLCAoRERERkFDYWNoZVJlZiBjYWNoZSksIChjYWNo
ZSkpCitTT0ZUX0xJTksoRGF0YURldGVjdG9yc0NvcmUsIEREREZBU2Nhbm5lckZpcnN0UmVzdWx0
SW5VbmljaGFyQXJyYXksIEJvb2xlYW4sIChERERGQVNjYW5uZXJSZWYgc2Nhbm5lciwgY29uc3Qg
VW5pQ2hhciogc3RyLCB1bnNpZ25lZCBsZW5ndGgsIGludCogc3RhcnRQb3MsIGludCogZW5kUG9z
KSwgKHNjYW5uZXIsIHN0ciwgbGVuZ3RoLCBzdGFydFBvcywgZW5kUG9zKSkKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yMzQy
LDYgKzIzNjUsOTYgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXIoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKICAgICBwcm9jZXNzQ2hhcmFjdGVyQnVmZmVyKGJ1ZmZlcik7
CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCisvLyBGcm9tIHRoZSBzdHJpbmcgNDA4OTk2MTAxMCwg
Y3JlYXRlcyBhIGxpbmsgb2YgdGhlIGZvcm0gPGEgaHJlZj0idGVsOjQwODk5NjEwMTAiPjQwODk5
NjEwMTA8L2E+IGFuZCBpbnNlcnRzIGl0Lgordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBo
b25lTnVtYmVyTGluayhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBWZWN0b3I8QXR0cmli
dXRlPiBhdHRyaWJ1dGVzOworICAgIGF0dHJpYnV0ZXMuYXBwZW5kKEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmhyZWZBdHRyLCBBU0NJSUxpdGVyYWwoInRlbDoiKSArIHN0cmluZykpOworCisgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhVGFnTG9jYWxOYW1lID0gYVRhZy5sb2NhbE5hbWUoKTsKKyAgICBB
dG9taWNIVE1MVG9rZW4gYVN0YXJ0VG9rZW4oSFRNTFRva2VuOjpTdGFydFRhZywgYVRhZ0xvY2Fs
TmFtZSwgYXR0cmlidXRlcyk7CisgICAgQXRvbWljSFRNTFRva2VuIGFFbmRUb2tlbihIVE1MVG9r
ZW46OkVuZFRhZywgYVRhZ0xvY2FsTmFtZSk7CisKKyAgICBwcm9jZXNzU3RhcnRUYWcoJmFTdGFy
dFRva2VuKTsKKyAgICBtX3RyZWUuZXhlY3V0ZVF1ZXVlZFRhc2tzKCk7CisgICAgbV90cmVlLmlu
c2VydFRleHROb2RlKHN0cmluZyk7CisgICAgcHJvY2Vzc0VuZFRhZygmYUVuZFRva2VuKTsKK30K
KworLy8gTG9jYXRlcyB0aGUgcGhvbmUgbnVtYmVycyBpbiB0aGUgc3RyaW5nIGFuZCBkZWFscyB3
aXRoIGl0CisvLyAxLiBBcHBlbmRzIHRoZSB0ZXh0IGJlZm9yZSB0aGUgcGhvbmUgbnVtYmVyIGFz
IGEgdGV4dCBub2RlLgorLy8gMi4gV3JhcHMgdGhlIHBob25lIG51bWJlciBpbiBhIHRlbDogbGlu
ay4KKy8vIDMuIEdvZXMgYmFjayB0byBzdGVwIDEgaWYgYSBwaG9uZSBudW1iZXIgaXMgZm91bmQg
aW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy4KKy8vIDQuIEFwcGVuZHMgdGhlIHJlc3Qgb2YgdGhl
IHN0cmluZyBhcyBhIHRleHQgbm9kZS4KK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpsaW5raWZ5UGhv
bmVOdW1iZXJzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHN0YXRpYyBERERGQUNhY2hl
UmVmIHBob25lTnVtYmVyc0NhY2hlID0gRERERkFDYWNoZUNyZWF0ZUZyb21GcmFtZXdvcmsoKTsK
KyAgICBpZiAoIXBob25lTnVtYmVyc0NhY2hlKSB7CisgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0
Tm9kZShzdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIEREREZB
U2Nhbm5lclJlZiBwaG9uZU51bWJlcnNTY2FubmVyID0gRERERkFTY2FubmVyQ3JlYXRlRnJvbUNh
Y2hlKHBob25lTnVtYmVyc0NhY2hlKTsKKworICAgIC8vIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiBh
bmQgcmVsYXRpdmVFbmRQb3NpdGlvbiBhcmUgdGhlIGVuZHBvaW50cyBvZiB0aGUgcGhvbmUgbnVt
YmVyIHJhbmdlLAorICAgIC8vIHJlbGF0aXZlIHRvIHRoZSBzY2FubmVyUG9zaXRpb24KKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgc2Nhbm5lclBv
c2l0aW9uID0gMDsKKyAgICBpbnQgcmVsYXRpdmVTdGFydFBvc2l0aW9uID0gMDsKKyAgICBpbnQg
cmVsYXRpdmVFbmRQb3NpdGlvbiA9IDA7CisKKyAgICAvLyBXaGlsZSB0aGVyZSdzIGEgcGhvbmUg
bnVtYmVyIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuLi4KKyAgICB3aGlsZSAoKHNjYW5uZXJQ
b3NpdGlvbiA8IGxlbmd0aCkgJiYgRERERkFTY2FubmVyRmlyc3RSZXN1bHRJblVuaWNoYXJBcnJh
eShwaG9uZU51bWJlcnNTY2FubmVyLCAmc3RyaW5nLmNoYXJhY3RlcnMoKVtzY2FubmVyUG9zaXRp
b25dLCBsZW5ndGggLSBzY2FubmVyUG9zaXRpb24sICZyZWxhdGl2ZVN0YXJ0UG9zaXRpb24sICZy
ZWxhdGl2ZUVuZFBvc2l0aW9uKSkgeworICAgICAgICAvLyBUaGUgY29udmVudGlvbiBpbiB0aGUg
RGF0YSBEZXRlY3RvcnMgZnJhbWV3b3JrIGlzIHRoYXQgdGhlIGVuZCBwb3NpdGlvbiBpcyB0aGUg
Zmlyc3QgY2hhcmFjdGVyIE5PVCBpbiB0aGUgcGhvbmUgbnVtYmVyCisgICAgICAgIC8vICh0aGF0
IGlzLCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBpcyByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVs
YXRpdmVTdGFydFBvc2l0aW9uKS4gU28gc3Vic3RyYWN0IDEgdG8gZ2V0IHRoZSBzYW1lCisgICAg
ICAgIC8vIGNvbnZlbnRpb24gYXMgdGhlIG9sZCBXZWJDb3JlIHBob25lIG51bWJlciBwYXJzZXIg
KHNvIHRoYXQgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaXMgc3RpbGwgdmFsaWQgaWYgd2Ugd2FudCB0
byBnbyBiYWNrCisgICAgICAgIC8vIHRvIHRoZSBvbGQgcGFyc2VyKS4KKyAgICAgICAgLS1yZWxh
dGl2ZUVuZFBvc2l0aW9uOworCisgICAgICAgIEFTU0VSVChzY2FubmVyUG9zaXRpb24gKyByZWxh
dGl2ZUVuZFBvc2l0aW9uIDwgbGVuZ3RoKTsKKworICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5v
ZGUoc3RyaW5nLnN1YnN0cmluZyhzY2FubmVyUG9zaXRpb24sIHJlbGF0aXZlU3RhcnRQb3NpdGlv
bikpOworICAgICAgICBpbnNlcnRQaG9uZU51bWJlckxpbmsoc3RyaW5nLnN1YnN0cmluZyhzY2Fu
bmVyUG9zaXRpb24gKyByZWxhdGl2ZVN0YXJ0UG9zaXRpb24sIHJlbGF0aXZlRW5kUG9zaXRpb24g
LSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gKyAxKSk7CisKKyAgICAgICAgc2Nhbm5lclBvc2l0aW9u
ICs9IHJlbGF0aXZlRW5kUG9zaXRpb24gKyAxOworICAgIH0KKworICAgIC8vIEFwcGVuZCB0aGUg
cmVzdCBhcyBhIHRleHQgbm9kZS4KKyAgICBpZiAoc2Nhbm5lclBvc2l0aW9uID4gMCkgeworICAg
ICAgICBpZiAoc2Nhbm5lclBvc2l0aW9uIDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBTdHJpbmcg
YWZ0ZXIgPSBzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQb3NpdGlvbiwgbGVuZ3RoIC0gc2Nhbm5l
clBvc2l0aW9uKTsKKyAgICAgICAgICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShhZnRlcik7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKHN0cmlu
Zyk7Cit9CisKKy8vIExvb2tzIGF0IHRoZSBhbmNlc3RvcnMgb2YgdGhlIGVsZW1lbnQgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgd2UncmUgaW5zaWRlIGFuIGVsZW1lbnQgd2hpY2ggZGlzYWxsb3dzIHBh
cnNpbmcgcGhvbmUgbnVtYmVycy4KK3N0YXRpYyBpbmxpbmUgYm9vbCBkaXNhbGxvd1RlbGVwaG9u
ZU51bWJlclBhcnNpbmcoY29uc3QgTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS5pc0xp
bmsoKQorICAgICAgICB8fCBub2RlLm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFCisg
ICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShzY3JpcHRUYWcpCisgICAgICAgIHx8IChub2RlLmlz
SFRNTEVsZW1lbnQoKSAmJiB0b0hUTUxFbGVtZW50KG5vZGUpLmlzRm9ybUNvbnRyb2xFbGVtZW50
KCkpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShzdHlsZVRhZykKKyAgICAgICAgfHwgbm9k
ZS5oYXNUYWdOYW1lKHR0VGFnKQorICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUocHJlVGFnKQor
ICAgICAgICB8fCBub2RlLmhhc1RhZ05hbWUoY29kZVRhZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRQYXJzZVRlbGVwaG9uZU51bWJlcnNJbk5vZGUoY29uc3QgQ29udGFpbmVyTm9k
ZSYgbm9kZSkKK3sKKyAgICBjb25zdCBDb250YWluZXJOb2RlKiBjdXJyZW50Tm9kZSA9ICZub2Rl
OworICAgIGRvIHsKKyAgICAgICAgaWYgKGN1cnJlbnROb2RlLT5pc0VsZW1lbnROb2RlKCkgJiYg
ZGlzYWxsb3dUZWxlcGhvbmVOdW1iZXJQYXJzaW5nKCpjdXJyZW50Tm9kZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBhcmVu
dE5vZGUoKTsKKyAgICB9IHdoaWxlIChjdXJyZW50Tm9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0NoYXJhY3RlckJ1ZmZlcihFeHRlcm5hbENoYXJhY3RlclRva2VuQnVmZmVyJiBidWZmZXIpCiB7
CiBSZXByb2Nlc3NCdWZmZXI6CkBAIC0yNTE5LDcgKzI2MzIsMTUgQEAgdm9pZCBIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NDaGFyYWN0ZXJCdWZmZXJGb3JJbkJvZHkoRXh0ZXJuYWxDaGFyYWN0ZXJU
b2tlbkJ1ZmYKIHsKICAgICBtX3RyZWUucmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5nRWxl
bWVudHMoKTsKICAgICBTdHJpbmcgY2hhcmFjdGVycyA9IGJ1ZmZlci50YWtlUmVtYWluaW5nKCk7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSAmJiBtX3Ry
ZWUuaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYmIHNob3VsZFBhcnNlVGVsZXBo
b25lTnVtYmVyc0luTm9kZSgqbV90cmVlLmN1cnJlbnROb2RlKCkpICYmIERhdGFEZXRlY3RvcnND
b3JlTGlicmFyeSgpKQorICAgICAgICBsaW5raWZ5UGhvbmVOdW1iZXJzKGNoYXJhY3RlcnMpOwor
ICAgIGVsc2UKKyAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGNoYXJhY3RlcnMpOworI2Vs
c2UKICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7CisjZW5kaWYKKwogICAg
IGlmIChtX2ZyYW1lc2V0T2sgJiYgIWlzQWxsV2hpdGVzcGFjZU9yUmVwbGFjZW1lbnRDaGFyYWN0
ZXJzKGNoYXJhY3RlcnMpKQogICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggYjhlN2E3MzBk
ZmQwNGZhNzJmNDk4YmM3MGI0MjliNWNhZTE3MTlkOS4uNjdjNWVmZjMyMGY3NzIzMzgxMTkxNTlk
MWE5ODRiMWVjMWM4ODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmgKQEAgLTEyMyw2ICsxMjMsMTEgQEAgcHJpdmF0ZToKICAgICBIVE1MVHJlZUJ1
aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyJiwgSFRNTERvY3VtZW50JiwgUGFyc2VyQ29udGVudFBv
bGljeSwgYm9vbCByZXBvcnRFcnJvcnMsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJik7CiAgICAg
SFRNTFRyZWVCdWlsZGVyKEhUTUxEb2N1bWVudFBhcnNlciYsIERvY3VtZW50RnJhZ21lbnQmLCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgUGFyc2VyQ29udGVudFBvbGljeSwgY29uc3QgSFRNTFBh
cnNlck9wdGlvbnMmKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIGluc2VydFBob25l
TnVtYmVyTGluayhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxpbmtpZnlQaG9uZU51bWJlcnMo
Y29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogICAgIHZvaWQgcHJvY2Vzc1Rva2VuKEF0b21pY0hU
TUxUb2tlbiopOwogCiAgICAgdm9pZCBwcm9jZXNzRG9jdHlwZVRva2VuKEF0b21pY0hUTUxUb2tl
biopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCmluZGV4IGQwZTI0YmE3ZjM5MDI4MWNkZDY1ZTgwNjAzMDIzOGEyMmJlODI4M2Iu
LjQyYzUzMDkxOTMxYzk5OTQ4MzA5ZTY1MzU2NTBiNzEzMWEyOGQzNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTc1
MSw4ICs3NTEsMTMgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogTWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9s
cykKICAgICA6IE1lZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3QpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV9jb250cm9s
cyhjb250cm9scykKKyNlbmRpZgogeworI2lmICFFTkFCTEUoVklERU9fVFJBQ0spCisgICAgVU5V
U0VEX1BBUkFNKGNvbnRyb2xzKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRy
b2xzKiBjb250cm9scykKQEAgLTc5NCw2ICs3OTksOCBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3Nl
ZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bgogICAgIH0KIAogICAgIE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoZXZlbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwogI2VuZGlmCiB9CiAK
QEAgLTk1OCw2ICs5NjUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIG1fY29udHJvbHMtPnVwZGF0
ZUN1cnJlbnRUaW1lRGlzcGxheSgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgTWVk
aWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
CiB7CiAgICAgaWYgKCFhdHRhY2hlZCgpKQpAQCAtOTY1LDYgKzk3Myw3IEBAIGJvb2wgTWVkaWFD
b250cm9sVGltZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiB2b2lkIE1l
ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZG91YmxlIGN1cnJlbnRUaW1l
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmgKaW5kZXggYTUyZmZiYzVmYjE1MTFlODk0M2UwNDAyYTIyOTIzMTI3ODlmM2I5My4uMmNk
MDY3ZmM1ZDZmNDFmMjMxM2VhZDg1NDhjZGY5YjZhM2FmNjhkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC00OSw4ICs0OSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtlT3BhcXVlKCk7CiAgICAgdm9pZCBtYWtlVHJhbnNw
YXJlbnQoKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9s
UGFuZWxFbGVtZW50KERvY3VtZW50Jik7CkBAIC0xMjEsNyArMTIzLDkgQEAgY2xhc3MgTWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xE
aXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAorI2lmICFQ
TEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVu
dHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50
Jik7CkBAIC0xNTQsNyArMTU4LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9u
RWxlbWVudCBGSU5BTCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWwKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYUNvbnRyb2xzKik7CiAKKyNpZiAhUExBVEZPUk0oSU9T
KQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMq
KTsKQEAgLTE4Myw3ICsxODksMTAgQEAgY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQgRklOQUwgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3JlYXRl
KERvY3VtZW50Jik7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNl
bmRpZgorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZFUlJJREU7CiAK
IHByaXZhdGU6CkBAIC0yNDAsNyArMjQ5LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50KERvY3VtZW50Jik7CkBAIC0yNTUsNyArMjY2LDkgQEAgY2xhc3MgTWVkaWFDb250
cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW4KIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKKyNpZiAhUExB
VEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50
Jik7CkBAIC0yNzAsNyArMjgzLDkgQEAgY2xhc3MgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b25FbGVtZW50IEZJTkFMIDogcHVibGljIE1lZGlhQ29udHJvbEkKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKIAorI2lmICFQ
TEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGlzcGxheVR5cGUoKSBPVkVSUklERTsKIApAQCAtMjgwLDcgKzI5NSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqKSBPVkVSUklERTsKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShHVEspCisjaWYgUExBVEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKFdJTikgfHwgUExBVEZPUk0oR1RLKQogICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7
CiAjZW5kaWYKIH07CkBAIC0yOTEsNyArMzA2LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50IEZJTkFMIDogcHVibGljIE1lZGlhQ29udHJvbERpdkUK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCisjaWYgIVBMQVRGT1JNKElP
UykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRy
b2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKQEAgLTMwNCw3ICsz
MjEsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQg
RklOQUwgOiBwdWJsaWMgTWVkaWFDb250cm9sRGl2RQogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRl
KERvY3VtZW50JiwgTWVkaWFDb250cm9scyopOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2
aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CisjZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogCkBAIC0z
MzEsNyArMzUwLDkgQEAgY2xhc3MgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50IEZJTkFMIDog
cHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBN
ZWRpYUNvbnRyb2xzKik7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICB2
b2lkIHNldFBvc2l0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpOwpA
QCAtMzUxLDcgKzM3Miw5IEBAIGNsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50IEZJTkFMIDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVuCiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCk7CiAKQEAg
LTM4OSw3ICs0MTIsOSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZQogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVh
bCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKQEAgLTQwMyw3ICs0Mjgs
OSBAQCBjbGFzcyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQmKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZU1heEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuaAppbmRleCBhNzllMmZkNDBjMTQzZmU0OTNlNmY1MDlkZWQwY2ZkN2I5
OGI2MGE5Li4zYTAzYTdkMWNhYTFhNWMzNjM0ZDM1ZWU0MTE5OGE4Mzk2YjEzZTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCkBAIC05Myw3ICs5Myw5IEBA
IGNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogICAgIHZpcnR1
YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCBleGl0ZWRGdWxs
c2NyZWVuKCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGlt
ZXI8TWVkaWFDb250cm9scz4qKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRIaWRlRnVsbHNjcmVl
bkNvbnRyb2xzVGltZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGI2YjgyNzVjZmUzOThjZDUxYzQwMjc5OGZlYWIzOTll
MjY3M2M0YjkuLmFlYjVmYWNlMGFhNzU4ODE1ZDIxMDRhNjVlNDViOGJkMmM4NmZlNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApA
QCAtNDUsNiArNDUsMTIgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJUb3Vj
aEV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwpAQCAtMTg5LDYgKzE5NSwxMCBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRh
aW5lcjo6bGF5b3V0KCkKIFNsaWRlclRodW1iRWxlbWVudDo6U2xpZGVyVGh1bWJFbGVtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50KEhUTUxOYW1lczo6ZGl2VGFn
LCBkb2N1bWVudCkKICAgICAsIG1faW5EcmFnTW9kZShmYWxzZSkKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLCBtX2V4Y2x1c2l2ZVRvdWNoSWRlbnRpZmll
cihOb0lkZW50aWZpZXIpCisgICAgLCBtX2lzUmVnaXN0ZXJlZEFzVG91Y2hFdmVudExpc3RlbmVy
KGZhbHNlKQorI2VuZGlmCiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tz
KCk7CiB9CkBAIC0yMzQsNyArMjQ0LDkgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRyYWdG
cm9tKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKIHsKICAgICBSZWY8U2xpZGVyVGh1bWJFbGVt
ZW50PiBwcm90ZWN0KCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZyb21Qb2ludChwb2ludCk7Cisj
aWYgIVBMQVRGT1JNKElPUykKICAgICBzdGFydERyYWdnaW5nKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBv
aW50JiBhYnNvbHV0ZVBvaW50KQpAQCAtMzIxLDYgKzMzMyw3IEBAIHZvaWQgU2xpZGVyVGh1bWJF
bGVtZW50OjpzdG9wRHJhZ2dpbmcoKQogICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91
dCgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoIWV2ZW50LT5pc01v
dXNlRXZlbnQoKSkgewpAQCAtMzU4LDcgKzM3MSw5IEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIEhUTUxEaXZFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KKyNlbmRpZgogCisjaWYgIVBMQVRGT1JN
KElPUykKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZl
bnRzKCkKIHsKICAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGhvc3RJbnB1dCgp
OwpAQCAtMzc2LDYgKzM5MSw3IEBAIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpCiAKICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OndpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
IAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQogewpAQCAt
MzgzLDcgKzM5OSwxNjAgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxEZXRhY2hSZW5k
ZXJlcnMoKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQog
ICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRz
RWxlbWVudChudWxscHRyKTsKICAgICB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExB
VEZPUk0oSU9TKQorICAgIHVucmVnaXN0ZXJGb3JUb3VjaEV2ZW50cygpOworI2VuZGlmCit9CisK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCit1bnNpZ25lZCBTbGlk
ZXJUaHVtYkVsZW1lbnQ6OmV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyOworfQorCit2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0RXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKHVuc2lnbmVkIGlkZW50aWZpZXIp
Cit7CisgICAgQVNTRVJUKG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyID09IE5vSWRlbnRpZmll
cik7CisgICAgbV9leGNsdXNpdmVUb3VjaElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworfQorCit2
b2lkIFNsaWRlclRodW1iRWxlbWVudDo6Y2xlYXJFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKQor
eworICAgIG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyID0gTm9JZGVudGlmaWVyOworfQorCitz
dGF0aWMgVG91Y2gqIGZpbmRUb3VjaFdpdGhJZGVudGlmaWVyKFRvdWNoTGlzdCogbGlzdCwgdW5z
aWduZWQgaWRlbnRpZmllcikKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBsaXN0LT5sZW5ndGgo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
VG91Y2gqIHRvdWNoID0gbGlzdC0+aXRlbShpKTsKKyAgICAgICAgaWYgKHRvdWNoLT5pZGVudGlm
aWVyKCkgPT0gaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiB0b3VjaDsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVU
b3VjaFN0YXJ0KFRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7CisgICAgVG91Y2hMaXN0KiB0YXJn
ZXRUb3VjaGVzID0gdG91Y2hFdmVudC0+dGFyZ2V0VG91Y2hlcygpOworICAgIGlmICh0YXJnZXRU
b3VjaGVzLT5sZW5ndGgoKSAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZ25vcmUg
dGhlIHRvdWNoIGlmIGl0IGlzIG5vdCByZWFsbHkgaW5zaWRlIHRoZSB0aHVtYi4KKyAgICBUb3Vj
aCogdG91Y2ggPSB0YXJnZXRUb3VjaGVzLT5pdGVtKDApOworICAgIEludFJlY3QgYm91bmRpbmdC
b3ggPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOworICAgIGlmICghYm91
bmRpbmdCb3guY29udGFpbnModG91Y2gtPnBhZ2VYKCksIHRvdWNoLT5wYWdlWSgpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc2V0RXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKHRvdWNoLT5pZGVu
dGlmaWVyKCkpOworCisgICAgc3RhcnREcmFnZ2luZygpOworICAgIHRvdWNoRXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVUb3Vj
aE1vdmUoVG91Y2hFdmVudCogdG91Y2hFdmVudCkKK3sKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVy
ID0gZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKCk7CisgICAgaWYgKGlkZW50aWZpZXIgPT0gTm9J
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBUb3VjaCogdG91Y2ggPSBmaW5kVG91
Y2hXaXRoSWRlbnRpZmllcih0b3VjaEV2ZW50LT50YXJnZXRUb3VjaGVzKCksIGlkZW50aWZpZXIp
OworICAgIGlmICghdG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2luRHJhZ01v
ZGUpCisgICAgICAgIHNldFBvc2l0aW9uRnJvbVBvaW50KEludFBvaW50KHRvdWNoLT5wYWdlWCgp
LCB0b3VjaC0+cGFnZVkoKSkpOworICAgIHRvdWNoRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
Cit9CisKK3ZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVUb3VjaEVuZEFuZENhbmNlbChU
b3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBleGNs
dXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKyAgICBpZiAoaWRlbnRpZmllciA9PSBOb0lkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIG91ciBleGNsdXNpdmUgdG91Y2ggc3Rp
bGwgZXhpc3RzLCBpdCB3YXMgbm90IHRoZSB0b3VjaAorICAgIC8vIHRoYXQgZW5kZWQsIHNvIHdl
IHNob3VsZCBub3Qgc3RvcCBkcmFnZ2luZy4KKyAgICBUb3VjaCogZXhjbHVzaXZlVG91Y2ggPSBm
aW5kVG91Y2hXaXRoSWRlbnRpZmllcih0b3VjaEV2ZW50LT50YXJnZXRUb3VjaGVzKCksIGlkZW50
aWZpZXIpOworICAgIGlmIChleGNsdXNpdmVUb3VjaCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2xlYXJFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKworICAgIHN0b3BEcmFnZ2luZygpOwor
fQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGlkQXR0YWNoUmVuZGVyZXJzKCkKK3sKKyAg
ICBpZiAoc2hvdWxkQWNjZXB0VG91Y2hFdmVudHMoKSkKKyAgICAgICAgcmVnaXN0ZXJGb3JUb3Vj
aEV2ZW50cygpOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6aGFuZGxlVG91Y2hFdmVu
dChUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
ID0gaG9zdElucHV0KCk7CisgICAgQVNTRVJUKGlucHV0KTsKKyAgICBpZiAoaW5wdXQtPmlzUmVh
ZE9ubHkoKSB8fCBpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpIHsKKyAgICAgICAgY2xl
YXJFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKyAgICAgICAgc3RvcERyYWdnaW5nKCk7Cisg
ICAgICAgIHRvdWNoRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIEhUTUxEaXZF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKHRvdWNoRXZlbnQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSB0b3VjaEV2ZW50
LT50eXBlKCk7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFydEV2
ZW50KSB7CisgICAgICAgIGhhbmRsZVRvdWNoU3RhcnQodG91Y2hFdmVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRF
dmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQpIHsKKyAg
ICAgICAgaGFuZGxlVG91Y2hFbmRBbmRDYW5jZWwodG91Y2hFdmVudCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2htb3ZlRXZl
bnQpIHsKKyAgICAgICAgaGFuZGxlVG91Y2hNb3ZlKHRvdWNoRXZlbnQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIodG91
Y2hFdmVudCk7Cit9CisKK2Jvb2wgU2xpZGVyVGh1bWJFbGVtZW50OjpzaG91bGRBY2NlcHRUb3Vj
aEV2ZW50cygpCit7CisgICAgcmV0dXJuIGF0dGFjaGVkKCkgJiYgIWlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6cmVnaXN0ZXJGb3JUb3VjaEV2
ZW50cygpCit7CisgICAgaWYgKG1faXNSZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzaG91bGRBY2NlcHRUb3VjaEV2ZW50cygpKTsK
KworICAgIGRvY3VtZW50KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKHRoaXMpOworICAgIG1faXNS
ZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXIgPSB0cnVlOworfQorCit2b2lkIFNsaWRlclRo
dW1iRWxlbWVudDo6dW5yZWdpc3RlckZvclRvdWNoRXZlbnRzKCkKK3sKKyAgICBpZiAoIW1faXNS
ZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNs
ZWFyRXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKCk7CisgICAgc3RvcERyYWdnaW5nKCk7CisKKyAg
ICBkb2N1bWVudCgpLnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICBtX2lzUmVn
aXN0ZXJlZEFzVG91Y2hFdmVudExpc3RlbmVyID0gZmFsc2U7Cit9CisKK3ZvaWQgU2xpZGVyVGh1
bWJFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIGlmIChzaG91bGRB
Y2NlcHRUb3VjaEV2ZW50cygpKQorICAgICAgICByZWdpc3RlckZvclRvdWNoRXZlbnRzKCk7Cisg
ICAgZWxzZQorICAgICAgICB1bnJlZ2lzdGVyRm9yVG91Y2hFdmVudHMoKTsKIH0KKyNlbmRpZiAv
LyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCiAKIEhUTUxJbnB1dEVsZW1l
bnQqIFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKaW5kZXggM2RjMjFmNWE0
ZDI3YjY3NDc5N2E0MGE0N2U5MTc1ZGVlMTFlZmFhMS4uZGNlNmFhMjExNmFlYmMwYzA1N2QzNDcz
YTIzMTUyM2NlMWU4NGRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xp
ZGVyVGh1bWJFbGVtZW50LmgKQEAgLTQyLDYgKzQyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFBvaW50OwogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQorY2xhc3MgVG91Y2hFdmVudDsKKyNlbmRp
ZgorCiBjbGFzcyBTbGlkZXJUaHVtYkVsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERpdkVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNsaWRlclRodW1iRWxlbWVudD4g
Y3JlYXRlKERvY3VtZW50Jik7CkBAIC01MSw2ICs1NSwxMyBAQCBwdWJsaWM6CiAgICAgSFRNTElu
cHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQb3NpdGlvbkZyb21Q
b2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
UExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVS
UklERTsKKyAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopOworCisgICAgdm9p
ZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFNs
aWRlclRodW1iRWxlbWVudChEb2N1bWVudCYpOwogCkBAIC02MCwxNiArNzEsNDAgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3MoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBFbGVtZW50KiBmb2N1c0RlbGVnYXRlKCkgT1ZF
UlJJREU7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRv
TW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbERldGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdm9pZCBzdGFy
dERyYWdnaW5nKCk7CiAgICAgdm9pZCBzdG9wRHJhZ2dpbmcoKTsKIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykKKyAgICB1bnNpZ25lZCBleGNsdXNpdmVUb3VjaElk
ZW50aWZpZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcih1
bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcigpOworCisg
ICAgdm9pZCBoYW5kbGVUb3VjaFN0YXJ0KFRvdWNoRXZlbnQqKTsKKyAgICB2b2lkIGhhbmRsZVRv
dWNoTW92ZShUb3VjaEV2ZW50Kik7CisgICAgdm9pZCBoYW5kbGVUb3VjaEVuZEFuZENhbmNlbChU
b3VjaEV2ZW50Kik7CisKKyAgICBib29sIHNob3VsZEFjY2VwdFRvdWNoRXZlbnRzKCk7CisgICAg
dm9pZCByZWdpc3RlckZvclRvdWNoRXZlbnRzKCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyRm9yVG91
Y2hFdmVudHMoKTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSBpdCBpcyBzYWZlIHRvIHVzZSAwLCBidXQgdGhpcyBtYXkgbmVlZCB0byBjaGFuZ2UKKyAgICAv
LyBpZiB0b3VjaCBpZGVudGlmZXJzIGNoYW5nZSBpbiB0aGUgZnV0dXJlIGFuZCBjYW4gYmUgMC4K
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9JZGVudGlmaWVyID0gMDsKKyAgICB1bnNpZ25l
ZCBtX2V4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcjsKKyAgICBib29sIG1faXNSZWdpc3RlcmVkQXNU
b3VjaEV2ZW50TGlzdGVuZXI7CisjZW5kaWYKIH07CiAKIGlubGluZSBQYXNzUmVmUHRyPFNsaWRl
clRodW1iRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKaW5kZXggOGYzZmY3N2NjOTAwNTExZGVlNmFlYjQ4NGQ0OTQ3YjU1
ODJhMmI1Ni4uYTY3Zjg5MDljOTI1YjNjOGUzOTcxNDhlYTM5NzZhOWQ2MDIzMGZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCkBAIC0xNjUsMTEgKzE2NSwxMyBAQCB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChp
bnB1dCAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBl
dmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAg
ICAgaW5wdXQtPnNlbGVjdCgpOworI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIFJlbmRlclNl
YXJjaEZpZWxkKiByZW5kZXJlciA9IHRvUmVuZGVyU2VhcmNoRmllbGQoaW5wdXQtPnJlbmRlcmVy
KCkpOwogICAgICAgICBpZiAocmVuZGVyZXItPnBvcHVwSXNWaXNpYmxlKCkpCiAgICAgICAgICAg
ICByZW5kZXJlci0+aGlkZVBvcHVwKCk7CiAgICAgICAgIGVsc2UgaWYgKGlucHV0LT5tYXhSZXN1
bHRzKCkgPiAwKQogICAgICAgICAgICAgcmVuZGVyZXItPnNob3dQb3B1cCgpOworI2VuZGlmCiAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIApAQCAtMTc3LDEwICsx
NzksMTIgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgU2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KQogewogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApAQCAtMjUwLDYgKzI1NCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
SFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCisjaWYgIVBM
QVRGT1JNKElPUykKIGJvb2wgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93SG9zdCgpKTsKQEAgLTI1OCw2ICsyNjMs
NyBAQCBib29sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQorI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApAQCAtMzQ4LDYgKzM1NCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBI
VE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKKyNpZiAhUExB
VEZPUk0oSU9TKQogYm9vbCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KHNoYWRvd0hvc3QoKSk7CkBAIC0zNTYsNiArMzYzLDcg
QEAgYm9vbCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpOwogfQorI2VuZGlmCiAKIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OnNldFN0YXRlKFNwZWVjaElucHV0U3RhdGUgc3RhdGUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CmluZGV4IGEzMjViODM5YjAxYmVjMWFkMzQzNDM1ODRmOWYxMmU4ZTRiY2RkYzUuLjIwYWFhZDk4
ODIxM2U1ZTQ0YmEyZDFjMGM1OTk3MGI4ZTI1MWMxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC04MSw3ICs4
MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisjaWYgIVBMQVRGT1JNKElPUykKICAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsK
KyNlbmRpZgogCiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQo
RG9jdW1lbnQmKTsKQEAgLTk1LDcgKzk3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAg
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwpAQCAtMTIyLDcgKzEy
Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgU3BlZWNoSW5wdXRTdGF0
ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB2b2lkIHN0YXJ0U3BlZWNo
SW5wdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4IGZkNjRmMmY4NWUyZmY1M2E1NzIx
NTA3YjVhYTE2YzA5MjRiZTJmNTQuLmY0OGI0Y2QzYWI4MzZjMDk1NzMxZWJjMDExZTI4MzNkYWRk
ZTI2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAtMjE0LDMgKzIxNCw2IEBAIHNpbXBs
ZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5
bGVSZWNhbGNJbkFsbEZyYW1lCiAKIGJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlIGlu
aXRpYWw9ZmFsc2UKIG1lZGlhU291cmNlRW5hYmxlZCBpbml0aWFsPWZhbHNlCisKKyMgRklYTUU6
IFJlbmFtZSB0byBhbGxvd011bHRpRWxlbWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Npb24gb25jZSB3
ZSB1cHN0cmVhbSB0aGUgaU9TIGNoYW5nZXMgdG8gV2ViVmlldy5tbS4KK2FsbG93TXVsdGlFbGVt
ZW50SW1wbGljaXRTdWJtaXNzaW9uIGluaXRpYWw9ZmFsc2UK
</data>
<flag name="review"
          id="242886"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="242889"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219324</attachid>
            <date>2013-12-16 09:36:35 -0800</date>
            <delta_ts>2013-12-16 09:39:29 -0800</delta_ts>
            <desc>For EWS: Concatenated patches from Bug 125646 And Bug 125765</desc>
            <filename>CombinedPatch-Bug125646AndBug125765-ForEWS.patch</filename>
            <type>text/plain</type>
            <size>289152</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">RnJvbSAwYjJkYTdhZmM4Mzg3ZmU3MzZkYmQwNWY5OGQ0YWYyNDRlNzZjMWEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQmF0ZXMgPGRiYXRlc0B3ZWJraXQub3JnPgpEYXRl
OiBUaHUsIDEyIERlYyAyMDEzIDExOjU4OjA1IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gW2lPU10g
VXBzdHJlYW0gV2ViQ29yZS9kb20gY2hhbmdlcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNTY0NgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFdlYkNv
cmUuZXhwLmluOiBBZGRlZCBzeW1ib2wgX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRMYXlvdXRJ
bnRlcnZhbEVpIGFuZCByZW1vdmVkIHN5bWJvbApfX1pON1dlYkNvcmUyNGNMYXlvdXRTY2hlZHVs
ZVRocmVzaG9sZEUuCiogZG9tL0FjdGl2ZURPTU9iamVjdC5oOiBBZGQgc3VzcGVuc2lvbiByZWFz
b24gRG9jdW1lbnRXaWxsQmVQYXVzZWQuCiogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKFdl
YkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCk6IE9wdC1vdXQgb2YgRU5B
QkxFKFZJREVPKSBsb2dpYyB3aGVuCmJ1aWxkaW5nIGZvciBpT1MuCiogZG9tL0RldmljZU1vdGlv
bkNsaWVudC5oOiBNYWRlIGNsYXNzIG5vbi1jb3B5YWJsZS4KKFdlYkNvcmU6OkRldmljZU1vdGlv
bkNsaWVudDo6RGV2aWNlTW90aW9uQ2xpZW50KTogQWRkZWQ7CiogZG9tL0RldmljZU1vdGlvbkNv
bnRyb2xsZXIuY3BwOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlY29uY2lsZSBpT1MgYW5kIE9w
ZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCihXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpz
dXNwZW5kVXBkYXRlcyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCihXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpyZXN1bWVVcGRhdGVzKTogQWRkZWQ7IGd1YXJkZWQg
YnkgUExBVEZPUk0oSU9TKS4KKiBkb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5oOiBBZGRlZCBG
SVhNRSBjb21tZW50IHRvIHJlY29uY2lsZSBpT1MgYW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMu
CiogZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50Lmg6IE1hZGUgY2xhc3Mgbm9uLWNvcHlhYmxl
LgooV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQ6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50KTogQWRkZWQuCiogZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHA6IEFkZGVk
IEZJWE1FIGNvbW1lbnQgdG8gcmVjb25jaWxlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZmZXJlbmNl
cy4KKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6RGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyKToKKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3Vz
cGVuZFVwZGF0ZXMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgooV2ViQ29yZTo6
RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpyZXN1bWVVcGRhdGVzKTogQWRkZWQ7IGd1YXJk
ZWQgYnkgUExBVEZPUk0oSU9TKS4KKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmg6
IEFkZGVkIEZJWE1FIGNvbW1lbnQgdG8gcmVjb25jaWxlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZm
ZXJlbmNlcy4KKiBkb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmNwcDoKKFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4gQWRkZWQgRklY
TUUgY29tbWVudC4KKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50
YXRpb25EYXRhKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCihXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbkRhdGE6OmNvbXBhc3NIZWFkaW5nKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0o
SU9TKS4KKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y29tcGFzc0FjY3VyYWN5KTog
QWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKFdlYkNvcmU6OkRldmljZU9yaWVudGF0
aW9uRGF0YTo6Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExB
VEZPUk0oSU9TKS4KKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y2FuUHJvdmlkZUNv
bXBhc3NBY2N1cmFjeSk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCiogZG9tL0Rl
dmljZU9yaWVudGF0aW9uRGF0YS5oOgoqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbDog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCiogZG9tL0RvY3VtZW50LmNwcDogTW92ZWQgY29uc3Rh
bnQgY0xheW91dFNjaGVkdWxlVGhyZXNob2xkIHRvIFNldHRpbmdzLmNwcCBhbmQgcmVuYW1lZCBp
dApsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCB0b3dhcmRzIGFsbG93aW5nIGEgcG9ydCB0byBjb25m
aWd1cmUgdGhlIGxheW91dCBpbnRlcnZhbC4KKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6
IEFkZGVkIG9wdGlvbmFsIGFyZ3VtZW50IGlzU3ludGhlc2l6ZWQsIGRlZmF1bHRzIGZhbHNlLgoo
V2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlIHRv
IGRlc3Ryb3kgdGhlIGRldmljZSBtb3Rpb24KYW5kIGRldmljZSBvcmllbnRhdGlvbiBjb250cm9s
bGVycy4KKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRCZWNvbWVDdXJyZW50RG9jdW1lbnRJbkZyYW1l
KTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUgd2l0aCBGSVhNRSBjb21tZW50LgooV2ViQ29yZTo6
RG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbik6IEFkZGVkIGlPUy1zcGVjaWZpYyB0b3Vj
aCBldmVudCBjb2RlLgooV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJz
KTogRGl0dG8uCihXZWJDb3JlOjpEb2N1bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZl
RE9NT2JqZWN0cyk6IEFkZGVkOyBjb21waWxlcyB0byBhbiBlbXB0eSBmdW5jdGlvbiBvbgpub24t
aU9TIHBvcnQuCihXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOiBN
b2RpZmllZCB0byBjYWxsIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKS4K
KFdlYkNvcmU6OkRvY3VtZW50OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKTogRGl0dG8uCihXZWJD
b3JlOjpEb2N1bWVudDo6c3RvcEFjdGl2ZURPTU9iamVjdHMpOiBBZGRlZC4KKFdlYkNvcmU6OkRv
Y3VtZW50OjppbXBsaWNpdENsb3NlKTogTW9kaWZpZWQgdG8gcXVlcnkgU2V0dGluZ3M6OmxheW91
dEludGVydmFsKCkuCihXZWJDb3JlOjpEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KTogRGl0
dG8uCihXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KTogQWRkZWQgaU9TLXNwZWNp
ZmljIGNvZGUuCihXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMpOiBE
aXR0by4KKFdlYkNvcmU6OnNldFBhcnNlckZlYXR1cmUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFU
Rk9STShJT1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NGb3JtYXREZXRlY3Rpb24pOiBB
ZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NXZWJBcHBPcmllbnRhdGlvbnMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgoo
V2ViQ29yZTo6RG9jdW1lbnQ6OmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQpOiBBZGRl
ZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6OnNldElzVGVs
ZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJ
T1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6OmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQp
OiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6Omlu
aXRTZWN1cml0eUNvbnRleHQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKFdlYkNvcmU6OkRv
Y3VtZW50OjpzdXNwZW5kU2NoZWR1bGVkVGFza3MpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9S
TShJT1MpLgooV2ViQ29yZTo6RG9jdW1lbnQ6OmRldmljZU1vdGlvbkNvbnRyb2xsZXIpOiBBZGRl
ZDsgaU9TLXNwZWNpZmljLgooV2ViQ29yZTo6RG9jdW1lbnQ6OmRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcik6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCihXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0
RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUpOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgY29kZS4KKFdlYkNvcmU6OkRvY3VtZW50OjphZGp1c3RGbG9hdFJlY3RGb3JT
Y3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKTogQWRkZWQgaU9TLXNwZWNpZmljIGNv
ZGUuCiogZG9tL0RvY3VtZW50Lmg6IFJlZ2lzdGVyIGdlc3R1cmUgZXZlbnRzIGdlc3R1cmV7Y2hh
bmdlLCBlbmQsIHN0YXJ0fTsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKS4K
KFdlYkNvcmU6OkRvY3VtZW50Ojppc1N5bnRoZXNpemVkKTogQWRkZWQuCihXZWJDb3JlOjpEb2N1
bWVudDo6cGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cyk6IEFkZGVkLgoqIGRv
bS9Eb2N1bWVudC5pZGw6CiogZG9tL0RvY3VtZW50TWFya2VyLmg6IEFkZGVkIGlPUy1zcGVjaWZp
YyBjaGFuZ2VzLiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGRpZmZlcmVuY2VzIGJl
dHdlZW4KaU9TIGFuZCBPcGVuU291cmNlLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzExMzA2NDIyPi4K
KFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzOjpBbGxNYXJrZXJzKToKKFdlYkNv
cmU6OkRvY3VtZW50TWFya2VyOjpEb2N1bWVudE1hcmtlcik6IEFkZGVkOyBpT1Mtc3BlY2lmaWMu
CihXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6YWx0ZXJuYXRpdmVzKTogQWRkZWQ7IGlPUy1zcGVj
aWZpYy4KKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpzZXRBbHRlcm5hdGl2ZSk6IEFkZGVkOyBp
T1Mtc3BlY2lmaWMuCihXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6bWV0YWRhdGEpOiBBZGRlZDsg
aU9TLXNwZWNpZmljLgooV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OnNldE1ldGFkYXRhKTogQWRk
ZWQ7IGlPUy1zcGVjaWZpYy4KKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKFdl
YkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKToKKFdlYkNvcmU6OkRv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZl
c01hcmtlcik6CihXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlv
blJlc3VsdE1hcmtlcik6CihXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnNoaWZ0
TWFya2Vycyk6CiogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOgoqIGRvbS9FbGVtZW50
LmNwcDoKKFdlYkNvcmU6OkVsZW1lbnQ6OmZvY3VzKTogQWRkIGlPUy1zcGVjaWZpYyB3b3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjY5OTc0MT4uCiogZG9tL0VsZW1lbnQuaDogUmVnaXN0
ZXIgZ2VzdHVyZSBldmVudHMgZ2VzdHVyZXtjaGFuZ2UsIGVuZCwgc3RhcnR9OyBndWFyZGVkIGJ5
IEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpLgoqIGRvbS9FdmVudENvbnRleHQuY3BwOiBPcHQt
b3V0IG9mIEVOQUJMRShUT1VDSF9FVkVOVFMpLWd1YXJkZWQgY29kZSB3aGVuIGJ1aWxkaW5nIHRo
ZSBpT1MgcG9ydC4KKiBkb20vRXZlbnRDb250ZXh0Lmg6IERpdHRvLgoqIGRvbS9FdmVudERpc3Bh
dGNoZXIuY3BwOgooV2ViQ29yZTo6RXZlbnRSZWxhdGVkTm9kZVJlc29sdmVyOjpFdmVudFJlbGF0
ZWROb2RlUmVzb2x2ZXIpOiBEaXR0by4KKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hFdmVudCk6IERpdHRvLgooV2ViQ29yZTo6RXZlbnRQYXRoOjpFdmVudFBhdGgpOiBEaXR0by4K
KiBkb20vRXZlbnROYW1lcy5oOiBBZGRlZCBldmVudHMgd2Via2l0e2N1cnJlbnRwbGF5YmFja3Rh
cmdldGlzd2lyZWxlc3NjaGFuZ2VkLCBwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWR9
CmFuZCBnZXN0dXJle2NoYW5nZSwgZW5kLCBzdGFydH0uCiogZG9tL0V2ZW50TmFtZXMuaW46IEFk
ZGVkIGV2ZW50IG5hbWVzIEdlc3R1cmVFdmVudCBhbmQgV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudCBjb25kaXRpb25lZCBvbgp0aGUgbWFjcm8gZGVmaW5lcyBFTkFCTEVfSU9T
X0dFU1RVUkVfRVZFTlRTIGFuZCBFTkFCTEVfSU9TX0FJUlBMQVkuCiogZG9tL01vdXNlUmVsYXRl
ZEV2ZW50LmNwcDoKKFdlYkNvcmU6OmNvbnRlbnRzU2Nyb2xsT2Zmc2V0KTogQWRkZWQgaU9TLXNw
ZWNpZmljIGNvZGUuCihXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZl
bnQpOiBEaXR0by4KKiBkb20vTm9kZS5jcHA6CihXZWJDb3JlOjpOb2RlOjp3aWxsQmVEZWxldGVk
RnJvbSk6IERpdHRvLgooV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T2YpOiBGaXhlZCBzdHls
ZSBpc3N1ZSBpbiBmdW5jdGlvbiBwcm90b3R5cGU7IG1vdmVkICcqJyB0byB0aGUgbGVmdCBzaWRl
LgooV2ViQ29yZTo6Tm9kZTo6aXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YpOiBBZGRl
ZC4KKFdlYkNvcmU6OnRyeUFkZEV2ZW50TGlzdGVuZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29k
ZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgooV2ViQ29yZTo6dHJ5UmVtb3ZlRXZlbnRMaXN0
ZW5lcik6IERpdHRvLgooV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hFdmVudCk6IE9wdC1vdXQgb2Yg
RU5BQkxFKFRPVUNIX0VWRU5UUyktZ3VhcmRlZCBjb2RlIHdoZW4gYnVpbGRpbmcgdGhlIGlPUyBw
b3J0LgooV2ViQ29yZTo6Tm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlLgooV2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cyk6
IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlOyBhbHNvIGFkZGVkIEZJWE1FIGNvbW1lbnQuCihXZWJD
b3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlOyBhbHNvIGFkZGVkIEZJWE1FIGNvbW1lbnQuCihXZWJDb3JlOjpOb2RlOjp3aWxs
UmVzcG9uZFRvTW91c2VXaGVlbEV2ZW50cyk6IEFkZGVkLgoqIGRvbS9Ob2RlLmg6CiogZG9tL1Bv
c2l0aW9uLmg6CihXZWJDb3JlOjpvcGVyYXRvcjwpOiBBZGRlZC4KKFdlYkNvcmU6Om9wZXJhdG9y
Pik6IEFkZGVkLgooV2ViQ29yZTo6b3BlcmF0b3I+PSk6IEFkZGVkLgooV2ViQ29yZTo6b3BlcmF0
b3I8PSk6IEFkZGVkLgoqIGRvbS9SYW5nZS5jcHA6CihXZWJDb3JlOjpSYW5nZTo6Y3JlYXRlKTog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGU7IGFsc28gYWRkZWQgRklYTUUgY29tbWVudC4KKFdlYkNv
cmU6OmludGVydmFsc1N1ZmZpY2llbnRseU92ZXJsYXApOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFU
Rk9STShJT1MpLgooV2ViQ29yZTo6cHJpbnRSZWN0cyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRG
T1JNKElPUykuCihXZWJDb3JlOjphZGp1c3RMaW5lSGVpZ2h0T2ZTZWxlY3Rpb25SZWN0cyk6IEFk
ZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCihXZWJDb3JlOjpjb2FsZXNjZVNlbGVjdGlv
blJlY3RzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKFdlYkNvcmU6OlJhbmdl
Ojpjb2xsZWN0U2VsZWN0aW9uUmVjdHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1Mp
LgoqIGRvbS9SYW5nZS5oOgoqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKTogQWRk
ZWQgaU9TLXNwZWNpZmljIGNvZGUuCihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpk
aXNwYXRjaEVycm9yRXZlbnQpOiBEaXR0by4KKiBkb20vVHJlZVNjb3BlLmNwcDoKKFdlYkNvcmU6
Om5vZGVGcm9tUG9pbnQpOiBEaXR0by4KKiBkb20vVmlld3BvcnRBcmd1bWVudHMuY3BwOgooV2Vi
Q29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyk6IERpdHRvLgooV2ViQ29yZTo6c2V0Vmll
d3BvcnRGZWF0dXJlKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCihXZWJDb3JlOjpmaW5hbGl6
ZVZpZXdwb3J0QXJndW1lbnRzKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKiBkb20vVmlld3BvcnRB
cmd1bWVudHMuaDoKKiBkb20vbWFrZV9uYW1lcy5wbDogQWRkZWQgc3VwcG9ydCB0byBmaW5kIHRo
ZSBwYXRoIHRvIGdjYyB3aXRoIHJlc3BlY3QgdG8gdGhlIGVudmlyb25tZW50CnZhcmlhYmxlIFNE
S1JPT1QuCiogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKEhUTUxNZWRpYUVsZW1lbnQ6OnN1
c3BlbmQpOgoqIHBhZ2UvU2V0dGluZ3MuY3BwOgooV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdz
KTogSW5pdGlhbGl6ZSBzZXR0aW5nIG1fbGF5b3V0SW50ZXJ2YWwgdG8gbGF5b3V0U2NoZWR1bGVU
aHJlc2hvbGQuCihXZWJDb3JlOjpTZXR0aW5nczo6c2V0TGF5b3V0SW50ZXJ2YWwpOiBBZGRlZC4K
KiBwYWdlL1NldHRpbmdzLmg6CihXZWJDb3JlOjpTZXR0aW5nczo6bGF5b3V0SW50ZXJ2YWwpOiBB
ZGRlZC4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDM4NSArKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDEyICsKIFNvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01PYmplY3QuaCAgICAgICAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkNsaWVudC5oICAgICAgICAgICAgfCAgIDcgKy0KIFNvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcCAgICAgIHwgIDE2ICsKIFNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmggICAgICAgIHwgIDExICst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCAgICAgICB8ICAg
NyArLQogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAg
fCAgMjQgKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIu
aCAgIHwgICA5ICsKIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3Bw
ICAgICAgIHwgIDU1ICsrKwogU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0
YS5oICAgICAgICAgfCAgMjUgKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmlkbCAgICAgIHwgIDEzICsKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
ICAgICAgICAgICAgICAgICAgIHwgMTk0ICsrKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICB8ICA2OCArKystCiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaCAgICAgICAgICAgICAgICB8ICA2OCArKystCiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCAgICB8ICA3NiArKyst
CiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggICAgICB8ICAg
NSArCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgICB8
ICAxMyArCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcCAgICAgICAgICAg
ICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oICAgICAgICAg
ICAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3Bw
ICAgICAgICAgICAgIHwgIDE4ICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oICAg
ICAgICAgICAgICAgICAgICB8ICAxMCArCiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5p
biAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxh
dGVkRXZlbnQuY3BwICAgICAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5NCArKysrLQogU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDI0ICsrCiBTb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwICAgICAgICAgICAgICAgICAgICAgICB8IDMwMyArKysrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAg
ICAgICB8ICAxOSArCiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCAgICAgICAgICAg
ICAgICAgICB8ICAgNiArCiBTb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
ICAgICAgICAgICB8ICAzMiArKwogU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmggICAgICAgICAgICAgfCAgMTggKwogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwg
ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0
YWxpemUuY3BwICAgICAgICAgICAgIHwgMTEyICsrKysrKwogU291cmNlL1dlYkNvcmUvaHRtbC9B
dXRvY2FwaXRhbGl6ZS5oICAgICAgICAgICAgICAgfCAgMzkgKysrCiAuLi4vaHRtbC9CYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgICB8ICAgNyArCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oICAgICB8ICAgNSArCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwICAgICAgICAgICAgICB8ICAyNiArKwogU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggICAgICAgICAgICAgICAgfCAgMTIgKwog
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgICAgICAgICAgICAgfCAgMTIg
KwogU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oICAgICAgICAgICAgICAgfCAg
IDMgKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgICAgICAgICAg
fCAgIDUgKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAgICAgICAg
ICAgfCAgIDQgKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwICAgICAg
ICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmggICAg
ICAgICAgICAgIHwgICA1ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1l
cy5pbiAgICAgICAgICB8ICAxMiArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5jcHAgICAgICAgICAgICB8ICAgOCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcCAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCAgICAgICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmggICAgICAgICAgICB8ICAxMSArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5jcHAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuaCAgICAgICAgICAgICAgICAgfCAgIDggKy0KIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwICAgICAgICAgICAgICAgIHwgIDI4ICsrCiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmggICAgICAgICAgICAgICAgICB8ICAgNiArCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwICAgICB8ICAzNyArKwogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggICAgICAgfCAgMTMgKwog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwICAgICAgICAgICAgfCAgNDIg
KystCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oICAgICAgICAgICAgICB8
ICAxMyArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgICAgICAgICAg
ICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggICAgICAg
ICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwICAg
ICAgICAgICB8ICAyOCArKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmgg
ICAgICAgICAgICAgfCAgMTEgKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmlkbCAgICAgICAgICAgfCAgIDUgKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVt
ZW50LmNwcCAgICAgICAgICAgfCAgIDkgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgICAgICAgICAgIHwgMzg2ICsrKysrKysrKysrKysrKysrKysrLQogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggICAgICAgICAgICAgfCAgNDYgKystCiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsICAgICAgICAgICB8ICAgNyAr
CiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgICAgICAgICAgICB8ICAg
NiArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCAgICAgICAgICB8
ICAxOCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmggICAgICAgICAg
ICB8ICAgMyArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
ICAgICB8ICA0NSArKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwICAgICAgICAgIHwgIDM4ICsrCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmggICAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5
RWxlbWVudC5jcHAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwICAgICAgICB8ICAgNyArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaCAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaWRsICAgICAgICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCB8ICAyOCArKwogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oICAgfCAgIDQgKwogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCAgICAgICAgICAgfCAgNDMgKystCiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCAgICAgICAgICAgICB8ICAgNSArCiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsICAgICAgICAgICB8ICAgNCArCiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwICAgICAgICAgICAgICB8ICA2NyAr
KystCiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgICAgICAgICAgICAgICAgICB8
ICAxOSArCiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oICAgICAgICAgICAgICAgICAg
ICB8ICAxMiArCiBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCAgICAgICAg
ICAgICB8ICAxNSArLQogU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgICAg
ICAgICAgICAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCAg
ICAgICAgICAgICAgIHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlw
ZS5jcHAgICAgICAgICAgICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAgICAgICAgICB8ICAgNCArCiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oICAgICAgICAgICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9odG1sL1dlYkF1
dG9jYXBpdGFsaXplLmggICAgICAgICAgICB8ICAzNyArKwogLi4uL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgICAgICAgfCAgMjQgKysKIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmggIHwgICA0ICsKIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaCAgIHwgICA4ICsKIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgICAgIHwgMTIxICsrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oICAgICAgIHwgICA1ICsK
IC4uLi9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAgIHwgICA5
ICsKIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggIHwg
IDI5ICstCiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmggICAgICAg
ICB8ICAgMiArCiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwICB8IDE2OSArKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oICAgIHwgIDM1ICsrCiAuLi4vaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcCAgICAgICB8ICAgOCArCiAuLi4vV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaCB8ICAgNiArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcCAgICAgICAgICAgICAgICAgICB8ICAxMyArCiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmggICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmluICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiAxMTQgZmlsZXMgY2hhbmdl
ZCwgMzI2OSBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2h0bWwvV2ViQXV0b2NhcGl0YWxpemUuaAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBlMDk3YWY5Li5hZjhhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzg4IEBACisyMDEzLTEy
LTE1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBV
cHN0cmVhbSBXZWJDb3JlL2h0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNTc2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0F1dG9j
YXBpdGFsaXplLmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNob29zZXJPbmx5RGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQpOiBPcHQgb3V0IG9mIGNv
ZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6aXNLZXlib2FyZEZvY3VzYWJsZSk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICog
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6RmlsZUlucHV0VHlw
ZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0
VHlwZTo6fkZpbGVJbnB1dFR5cGUpOiBPcHQgb3V0IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3Ig
aU9TLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmZpbGVzQ2hvc2VuKTogQWRkZWQ7
IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmRpc3BsYXlT
dHJpbmcpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0
VHlwZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyk6IEd1YXJkZWQgY29kZSB3aXRoIEVOQUJMRShEUkFH
X1NVUFBPUlQpLgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0
bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6
OmZvcm1FbGVtZW50c0NoYXJhY3RlckNvdW50KTogQWRkZWQuCisgICAgICAgICogaHRtbC9Gb3Jt
Q29udHJvbGxlci5oOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUgYW5kIEZJWE1FIGNvbW1lbnQuCisgICAg
ICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KTogT3B0IG91dCBvZiBjb2RlIHdoZW4gYnVpbGRp
bmcgZm9yIGlPUy4KKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVQYXRoKTogQ2hhbmdlZCBhcmd1bWVu
dCBkYXRhdHlwZSBmcm9tIFJlbmRlckVsZW1lbnQqIHRvIFJlbmRlck9iamVjdCouCisgICAgICAg
IEFsc28sIGFkZGVkIEZJWE1FIGNvbW1lbnQgdG8gZml4IHRoaXMgdXAgb25jZSB3ZSB1cHN0cmVh
bSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBcmVhRWxlbWVudDo6Y29tcHV0ZVJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxB
cmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOiBBZGRl
ZCBhdHRyaWJ1dGVzIG9uZ2VzdHVyZXtzdGFydCwgY2hhbmdlLCBlbmR9LCBhdXRvY29ycmVjdCwg
YXV0b2NhcGl0YWxpemUsCisgICAgICAgIGRhdGEteW91dHViZS1pZCwgb253ZWJraXR7Y3VycmVu
dHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQsIHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZH0sIHdlYmtpdC1wbGF5c2lubGluZSwKKyAgICAgICAgeC13ZWJraXQtYWlycGxh
eSwgYW5kIHgtd2Via2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxl
bWVudDo6c2Nyb2xsTGVmdCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEJvZHlFbGVtZW50OjpzY3JvbGxUb3ApOiBEaXR0by4KKyAgICAgICAgKiBodG1s
L0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IERpdHRvLgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQ6OkhUTUxDYW52YXNFbGVtZW50KTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUgYW5kIEZJ
WE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBodG1sL0hU
TUxDYW52YXNFbGVtZW50Lmg6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlIGFuZCBGSVhNRSBjb21t
ZW50LgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudDo6SFRNTERvY3VtZW50KTogQWRkZWQgYXJndW1lbnQgaXNTeW50aGVzaXpl
ZCAoZGVmYXVsdCB0byBmYWxzZSksIHdoaWNoIGlzCisgICAgICAgIHBhc3NlZCB0aHJvdWdoIHRv
IERvY3VtZW50OjpEb2N1bWVudCgpLCB0byBjcmVhdGUgYSBzeW50aGVzaXplZCBkb2N1bWVudC4K
KyAgICAgICAgKiBodG1sL0hUTUxEb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50OjpjcmVhdGVTeW50aGVzaXplZERvY3VtZW50KTogQWRkZWQuCisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUu
CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUV2ZW50TmFtZUZvckF0dHJpYnV0ZUxvY2FsTmFt
ZU1hcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OndpbGxSZXNwb25k
VG9Nb3VzZU1vdmVFdmVudHMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKTogQWRkZWQ7IGlP
Uy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cyk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICogaHRtbC9I
VE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRvY29ycmVjdCk6
IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6IEFkZGVkOyBndWFyZGVkIGJ5IFBM
QVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojph
dXRvY2FwaXRhbGl6ZVR5cGUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxpemUpOiBB
ZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2NhcGl0YWxpemUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQ
TEFURk9STShJT1MpLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudDo6c3VibWl0SW1wbGljaXRseSk6IE1vZGlmaWVkIHRvIGNvZGUgdG8gYWxs
b3cgaW1wbGljaXQgc3VibWlzc2lvbiBvZiBtdWx0aS1pbnB1dAorICAgICAgICBmb3JtcyBvbmx5
IGlmIFNldHRpbmdzOjphbGxvd011bHRpRWxlbWVudEltcGxpY2l0U3VibWlzc2lvbigpIHJldHVy
bnMgdHJ1ZS4gU3VjaCBiZWhhdmlvciBpcyBleHBlY3RlZCBieSBvbGRlcgorICAgICAgICBpT1Mg
YXBwcy4gQWxzbywgY2hhbmdlZCBkYXRhdHlwZSBvZiB2YXJpYWJsZSBzdWJtaXNzaW9uVHJpZ2dl
ckNvdW50IGZyb20gaW50IHRvIHVuc2lnbmVkIGJlY2F1c2UgaXQgcmVwcmVzZW50cworICAgICAg
ICBhIG5vbi1uZWdhdGl2ZSB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVu
dDo6YXV0b2NvcnJlY3QpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpzZXRBdXRvY29ycmVjdCk6IEFkZGVkOyBndWFy
ZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6
OmF1dG9jYXBpdGFsaXplVHlwZSk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmF1dG9jYXBpdGFsaXplKTogQWRkZWQ7
IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxl
bWVudDo6c2V0QXV0b2NhcGl0YWxpemUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1Mp
LgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaWRsOiBBZGRlZCBpT1Mtc3BlY2lmaWMgYXR0cmlidXRlczogYXV0b2NvcnJl
Y3QgYW5kIGF1dG9jYXBpdGFsaXplLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlLiBBbHNvIGFkZGVkIEZJWE1FIGNvbW1lbnQgdG8KKyAgICAgICAgcmVtb3ZlIHRo
aXMgY29kZSBhcyBpdCBzZWVtcyB0byBkdXBsaWNhdGUgZWFybGllciBsb2dpYyBpbiB0aGlzIGZ1
bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6d2lsbFJlc3BvbmRU
b01vdXNlQ2xpY2tFdmVudHMpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BsYXlTdHJpbmcpOiBBZGRlZDsgZ3VhcmRlZCBi
eSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZGF0
ZVR5cGUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5pZGw6
IEFkZGVkIGlPUy1zcGVjaWZpYyBhdHRyaWJ1dGVzOiBhdXRvY29ycmVjdCBhbmQgYXV0b2NhcGl0
YWxpemUuCisgICAgICAgICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxMYWJlbEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKTog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1l
bnQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZSBhbmQgRklYTUUgY29tbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KTogQWRkZWQgaU9T
LXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJz
ZU1lZGlhUGxheWVyQXR0cmlidXRlKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogQWRkZWQgaU9TLXNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZElu
dG8pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2Fk
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXROZXR3b3Jr
U3RhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9w
bGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJu
YWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVt
bmUpOiBPcHQgb3V0IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQpOiBBZGRlZCBpT1Mt
c3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZVZvbHVtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlUGxheVN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp1c2VyQ2FuY2VsbGVkTG9hZCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlIGFuZCBGSVhNRSBj
b21tZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKTogQWRk
ZWQgaU9TLXNwZWNpZmljIGNvbW1lbnQuIFNlZSA8cmRhcjovL3Byb2JsZW0vOTc1MTMwMz4uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkZWxpdmVyTm90aWZpY2F0aW9uKTog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLiBBbHNv
LCBjaGFuZ2VkIHNyYygpIHRvIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKCkKKyAgICAgICAgaW4g
dGhlIG5vbi1pT1MgY29kZSBhcyB0aGVpciBkb2Vzbid0IGV4aXN0IGEgbWV0aG9kIGNhbGxlZCBz
cmMgaW4gdGhpcyBjbGFzcyBvciBpdHMgc3VwZXJjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKTogQWRkZWQ7
IGd1YXJkZWQgYnkgRU5BQkxFKElPU19BSVJQTEFZKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MpOiBBZGRl
ZDsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0FJUlBMQVkpLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNz
Q2hhbmdlZCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShJT1NfQUlSUExBWSkuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5Q2hhbmdlZCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShJT1NfQUlSUExBWSku
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKTog
QWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKElPU19BSVJQTEFZKS4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOiBBZGRlZDsgZ3VhcmRlZCBi
eSBFTkFCTEUoSU9TX0FJUlBMQVkpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KTogQWRkZWQ7
IGd1YXJkZWQgYnkgRU5BQkxFKElPU19BSVJQTEFZKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVy
KTogQWRkZWQgRU5BQkxFKElPU19BSVJQTEFZKS1ndWFyZGVkIGNvZGUuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUmVxdWVzdHNNZWRpYUxvYWRpbmcpOiBBZGRlZDsg
Z3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2hvdWxkVXNlVmlkZW9QbHVnaW5Qcm94eSk6IFVzZSBkb3Qgb3BlcmF0b3IgaW5zdGVh
ZCBvZiBkZXJlZmVyZW5jZSBvcGVyYXRvciAoLT4pCisgICAgICAgIHdoZW4gYWNjZXNzaW5nIERv
Y3VtZW50OjpzZXR0aW5ncygpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6IEFkZGVkIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKS1ndWFyZGVkIGNvZGUuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyR2VzdHVyZVJlcXVpcmVk
VG9TaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOiBBZGRlZDsgZ3VhcmRlZCBieSBFTkFCTEUoSU9T
X0FJUlBMQVkpLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6IEFkZGVkIEVO
QUJMRV9JT1NfQUlSUExBWS1ndWFyZGVkIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9uczp3ZWJraXRD
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzLAorICAgICAgICBvbndlYmtpdHtjdXJyZW50
cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCwgcGxheWJhY2t0YXJnZXRhdmFpbGFiaWxp
dHljaGFuZ2VkfSwgYW5kIHdlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpLgorICAgICAg
ICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRh
RWxlbWVudDo6cHJvY2Vzcyk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAqIGh0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkTm90UGVy
Zm9ybVVSTEFkanVzdG1lbnQpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4pOiBNb2RpZmllZCB0byBj
YWxsIHNob3VsZE5vdFBlcmZvcm1VUkxBZGp1c3RtZW50KCkgd2hlbgorICAgICAgICBidWlsZGlu
ZyBmb3IgaU9TLgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMg
Y29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZVNo
YWRvd0lGcmFtZVN1YnRyZWUpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGh0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnVzZXNNZW51TGlz
dCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25z
Q2hhbmdlZE9uUmVuZGVyZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RF
bGVtZW50OjptZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIpOiBPcHQgb3V0IG9mIGNvZGUgd2hl
biBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp3
aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbDogQWRkZWQgaU9TLXNwZWNpZmljIGF0dHJpYnV0ZXM6IGF1dG9jb3Jy
ZWN0IGFuZCBhdXRvY2FwaXRhbGl6ZS4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpzZWxlY3QpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZSBhbmQgRklYTUUgY29tbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rp
b25SYW5nZSk6IE9wdCBvdXQgb2YgY29kZSB3aGVuIGJ1aWxkaW5nIGZvciBpT1MuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aGlkZVBsYWNlaG9sZGVyKTog
QWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzaG93UGxhY2Vob2xkZXJJZk5lY2Vzc2FyeSk6IEFkZGVk
OyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IEZpeCB1
cCBjYWxsIHRvIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKCkuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNG
dWxsc2NyZWVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojp3
ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVO
QUJMRShJT1NfQUlSUExBWSkuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Ojpz
ZXRXZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk6IEFkZGVkOyBndWFyZGVkIGJ5
IEVOQUJMRShJT1NfQUlSUExBWSkuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbDogQWRkZWQgRU5BQkxFX0lPU19B
SVJQTEFZLWd1YXJkZWQgYXR0cmlidXRlOiB3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZC4KKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOiBBZGRlZCBpT1Mtc3Bl
Y2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnNjYWxlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpyZXNpemVJbWFnZVRvRml0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjppbWFnZUNsaWNrZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OmltYWdlRml0c0luV2luZG93
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50Ojp3aW5kb3dTaXplQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6ZGF0ZVR5cGUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJ
T1MpLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKTog
QWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmRp
c3BsYXlTdHJpbmcpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAq
IGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5Eb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1
Y3R1cmUpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVUb3Vj
aEV2ZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6ZGlzYWJs
ZWRBdHRyaWJ1dGVDaGFuZ2VkKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKiBodG1s
L1JhbmdlSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5wdXRUeXBlOjphZGRTZWFyY2hSZXN1bHQpOiBPcHQg
b3V0IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAqIGh0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6
aXNLZXlib2FyZEZvY3VzYWJsZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAq
IGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9XZWJBdXRvY2FwaXRh
bGl6ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
cmVhdGVJbWFnZURhdGEpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Z2V0SW1hZ2VEYXRhKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVk
KTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MUGFyc2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2No
ZWR1bGVyOjpjaGVja0ZvcllpZWxkQmVmb3JlVG9rZW4pOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29k
ZS4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmspOiBBZGRlZDsg
Z3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpsaW5raWZ5UGhvbmVOdW1iZXJzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9T
KS4KKyAgICAgICAgKFdlYkNvcmU6OmRpc2FsbG93VGVsZXBob25lTnVtYmVyUGFyc2luZyk6IEFk
ZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRQ
YXJzZVRlbGVwaG9uZU51bWJlcnNJbk5vZGUpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJ
T1MpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzQ2hhcmFjdGVy
QnVmZmVyRm9ySW5Cb2R5KTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNr
TGlzdEVsZW1lbnQpOiBHdWFyZGVkIG1lbWJlciBpbml0aWFsaXphdGlvbiBvZiBtX2NvbnRyb2xz
IHdpdGggRU5BQkxFKFZJREVPX1RSQUNLKS4gQWxzbyBhZGRlZCBVTlVTRURfUEFSQU0oZXZlbnQp
IHdoZW4gYnVpbGRpbmcgd2l0aAorICAgICAgICBWSURFT19UUkFDSyBkaXNhYmxlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6IEFkZGVkIFVOVVNFRF9QQVJBTShldmVudCkgd2hlbgorICAg
ICAgICBidWlsZGluZyB3aXRoIFZJREVPX1RSQUNLIGRpc2FibGVkLgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9scy5oOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OlNsaWRlclRodW1iRWxl
bWVudCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6U2xpZGVy
VGh1bWJFbGVtZW50OjpkcmFnRnJvbSk6IE9wdCBvdXQgb2YgY29kZSB3aGVuIGJ1aWxkaW5nIGZv
ciBpT1MuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxEZXRhY2hS
ZW5kZXJlcnMpOiAgQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpT
bGlkZXJUaHVtYkVsZW1lbnQ6OmV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcik6IEFkZGVkOyBndWFy
ZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykuCisgICAgICAgIChX
ZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldEV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcik6
IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUyku
CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmNsZWFyRXhjbHVzaXZlVG91
Y2hJZGVudGlmaWVyKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
UExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRUb3VjaFdpdGhJZGVudGlmaWVy
KTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9T
KS4KKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6aGFuZGxlVG91Y2hTdGFy
dCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElP
UykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNoTW92
ZSk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElP
UykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmhhbmRsZVRvdWNoRW5k
QW5kQ2FuY2VsKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExB
VEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6ZGlkQXR0
YWNoUmVuZGVyZXJzKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
UExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6aGFu
ZGxlVG91Y2hFdmVudCk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYm
IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVsZW1lbnQ6OnNo
b3VsZEFjY2VwdFRvdWNoRXZlbnRzKTogQWRkZWQ7IGd1YXJkZWQgYnkgRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxl
bWVudDo6cmVnaXN0ZXJGb3JUb3VjaEV2ZW50cyk6IEFkZGVkOyBndWFyZGVkIGJ5IEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJU
aHVtYkVsZW1lbnQ6OnVucmVnaXN0ZXJGb3JUb3VjaEV2ZW50cyk6IEFkZGVkOyBndWFyZGVkIGJ5
IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3Jl
OjpTbGlkZXJUaHVtYkVsZW1lbnQ6OmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCk6IEFkZGVkOyBn
dWFyZGVkIGJ5IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBPcHQgb3V0
IG9mIGNvZGUgd2hlbiBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAqIGh0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46IEFk
ZGVkIHNldHRpbmcgYWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdFN1Ym1pc3Npb24gdG8gZW5hYmxl
L2Rpc2FibGUgbXVsdGktaW5wdXQgaW1wbGljaXQgZm9ybQorICAgICAgICBzdWJtaXNzaW9uIChk
aXNhYmxlZCBieSBkZWZhdWx0KS4gQWxzbyBhZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlbmFtZSB0
aGlzIHNldHRpbmcgdG8gYWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1TdWJtaXNzaW9uCisg
ICAgICAgIG9uY2Ugd2UgdXBzdHJlYW0gdGhlIGlPUyBjaGFuZ2VzIHRvIFdlYlZpZXcubW0uCisK
KzIwMTMtMTItMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUvZG9tIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTY0NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEFkZGVkIHN5bWJv
bCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldExheW91dEludGVydmFsRWkgYW5kIHJlbW92ZWQg
c3ltYm9sCisgICAgICAgIF9fWk43V2ViQ29yZTI0Y0xheW91dFNjaGVkdWxlVGhyZXNob2xkRS4K
KyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6IEFkZCBzdXNwZW5zaW9uIHJlYXNvbiBE
b2N1bWVudFdpbGxCZVBhdXNlZC4KKyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KTog
T3B0LW91dCBvZiBFTkFCTEUoVklERU8pIGxvZ2ljIHdoZW4KKyAgICAgICAgYnVpbGRpbmcgZm9y
IGlPUy4KKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uQ2xpZW50Lmg6IE1hZGUgY2xhc3Mgbm9u
LWNvcHlhYmxlLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xpZW50OjpEZXZpY2VN
b3Rpb25DbGllbnQpOiBBZGRlZDsKKyAgICAgICAgKiBkb20vRGV2aWNlTW90aW9uQ29udHJvbGxl
ci5jcHA6IEFkZGVkIEZJWE1FIGNvbW1lbnQgdG8gcmVjb25jaWxlIGlPUyBhbmQgT3BlblNvdXJj
ZSBkaWZmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXI6
OnN1c3BlbmRVcGRhdGVzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAg
ICAgKFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXI6OnJlc3VtZVVwZGF0ZXMpOiBBZGRl
ZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25D
b250cm9sbGVyLmg6IEFkZGVkIEZJWE1FIGNvbW1lbnQgdG8gcmVjb25jaWxlIGlPUyBhbmQgT3Bl
blNvdXJjZSBkaWZmZXJlbmNlcy4KKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25DbGll
bnQuaDogTWFkZSBjbGFzcyBub24tY29weWFibGUuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnQpOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcDogQWRkZWQgRklYTUUgY29t
bWVudCB0byByZWNvbmNpbGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzLgorICAgICAg
ICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOjpzdXNwZW5kVXBkYXRlcyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisg
ICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnJlc3VtZVVwZGF0
ZXMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAqIGRvbS9EZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaDogQWRkZWQgRklYTUUgY29tbWVudCB0byByZWNvbmNp
bGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzLgorICAgICAgICAqIGRvbS9EZXZpY2VP
cmllbnRhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25E
YXRhOjpjcmVhdGUpOiBBZGRlZDsgaU9TLXNwZWNpZmljLiBBZGRlZCBGSVhNRSBjb21tZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlv
bkRhdGEpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRldmlj
ZU9yaWVudGF0aW9uRGF0YTo6Y29tcGFzc0hlYWRpbmcpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFU
Rk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjb21w
YXNzQWNjdXJhY3kpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAo
V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcp
OiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6RGV2
aWNlT3JpZW50YXRpb25EYXRhOjpjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KTogQWRkZWQ7IGd1
YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBkb20vRGV2aWNlT3JpZW50YXRpb25E
YXRhLmg6CisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOiBNb3ZlZCBjb25z
dGFudCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgdG8gU2V0dGluZ3MuY3BwIGFuZCByZW5hbWVk
IGl0CisgICAgICAgIGxheW91dFNjaGVkdWxlVGhyZXNob2xkIHRvd2FyZHMgYWxsb3dpbmcgYSBw
b3J0IHRvIGNvbmZpZ3VyZSB0aGUgbGF5b3V0IGludGVydmFsLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OkRvY3VtZW50KTogQWRkZWQgb3B0aW9uYWwgYXJndW1lbnQgaXNTeW50aGVzaXpl
ZCwgZGVmYXVsdHMgZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50
KTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGUgdG8gZGVzdHJveSB0aGUgZGV2aWNlIG1vdGlvbgor
ICAgICAgICBhbmQgZGV2aWNlIG9yaWVudGF0aW9uIGNvbnRyb2xsZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmRpZEJlY29tZUN1cnJlbnREb2N1bWVudEluRnJhbWUpOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgY29kZSB3aXRoIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKTogQWRkZWQgaU9TLXNwZWNpZmljIHRvdWNo
IGV2ZW50IGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwbGF0Zm9ybVN1
c3BlbmRPclN0b3BBY3RpdmVET01PYmplY3RzKTogQWRkZWQ7IGNvbXBpbGVzIHRvIGFuIGVtcHR5
IGZ1bmN0aW9uIG9uCisgICAgICAgIG5vbi1pT1MgcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6IE1vZGlmaWVkIHRvIGNhbGwgcGxhdGZv
cm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOiBNb2RpZmllZCB0byBxdWVyeSBTZXR0aW5nczo6
bGF5b3V0SW50ZXJ2YWwoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptaW5pbXVtTGF5
b3V0RGVsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzVmll
d3BvcnQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
c2V0UGFyc2VyRmVhdHVyZSk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0Zvcm1hdERldGVjdGlvbik6IEFkZGVkOyBn
dWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJv
Y2Vzc1dlYkFwcE9yaWVudGF0aW9ucyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUyku
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5h
YmxlZCk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0SXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCk6IEFkZGVkOyBn
dWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNU
ZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JN
KElPUykuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6
IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1
c3BlbmRTY2hlZHVsZWRUYXNrcyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlTW90aW9uQ29udHJvbGxlcik6IEFkZGVk
OyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjphZGp1c3RGbG9hdFF1YWRzRm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJh
bWVTY2FsZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmFkanVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZyYW1lU2Nh
bGUpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDog
UmVnaXN0ZXIgZ2VzdHVyZSBldmVudHMgZ2VzdHVyZXtjaGFuZ2UsIGVuZCwgc3RhcnR9OyBndWFy
ZGVkIGJ5IEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmlzU3ludGhlc2l6ZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVET01PYmplY3RzKTogQWRkZWQuCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXIuaDogQWRk
ZWQgaU9TLXNwZWNpZmljIGNoYW5nZXMuIFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUg
ZGlmZmVyZW5jZXMgYmV0d2VlbgorICAgICAgICBpT1MgYW5kIE9wZW5Tb3VyY2UuIFNlZSA8cmRh
cjovL3Byb2JsZW0vMTEzMDY0MjI+LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6
OkFsbE1hcmtlcnM6OkFsbE1hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6OkRvY3VtZW50TWFya2VyKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TWFya2VyOjphbHRlcm5hdGl2ZXMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OnNldEFsdGVybmF0aXZlKTogQWRkZWQ7
IGlPUy1zcGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjptZXRhZGF0
YSk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtl
cjo6c2V0TWV0YWRhdGEpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRNYXJrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGljdGF0aW9u
UmVzdWx0TWFya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxl
cjo6c2hpZnRNYXJrZXJzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Zm9jdXMpOiBBZGQgaU9TLXNwZWNpZmljIHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxl
bS82Njk5NzQxPi4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBSZWdpc3RlciBnZXN0dXJlIGV2
ZW50cyBnZXN0dXJle2NoYW5nZSwgZW5kLCBzdGFydH07IGd1YXJkZWQgYnkgRU5BQkxFKElPU19H
RVNUVVJFX0VWRU5UUykuCisgICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6IE9wdC1vdXQg
b2YgRU5BQkxFKFRPVUNIX0VWRU5UUyktZ3VhcmRlZCBjb2RlIHdoZW4gYnVpbGRpbmcgdGhlIGlP
UyBwb3J0LgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDogRGl0dG8uCisgICAgICAgICog
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlbGF0ZWRO
b2RlUmVzb2x2ZXI6OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpFdmVudFBhdGg6OkV2ZW50UGF0aCk6IERpdHRvLgorICAgICAgICAqIGRvbS9F
dmVudE5hbWVzLmg6IEFkZGVkIGV2ZW50cyB3ZWJraXR7Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWQsIHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZH0KKyAgICAg
ICAgYW5kIGdlc3R1cmV7Y2hhbmdlLCBlbmQsIHN0YXJ0fS4KKyAgICAgICAgKiBkb20vRXZlbnRO
YW1lcy5pbjogQWRkZWQgZXZlbnQgbmFtZXMgR2VzdHVyZUV2ZW50IGFuZCBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50IGNvbmRpdGlvbmVkIG9uCisgICAgICAgIHRoZSBtYWNy
byBkZWZpbmVzIEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMgYW5kIEVOQUJMRV9JT1NfQUlSUExB
WS4KKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGVudHNTY3JvbGxPZmZzZXQpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6IERpdHRv
LgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxC
ZURlbGV0ZWRGcm9tKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0Rlc2NlbmRh
bnRPZik6IEZpeGVkIHN0eWxlIGlzc3VlIGluIGZ1bmN0aW9uIHByb3RvdHlwZTsgbW92ZWQgJyon
IHRvIHRoZSBsZWZ0IHNpZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0Rlc2NlbmRhbnRP
clNoYWRvd0Rlc2NlbmRhbnRPZik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dHJ5QWRkRXZl
bnRMaXN0ZW5lcik6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlOyBhbHNvIGFkZGVkIEZJWE1FIGNv
bW1lbnQuCisgICAgICAgIChXZWJDb3JlOjp0cnlSZW1vdmVFdmVudExpc3RlbmVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEV2ZW50KTogT3B0LW91dCBvZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKS1ndWFyZGVkIGNvZGUgd2hlbiBidWlsZGluZyB0aGUgaU9TIHBvcnQu
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogQWRkZWQgaU9T
LXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9uZFRvTW91
c2VNb3ZlRXZlbnRzKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGU7IGFsc28gYWRkZWQgRklYTUUg
Y29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKTogQWRkZWQgaU9TLXNwZWNpZmljIGNvZGU7IGFsc28gYWRkZWQgRklYTUUgY29tbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRz
KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6b3BlcmF0b3I+KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj49KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw9KTogQWRkZWQuCisgICAgICAgICogZG9t
L1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjcmVhdGUpOiBBZGRlZCBpT1Mt
c3BlY2lmaWMgY29kZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgorICAgICAgICAoV2ViQ29y
ZTo6aW50ZXJ2YWxzU3VmZmljaWVudGx5T3ZlcmxhcCk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRG
T1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpwcmludFJlY3RzKTogQWRkZWQ7IGd1YXJkZWQg
YnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdExpbmVIZWlnaHRPZlNl
bGVjdGlvblJlY3RzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAg
KFdlYkNvcmU6OmNvYWxlc2NlU2VsZWN0aW9uUmVjdHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFU
Rk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0
cyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgICogZG9tL1Jhbmdl
Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMp
OiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRpc3BhdGNoRXJyb3JFdmVudCk6IERpdHRvLgorICAgICAgICAqIGRvbS9U
cmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9kZUZyb21Qb2ludCk6IERpdHRvLgor
ICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzZXRW
aWV3cG9ydEZlYXR1cmUpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4KKyAgICAgICAgKFdlYkNv
cmU6OmZpbmFsaXplVmlld3BvcnRBcmd1bWVudHMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAg
ICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVz
LnBsOiBBZGRlZCBzdXBwb3J0IHRvIGZpbmQgdGhlIHBhdGggdG8gZ2NjIHdpdGggcmVzcGVjdCB0
byB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgdmFyaWFibGUgU0RLUk9PVC4KKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudDo6c3Vz
cGVuZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6U2V0dGluZ3MpOiBJbml0aWFsaXplIHNldHRpbmcgbV9sYXlvdXRJbnRlcnZhbCB0
byBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpz
ZXRMYXlvdXRJbnRlcnZhbCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpsYXlvdXRJbnRlcnZhbCk6IEFkZGVkLgorCiAyMDEz
LTEyLTE1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBb
V0luXSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByMTYwNTk5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDA5NTlmMjYuLjYzZjhkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMTczLDYg
KzExNzMsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYgogX19a
TjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldFBsdWdp
bnNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0TGF5b3V0SW50ZXJ2YWxFaQog
X19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXREZWZhdWx0Rm9udFNpemVFaQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNj
cmlwdENvZGUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0TWluaW11bUZvbnRTaXplRWkKQEAg
LTIzMDUsNyArMjMwNiw2IEBAIF9fWk43V2ViQ29yZTIxc2V0U3Ryb2tlQW5kRmlsbENvbG9yRVA5
Q0dDb250ZXh0UDdDR0NvbG9yCiBfX1pON1dlYkNvcmUyMkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQy
NWNyZWF0ZVNoYWRvd0lGcmFtZVN1YnRyZWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUy
MnN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnRFUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2Vi
Q29yZTIzYXBwbGljYXRpb25Jc01vYmlsZU1haWxFdgotX19aTjdXZWJDb3JlMjRjTGF5b3V0U2No
ZWR1bGVUaHJlc2hvbGRFCiBfX1pON1dlYkNvcmUyNGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeUVQ
OE5TU3RyaW5nCiBfX1pON1dlYkNvcmUyNHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbkVSS05TXzE1
VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjRyZWxlYXNlTGluZUJyZWFrSXRlcmF0b3JF
UE5TXzE3VGV4dEJyZWFrSXRlcmF0b3JFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGU0MDg2Zi4uN2NlNThjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUx
Nyw2ICszNTE3LDcgQEAKIAkJQTQ1NDQyNEYxMTlCMzY4NzAwOUJFOTEyIC8qIFJlbmRlck1ldGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNDU0NDI0
RDExOUIzNjg3MDA5QkU5MTIgLyogUmVuZGVyTWV0ZXIuaCAqLzsgfTsKIAkJQTQ1NkZBMjYxMUFE
NEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE0NTZGQTI0MTFBRDRBODMwMDIwQjQyMCAvKiBMYWJl
bHNOb2RlTGlzdC5jcHAgKi87IH07CiAJCUE0NTZGQTI3MTFBRDRBODMwMDIwQjQyMCAvKiBMYWJl
bHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmggKi87IH07CisJ
CUE1MDE5MjBFMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwMTkyMEMxMzJFQkYyRTAwOEJG
RTU1IC8qIEF1dG9jYXBpdGFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUwMkM1REYxMzA0OUIzNTAwRkM3RDUzIC8qIFdlYlNhZmVHQ0Fj
dGl2aXR5Q2FsbGJhY2tJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MDJDNUREMTMwNDlCMzUwMEZDN0Q1MyAvKiBXZWJTYWZlR0NBY3Rpdml0eUNh
bGxiYWNrSU9TLmggKi87IH07CiAJCUE1MTNCM0Q3MTE0QjE2NjYwMDFDNDI5QiAvKiBLZXlFdmVu
dENvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUM5NzRDRjExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5oICovOyB9OwogCQlBNTEz
QjNEODExNEIxNjZBMDAxQzQyOUIgLyogS2V5RXZlbnRDb2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1Qzk3NEQwMTE0ODVGRjEwMDY2RjJBQiAv
KiBLZXlFdmVudENvY29hLm1tICovOyB9OwpAQCAtMzUyNywxMCArMzUyOCwxMiBAQAogCQlBNTkz
Q0Y4QjE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTkzQ0Y4QTE4NDA1MzUyMDBC
RkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVBMkFGMEIxODI5NzM0MzAwREUxNzI5IC8qIFBh
Z2VEZWJ1Z2dhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1QTJBRjA5MTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5jcHAgKi87
IH07CiAJCUE1QTJBRjBDMTgyOTczNDMwMERFMTcyOSAvKiBQYWdlRGVidWdnYWJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBMkFGMEExODI5NzM0
MzAwREUxNzI5IC8qIFBhZ2VEZWJ1Z2dhYmxlLmggKi87IH07CisJCUE1QTdBQTQzMTMyRjBFQ0Mw
MEQzQTNDMiAvKiBXZWJBdXRvY2FwaXRhbGl6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBN0FBNDIxMzJGMEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9j
YXBpdGFsaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTVBQkI3ODcxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVBQkI3
ODYxM0I5MDRCQzAwRjE5N0UzIC8qIExpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oICovOyB9Owog
CQlBNUFGQjM0RjExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QUZCMzREMTE1MTUxQTcwMEIwNDVD
QiAvKiBTdGVwUmFuZ2UuY3BwICovOyB9OwogCQlBNUFGQjM1MDExNTE1MUE3MDBCMDQ1Q0IgLyog
U3RlcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNUFGQjM0RTExNTE1MUE3MDBCMDQ1Q0IgLyogU3RlcFJhbmdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTVDNTY2QUIxMjdBM0FBRDAwRThB
M0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUM1NjZBQTEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0lt
YWdlQ2FjaGVDbGllbnRJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNUY2RTE2QjEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGNkUx
NkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFsaXplLmNwcCAqLzsgfTsKIAkJQTVGOUVG
NzAxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkUxMjY2NzUwRDAwRkNDRjUy
IC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovOyB9OwogCQlBNUY5RUY3MTEyNjY3NTBEMDBGQ0NG
NTIgLyogRGlza0ltYWdlQ2FjaGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNo
ZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUE2MTQ4QTYyMTJFNDFEM0EwMDQ0QTc4NCAvKiBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjE0OEE2
MTEyRTQxRDNBMDA0NEE3ODQgLyogRE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oICovOyB9
OwpAQCAtMTAzNDcsNiArMTAzNTAsNyBAQAogCQlBNDU0NDI0RDExOUIzNjg3MDA5QkU5MTIgLyog
UmVuZGVyTWV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWV0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTQ1NkZBMjQxMUFENEE4MzAwMjBC
NDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IExhYmVsc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTQ1NkZBMjUxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExhYmVsc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE1MDE5MjBDMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvY2FwaXRhbGl6ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAyQzVERDEzMDQ5QjM1MDBGQzdENTMgLyogV2Vi
U2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmg7IHBhdGggPSBpb3MvV2ViU2FmZUdD
QWN0aXZpdHlDYWxsYmFja0lPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTE4
MjI1MzE3RTI4Q0YxMDBBOUJBMUQgLyogU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNjcmlwdHM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MTgyMjU0MTdFMkEwRDQwMEE5QkExRCAvKiBJbnNwZWN0
b3JPdmVybGF5UGFnZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IEluc3BlY3Rvck92ZXJsYXlQYWdlLmNzczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzU5LDEyICsxMDM2MywxNCBAQAogCQlBNTkz
Q0Y4QTE4NDA1MzUyMDBCRkNFMjcgLyogSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldlYkFnZW50QmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNUEyQUYwOTE4Mjk3MzQzMDBERTE3MjkgLyogUGFnZURl
YnVnZ2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZURl
YnVnZ2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUEyQUYwQTE4Mjk3
MzQzMDBERTE3MjkgLyogUGFnZURlYnVnZ2FibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnZURlYnVnZ2FibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTVBN0FBNDIxMzJGMEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9jYXBpdGFsaXplLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9jYXBpdGFsaXplLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1QUJCNzg2MTNCOTA0QkMwMEYxOTdFMyAvKiBMaW5lQnJlYWtJ
dGVyYXRvclBvb2xJQ1UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGluZUJy
ZWFrSXRlcmF0b3JQb29sSUNVLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1QUZC
MzREMTE1MTUxQTcwMEIwNDVDQiAvKiBTdGVwUmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RlcFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTVBRkIzNEUxMTUxNTFBNzAwQjA0NUNCIC8qIFN0ZXBSYW5nZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdGVwUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTVDNTY2QUExMjdBM0FBRDAwRThBM0ZGIC8qIERpc2tJbWFnZUNhY2hlQ2xpZW50
SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlQ2xp
ZW50SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1Qzk3NENGMTE0ODVGRjEw
MDY2RjJBQiAvKiBLZXlFdmVudENvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEtleUV2ZW50Q29jb2EuaDsgcGF0aCA9IGNvY29hL0tleUV2ZW50Q29jb2EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2
ZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBLZXlF
dmVudENvY29hLm1tOyBwYXRoID0gY29jb2EvS2V5RXZlbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQTVGNkUxNkMxMzJFRDQ2RTAwOEVEQUUzIC8qIEF1dG9jYXBpdGFs
aXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9jYXBpdGFs
aXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGOUVGNkUxMjY2NzUwRDAw
RkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGlza0ltYWdlQ2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1RjlFRjZGMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNjE0OEE2MTEyRTQxRDNBMDA0NEE3ODQgLyog
RE9NSFRNTEtleWdlbkVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBET01IVE1MS2V5Z2VuRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjY1Myw2ICsxNjY1OSw4IEBACiAJCQkJOTdDMUY1NTExMjI4NTU4ODAw
RURFNjE2IC8qIHBhcnNlciAqLywKIAkJCQk0MTUwRjlFRDEyQjZFMDk5MDAwOEM4NjAgLyogc2hh
ZG93ICovLAogCQkJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLywKKwkJCQlB
NUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICovLAorCQkJCUE1
MDE5MjBDMTMyRUJGMkUwMDhCRkU1NSAvKiBBdXRvY2FwaXRhbGl6ZS5oICovLAogCQkJCTM3OUU2
MUM1MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCAqLywKIAkJCQkz
NzlFNjFDNjEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oICovLAogCQkJ
CTM3OUU2MUM3MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCAq
LywKQEAgLTE3MDQyLDYgKzE3MDUwLDcgQEAKIAkJCQkxNUM3NzA4OTEwMEQzQzZBMDA1QkEyNjcg
LyogVmFsaWRpdHlTdGF0ZS5pZGwgKi8sCiAJCQkJRTQ0NjEzQjQwQ0Q2MzQ0RTAwRkFEQTc1IC8q
IFZvaWRDYWxsYmFjay5oICovLAogCQkJCUU0NDYxM0EwMENENjMzMTAwMEZBREE3NSAvKiBWb2lk
Q2FsbGJhY2suaWRsICovLAorCQkJCUE1QTdBQTQyMTMyRjBFQ0MwMEQzQTNDMiAvKiBXZWJBdXRv
Y2FwaXRhbGl6ZS5oICovLAogCQkJCUY1NUIzREFCMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5w
dXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0RBQzEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0
VHlwZS5oICovLAogCQkJKTsKQEAgLTI1MDU2LDYgKzI1MDY1LDcgQEAKIAkJCQkyNkU5OEExMDEz
MEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJDM0RBM0MwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0lDVS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJDM0RBM0UwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY0xhdGluMS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQTVBN0FBNDMxMzJGMEVDQzAwRDNBM0MyIC8qIFdlYkF1dG9j
YXBpdGFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkFGRkM5QTBEMDBBNURGMDAzMDA3NEQg
LyogVGV4dENvZGVjTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0MDBEMDA2QzFEMDBF
RjZGMjYgLyogVGV4dENvZGVjVXNlckRlZmluZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNE
QTQyMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVVEYxNi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNTE1OCw2ICsyNTE2OCw3IEBACiAJCQkJRTRENThFQjkxN0I0RUQ4OTAwQ0JEQ0E4IC8qIFN0
eWxlRm9udFNpemVGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGQUZCRjE5MTVBNUZB
NzQwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFM0JCRjA4
MTE2MkRBMTEwMEI5NDA5QSAvKiBVVUlELmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTAxOTIwRTEz
MkVCRjJFMDA4QkZFNTUgLyogQXV0b2NhcGl0YWxpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUw
RDMyODU4MTYzQjMxM0YwMDE2MTExRSAvKiBWYWxpZGF0ZWRDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUY1QTE1NDI4MTI3OTUzNEQwMEQwQjBDMCAvKiBWYWxpZGF0
aW9uTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRC
IC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODMxLDYg
KzI3ODQyLDcgQEAKIAkJCQk5MzFDQkQwQzE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3Rh
dGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMUNCRDEzMTYxQTQ0RjgwMEU0Qzg3NCAv
KiBTY3JvbGxpbmdTdGF0ZU5vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzFDQkQwRTE2
MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE4OEVCRDE2QThEMUJEMDBGOTk5ODQgLyogU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEUx
NjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzFDQkQxMDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVUcmVl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2
ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4
IDZhYjEyZTQuLjVhMWYzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAg
LTU2LDcgKzU2LDggQEAgcHVibGljOgogICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQs
CiAgICAgICAgIFdpbGxEZWZlckxvYWRpbmcsCiAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUlu
YWN0aXZlLAotICAgICAgICBQYWdlV2lsbEJlU3VzcGVuZGVkCisgICAgICAgIFBhZ2VXaWxsQmVT
dXNwZW5kZWQsCisgICAgICAgIERvY3VtZW50V2lsbEJlUGF1c2VkCiAgICAgfTsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHAKaW5kZXggZDBkYmI0Yy4uMTJmMDgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVt
ZW50YXRpb24uY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9N
SW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUK
ICAgICBpZiAoSW1hZ2U6OnN1cHBvcnRzVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIEltYWdl
RG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKIAotI2lmIEVOQUJMRShWSURFTykKKyNpZiBF
TkFCTEUoVklERU8pICYmICFQTEFURk9STShJT1MpCiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0
aGUgdHlwZSBjYW4gYmUgcGxheWVkIGJ5IG91ciBNZWRpYVBsYXllciwgaWYgc28gY3JlYXRlIGEg
TWVkaWFEb2N1bWVudAogICAgIC8vIEtleSBzeXN0ZW0gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4K
ICAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRzVHlwZUNsaWVudCBjbGllbnQoZnJhbWUgJiYg
ZnJhbWUtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSwgdXJsLmhvc3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ2xpZW50LmgKaW5kZXggODIyYmZlZS4uNzUz
M2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25DbGllbnQuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERl
dmljZU1vdGlvbkNsaWVudF9oCiAKICNpbmNsdWRlICJEZXZpY2VDbGllbnQuaCIKKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw4ICsz
NywxMCBAQCBjbGFzcyBEZXZpY2VNb3Rpb25EYXRhOwogY2xhc3MgUGFnZTsKIAogY2xhc3MgRGV2
aWNlTW90aW9uQ2xpZW50IDogcHVibGljIERldmljZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRGV2aWNlTW90aW9uQ2xpZW50KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EZXZp
Y2VNb3Rpb25DbGllbnQoKSB7fQorICAgIERldmljZU1vdGlvbkNsaWVudCgpIHsgfQorICAgIHZp
cnR1YWwgfkRldmljZU1vdGlvbkNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xsZXIqKSA9IDA7CiAgICAgdmlydHVhbCBEZXZpY2VN
b3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXZp
Y2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI1NzM3MDEuLjg5ZWIwMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ2LDYg
KzQ2LDIyIEBAIFBhc3NPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4gRGV2aWNlTW90aW9u
Q29udHJvbGxlcjo6Y3JlYXRlKERldmljZU1vdGlvbkNsCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBEZXZpY2VNb3Rpb25Db250cm9sbGVyKGNsaWVudCkpOwogfQogCisjaWYgUExBVEZPUk0oSU9T
KQorLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUgaU9TIGFuZCBPcGVu
U291cmNlIGRpZmZlcmVuY2VzIHdpdGggdGhpcyBjbGFzcworLy8gc28gdGhhdCB3ZSBjYW4gZWl0
aGVyIHJlbW92ZSB0aGVzZSBtZXRob2RzIG9yIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFy
ZC4KK3ZvaWQgRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMoKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2
b2lkIERldmljZU1vdGlvbkNvbnRyb2xsZXI6OnJlc3VtZVVwZGF0ZXMoKQoreworICAgIGlmICht
X2NsaWVudCAmJiAhbV9saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudC0+c3Rh
cnRVcGRhdGluZygpOworfQorI2VuZGlmCisgICAgCiB2b2lkIERldmljZU1vdGlvbkNvbnRyb2xs
ZXI6OmRpZENoYW5nZURldmljZU1vdGlvbihEZXZpY2VNb3Rpb25EYXRhKiBkZXZpY2VNb3Rpb25E
YXRhKQogewogICAgIGRpc3BhdGNoRGV2aWNlRXZlbnQoRGV2aWNlTW90aW9uRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQsIGRldmljZU1vdGlvbkRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5oCmluZGV4IDI5YmY5MTMu
LjY2ZDIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3IEBA
CiAjZGVmaW5lIERldmljZU1vdGlvbkNvbnRyb2xsZXJfaAogCiAjaW5jbHVkZSAiRGV2aWNlQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM1LDExICszNiwxOSBAQCBjbGFzcyBEZXZpY2VNb3Rpb25DbGllbnQ7CiBj
bGFzcyBEZXZpY2VNb3Rpb25EYXRhOwogCiBjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyIDog
cHVibGljIERldmljZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldmlj
ZU1vdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIH5EZXZpY2VNb3Rpb25Db250cm9sbGVy
KCkgeyB9OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4g
Y3JlYXRlKERldmljZU1vdGlvbkNsaWVudCopOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJj
ZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKKyAgICAvLyBzbyB0aGF0IHdlIGNhbiBlaXRo
ZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJk
LgorICAgIHZvaWQgc3VzcGVuZFVwZGF0ZXMoKTsKKyAgICB2b2lkIHJlc3VtZVVwZGF0ZXMoKTsK
KyNlbmRpZgorCiAgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VNb3Rpb24oRGV2aWNlTW90aW9uRGF0
YSopOwogICAgIERldmljZU1vdGlvbkNsaWVudCogZGV2aWNlTW90aW9uQ2xpZW50KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKaW5kZXggODVkNjJl
Yy4uNWI1ZDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IDIwMTAsIFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsy
OCw3IEBACiAjZGVmaW5lIERldmljZU9yaWVudGF0aW9uQ2xpZW50X2gKIAogI2luY2x1ZGUgIkRl
dmljZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM2LDggKzM3LDEwIEBAIGNsYXNzIERldmljZU9yaWVudGF0aW9uRGF0
YTsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50IDogcHVibGlj
IERldmljZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGV2aWNlT3JpZW50YXRp
b25DbGllbnQpOwogcHVibGljOgotICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50
KCkge30KKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xs
ZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgRGV2aWNl
T3JpZW50YXRpb25EYXRhKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggOTUyNjc2Ni4uZmY3YjAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTM4LDggKzM4LDE2IEBAIERldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlcjo6RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKFBhZ2UqIHBhZ2Us
IERldmljZU9yaWVuCiAgICAgOiBEZXZpY2VDb250cm9sbGVyKGNsaWVudCkKICAgICAsIG1fcGFn
ZShwYWdlKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkg
YXZvaWQgYXNzZXJ0aW5nIHdoaWxlIE9wZW5Tb3VyY2UgaXMgdXNpbmcgYSBkaWZmZXJlbnQgZGVz
aWduLgorICAgIC8vIFdlIHNob3VsZCByZWNvbmNpbGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4g
T3BlblNvdXJjZSBhbmQgaU9TIHNvIHRoYXQgd2UgY2FuCisgICAgLy8gcmVtb3ZlIHRoaXMgY29k
ZSBwYXRoLgorICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgZGV2aWNlT3JpZW50YXRpb25DbGll
bnQoKS0+c2V0Q29udHJvbGxlcih0aGlzKTsKKyNlbHNlCiAgICAgQVNTRVJUKG1fY2xpZW50KTsK
ICAgICBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpLT5zZXRDb250cm9sbGVyKHRoaXMpOworI2Vu
ZGlmCiB9CiAKIFBhc3NPd25QdHI8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPiBEZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShQYWdlKiBwYWdlLCBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudCogY2xpZW50KQpAQCAtNTgsNiArNjYsMjEgQEAgRGV2aWNlT3JpZW50YXRpb25DbGll
bnQqIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQo
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRhdGlvbkNsaWVudCo+KG1fY2xp
ZW50KTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKy8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0
byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMg
Y2xhc3MKKy8vIHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciBy
ZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCit2b2lkIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6cmVzdW1lVXBkYXRlcygpCit7CisgICAgaWYgKG1fY2xpZW50ICYmICFtX2xpc3Rl
bmVycy5pc0VtcHR5KCkpCisgICAgICAgIG1fY2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9Cisj
ZWxzZQogYm9vbCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6Omhhc0xhc3REYXRhKCkKIHsK
ICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+bGFzdE9yaWVudGF0aW9uKCk7
CkBAIC02Nyw2ICs5MCw3IEBAIFBhc3NSZWZQdHI8RXZlbnQ+IERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6Z2V0TGFzdEV2ZW50KCkKIHsKICAgICByZXR1cm4gRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50LCBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgpLT5sYXN0T3JpZW50YXRpb24oKSk7CiB9CisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQogCiBjb25zdCBjaGFyKiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1
cHBsZW1lbnROYW1lKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaAppbmRleCAxOWMwMjg0Li40NzgzZjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJEZXZpY2VDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzYsNiArMzcsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dDsKIGNsYXNzIERldmljZU9yaWVudGF0aW9uRGF0YTsKIAogY2xhc3MgRGV2aWNlT3JpZW50YXRp
b25Db250cm9sbGVyIDogcHVibGljIERldmljZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgfkRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpIHsgfTsKIApAQCAtNDQsOCArNDYsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRp
b25EYXRhKik7CiAgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9u
Q2xpZW50KCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBs
b29rIHRvIHJlY29uY2lsZSB0aGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzIHdpdGgg
dGhpcyBjbGFzcworICAgIC8vIHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhlc2UgbWV0
aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCisgICAgdm9pZCBzdXNwZW5k
VXBkYXRlcygpOworICAgIHZvaWQgcmVzdW1lVXBkYXRlcygpOworI2Vsc2UKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTGFzdERhdGEoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZl
bnQ+IGdldExhc3RFdmVudCgpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICBzdGF0aWMgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKiBmcm9tKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VPcmllbnRhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uRGF0YS5jcHAKaW5kZXggNmU3MzAyZi4uZDZhNWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5jcHAKQEAgLTMzLDI0ICszMyw1MiBAQCBQYXNzUmVm
UHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUo
KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGV2aWNlT3JpZW50YXRpb25EYXRhKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKKy8vIEZJWE1FOiBXZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpT1Mg
YW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCitQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9u
RGF0YT4gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEs
IGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2Fu
UHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5n
LCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwg
ZG91YmxlIGNvbXBhc3NBY2N1cmFjeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldmlj
ZU9yaWVudGF0aW9uRGF0YShjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwg
YmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSwgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nLCBj
b21wYXNzSGVhZGluZywgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwgY29tcGFzc0FjY3VyYWN5
KSk7Cit9CisjZWxzZQogUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IERldmljZU9y
aWVudGF0aW9uRGF0YTo6Y3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwg
ZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0ZSwgYm9vbCBhYnNvbHV0ZSkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldmljZU9yaWVudGF0aW9uRGF0YShjYW5Qcm92aWRl
QWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1t
YSwgY2FuUHJvdmlkZUFic29sdXRlLCBhYnNvbHV0ZSkpOwogfQorI2VuZGlmCiAKIAogRGV2aWNl
T3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoKQogICAgIDogbV9jYW5Qcm92
aWRlQWxwaGEoZmFsc2UpCiAgICAgLCBtX2NhblByb3ZpZGVCZXRhKGZhbHNlKQogICAgICwgbV9j
YW5Qcm92aWRlR2FtbWEoZmFsc2UpCisjaWYgIVBMQVRGT1JNKElPUykKICAgICAsIG1fY2FuUHJv
dmlkZUFic29sdXRlKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2FscGhhKDApCiAgICAgLCBtX2Jl
dGEoMCkKICAgICAsIG1fZ2FtbWEoMCkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX2NhblBy
b3ZpZGVDb21wYXNzSGVhZGluZyhmYWxzZSkKKyAgICAsIG1fY2FuUHJvdmlkZUNvbXBhc3NBY2N1
cmFjeShmYWxzZSkKKyNlbHNlCiAgICAgLCBtX2Fic29sdXRlKGZhbHNlKQorI2VuZGlmCiB7CiB9
CiAKKyNpZiBQTEFURk9STShJT1MpCitEZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVu
dGF0aW9uRGF0YShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblBy
b3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1t
YSwgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcsIGRvdWJsZSBjb21wYXNzSGVhZGluZywg
Ym9vbCBjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5LCBkb3VibGUgY29tcGFzc0FjY3VyYWN5KQor
ICAgIDogbV9jYW5Qcm92aWRlQWxwaGEoY2FuUHJvdmlkZUFscGhhKQorICAgICwgbV9jYW5Qcm92
aWRlQmV0YShjYW5Qcm92aWRlQmV0YSkKKyAgICAsIG1fY2FuUHJvdmlkZUdhbW1hKGNhblByb3Zp
ZGVHYW1tYSkKKyAgICAsIG1fYWxwaGEoYWxwaGEpCisgICAgLCBtX2JldGEoYmV0YSkKKyAgICAs
IG1fZ2FtbWEoZ2FtbWEpCisgICAgLCBtX2NhblByb3ZpZGVDb21wYXNzSGVhZGluZyhjYW5Qcm92
aWRlQ29tcGFzc0hlYWRpbmcpCisgICAgLCBtX2NhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koY2Fu
UHJvdmlkZUNvbXBhc3NBY2N1cmFjeSkKKyAgICAsIG1fY29tcGFzc0hlYWRpbmcoY29tcGFzc0hl
YWRpbmcpCisgICAgLCBtX2NvbXBhc3NBY2N1cmFjeShjb21wYXNzQWNjdXJhY3kpCisjZWxzZQog
RGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92
aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEs
IGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUFic29s
dXRlLCBib29sIGFic29sdXRlKQogICAgIDogbV9jYW5Qcm92aWRlQWxwaGEoY2FuUHJvdmlkZUFs
cGhhKQogICAgICwgbV9jYW5Qcm92aWRlQmV0YShjYW5Qcm92aWRlQmV0YSkKQEAgLTYwLDYgKzg4
LDcgQEAgRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwKICAgICAsIG1fYmV0YShiZXRhKQogICAgICwg
bV9nYW1tYShnYW1tYSkKICAgICAsIG1fYWJzb2x1dGUoYWJzb2x1dGUpCisjZW5kaWYKIHsKIH0K
IApAQCAtNzgsMTAgKzEwNywxMiBAQCBkb3VibGUgRGV2aWNlT3JpZW50YXRpb25EYXRhOjpnYW1t
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZ2FtbWE7CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQog
Ym9vbCBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmFic29sdXRlKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9hYnNvbHV0ZTsKIH0KKyNlbmRpZgogCiBib29sIERldmljZU9yaWVudGF0aW9uRGF0YTo6
Y2FuUHJvdmlkZUFscGhhKCkgY29uc3QKIHsKQEAgLTk4LDkgKzEyOSwzMyBAQCBib29sIERldmlj
ZU9yaWVudGF0aW9uRGF0YTo6Y2FuUHJvdmlkZUdhbW1hKCkgY29uc3QKICAgICByZXR1cm4gbV9j
YW5Qcm92aWRlR2FtbWE7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitkb3VibGUgRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpjb21wYXNzSGVhZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29t
cGFzc0hlYWRpbmc7Cit9CisKK2RvdWJsZSBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNvbXBhc3NB
Y2N1cmFjeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tcGFzc0FjY3VyYWN5OworfQorCiti
b29sIERldmljZU9yaWVudGF0aW9uRGF0YTo6Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmc7Cit9CisKK2Jvb2wg
RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5OworfQorI2VuZGlmCisK
KyNpZiAhUExBVEZPUk0oSU9TKQogYm9vbCBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNhblByb3Zp
ZGVBYnNvbHV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FuUHJvdmlkZUFic29sdXRlOwog
fQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkRhdGEuaAppbmRleCAxZGY5YjY1Li5mYWNmOTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCkBAIC0zNCw3ICszNCwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkRhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZSgpOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0
ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBj
YW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcsIGRvdWJsZSBjb21wYXNzSGVhZGluZywgYm9vbCBjYW5Q
cm92aWRlQ29tcGFzc0FjY3VyYWN5LCBkb3VibGUgY29tcGFzc0FjY3VyYWN5KTsKKyNlbHNlCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlk
ZUFic29sdXRlID0gZmFsc2UsIGJvb2wgYWJzb2x1dGUgPSBmYWxzZSk7CisjZW5kaWYKIAogICAg
IGRvdWJsZSBhbHBoYSgpIGNvbnN0OwogICAgIGRvdWJsZSBiZXRhKCkgY29uc3Q7CkBAIC00NSwx
OCArNDksMzkgQEAgcHVibGljOgogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hKCkgY29uc3Q7CiAg
ICAgYm9vbCBjYW5Qcm92aWRlQWJzb2x1dGUoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPUykK
KyAgICBkb3VibGUgY29tcGFzc0hlYWRpbmcoKSBjb25zdDsKKyAgICBkb3VibGUgY29tcGFzc0Fj
Y3VyYWN5KCkgY29uc3Q7CisgICAgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSBjb25z
dDsKKyAgICBib29sIGNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koKSBjb25zdDsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIERldmljZU9yaWVudGF0aW9uRGF0YSgpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nLCBkb3Vi
bGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwgZG91Ymxl
IGNvbXBhc3NBY2N1cmFjeSk7CisjZWxzZQogICAgIERldmljZU9yaWVudGF0aW9uRGF0YShib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3Vi
bGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92
aWRlQWJzb2x1dGUsIGJvb2wgYWJzb2x1dGUpOworI2VuZGlmCiAKICAgICBib29sIG1fY2FuUHJv
dmlkZUFscGhhOwogICAgIGJvb2wgbV9jYW5Qcm92aWRlQmV0YTsKICAgICBib29sIG1fY2FuUHJv
dmlkZUdhbW1hOworI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2NhblByb3ZpZGVBYnNv
bHV0ZTsKKyNlbmRpZgogICAgIGRvdWJsZSBtX2FscGhhOwogICAgIGRvdWJsZSBtX2JldGE7CiAg
ICAgZG91YmxlIG1fZ2FtbWE7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBtX2NhblBy
b3ZpZGVDb21wYXNzSGVhZGluZzsKKyAgICBib29sIG1fY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFj
eTsKKyAgICBkb3VibGUgbV9jb21wYXNzSGVhZGluZzsKKyAgICBkb3VibGUgbV9jb21wYXNzQWNj
dXJhY3k7CisjZWxzZQogICAgIGJvb2wgbV9hYnNvbHV0ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9u
RXZlbnQuaWRsCmluZGV4IDUxZjNmOTguLjNiMGQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwKQEAgLTI5LDYgKzI5LDE4IEBACiAgICAgW0N1
c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbHBoYTsKICAgICBbQ3VzdG9tXSByZWFk
b25seSBhdHRyaWJ1dGUgZG91YmxlIGJldGE7CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmli
dXRlIGRvdWJsZSBnYW1tYTsKKyNpZiBXVEZfUExBVEZPUk1fSU9TCisgICAgW0N1c3RvbV0gcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSB3ZWJraXRDb21wYXNzSGVhZGluZzsKKyAgICBbQ3VzdG9t
XSByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHdlYmtpdENvbXBhc3NBY2N1cmFjeTsKKyAgICBb
Q3VzdG9tXSB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xlYW4gYnVi
YmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZh
dWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBkb3VibGUgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBiZXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVk
XSBvcHRpb25hbCBkb3VibGUgZ2FtbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBjb21wYXNz
SGVhZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtE
ZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSk7CisjZWxz
ZQogICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFic29sdXRlOwogICAg
IFtDdXN0b21dIHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xlYW4g
YnViYmxlcywgCkBAIC0zNyw1ICs0OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBiZXRh
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgZG91YmxlIGdhbW1hLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29s
ZWFuIGFic29sdXRlKTsKKyNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
OWE4ZDcxYS4uODJhNmQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNzIsNiArMTcy
LDIzIEBACiAjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25D
bGllbnRJT1MuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvci5oIgorI2luY2x1ZGUgIk5hdmlnYXRvckdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAi
V0tDb250ZW50T2JzZXJ2YXRpb24uaCIKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAi
R2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShNQVRITUwpCiAjaW5jbHVkZSAi
TWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnRGYWN0b3J5LmgiCkBAIC0y
MTQsMTEgKzIzMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aCA9IDIxOwogCi0vLyBUaGlzIGFtb3Vu
dCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3aWxsIGV2ZW4gY29uc2lkZXIg
c2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCi0vLyBGSVhNRTogRm9yIGZhc3Rl
ciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFsbHkgYmUgbG93ZXJlZCB0byAyMDAuICAyNTAg
aXMgYWRlcXVhdGUsIGJ1dCBhIGxpdHRsZSBoaWdoCi0vLyBmb3IgZHVhbCBHNXMuIDopCi1zdGF0
aWMgY29uc3QgaW50IGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MDsKLQogLy8gRE9NIExl
dmVsIDIgc2F5cyAobGV0dGVycyBhZGRlZCk6CiAvLwogLy8gYSkgTmFtZSBzdGFydCBjaGFyYWN0
ZXJzIG11c3QgaGF2ZSBvbmUgb2YgdGhlIGNhdGVnb3JpZXMgTGwsIEx1LCBMbywgTHQsIE5sLgpA
QCAtMzc4LDkgKzM5MCwxNCBAQCBib29sIFRleHRBdXRvU2l6aW5nVHJhaXRzOjppc0RlbGV0ZWRW
YWx1ZShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYgdmFsdWUpCiB9CiAjZW5kaWYKIAotRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcykKK0RvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIGJvb2wgaXNTeW50aGVzaXplZCkKICAgICA6
IENvbnRhaW5lck5vZGUobnVsbHB0ciwgQ3JlYXRlRG9jdW1lbnQpCiAgICAgLCBUcmVlU2NvcGUo
dGhpcykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLCBt
X2hhbmRsaW5nVG91Y2hFdmVudChmYWxzZSkKKyAgICAsIG1fdG91Y2hFdmVudFJlZ2lvbnNEaXJ0
eShmYWxzZSkKKyAgICAsIG1fdG91Y2hFdmVudHNDaGFuZ2VkVGltZXIodGhpcywgJkRvY3VtZW50
Ojp0b3VjaEV2ZW50c0NoYW5nZWRUaW1lckZpcmVkKQorI2VuZGlmCiAgICAgLCBtX3N0eWxlUmVz
b2x2ZXJUaHJvd2F3YXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJUaHJvd2F3
YXlUaW1lckZpcmVkLCB0aW1lQmVmb3JlVGhyb3dpbmdBd2F5U3R5bGVSZXNvbHZlckFmdGVyTGFz
dFVzZUluU2Vjb25kcykKICAgICAsIG1fZGlkQ2FsY3VsYXRlU3R5bGVSZXNvbHZlcihmYWxzZSkK
ICAgICAsIG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZShmYWxzZSkKQEAgLTQzNiw2ICs0
NTMsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwg
dW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9pblBhZ2VDYWNoZShmYWxzZSkKICAg
ICAsIG1fYWNjZXNzS2V5TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBtX2RvY3VtZW50Q2xhc3Nlcyhk
b2N1bWVudENsYXNzZXMpCisgICAgLCBtX2lzU3ludGhlc2l6ZWQoaXNTeW50aGVzaXplZCkKICAg
ICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1l
c3BhY2VzKGZhbHNlKQogICAgICwgbV9pc1NyY2RvY0RvY3VtZW50KGZhbHNlKQpAQCAtNDU4LDYg
KzQ3NiwxNSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRo
KDApCiAgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkKICAgICAsIG1fbGFzdEhhbmRs
ZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgwKQorI2lmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnQoRGV2aWNlTW90
aW9uQ2xpZW50SU9TOjpjcmVhdGUoKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcihE
ZXZpY2VNb3Rpb25Db250cm9sbGVyOjpjcmVhdGUobV9kZXZpY2VNb3Rpb25DbGllbnQuZ2V0KCkp
KQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dElPUzo6Y3JlYXRlKCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcihEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiBu
dWxscHRyLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50LmdldCgpKSkKKyNlbmRpZgorICAgICwg
bV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKHRydWUpCisjZW5kaWYKICAgICAsIG1f
cGVuZGluZ1Rhc2tzVGltZXIodGhpcywgJkRvY3VtZW50OjpwZW5kaW5nVGFza3NUaW1lckZpcmVk
KQogICAgICwgbV9zY2hlZHVsZWRUYXNrc0FyZVN1c3BlbmRlZChmYWxzZSkKICAgICAsIG1fdmlz
dWFsVXBkYXRlc0FsbG93ZWQodHJ1ZSkKQEAgLTUzNSw2ICs1NjIsMTEgQEAgRG9jdW1lbnQ6On5E
b2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX3N0eWxlUmVjYWxjVGltZXIuaXNBY3RpdmUoKSk7CiAg
ICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29wZSk7CiAKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKSAmJiBQTEFURk9STShJT1MpCisgICAgbV9kZXZpY2VNb3Rpb25DbGllbnQtPmRldmlj
ZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKyAgICBtX2RldmljZU9yaWVudGF0aW9uQ2xp
ZW50LT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKyNlbmRpZgorICAg
IAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgIGlmIChtX3RlbXBsYXRlRG9jdW1l
bnQpCiAgICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxhdGVEb2N1bWVudEhvc3Qo
bnVsbHB0cik7IC8vIGJhbGFuY2VkIGluIHRlbXBsYXRlRG9jdW1lbnQoKS4KQEAgLTE5NzgsNiAr
MjAxMCwxNyBAQCB2b2lkIERvY3VtZW50OjpkaWRCZWNvbWVDdXJyZW50RG9jdW1lbnRJbkZyYW1l
KCkKICAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5uZWVkVG91Y2hFdmVudHModHJ1
ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBFbnN1cmUgdGhhdCBkb2N1
bWVudCBzY2hlZHVsZWQgdGFzayBzdGF0ZSBtYXRjaGVzIGZyYW1lIHRpbWVyIHN0YXRlLiBJdCBj
YW4gYmUgb3V0IG9mIHN5bmMKKyAgICAvLyBpZiB0aW1lcnMgc3RhdGUgY2hhbmdlZCB3aGlsZSB0
aGUgZG9jdW1lbnQgd2FzIG5vdCBpbiB0aGUgZnJhbWUgKHBvc3NpYmx5IGluIHBhZ2UgY2FjaGUs
CisgICAgLy8gb3Igc2ltcGx5IG5ld2x5IGNyZWF0ZWQpLgorICAgIC8vIEZJWE1FOiBIb3cgZG9l
cyB0aGlzIGludGVyYWN0IHdpdGggY3Jvc3MtcGxhdGZvcm0gY29kZSBiZWxvdz8KKyAgICBpZiAo
bV9mcmFtZS0+dGltZXJzUGF1c2VkKCkpCisgICAgICAgIHN1c3BlbmRTY2hlZHVsZWRUYXNrcyhB
Y3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlUGF1c2VkKTsKKyAgICBlbHNlCisgICAgICAg
IHJlc3VtZVNjaGVkdWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVQYXVz
ZWQpOworI2VuZGlmCisKICAgICBpZiAobV9mcmFtZS0+YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnNTdXNwZW5kZWQoKSkgewogICAgICAgICBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgICAgIG1fZnJhbWUtPmFuaW1hdGlvbigpLnN1c3BlbmRB
bmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CkBAIC0yMDM0LDYgKzIwNzcsMTAgQEAgdm9pZCBE
b2N1bWVudDo6ZGVzdHJveVJlbmRlclRyZWUoKQogCiB2b2lkIERvY3VtZW50OjpwcmVwYXJlRm9y
RGVzdHJ1Y3Rpb24oKQogeworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElP
UykKKyAgICBjbGVhclRvdWNoRXZlbnRMaXN0ZW5lcnMoKTsKKyNlbmRpZgorCiAgICAgZGlzY29u
bmVjdERlc2NlbmRhbnRGcmFtZXMoKTsKICAgICBpZiAobV9kb21XaW5kb3cgJiYgbV9mcmFtZSkK
ICAgICAgICAgbV9kb21XaW5kb3ctPndpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFtZSgpOwpAQCAt
MjA3OCwxOCArMjEyNSw1NCBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpCiAKICAgICBpZiAobV9kb21XaW5kb3cpCiAgICAgICAgIG1fZG9tV2luZG93LT5yZW1vdmVB
bGxFdmVudExpc3RlbmVycygpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JN
KElPUykKKyAgICBjbGVhclRvdWNoRXZlbnRMaXN0ZW5lcnMoKTsKKyNlbmRpZgogICAgIGZvciAo
Tm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQobm9kZSkpCiAgICAgICAgIG5vZGUtPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAK
K3ZvaWQgRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKQor
eworI2lmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorICAg
IGlmIChtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIG1fZGV2aWNlTW90aW9uQ29u
dHJvbGxlci0+c3VzcGVuZFVwZGF0ZXMoKTsKKyAgICBpZiAobV9kZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIpCisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLT5zdXNwZW5k
VXBkYXRlcygpOworI2VuZGlmCisKKyAgICBpZiAoV2ViVGhyZWFkQ291bnRPZk9ic2VydmVkQ29u
dGVudE1vZGlmaWVycygpID4gMCkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lID8gZnJhbWUtPnBhZ2UoKSA6IG51
bGxwdHIpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5jbGVhckNvbnRlbnRD
aGFuZ2VPYnNlcnZlcnMoZnJhbWUpOworICAgIH0KKyNlbmRpZgorfQorCiB2b2lkIERvY3VtZW50
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3Bl
bnNpb24gd2h5KQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKHdoeSk7CisgICAgcGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0
cygpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURP
TU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyh3aHkpOworCisjaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2RldmljZU1vdGlvbkNv
bnRyb2xsZXIpCisgICAgICAgIG1fZGV2aWNlTW90aW9uQ29udHJvbGxlci0+cmVzdW1lVXBkYXRl
cygpOworICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgbV9k
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXItPnJlc3VtZVVwZGF0ZXMoKTsKKyNlbmRpZgorICAg
IC8vIEZJWE1FOiBGb3IgaU9TLCBkbyB3ZSBuZWVkIHRvIGFkZCBjb250ZW50IGNoYW5nZSBvYnNl
cnZlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gRG9jdW1lbnQ6OnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKCk/Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKK3sKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIHBs
YXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIH0KIAogdm9pZCBEb2N1bWVu
dDo6Y2xlYXJBWE9iamVjdENhY2hlKCkKQEAgLTIzNjcsNyArMjQ1MCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIC8vIGZpcmVzLiBUaGlzIHdpbGwgaW1wcm92ZSBvbmxv
YWQgc2NvcmVzLCBhbmQgb3RoZXIgYnJvd3NlcnMgZG8gaXQuCiAgICAgLy8gSWYgdGhleSB3YW5u
YSBjaGVhdCwgd2UgY2FuIHRvby4gLWR3aAogCi0gICAgaWYgKGZyYW1lKCktPm5hdmlnYXRpb25T
Y2hlZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiBlbGFwc2VkVGltZSgpIDwgY0xh
eW91dFNjaGVkdWxlVGhyZXNob2xkKSB7CisgICAgaWYgKGZyYW1lKCktPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiBlbGFwc2VkVGltZSgpIDwgc2V0dGlu
Z3MoKS0+bGF5b3V0SW50ZXJ2YWwoKSkgewogICAgICAgICAvLyBKdXN0IGJhaWwgb3V0LiBCZWZv
cmUgb3IgZHVyaW5nIHRoZSBvbmxvYWQgd2Ugd2VyZSBzaGlmdGVkIHRvIGFub3RoZXIgcGFnZS4K
ICAgICAgICAgLy8gVGhlIG9sZCBpLUJlbmNoIHN1aXRlIGRvZXMgdGhpcy4gV2hlbiB0aGlzIGhh
cHBlbnMgZG9uJ3QgYm90aGVyIHBhaW50aW5nIG9yIGxheWluZyBvdXQuICAgICAgICAKICAgICAg
ICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gZmFsc2U7CkBAIC0yNDUzLDEwICsyNTM2LDEwIEBA
IGludCBEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCiAgICAgaW50IGVsYXBzZWQgPSBlbGFwc2VkVGltZSgpOwotICAgIG1fb3Zlck1pbmltdW1M
YXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xheW91dFNjaGVkdWxlVGhyZXNob2xkOwotICAg
IAorICAgIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gc2V0dGluZ3Mo
KS0+bGF5b3V0SW50ZXJ2YWwoKTsKKwogICAgIC8vIFdlJ2xsIHdhbnQgdG8gc2NoZWR1bGUgdGhl
IHRpbWVyIHRvIGZpcmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRocmVzaG9sZC4KLSAgICByZXR1
cm4gc3RkOjptYXgoMCwgY0xheW91dFNjaGVkdWxlVGhyZXNob2xkIC0gZWxhcHNlZCk7CisgICAg
cmV0dXJuIHN0ZDo6bWF4KDAsIHNldHRpbmdzKCktPmxheW91dEludGVydmFsKCkgLSBlbGFwc2Vk
KTsKIH0KIAogaW50IERvY3VtZW50OjplbGFwc2VkVGltZSgpIGNvbnN0CkBAIC0yODY4LDYgKzI5
NTEsMTQgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0cmluZyYgZmVh
dHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzOjpUeXBlIG8KICAgICBtX3ZpZXdwb3J0QXJndW1lbnRz
ID0gVmlld3BvcnRBcmd1bWVudHMob3JpZ2luKTsKICAgICBwcm9jZXNzQXJndW1lbnRzKGZlYXR1
cmVzLCAodm9pZCopJm1fdmlld3BvcnRBcmd1bWVudHMsICZzZXRWaWV3cG9ydEZlYXR1cmUpOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vODk1NTk1
OT4gSW52ZXN0aWdhdGUgbW92aW5nIHRvIFRvVCBXZWJLaXQncyBleHRlbmRlZCBWaWV3cG9ydCBJ
bXBsZW1lbnRhdGlvbgorICAgIC8vIE1vdmluZyB0byBUb1QncyBpbXBsZW1lbnRhdGlvbiB3b3Vs
ZCBtZWFuIGNhbGxpbmcgZmluZENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydERhdGEsIHdoaWNoIGRv
ZXMKKyAgICAvLyBib3VuZHMgY2hlY2tpbmcgYW5kIGRldGVybWluaW5nIGNvbmNyZXRlIHZhbHVl
cyBmb3IgVmFsdWVBdXRvIHdoaWNoIHdlIGFscmVhZHkgZG8gaW4gVUlLaXQuCisgICAgLy8gVG8g
bWFpbnRhaW4gb2xkIGJlaGF2aW9yLCB3ZSBqdXN0IG5lZWQgdG8gdXBkYXRlIGEgZmV3IHZhbHVl
cywgbGVhdmluZyBBdXRvJ3MgZm9yIFVJS2l0LgorICAgIGZpbmFsaXplVmlld3BvcnRBcmd1bWVu
dHMobV92aWV3cG9ydEFyZ3VtZW50cyk7CisjZW5kaWYKKwogICAgIHVwZGF0ZVZpZXdwb3J0QXJn
dW1lbnRzKCk7CiB9CiAKQEAgLTI4NzgsOSArMjk2OSwzMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVWaWV3cG9ydEFyZ3VtZW50cygpCiAgICAgICAgIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3Bl
cnRpZXNDaGFuZ2VkID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICBwYWdlKCktPmNocm9tZSgpLmRp
c3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKG1fdmlld3BvcnRBcmd1bWVudHMpOwor
I2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5kaWRSZWNlaXZlRG9j
VHlwZShmcmFtZSgpKTsKKyNlbmRpZgogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKy8v
IEZJWE1FOiBGaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuCit2b2lk
IHNldFBhcnNlckZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUs
IERvY3VtZW50KiBkb2N1bWVudCwgdm9pZCopCit7CisgICAgaWYgKGtleSA9PSAidGVsZXBob25l
IiAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vIikpCisgICAgICAgIGRvY3VtZW50LT5z
ZXRJc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKGZhbHNlKTsKK30KKwordm9pZCBEb2N1
bWVudDo6cHJvY2Vzc0Zvcm1hdERldGVjdGlvbihjb25zdCBTdHJpbmcmIGZlYXR1cmVzKQorewor
ICAgIEFTU0VSVCghZmVhdHVyZXMuaXNOdWxsKCkpOworICAgIHByb2Nlc3NBcmd1bWVudHMoZmVh
dHVyZXMsIG51bGxwdHIsICZzZXRQYXJzZXJGZWF0dXJlKTsKK30KKwordm9pZCBEb2N1bWVudDo6
cHJvY2Vzc1dlYkFwcE9yaWVudGF0aW9ucygpCit7CisgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLndlYkFwcE9yaWVudGF0
aW9uc1VwZGF0ZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVmZXJy
ZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiB7CiAgICAgQVNTRVJUKCFwb2xpY3kuaXNO
dWxsKCkpOwpAQCAtNDQwNCw2ICs0NTE5LDI1IEBAIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2
ZXJUaHJvd2F3YXlUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8RG9jdW1lbnQ+CiAg
ICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCisvLyBGSVhN
RTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgorYm9vbCBEb2N1
bWVudDo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPnRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCkgJiYgbV9pc1RlbGVw
aG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorCit2b2lkIERvY3VtZW50OjpzZXRJc1RlbGVw
aG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKGJvb2wgaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxs
b3dlZCkKK3sKKyAgICBtX2lzVGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQgPSBpc1RlbGVw
aG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorCitib29sIERvY3VtZW50Ojppc1RlbGVwaG9u
ZU51bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1RlbGVwaG9u
ZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorI2VuZGlmCisKIFBhc3NSZWZQdHI8WFBhdGhFeHBy
ZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVzc2lvbihjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ1MTIs
NiArNDY0NiwxNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAv
LyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xpY3kuCiAgICAg
bV9jb29raWVVUkwgPSBtX3VybDsKICAgICBlbmZvcmNlU2FuZGJveEZsYWdzKG1fZnJhbWUtPmxv
YWRlcigpLmVmZmVjdGl2ZVNhbmRib3hGbGFncygpKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAvLyBPbiBpT1Mgd2UgZGlzcGxheSBhdHRhY2htZW50cyBpbmxpbmUgcmVnYXJkbGVzcyBvZiB3
aGV0aGVyIHRoZSByZXNwb25zZSBpbmNsdWRlcworICAgIC8vIHRoZSBIVFRQIGhlYWRlciAiQ29u
dGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudCIuIFNvLCB3ZSBlbmZvcmNlIGEgdW5pcXVlCisg
ICAgLy8gc2VjdXJpdHkgb3JpZ2luIGZvciBzdWNoIGRvY3VtZW50cy4gQXMgYW4gb3B0aW1pemF0
aW9uLCB3ZSBkb24ndCBuZWVkIHRvIHBhcnNlCisgICAgLy8gdGhlIHJlc3BvbmRlIGhlYWRlciAo
aS5lLiBjYWxsIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVudCgpKSBmb3IgYSBzeW50aGVz
aXplZAorICAgIC8vIGRvY3VtZW50IGJlY2F1c2Ugc3VjaCBkb2N1bWVudHMgY2Fubm90IGJlIGFu
IGF0dGFjaG1lbnQuCisgICAgaWYgKCFtX2lzU3ludGhlc2l6ZWQgJiYgbV9mcmFtZS0+bG9hZGVy
KCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS5pc0F0dGFjaG1lbnQoKSkKKyAg
ICAgICAgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94T3JpZ2luKTsKKyNlbmRpZgorCiAgICAg
c2V0U2VjdXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAg
ICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRl
KHRoaXMpKTsKIApAQCAtNDgyNCw2ICs0OTY5LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnBlbmRpbmdU
YXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIAogdm9pZCBEb2N1bWVudDo6c3VzcGVu
ZFNjaGVkdWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFz
b24pCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX3NjaGVkdWxlZFRhc2tzQXJlU3Vz
cGVuZGVkKSB7CisgICAgICAgIEFTU0VSVChyZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2Jq
ZWN0cygpID09IEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVQYXVzZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQoIW1fc2NoZWR1bGVkVGFza3NB
cmVTdXNwZW5kZWQpOwogCiAgICAgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNh
bGxiYWNrcygpOwpAQCAtNDk2Niw2ICs1MTE4LDE4IEBAIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciog
RG9jdW1lbnQ6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQogICAgIHJldHVybiBsaXN0
ZW5lcjsKIH0KIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElP
UykKK0RldmljZU1vdGlvbkNvbnRyb2xsZXIqIERvY3VtZW50OjpkZXZpY2VNb3Rpb25Db250cm9s
bGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyLmdldCgp
OworfQorCitEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIERvY3VtZW50OjpkZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5nZXQoKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogYm9vbCBEb2N1bWVudDo6ZnVsbFNjcmVlbklzQWxsb3dlZEZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKIHsKQEAgLTU1MDIsNiArNTY2Niw3IEBAIHZvaWQgRG9jdW1lbnQ6
OmNsZWFyU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCkKIH0KICNlbmRpZgogCisjaWYgIVBM
QVRGT1JNKElPUykKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogUGFzc1JlZlB0cjxUb3VjaD4g
RG9jdW1lbnQ6OmNyZWF0ZVRvdWNoKERPTVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFy
Z2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFnZVksIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbkFuZ2xl
LCBmbG9hdCBmb3JjZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7CkBAIC01NTEzLDYgKzU2Nzgs
NyBAQCBQYXNzUmVmUHRyPFRvdWNoPiBEb2N1bWVudDo6Y3JlYXRlVG91Y2goRE9NV2luZG93KiB3
aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsCiAgICAgcmV0dXJuIFRvdWNoOjpjcmVhdGUoZnJh
bWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLCBy
YWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7CiB9CiAjZW5kaWYKKyNlbmRp
ZiAvLyAhUExBVEZPUk0oSU9TKQogCiBzdGF0aWMgdm9pZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50
Q2hhbmdlZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CkBAIC01NjgxLDcgKzU4NDcsMTEgQEAgdm9p
ZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFuZEZy
YW1lU2NhbGUoVmVjdG9yPEZsb2EKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAgaW52ZXJzZUZy
YW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT5hY3R1
YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCiAgICAgTGF5b3V0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworI2VuZGlmCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkgewogICAgICAgICBxdWFkc1tp
XS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7
CiAgICAgICAgIGlmICh6b29tICE9IDEpCkBAIC01NzAxLDcgKzU4NzEsMTEgQEAgdm9pZCBEb2N1
bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2Fs
ZShGbG9hdFJlY3QmIHIKICAgICBpZiAoZnJhbWUoKSkKICAgICAgICAgaW52ZXJzZUZyYW1lU2Nh
bGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwogCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT5hY3R1YWxWaXNp
YmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCiAgICAgTGF5b3V0UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworI2VuZGlmCiAgICAgcmVjdC5tb3Zl
KC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRlbnRSZWN0LnkoKSk7CiAgICAg
aWYgKHpvb20gIT0gMSkKICAgICAgICAgcmVjdC5zY2FsZSgxIC8gem9vbSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDZkODBiYzcuLmI2YTQzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
NjMsNiArMTYzLDkgQEAgc3RydWN0IEFubm90YXRlZFJlZ2lvblZhbHVlOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEb2N1
bWVudElPU0ZvcndhcmQuaCIKKyNlbmRpZgogY2xhc3MgVG91Y2g7CiBjbGFzcyBUb3VjaExpc3Q7
CiAjZW5kaWYKQEAgLTE4Niw2ICsxODksMTMgQEAgY2xhc3MgRm9udExvYWRlcjsKIAogdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAorI2lmIFBMQVRGT1JNKElPUykKK2NsYXNzIERldmljZU1v
dGlvbkNsaWVudDsKK2NsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudDsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiBzdHJ1Y3QgVGV4dEF1dG9T
aXppbmdIYXNoOwogY2xhc3MgVGV4dEF1dG9TaXppbmdLZXk7CkBAIC0zMTQsNiArMzI0LDExIEBA
IHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsK
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihnZXN0dXJlc3RhcnQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIoZ2VzdHVyZWNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihnZXN0dXJlZW5kKTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Up
OwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVy
cm9yKTsKQEAgLTQ0MSw2ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gZG9jdW1lbnROYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAK
ICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCisgICAgYm9vbCBpc1N5bnRo
ZXNpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bnRoZXNpemVkOyB9CiAgICAgYm9vbCBpc0hU
TUxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRDbGFzc2VzICYgSFRNTERvY3Vt
ZW50Q2xhc3M7IH0KICAgICBib29sIGlzWEhUTUxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnRDbGFzc2VzICYgWEhUTUxEb2N1bWVudENsYXNzOyB9CiAgICAgYm9vbCBpc0ltYWdl
RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50Q2xhc3NlcyAmIEltYWdlRG9jdW1l
bnRDbGFzczsgfQpAQCAtNTQ3LDYgKzU2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBPdmVycmlkZSBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IG1ldGhvZHMgdG8gZG8gYWRkaXRpb25hbCB3b3JrCiAgICAg
dmlydHVhbCB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2
ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKSBPVkVSUklERTsKIAog
ICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXc7
IH0KIApAQCAtNzgwLDYgKzc5NywxNCBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGNvbnRlbnQg
VGhlIGhlYWRlciB2YWx1ZSAodmFsdWUgb2YgdGhlIG1ldGEgdGFnJ3MgImNvbnRlbnQiIGF0dHJp
YnV0ZSkKICAgICAgKi8KICAgICB2b2lkIHByb2Nlc3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBl
cXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2
b2lkIHByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBDYWxs
ZWQgd2hlbiA8bWV0YSBuYW1lPSJhcHBsZS1tb2JpbGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiPiBj
aGFuZ2VzLgorICAgIHZvaWQgcHJvY2Vzc1dlYkFwcE9yaWVudGF0aW9ucygpOworI2VuZGlmCisg
ICAgCiAgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQoY29uc3QgU3RyaW5nJiBmZWF0dXJlcywgVmll
d3BvcnRBcmd1bWVudHM6OlR5cGUgb3JpZ2luKTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0QXJn
dW1lbnRzKCk7CiAgICAgdm9pZCBwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBw
b2xpY3kpOwpAQCAtMTA4NCw3ICsxMTA5LDE2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVsYXlp
bmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRFdmVudERlbGF5Q291bnQ7IH0KIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkRv
Y3VtZW50SU9TLmgiCisjZWxzZQogICAgIFBhc3NSZWZQdHI8VG91Y2g+IGNyZWF0ZVRvdWNoKERP
TVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBh
Z2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwg
ZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
KyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5kaWYKKworI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAgICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBk
ZXZpY2VNb3Rpb25Db250cm9sbGVyKCkgY29uc3Q7CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFdFQl9USU1JTkcpCkBAIC0xMTg0LDcgKzEyMTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KGJvb2wpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1
bWVudENsYXNzKTsKKyAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0g
RGVmYXVsdERvY3VtZW50Q2xhc3MsIGJvb2wgaXNTeW50aGVzaXplZCA9IGZhbHNlKTsKIAogICAg
IHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCkBA
IC0xNDYxLDYgKzE0OTUsOCBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnRDbGFzc0ZsYWdzIG1f
ZG9jdW1lbnRDbGFzc2VzOwogCisgICAgYm9vbCBtX2lzU3ludGhlc2l6ZWQ7CisKICAgICBib29s
IG1faXNWaWV3U291cmNlOwogICAgIGJvb2wgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2Vz
OwogICAgIGJvb2wgbV9pc1NyY2RvY0RvY3VtZW50OwpAQCAtMTUxNyw2ICsxNTUzLDM0IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gbV9zY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogVXNlIHN0ZDo6dW5pcXVlX3B0
ciBpbnN0ZWFkIG9mIE93blB0ciBhZnRlciB3ZSB1cHN0cmVhbSBEZXZpY2VNb3Rpb25DbGllbnRJ
T1Mue2gsIG1tfS4KKyAgICBPd25QdHI8RGV2aWNlTW90aW9uQ2xpZW50PiBtX2RldmljZU1vdGlv
bkNsaWVudDsKKyAgICBPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VNb3Rp
b25Db250cm9sbGVyOworICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudD4gbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudDsKKyAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyPiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKyNlbmRpZgorCisvLyBGSVhNRTog
RmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgorI2lmIFBMQVRGT1JN
KElPUykKK3B1YmxpYzoKKworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBwcm92aWRlIGEgdHdvLWxl
dmVsIHNldHRpbmc6CisgICAgLy8gICAgLSBBIHVzZXItc2V0dGFibGUgd2FudHNUZWxlcGhvbmVO
dW1iZXJQYXJzaW5nIChhdCB0aGUgUGFnZSAvIFdlYlZpZXcgbGV2ZWwpCisgICAgLy8gICAgLSBB
IHJlYWQtb25seSB0ZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCB3aGljaCBpcyBzZXQgYnkg
dGhlCisgICAgLy8gICAgICBkb2N1bWVudCBpZiBpdCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1ldGEg
dGFnLgorICAgIC8vICAgIC0gaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpID09IGlz
VGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQoKSAmJiBwYWdlKCktPnNldHRpbmdzKCktPmlz
VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKQorCisgICAgYm9vbCBpc1RlbGVwaG9uZU51
bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1RlbGVwaG9uZU51bWJlclBh
cnNpbmdFbmFibGVkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHZvaWQgc2V0UGFy
c2VyRmVhdHVyZShjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRG9jdW1l
bnQqLCB2b2lkKiB1c2VyRGF0YSk7CisgICAgdm9pZCBzZXRJc1RlbGVwaG9uZU51bWJlclBhcnNp
bmdBbGxvd2VkKGJvb2wpOworCisgICAgYm9vbCBtX2lzVGVsZXBob25lTnVtYmVyUGFyc2luZ0Fs
bG93ZWQ7CisjZW5kaWYKKwogICAgIFRpbWVyPERvY3VtZW50PiBtX3BlbmRpbmdUYXNrc1RpbWVy
OwogICAgIFZlY3RvcjxPd25QdHI8VGFzaz4+IG1fcGVuZGluZ1Rhc2tzOwogCkBAIC0xNTM1LDYg
KzE1OTksOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxUZXh0QXV0b3NpemVyPiBtX3RleHRBdXRv
c2l6ZXI7CiAjZW5kaWYKIAorICAgIHZvaWQgcGxhdGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9N
T2JqZWN0cygpOworCiAgICAgYm9vbCBtX3NjaGVkdWxlZFRhc2tzQXJlU3VzcGVuZGVkOwogICAg
IAogICAgIGJvb2wgbV92aXN1YWxVcGRhdGVzQWxsb3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CmluZGV4IGVlNjRhMWQuLjU2NDI5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzIx
LDYgKzMyMSw5IEBACiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykg
JiYgRU5BQkxFX1RPVUNIX0VWRU5UUworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYg
V1RGX1BMQVRGT1JNX0lPUworI2luY2x1ZGUgIkRvY3VtZW50SU9TLmlkbCIKKyNlbHNlCiAgICAg
W1JldHVybk5ld09iamVjdCwgUmFpc2VzRXhjZXB0aW9uXSBUb3VjaCBjcmVhdGVUb3VjaChbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVdpbmRvdyB3aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgRXZlbnRUYXJnZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IGxvbmcgaWRlbnRpZmllciwKQEAgLTMzMyw2ICszMzYsNyBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIGZsb2F0IHdlYmtpdFJvdGF0aW9uQW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9u
YWwgZmxvYXQgd2Via2l0Rm9yY2UpOwogICAgIFtSZXR1cm5OZXdPYmplY3QsIEN1c3RvbSwgUmFp
c2VzRXhjZXB0aW9uXSBUb3VjaExpc3QgY3JlYXRlVG91Y2hMaXN0KCk7CisjZW5kaWYgLy8gZGVm
aW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCiAjZW5kaWYKIAogI2lm
IGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyLmgKaW5kZXggM2ZhYTE5MC4uYjNhYzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyLmgKQEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwor
I2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnRNYXJrZXJEZXRh
aWxzOwpAQCAtNjUsNyArNzAsMTIgQEAgcHVibGljOgogICAgICAgICBEZWxldGVkQXV0b2NvcnJl
Y3Rpb24gPSAxIDw8IDgsCiAgICAgICAgIC8vIFRoaXMgbWFya2VyIGluZGljYXRlcyB0aGF0IHRo
ZSByYW5nZSBvZiB0ZXh0IHNwYW5uZWQgYnkgdGhlIG1hcmtlciBpcyBlbnRlcmVkIGJ5IHZvaWNl
IGRpY3RhdGlvbiwKICAgICAgICAgLy8gYW5kIGl0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0LgotICAg
ICAgICBEaWN0YXRpb25BbHRlcm5hdGl2ZXMgPSAxIDw8IDkKKyAgICAgICAgRGljdGF0aW9uQWx0
ZXJuYXRpdmVzID0gMSA8PCA5LAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gRklYTUU6
IGlPUyBoYXMgaXRzIG93biBkaWN0YXRpb24gbWFya3MuIGlPUyBzaG91bGQgdXNlIE9wZW5Tb3Vy
Y2Uncy4KKyAgICAgICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyA9IDEgPDwgMTAs
CisgICAgICAgIERpY3RhdGlvblJlc3VsdCA9IDEgPDwgMTEsCisjZW5kaWYKICAgICB9OwogCiAg
ICAgY2xhc3MgTWFya2VyVHlwZXMgewpAQCAtODcsNyArOTcsMTEgQEAgcHVibGljOgogICAgIGNs
YXNzIEFsbE1hcmtlcnMgOiBwdWJsaWMgTWFya2VyVHlwZXMgewogICAgIHB1YmxpYzoKICAgICAg
ICAgQWxsTWFya2VycygpCisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgICAgIDogTWFya2Vy
VHlwZXMoU3BlbGxpbmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFjZW1lbnQgfCBDb3Jy
ZWN0aW9uSW5kaWNhdG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgQXV0b2NvcnJlY3RlZCB8IFNw
ZWxsQ2hlY2tpbmdFeGVtcHRpb24gfCBEZWxldGVkQXV0b2NvcnJlY3Rpb24gfCBEaWN0YXRpb25B
bHRlcm5hdGl2ZXMpCisjZWxzZQorICAgICAgICAgICAgOiBNYXJrZXJUeXBlcyhTcGVsbGluZyB8
IEdyYW1tYXIgfCBUZXh0TWF0Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3Ig
fCBSZWplY3RlZENvcnJlY3Rpb24gfCBBdXRvY29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1w
dGlvbiB8IERlbGV0ZWRBdXRvY29ycmVjdGlvbiB8IERpY3RhdGlvbkFsdGVybmF0aXZlcyB8IERp
Y3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMgfCBEaWN0YXRpb25SZXN1bHQpCisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKQEAgLTk1LDYg
KzEwOSw5IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudE1hcmtlcigpOwogICAgIERvY3VtZW50TWFy
a2VyKE1hcmtlclR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogICAgIERvY3VtZW50TWFya2VyKE1hcmtlclR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBEb2N1bWVudE1hcmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsK
KyNlbmRpZgogICAgIERvY3VtZW50TWFya2VyKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQsIGJvb2wgYWN0aXZlTWF0Y2gpOwogICAgIERvY3VtZW50TWFya2VyKE1hcmtl
clR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIFBhc3NSZWZQ
dHI8RG9jdW1lbnRNYXJrZXJEZXRhaWxzPik7CiAKQEAgLTExNSw2ICsxMzIsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RW5kT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgeyBtX2VuZE9mZnNldCA9
IG9mZnNldDsgfQogICAgIHZvaWQgc2hpZnRPZmZzZXRzKGludCBkZWx0YSk7CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlcygpIGNvbnN0
OworICAgIHZvaWQgc2V0QWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGluZGV4KTsK
KyAgICBpZCBtZXRhZGF0YSgpIGNvbnN0OworICAgIHZvaWQgc2V0TWV0YWRhdGEoaWQpOworI2Vu
ZGlmCisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRG9jdW1lbnRNYXJrZXImIG8pIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gdHlwZSgpID09IG8udHlwZSgpICYmIHN0YXJ0T2Zmc2V0
KCkgPT0gby5zdGFydE9mZnNldCgpICYmIGVuZE9mZnNldCgpID09IG8uZW5kT2Zmc2V0KCk7CkBA
IC0xMjksNiArMTUzLDExIEBAIHByaXZhdGU6CiAgICAgTWFya2VyVHlwZSBtX3R5cGU7CiAgICAg
dW5zaWduZWQgbV9zdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX2VuZE9mZnNldDsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vOTQzMTI0OT4u
CisgICAgVmVjdG9yPFN0cmluZz4gbV9hbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPGlkPiBt
X21ldGFkYXRhOworI2VuZGlmCiAgICAgUmVmUHRyPERvY3VtZW50TWFya2VyRGV0YWlscz4gbV9k
ZXRhaWxzOwogfTsKIApAQCAtMTM3LDYgKzE2Niw0MyBAQCBpbmxpbmUgRG9jdW1lbnRNYXJrZXJE
ZXRhaWxzKiBEb2N1bWVudE1hcmtlcjo6ZGV0YWlscygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGV0
YWlscy5nZXQoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2lubGluZSBEb2N1bWVudE1hcmtl
cjo6RG9jdW1lbnRNYXJrZXIoTWFya2VyVHlwZSB0eXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YWx0ZXJuYXRpdmVzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQorICAgIDogbV90eXBlKHR5cGUp
CisgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQorICAgICwgbV9lbmRPZmZzZXQoZW5k
T2Zmc2V0KQorICAgICwgbV9hbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKQorICAgICwgbV9tZXRh
ZGF0YShtZXRhZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzExMzA2NDIy
PiBpT1Mgc2hvdWxkIGludmVzdGlnYXRlIGNsZWFuZXIgbWVyZ2Ugd2l0aCBUb1QgRGljdGF0aW9u
IHN1cHBvcnQKKyAgICBBU1NFUlQodHlwZSA9PSBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzIHx8IHR5cGUgPT0gRGljdGF0aW9uUmVzdWx0KTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oSU9TKQoraW5saW5lIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBEb2N1bWVudE1hcmtlcjo6YWx0
ZXJuYXRpdmVzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gbV9hbHRlcm5h
dGl2ZXM7Cit9CisKK2lubGluZSB2b2lkIERvY3VtZW50TWFya2VyOjpzZXRBbHRlcm5hdGl2ZShj
b25zdCBTdHJpbmcmIGFsdGVybmF0aXZlLCBzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1f
dHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyk7
CisgICAgbV9hbHRlcm5hdGl2ZXNbaW5kZXhdID0gYWx0ZXJuYXRpdmU7Cit9CisKK2lubGluZSBp
ZCBEb2N1bWVudE1hcmtlcjo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFk
YXRhLmdldCgpOworfQorCitpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2V0TWV0YWRhdGEo
aWQgbWV0YWRhdGEpCit7CisgICAgbV9tZXRhZGF0YSA9IG1ldGFkYXRhOworfQorI2VuZGlmCisK
IGNsYXNzIERvY3VtZW50TWFya2VyRGV0YWlscyA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50
TWFya2VyRGV0YWlscz4KIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggOTA5Y2Q3Ni4uYmNjNzM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTEwNiw2
ICsxMDYsNDMgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1h
cmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXYKICAgICB9CiB9CiAKKyNpZiBQTEFU
Rk9STShJT1MpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdl
KiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgU3RyaW5nIGRlc2NyaXB0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBjb25zdCBSZXRhaW5Q
dHI8aWQ+JiBtZXRhZGF0YSkKK3sKKyAgICAvLyBVc2UgYSBUZXh0SXRlcmF0b3IgdG8gdmlzaXQg
dGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSByYW5nZSBjb3ZlcnMuCisgICAgZm9y
IChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5kKCk7IG1h
cmtlZFRleHQuYWR2YW5jZSgpKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNlID0g
bWFya2VkVGV4dC5yYW5nZSgpOworICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENv
bnRhaW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCks
IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uLCBpbnRlcnByZXRhdGlvbnMsIG1l
dGFkYXRhKSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRk
RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSogcmFuZ2UsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpCit7CisgICAgQVNTRVJUKGludGVycHJl
dGF0aW9ucy5zaXplKCkgPiAxKTsKKyAgICBpZiAoaW50ZXJwcmV0YXRpb25zLnNpemUoKSA8PSAx
KQorICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgbnVtYmVyT2ZBbHRlcm5hdGl2ZXMgPSBp
bnRlcnByZXRhdGlvbnMuc2l6ZSgpIC0gMTsKKyAgICAvLyBVc2UgYSBUZXh0SXRlcmF0b3IgdG8g
dmlzaXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSByYW5nZSBjb3ZlcnMuCisg
ICAgZm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5k
KCk7IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBp
ZWNlID0gbWFya2VkVGV4dC5yYW5nZSgpOworICAgICAgICBEb2N1bWVudE1hcmtlciBtYXJrZXIo
RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsIHRleHRQaWVj
ZS0+c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgIiIsIFZlY3RvcjxTdHJp
bmc+KG51bWJlck9mQWx0ZXJuYXRpdmVzKSwgUmV0YWluUHRyPGlkPigpKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkFsdGVybmF0aXZlczsgKytpKQorICAgICAgICAg
ICAgbWFya2VyLnNldEFsdGVybmF0aXZlKGludGVycHJldGF0aW9uc1tpICsgMV0sIGkpOworICAg
ICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBtYXJrZXIpOworICAg
IH0KK30KKwordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3Vs
dE1hcmtlcihSYW5nZSogcmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQorewor
ICAgIC8vIFVzZSBhIFRleHRJdGVyYXRvciB0byB2aXNpdCB0aGUgcG90ZW50aWFsbHkgbXVsdGlw
bGUgbm9kZXMgdGhlIHJhbmdlIGNvdmVycy4KKyAgICBmb3IgKFRleHRJdGVyYXRvciBtYXJrZWRU
ZXh0KHJhbmdlKTsgIW1hcmtlZFRleHQuYXRFbmQoKTsgbWFya2VkVGV4dC5hZHZhbmNlKCkpIHsK
KyAgICAgICAgUmVmUHRyPFJhbmdlPiB0ZXh0UGllY2UgPSBtYXJrZWRUZXh0LnJhbmdlKCk7Cisg
ICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFy
a2VyKERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25SZXN1bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZz
ZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCks
IG1ldGFkYXRhKSk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpyZW1vdmVNYXJrZXJzKFJhbmdlKiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGVzIG1hcmtlclR5cGVzLCBSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlck9yTm90
IHNob3VsZFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKQogewogICAgIGZvciAoVGV4
dEl0ZXJhdG9yIG1hcmtlZFRleHQocmFuZ2UpOyAhbWFya2VkVGV4dC5hdEVuZCgpOyBtYXJrZWRU
ZXh0LmFkdmFuY2UoKSkgewpAQCAtMTM2LDYgKzE3MywxOCBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUqIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2VyJiBu
ZXdNYQogICAgIGlmICghbGlzdCkgewogICAgICAgICBsaXN0ID0gYWRvcHRQdHIobmV3IE1hcmtl
ckxpc3QpOwogICAgICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdN
YXJrZXIpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgfSBlbHNlIGlmIChuZXdNYXJrZXIudHlw
ZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzIHx8
IG5ld01hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3VsdCkgewor
ICAgICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0YXRpb24gbWFya2Vycy4KKyAgICAgICAgc2l6
ZV90IGk7CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1hcmtlcnMgPSBsaXN0LT5zaXplKCk7Cisg
ICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZk1hcmtlcnM7ICsraSkgeworICAgICAgICAg
ICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAo
bWFya2VyLnN0YXJ0T2Zmc2V0KCkgPiBuZXdNYXJrZXIuc3RhcnRPZmZzZXQoKSkKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsaXN0LT5pbnNlcnQoaSwgUmVuZGVy
ZWREb2N1bWVudE1hcmtlcihuZXdNYXJrZXIpKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIgdG9JbnNlcnQobmV3TWFya2VyKTsKICAgICAgICAg
c2l6ZV90IG51bU1hcmtlcnMgPSBsaXN0LT5zaXplKCk7CkBAIC01MjEsOCArNTcwLDE2IEBAIHZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9kZSogbm9kZSwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgZG9jRGly
dHkgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsaXN0LT5zaXplKCk7ICsr
aSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxpc3QtPnNpemUoKTsgKSB7CiAgICAg
ICAgIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IGxpc3QtPmF0KGkpOworI2lmIFBM
QVRGT1JNKElPUykKKyAgICAgICAgaW50IHRhcmdldFN0YXJ0T2Zmc2V0ID0gbWFya2VyLnN0YXJ0
T2Zmc2V0KCkgKyBkZWx0YTsKKyAgICAgICAgaW50IHRhcmdldEVuZE9mZnNldCA9IG1hcmtlci5l
bmRPZmZzZXQoKSArIGRlbHRhOworICAgICAgICBpZiAodGFyZ2V0U3RhcnRPZmZzZXQgPj0gbm9k
ZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgfHwgdGFyZ2V0RW5kT2Zmc2V0IDw9IDApIHsKKyAgICAg
ICAgICAgIGxpc3QtPnJlbW92ZShpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCgpID49IHN0YXJ0T2Zmc2V0
KSB7CiAgICAgICAgICAgICBBU1NFUlQoKGludCltYXJrZXIuc3RhcnRPZmZzZXQoKSArIGRlbHRh
ID49IDApOwogICAgICAgICAgICAgbWFya2VyLnNoaWZ0T2Zmc2V0cyhkZWx0YSk7CkBAIC01MzAs
NyArNTg3LDI0IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMo
Tm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGluCiAKICAgICAgICAgICAgIC8vIE1h
cmtlciBtb3ZlZCwgc28gcHJldmlvdXNseS1jb21wdXRlZCByZW5kZXJlZCByZWN0YW5nbGUgaXMg
bm93IGludmFsaWQKICAgICAgICAgICAgIG1hcmtlci5pbnZhbGlkYXRlKCk7CisjaWYgIVBMQVRG
T1JNKElPUykKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IEluc2VydGluZyB0
ZXh0IGluc2lkZSBhIERvY3VtZW50TWFya2VyIGRvZXMgbm90IGdyb3cgdGhlIG1hcmtlci4KKyAg
ICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1
MDQ+LgorICAgICAgICB9IGVsc2UgaWYgKG1hcmtlci5lbmRPZmZzZXQoKSA+IHN0YXJ0T2Zmc2V0
KSB7CisgICAgICAgICAgICBpZiAobWFya2VyLmVuZE9mZnNldCgpICsgZGVsdGEgPD0gbWFya2Vy
LnN0YXJ0T2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5yZW1vdmUoaSk7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXJrZXIu
c2V0RW5kT2Zmc2V0KHRhcmdldEVuZE9mZnNldCA8IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgp
ID8gdGFyZ2V0RW5kT2Zmc2V0IDogbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkpOworICAgICAg
ICAgICAgZG9jRGlydHkgPSB0cnVlOworCisgICAgICAgICAgICAvLyBNYXJrZXIgbW92ZWQsIHNv
IHByZXZpb3VzbHktY29tcHV0ZWQgcmVuZGVyZWQgcmVjdGFuZ2xlIGlzIG5vdyBpbnZhbGlkCisg
ICAgICAgICAgICBtYXJrZXIuaW52YWxpZGF0ZSgpOwogICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgKytpOwogICAgIH0KIAogICAgIC8vIHJlcGFpbnQgdGhlIGFmZmVjdGVkIG5vZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA5MjRlYmJi
Li43Njk0NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCkBAIC01Myw2ICs1MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXJUb05v
ZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJrZXJEZXRhaWxzPik7CiAgICAgdm9pZCBhZGRU
ZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBib29sIGFjdGl2ZU1hdGNoKTsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJw
cmV0YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9pZCBhZGRE
aWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlKiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGludGVycHJldGF0aW9ucyk7CisgICAgdm9pZCBhZGREaWN0YXRpb25SZXN1bHRN
YXJrZXIoUmFuZ2UqLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisjZW5kaWYKIAog
ICAgIHZvaWQgY29weU1hcmtlcnMoTm9kZSogc3JjTm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IGludCBsZW5ndGgsIE5vZGUqIGRzdE5vZGUsIGludCBkZWx0YSk7CiAgICAgYm9vbCBoYXNNYXJr
ZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1Y2Y0YTNlLi4wYzM4MjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDAxLDcgKzIwMDEsMjAgQEAgdm9pZCBFbGVtZW50
Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIH0KICAgICAgICAgCiAgICAgY2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRl
KCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZvY3VzaW5nIGEgZm9ybSBlbGVtZW50IHRy
aWdnZXJzIGFuaW1hdGlvbiBpbiBVSUtpdCB0byBzY3JvbGwgdG8gdGhlIHJpZ2h0IHBvc2l0aW9u
LgorICAgIC8vIENhbGxpbmcgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKCkgd291bGQgZ2VuZXJhdGUg
YW4gdW5uZWNlc3NhcnkgY2FsbCB0byBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbigpLAor
ICAgIC8vIHdoaWNoIHdvdWxkIGp1bXAgdXMgYXJvdW5kIGR1cmluZyB0aGlzIGFuaW1hdGlvbi4g
U2VlIDxyZGFyOi8vcHJvYmxlbS82Njk5NzQxPi4KKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBkb2N1
bWVudCgpLnZpZXcoKTsKKyAgICBib29sIGlzRm9ybUNvbnRyb2wgPSB2aWV3ICYmIGlzRm9ybUNv
bnRyb2xFbGVtZW50KCk7CisgICAgaWYgKGlzRm9ybUNvbnRyb2wpCisgICAgICAgIHZpZXctPnNl
dFByb2hpYml0c1Njcm9sbGluZyh0cnVlKTsKKyNlbmRpZgogICAgIHVwZGF0ZUZvY3VzQXBwZWFy
YW5jZShyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBp
ZiAoaXNGb3JtQ29udHJvbCkKKyAgICAgICAgdmlldy0+c2V0UHJvaGliaXRzU2Nyb2xsaW5nKGZh
bHNlKTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZUFm
dGVyQXR0YWNoSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggNmZmZTFkYS4uMGZhOWE2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMjUsNiArMTI1LDExIEBAIHB1YmxpYzoKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShJ
T1NfR0VTVFVSRV9FVkVOVFMpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihn
ZXN0dXJlc3RhcnQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVy
ZWNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihnZXN0dXJlZW5k
KTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5jcHAKaW5kZXggNzVjYWE5NC4uNWMxZmViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBNb3VzZU9yRm9jdXNF
dmVudENvbnRleHQ6OmlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKIFRvdWNoRXZlbnRDb250ZXh0OjpUb3VjaEV2ZW50
Q29udGV4dChQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1
cnJlbnRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCkKICAgICA6IEV2ZW50
Q29udGV4dChub2RlLCBjdXJyZW50VGFyZ2V0LCB0YXJnZXQpCiAgICAgLCBtX3RvdWNoZXMoVG91
Y2hMaXN0OjpjcmVhdGUoKSkKQEAgLTEzMiw2ICsxMzIsNiBAQCB2b2lkIFRvdWNoRXZlbnRDb250
ZXh0OjpjaGVja1JlYWNoYWJpbGl0eShUb3VjaExpc3QqIHRvdWNoTGlzdCkgY29uc3QKIH0KICNl
bmRpZgogCi0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNlbmRpZiAvLyBFTkFCTEUo
VE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250
ZXh0LmgKaW5kZXggZjM4OWNkZC4uM2VjYTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
aApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsK
LSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQ
TEFURk9STShJT1MpCiBjbGFzcyBUb3VjaExpc3Q7CiAjZW5kaWYKIApAQCAtODIsNyArODIsNyBA
QCBpbmxpbmUgTW91c2VPckZvY3VzRXZlbnRDb250ZXh0JiB0b01vdXNlT3JGb2N1c0V2ZW50Q29u
dGV4dChFdmVudENvbnRleHQmIGV2ZW50QwogfQogCiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiBjbGFzcyBUb3Vj
aEV2ZW50Q29udGV4dCBGSU5BTCA6IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgogICAg
IFRvdWNoRXZlbnRDb250ZXh0KFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8RXZlbnRUYXJn
ZXQ+IGN1cnJlbnRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCk7CkBAIC0x
MzIsNyArMTMyLDcgQEAgaW5saW5lIFRvdWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDb250
ZXh0KEV2ZW50Q29udGV4dCogZXZlbnRDb250ZXh0KQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFldmVudENvbnRleHQgfHwgZXZlbnRDb250ZXh0LT5pc1RvdWNoRXZlbnRD
b250ZXh0KCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Q29udGV4dCo+KGV2
ZW50Q29udGV4dCk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNlbmRpZiAv
LyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaWZuZGVmIE5ERUJV
RwogaW5saW5lIGJvb2wgRXZlbnRDb250ZXh0Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdl
dCogdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBjMTU4
NGU2Li5mYTk0ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAt
MTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBFdmVudENvbnRleHQqIGxhc3RDb250ZXh0SWZF
eGlzdHMoKSB7IHJldHVybiBtX3BhdGguaXNFbXB0eSgpID8gMCA6IG1fcGF0aC5sYXN0KCkuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgdm9pZCB1cGRhdGVUb3VjaExpc3Rz
SW5FdmVudFBhdGgoY29uc3QgVG91Y2hMaXN0KiwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlz
dFR5cGUpOwogI2VuZGlmCiAKQEAgLTExNCwxNCArMTE0LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX3JlbGF0ZWROb2RlVHJlZVNjb3BlKHJlbGF0ZWROb2RlLnRyZWVTY29wZSgpKQogICAgICAg
ICAsIG1fcmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlU2NvcGUobnVsbHB0cikKICAgICAgICAgLCBt
X2N1cnJlbnRUcmVlU2NvcGUobnVsbHB0cikKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgICAgICwgbV90b3Vj
aCgwKQogICAgICAgICAsIG1fdG91Y2hMaXN0VHlwZShUb3VjaEV2ZW50Q29udGV4dDo6Tm90VG91
Y2hMaXN0KQogI2VuZGlmCiAgICAgewogICAgIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBFdmVudFJl
bGF0ZWROb2RlUmVzb2x2ZXIoVG91Y2gmIHRvdWNoLCBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hM
aXN0VHlwZSB0b3VjaExpc3RUeXBlKQogICAgICAgICA6IG1fcmVsYXRlZE5vZGUoKnRvdWNoLnRh
cmdldCgpLT50b05vZGUoKSkKICAgICAgICAgLCBtX3JlbGF0ZWROb2RlVHJlZVNjb3BlKG1fcmVs
YXRlZE5vZGUudHJlZVNjb3BlKCkpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIFRvdWNoKiB0b3VjaCgpIGNvbnN0IHsgcmV0dXJu
IG1fdG91Y2g7IH0KICAgICBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSB0b3VjaExp
c3RUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaExpc3RUeXBlOyB9CiAjZW5kaWYKQEAgLTE2
OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFRyZWVTY29wZSYgbV9yZWxhdGVkTm9k
ZVRyZWVTY29wZTsKICAgICBOb2RlKiBtX3JlbGF0ZWROb2RlSW5DdXJyZW50VHJlZVNjb3BlOwog
ICAgIFRyZWVTY29wZSogbV9jdXJyZW50VHJlZVNjb3BlOwotI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBUb3Vj
aCogbV90b3VjaDsKICAgICBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSBtX3RvdWNo
TGlzdFR5cGU7CiAjZW5kaWYKQEAgLTMxMSw3ICszMTEsNyBAQCBib29sIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hFdmVudChOb2RlKiBvcmlnaW4sIFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50
KQogCiAgICAgaWYgKEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gZXZlbnQtPnJlbGF0ZWRU
YXJnZXQoKSkKICAgICAgICAgZXZlbnRQYXRoLnNldFJlbGF0ZWRUYXJnZXQoKnJlbGF0ZWRUYXJn
ZXQpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykg
JiYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoZXZlbnQtPmlzVG91Y2hFdmVudCgpKQogICAgICAg
ICBldmVudFBhdGgudXBkYXRlVG91Y2hMaXN0cygqdG9Ub3VjaEV2ZW50KGV2ZW50LmdldCgpKSk7
CiAjZW5kaWYKQEAgLTM5NCw3ICszOTQsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0
YXJnZXROb2RlLCBFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBpbkRvY3VtZW50ID0gdGFyZ2V0Tm9k
ZS5pbkRvY3VtZW50KCk7CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQgPSB0YXJnZXROb2RlLmlzU1ZH
RWxlbWVudCgpOwogICAgIGJvb2wgaXNNb3VzZU9yRm9jdXNFdmVudCA9IGV2ZW50LmlzTW91c2VF
dmVudCgpIHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBib29sIGlz
VG91Y2hFdmVudCA9IGV2ZW50LmlzVG91Y2hFdmVudCgpOwogI2VuZGlmCiAgICAgRXZlbnRUYXJn
ZXQqIHRhcmdldCA9IDA7CkBAIC00MDcsNyArNDA3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgo
Tm9kZSYgdGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgRXZlbnRUYXJnZXQm
IGN1cnJlbnRUYXJnZXQgPSBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSk7
CiAgICAgICAgICAgICBpZiAoaXNNb3VzZU9yRm9jdXNFdmVudCkKICAgICAgICAgICAgICAgICBt
X3BhdGguYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihu
b2RlLCAmY3VycmVudFRhcmdldCwgdGFyZ2V0KSk7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAg
ZWxzZSBpZiAoaXNUb3VjaEV2ZW50KQogICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRh
cmdldCkpOwogI2VuZGlmCkBAIC00MjQsNyArNDI0LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgo
Tm9kZSYgdGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykK
IHN0YXRpYyB2b2lkIGFkZFJlbGF0ZWROb2RlUmVzb2x2ZXJzRm9yVG91Y2hMaXN0KFZlY3RvcjxF
dmVudFJlbGF0ZWROb2RlUmVzb2x2ZXIsIDE2PiYgdG91Y2hUYXJnZXRSZXNvbHZlcnMsIFRvdWNo
TGlzdCogdG91Y2hMaXN0LCBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSB0eXBlKQog
ewogICAgIGNvbnN0IHNpemVfdCB0b3VjaExpc3RTaXplID0gdG91Y2hMaXN0LT5sZW5ndGgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDZhMzY2MWUuLjA0ODgzOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMjY1LDYgKzI2NSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgXAogICAgIG1hY3JvKHNlY3VyaXR5cG9saWN5dmlvbGF0aW9uKSBcCiAgICAgXAorICAgIC8q
IEVOQUJMRShJT1NfQUlSUExBWSkgKi8gXAorICAgIG1hY3JvKHdlYmtpdGN1cnJlbnRwbGF5YmFj
a3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkKSBcCisgICAgbWFjcm8od2Via2l0cGxheWJhY2t0YXJn
ZXRhdmFpbGFiaWxpdHljaGFuZ2VkKSBcCisgICAgLyogRW5kIG9mIEVOQUJMRShJT1NfQUlSUExB
WSkgKi8gXAorICAgIFwKKyAgICAvKiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAqLyBcCisg
ICAgbWFjcm8oZ2VzdHVyZXN0YXJ0KSBcCisgICAgbWFjcm8oZ2VzdHVyZWNoYW5nZSkgXAorICAg
IG1hY3JvKGdlc3R1cmVlbmQpIFwKKyAgICAvKiBFbmQgb2YgRU5BQkxFKElPU19HRVNUVVJFX0VW
RU5UUykgKi8gXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggMzk4ZTA0Mi4uZDBmMzEzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaW4KQEAgLTU5LDQgKzU5LDYgQEAgVHJhY2tFdmVudCBjb25kaXRpb25hbD1WSURF
T19UUkFDSwogQ1NTRm9udEZhY2VMb2FkRXZlbnQgY29uZGl0aW9uYWw9Rk9OVF9MT0FEX0VWRU5U
UwogU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCBjb25kaXRpb25hbD1DU1BfTkVYVAogVUlS
ZXF1ZXN0RXZlbnQgY29uZGl0aW9uYWw9SU5ESUVfVUkKK0dlc3R1cmVFdmVudCBjb25kaXRpb25h
bD1JT1NfR0VTVFVSRV9FVkVOVFMKK1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZl
bnQgY29uZGl0aW9uYWw9SU9TX0FJUlBMQVkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAKaW5kZXggMWNmZDRkMS4uZDNiOGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwCkBAIC00Nyw4ICs0NywxMiBAQCBzdGF0aWMgTGF5b3V0U2l6
ZSBjb250ZW50c1Njcm9sbE9mZnNldChBYnN0cmFjdFZpZXcqIGFic3RyYWN0VmlldykKICAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcp
CiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1l
U2NhbGVGYWN0b3IoKTsKICAgICByZXR1cm4gTGF5b3V0U2l6ZShmcmFtZVZpZXctPnNjcm9sbFgo
KSAvIHNjYWxlRmFjdG9yLCBmcmFtZVZpZXctPnNjcm9sbFkoKSAvIHNjYWxlRmFjdG9yKTsKKyNl
bHNlCisgICAgcmV0dXJuIExheW91dFNpemUoZnJhbWVWaWV3LT5hY3R1YWxTY3JvbGxYKCksIGZy
YW1lVmlldy0+YWN0dWFsU2Nyb2xsWSgpKTsKKyNlbmRpZgogfQogCiBNb3VzZVJlbGF0ZWRFdmVu
dDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGRvdWJsZSB0aW1lc3RhbXAsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiBhYnN0cmFjdFZpZXcsCkBAIC03MCw3ICs3NCwxMSBAQCBNb3VzZVJlbGF0
ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgY2FuQnViYgogICAgIEZyYW1lKiBmcmFtZSA9IHZpZXcoKSA/IHZpZXcoKS0+ZnJhbWUo
KSA6IDA7CiAgICAgaWYgKGZyYW1lICYmICFpc1NpbXVsYXRlZCkgewogICAgICAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigp
OworI2Vsc2UKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LT5hY3R1YWxW
aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOworI2VuZGlmCiAgICAgICAgICAgICBhZGp1
c3RlZFBhZ2VMb2NhdGlvbiA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dMb2Nh
dGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEgLyAoZnJhbWUtPnBhZ2Va
b29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpKTsKICAgICAgICAgICAgIGlm
IChzY2FsZUZhY3RvciAhPSAxLjBmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZjM1NDMwMC4uN2Ri
ZWY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzE1LDggKzMxNSwxMyBAQCBOb2RlOjp+Tm9kZSgp
CiAKIHZvaWQgTm9kZTo6d2lsbEJlRGVsZXRlZEZyb20oRG9jdW1lbnQqIGRvY3VtZW50KQogewot
ICAgIGlmIChoYXNFdmVudFRhcmdldERhdGEoKSkKKyAgICBpZiAoaGFzRXZlbnRUYXJnZXREYXRh
KCkpIHsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgICAg
IGlmIChkb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVUb3VjaEV2ZW50TGlz
dGVuZXIodGhpcywgdHJ1ZSk7CisjZW5kaWYKICAgICAgICAgY2xlYXJFdmVudFRhcmdldERhdGEo
KTsKKyAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlID0gZG9jdW1lbnQtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQpAQCAtNzgzLDcg
Kzc4OCw3IEBAIHZvaWQgTm9kZTo6Y2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEF0dHJpYnV0ZS1zcGVjaWZpYyBjaGVj
a3MgYXJlIGluIEF0dHI6OnNldFByZWZpeCgpLgogfQogCi1ib29sIE5vZGU6OmlzRGVzY2VuZGFu
dE9mKGNvbnN0IE5vZGUgKm90aGVyKSBjb25zdAorYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPZihj
b25zdCBOb2RlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBvdGhlciBp
cyBhbiBhbmNlc3RvciBvZiB0aGlzLCBvdGhlcndpc2UgZmFsc2UKICAgICBpZiAoIW90aGVyIHx8
ICFvdGhlci0+aGFzQ2hpbGROb2RlcygpIHx8IGluRG9jdW1lbnQoKSAhPSBvdGhlci0+aW5Eb2N1
bWVudCgpKQpAQCAtNzk3LDYgKzgwMiwxOCBAQCBib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNv
bnN0IE5vZGUgKm90aGVyKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb2Rl
Ojppc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAoIW90aGVyKSAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChp
c0Rlc2NlbmRhbnRPZihvdGhlcikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IE5v
ZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSA9IGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsK
KyAgICBpZiAoIXNoYWRvd0FuY2VzdG9yTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBzaGFkb3dBbmNlc3Rvck5vZGUgPT0gb3RoZXIgfHwgc2hhZG93QW5jZXN0b3JOb2Rl
LT5pc0Rlc2NlbmRhbnRPZihvdGhlcik7Cit9CisKIGJvb2wgTm9kZTo6Y29udGFpbnMoY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUpCkBAIC0xNzc5LDYgKzE3OTYsMjgg
QEAgc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUKICAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNU
b3VjaEV2ZW50VHlwZShldmVudFR5cGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgp
LmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKHRhcmdldE5vZGUpOwogCisjaWYgUExBVEZPUk0oSU9T
KQorICAgIGlmICh0YXJnZXROb2RlID09ICZ0YXJnZXROb2RlLT5kb2N1bWVudCgpICYmIGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRv
Y3VtZW50KCkuZG9tV2luZG93KCktPmluY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQo
KTsKKworICAgIC8vIEZJWE1FOiBXb3VsZCBpdCBiZSBzdWZmaWNpZW50IHRvIHNwZWNpYWwtY2Fz
ZSB0aGlzIGNvZGUgZm9yIDxib2R5PiBhbmQgPGZyYW1lc2V0Pj8KKyAgICAvLworICAgIC8vIFRo
aXMgY29kZSB3YXMgYWRkZWQgdG8gYWRkcmVzcyA8cmRhcjovL3Byb2JsZW0vNTg0NjQ5Mj4gT25v
cmllbnRhdGlvbmNoYW5nZSBldmVudCBub3Qgd29ya2luZyBmb3IgZG9jdW1lbnQuYm9keS4KKyAg
ICAvLyBGb3J3YXJkIHRoaXMgY2FsbCB0byBhZGRFdmVudExpc3RlbmVyKCkgdG8gdGhlIHdpbmRv
dyBzaW5jZSB0aGVzZSBhcmUgd2luZG93LW9ubHkgZXZlbnRzLgorICAgIGlmIChldmVudFR5cGUg
PT0gZXZlbnROYW1lcygpLm9yaWVudGF0aW9uY2hhbmdlRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5yZXNpemVFdmVudCkKKyAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5k
b21XaW5kb3coKS0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0
dXJlKTsKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGV2ZW50TmFtZXMoKS5p
c1RvdWNoRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50
KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKHRhcmdldE5vZGUpOworI2VuZGlmCisjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQorCisjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykgJiYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJl
c3RhcnRFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmdlc3R1cmVjaGFuZ2VFdmVu
dCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmdlc3R1cmVlbmRFdmVudCkKKyAgICAgICAg
dGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlzdGVuZXIodGFyZ2V0Tm9kZSk7
CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNzk5LDYgKzE4MzgsMjcgQEAg
c3RhdGljIGlubGluZSBib29sIHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9k
ZSwgY29uc3QgQXRvbWljU3RyaW5nJgogICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNo
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlk
UmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIodGFyZ2V0Tm9kZSk7CiAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCkKKyAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kb21XaW5kb3coKS0+ZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgp
OworCisgICAgLy8gRklYTUU6IFdvdWxkIGl0IGJlIHN1ZmZpY2llbnQgdG8gc3BlY2lhbC1jYXNl
IHRoaXMgY29kZSBmb3IgPGJvZHk+IGFuZCA8ZnJhbWVzZXQ+PyBTZWUgPHJkYXI6Ly9wcm9ibGVt
LzE1NjQ3ODIzPi4KKyAgICAvLyBUaGlzIGNvZGUgd2FzIGFkZGVkIHRvIGFkZHJlc3MgPHJkYXI6
Ly9wcm9ibGVtLzU4NDY0OTI+IE9ub3JpZW50YXRpb25jaGFuZ2UgZXZlbnQgbm90IHdvcmtpbmcg
Zm9yIGRvY3VtZW50LmJvZHkuCisgICAgLy8gRm9yd2FyZCB0aGlzIGNhbGwgdG8gcmVtb3ZlRXZl
bnRMaXN0ZW5lcigpIHRvIHRoZSB3aW5kb3cgc2luY2UgdGhlc2UgYXJlIHdpbmRvdy1vbmx5IGV2
ZW50cy4KKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5n
ZUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkucmVzaXplRXZlbnQpCisgICAgICAg
IHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIo
ZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShldmVudFR5cGUpKQor
ICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcih0
YXJnZXROb2RlKTsKKyNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2lmIEVOQUJM
RShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZ2VzdHVyZXN0YXJ0RXZlbnQgfHwgZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5nZXN0dXJlY2hhbmdlRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5nZXN0dXJlZW5kRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkucmVt
b3ZlVG91Y2hFdmVudExpc3RlbmVyKHRhcmdldE5vZGUpOworI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMTk2OSw3ICsyMDI5LDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFNjb3Bl
ZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiBib29sIE5vZGU6OmRpc3BhdGNoRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChldmVu
dC0+aXNUb3VjaEV2ZW50KCkpCiAgICAgICAgIHJldHVybiBkaXNwYXRjaFRvdWNoRXZlbnQoYWRv
cHRSZWYodG9Ub3VjaEV2ZW50KGV2ZW50LmxlYWtSZWYoKSkpKTsKICNlbmRpZgpAQCAtMTk5OCw3
ICsyMDU4LDcgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRldGFp
bCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW4KICAgICByZXR1cm4gZXZlbnQtPmRl
ZmF1bHRIYW5kbGVkKCk7CiB9CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiBib29sIE5vZGU6OmRpc3BhdGNoVG91
Y2hFdmVudChQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+IGV2ZW50KQogewogICAgIHJldHVybiBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgZXZlbnQpOwpAQCAtMjA4MSw2ICsyMTQx
LDE5IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAg
ICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKHN0YXJ0Tm9kZSwg
d2hlZWxFdmVudCk7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQor
ICAgIH0gZWxzZSBpZiAoZXZlbnQtPmV2ZW50SW50ZXJmYWNlKCkgPT0gVG91Y2hFdmVudEludGVy
ZmFjZVR5cGUgJiYgZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkgewor
ICAgICAgICBUb3VjaEV2ZW50KiB0b3VjaEV2ZW50ID0gc3RhdGljX2Nhc3Q8VG91Y2hFdmVudCo+
KGV2ZW50KTsKKworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgd2hpbGUgKHJlbmRlcmVyICYmICghcmVuZGVyZXItPmlzQm94KCkgfHwg
IXRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVh
KCkpKQorICAgICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7CisKKyAgICAg
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChG
cmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3VjaEV2ZW50SGFuZGxlcihyZW5kZXJlci0+bm9kZSgp
LCB0b3VjaEV2ZW50KTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJraXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQp
IHsKICAgICAgICAgZGlzcGF0Y2hJbnB1dEV2ZW50KCk7CiAgICAgfQpAQCAtMjA4OCwyMCArMjE2
MSwzMyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiBi
b29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKQogeworICAgIC8vIEZJWE1F
OiBXaHkgaXMgdGhlIGlPUyBjb2RlIHBhdGggZGlmZmVyZW50IGZyb20gdGhlIG5vbi1pT1MgY29k
ZSBwYXRoPworI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKCFpc0VsZW1lbnROb2RlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodG9FbGVtZW50KHRoaXMpLT5pc0Rpc2FibGVk
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJu
IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkgfHwgaGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50KSB8fCBoYXNFdmVudExpc3Rl
bmVycyhldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCk7CiB9CiAKIGJvb2wgTm9kZTo6d2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQogeworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlIGlP
UyBjb2RlIHBhdGggZGlmZmVyZW50IGZyb20gdGhlIG5vbi1pT1MgY29kZSBwYXRoPworI2lmIFBM
QVRGT1JNKElPUykKKyAgICByZXR1cm4gaXNDb250ZW50RWRpdGFibGUoKSB8fCBoYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KTsKKyNlbHNlCiAgICAgaWYgKCFpc0VsZW1lbnROb2RlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodG9FbGVtZW50KHRoaXMpLT5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBpc0NvbnRlbnRF
ZGl0YWJsZShVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkgfHwgaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkuY2xpY2tFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLkRPTUFjdGl2
YXRlRXZlbnQpOworI2VuZGlmCit9CisKK2Jvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlV2hl
ZWxFdmVudHMoKQoreworICAgIHJldHVybiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCku
bW91c2V3aGVlbEV2ZW50KTsKIH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVu
dHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggMGIwOWU0ZS4uZTdhNGExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC04
Miw3ICs4Miw3IEBAIGNsYXNzIFRhZ05vZGVMaXN0OwogY2xhc3MgVUlSZXF1ZXN0RXZlbnQ7CiAj
ZW5kaWYKICAgICAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmICFQTEFURk9STShJT1MpCiBjbGFzcyBUb3VjaEV2ZW50OwogI2VuZGlmCiAKQEAg
LTQxNCw3ICs0MTQsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKIAogICAgIHZvaWQgY2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5n
JiBwcmVmaXgsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29u
c3QgTm9kZSopIGNvbnN0OworICAgIGJvb2wgaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50
T2YoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNv
bnN0OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSopIGNv
bnN0OwogICAgIGJvb2wgY29udGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSop
IGNvbnN0OwpAQCAtNTAxLDYgKzUwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZVdoZWVsRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2
ZW50cygpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9k
ZSopOwpAQCAtNTI0LDcgKzUyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJl
ZU1vZGlmaWVkRXZlbnQoKTsKICAgICBib29sIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQg
ZGV0YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogCi0jaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9T
KQogICAgIGJvb2wgZGlzcGF0Y2hUb3VjaEV2ZW50KFBhc3NSZWZQdHI8VG91Y2hFdmVudD4pOwog
I2VuZGlmCiAjaWYgRU5BQkxFKElORElFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCBjMTM0
MTJlLi5lMTAwMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjM5LDYgKzIzOSwzMCBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYg
YikKICAgICByZXR1cm4gIShhID09IGIpOwogfQogCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgp
IHx8IGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5hbmNob3JO
b2RlKCkgPT0gYi5hbmNob3JOb2RlKCkpCisgICAgICAgIHJldHVybiBhLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkgPCBiLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgcmV0dXJuIGIu
YW5jaG9yTm9kZSgpLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhLmFuY2hvck5vZGUoKSkgPT0g
Tm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj4oY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKSAKK3sKKyAgICByZXR1
cm4gIWEuaXNOdWxsKCkgJiYgIWIuaXNOdWxsKCkgJiYgYSAhPSBiICYmIGIgPCBhOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYg
YikgCit7CisgICAgcmV0dXJuICFhLmlzTnVsbCgpICYmICFiLmlzTnVsbCgpICYmIChhID09IGIg
fHwgYSA+IGIpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9uJiBh
LCBjb25zdCBQb3NpdGlvbiYgYikgCit7CisgICAgcmV0dXJuICFhLmlzTnVsbCgpICYmICFiLmlz
TnVsbCgpICYmIChhID09IGIgfHwgYSA8IGIpOworfQorCiAvLyBXZSBkZWZpbmUgcG9zaXRpb24g
Y3JlYXRpb24gZnVuY3Rpb25zIHRvIG1ha2UgY2FsbHNpdGVzIG1vcmUgcmVhZGFibGUuCiAvLyBU
aGVzZSBhcmUgaW5saW5lIHRvIHByZXZlbnQgcmVmLWNodXJuIHdoZW4gcmV0dXJuaW5nIGEgUG9z
aXRpb24gb2JqZWN0LgogLy8gSWYgd2UgZXZlciBhZGQgYSBQYXNzUG9zaXRpb24gd2UgY2FuIG1h
a2UgdGhlc2Ugbm9uLWlubGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDE5MTRkMjUuLjY1ODlh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNTAsNiArNTAsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMDAs
NiArMTA0LDE1IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpjcmVhdGUoRG9jdW1lbnQmIG93
bmVyRG9jdW1lbnQsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJhbmdlKG93bmVyRG9jdW1lbnQsIHN0YXJ0LmNvbnRhaW5lck5vZGUoKSwgc3RhcnQuY29t
cHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQuY29udGFpbmVyTm9kZSgpLCBlbmQuY29t
cHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitQ
YXNzUmVmUHRyPFJhbmdlPiBSYW5nZTo6Y3JlYXRlKERvY3VtZW50JiBvd25lckRvY3VtZW50LCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVTdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlRW5kKQoreworICAgIFBvc2l0aW9uIHN0YXJ0ID0gdmlzaWJsZVN0YXJ0LmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5k
ID0gdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmFuZ2Uob3duZXJEb2N1bWVudCwgc3RhcnQuYW5j
aG9yTm9kZSgpLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmQuYW5jaG9yTm9k
ZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkpOworfQorI2VuZGlmCisKIFJhbmdl
Ojp+UmFuZ2UoKQogewogICAgIC8vIEFsd2F5cyBkZXRhY2ggKGV2ZW4gaWYgd2UndmUgYWxyZWFk
eSBkZXRhY2hlZCkgdG8gZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjA0NApAQCAtMTY2MCw2ICsxNjczLDI5NiBAQCB2b2lkIFJhbmdlOjp0ZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbgog
ICAgICAgICAqaW5GaXhlZCA9IGFsbEZpeGVkID8gRW50aXJlbHlGaXhlZFBvc2l0aW9uIDogKHNv
bWVGaXhlZCA/IFBhcnRpYWxseUZpeGVkUG9zaXRpb24gOiBOb3RGaXhlZFBvc2l0aW9uKTsKIH0K
IAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyBib29sIGludGVydmFsc1N1ZmZpY2llbnRseU92
ZXJsYXAoaW50IHN0YXJ0QSwgaW50IGVuZEEsIGludCBzdGFydEIsIGludCBlbmRCKQoreworICAg
IGlmIChlbmRBIDw9IHN0YXJ0QSB8fCBlbmRCIDw9IHN0YXJ0QikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgZmxvYXQgc3VmZmljaWVudE92ZXJsYXAgPSAuNzU7CisKKyAgICBp
bnQgbGVuZ3RoQSA9IGVuZEEgLSBzdGFydEE7CisgICAgaW50IGxlbmd0aEIgPSBlbmRCIC0gc3Rh
cnRCOworCisgICAgaW50IG1heFN0YXJ0ID0gc3RkOjptYXgoc3RhcnRBLCBzdGFydEIpOworICAg
IGludCBtaW5FbmQgPSBzdGQ6Om1pbihlbmRBLCBlbmRCKTsKKworICAgIGlmIChtYXhTdGFydCA+
IG1pbkVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1pbkVuZCAtIG1h
eFN0YXJ0ID49IHN1ZmZpY2llbnRPdmVybGFwICogc3RkOjptaW4obGVuZ3RoQSwgbGVuZ3RoQik7
Cit9CisKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgdm9pZCBwcmludFJlY3RzKFZlY3RvcjxTZWxl
Y3Rpb25SZWN0PiYgcmVjdHMpCit7CisgICAgc2l6ZV90IG51bWJlck9mUmVjdHMgPSByZWN0cy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyArK2kpIHsK
KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlenVcdFslZCwgJWRdIC0gWyVkLCAlZF1cdCVjICVz
XHRpcyBmaXJzdDogJXNcdGlzIGxhc3Q6JXNcdGNvbnRhaW5zIHN0YXJ0OiAlc1x0Y29udGFpbnMg
ZW5kOiAlc1x0bGluZTogJWRcdHJ1Ynk6ICVzXHRjb2x1bW46ICVkXG4iLAorICAgICAgICAgICAg
aSwKKyAgICAgICAgICAgIHJlY3RzW2ldLnJlY3QoKS54KCksIHJlY3RzW2ldLnJlY3QoKS55KCks
IHJlY3RzW2ldLnJlY3QoKS53aWR0aCgpLCByZWN0c1tpXS5yZWN0KCkuaGVpZ2h0KCksCisgICAg
ICAgICAgICByZWN0c1tpXS5pc0hvcml6b250YWwoKSA/ICdIJyA6ICdWJywKKyAgICAgICAgICAg
IHJlY3RzW2ldLmRpcmVjdGlvbigpID09IExUUiA/ICJMVFIiIDogIlJUTCIsCisgICAgICAgICAg
ICByZWN0c1tpXS5pc0ZpcnN0T25MaW5lKCkgPyAieWVzIiA6ICJubyIsCisgICAgICAgICAgICBy
ZWN0c1tpXS5pc0xhc3RPbkxpbmUoKSA/ICJ5ZXMiIDogIm5vIiwKKyAgICAgICAgICAgIHJlY3Rz
W2ldLmNvbnRhaW5zU3RhcnQoKSA/ICJ5ZXMiIDogIm5vIiwKKyAgICAgICAgICAgIHJlY3RzW2ld
LmNvbnRhaW5zRW5kKCkgPyAieWVzIiA6ICJubyIsCisgICAgICAgICAgICByZWN0c1tpXS5saW5l
TnVtYmVyKCksCisgICAgICAgICAgICByZWN0c1tpXS5pc1J1YnlUZXh0KCkgPyAieWVzIjogIm5v
IiwKKyAgICAgICAgICAgIHJlY3RzW2ldLmNvbHVtbk51bWJlcigpKTsKKyAgICB9CisgICAgZnBy
aW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7
Cit9CisjZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIGFkanVzdExpbmVIZWlnaHRPZlNlbGVj
dGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHNpemVfdCBudW1iZXJPZlJl
Y3RzLCBpbnQgbGluZU51bWJlciwgaW50IGxpbmVUb3AsIGludCBsaW5lSGVpZ2h0KQoreworICAg
IEFTU0VSVChyZWN0cy5zaXplKCkgPj0gbnVtYmVyT2ZSZWN0cyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IG51bWJlck9mUmVjdHM7IGk7ICkgeworICAgICAgICAtLWk7CisgICAgICAgIGlmIChyZWN0
c1tpXS5saW5lTnVtYmVyKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmVjdHNbaV0u
c2V0TGluZU51bWJlcihsaW5lTnVtYmVyKTsKKyAgICAgICAgcmVjdHNbaV0uc2V0TG9naWNhbFRv
cChsaW5lVG9wKTsKKyAgICAgICAgcmVjdHNbaV0uc2V0TG9naWNhbEhlaWdodChsaW5lSGVpZ2h0
KTsKKyAgICB9Cit9CisKK3N0YXRpYyBTZWxlY3Rpb25SZWN0IGNvYWxlc2NlU2VsZWN0aW9uUmVj
dHMoY29uc3QgU2VsZWN0aW9uUmVjdCYgb3JpZ2luYWwsIGNvbnN0IFNlbGVjdGlvblJlY3QmIHBy
ZXZpb3VzKQoreworICAgIFNlbGVjdGlvblJlY3QgcmVzdWx0KHVuaW9uUmVjdChwcmV2aW91cy5y
ZWN0KCksIG9yaWdpbmFsLnJlY3QoKSksIG9yaWdpbmFsLmlzSG9yaXpvbnRhbCgpLCBvcmlnaW5h
bC5jb2x1bW5OdW1iZXIoKSk7CisgICAgcmVzdWx0LnNldERpcmVjdGlvbihvcmlnaW5hbC5jb250
YWluc1N0YXJ0KCkgfHwgb3JpZ2luYWwuY29udGFpbnNFbmQoKSA/IG9yaWdpbmFsLmRpcmVjdGlv
bigpIDogcHJldmlvdXMuZGlyZWN0aW9uKCkpOworICAgIHJlc3VsdC5zZXRDb250YWluc1N0YXJ0
KHByZXZpb3VzLmNvbnRhaW5zU3RhcnQoKSB8fCBvcmlnaW5hbC5jb250YWluc1N0YXJ0KCkpOwor
ICAgIHJlc3VsdC5zZXRDb250YWluc0VuZChwcmV2aW91cy5jb250YWluc0VuZCgpIHx8IG9yaWdp
bmFsLmNvbnRhaW5zRW5kKCkpOworICAgIHJlc3VsdC5zZXRJc0ZpcnN0T25MaW5lKHByZXZpb3Vz
LmlzRmlyc3RPbkxpbmUoKSB8fCBvcmlnaW5hbC5pc0ZpcnN0T25MaW5lKCkpOworICAgIHJlc3Vs
dC5zZXRJc0xhc3RPbkxpbmUocHJldmlvdXMuaXNMYXN0T25MaW5lKCkgfHwgb3JpZ2luYWwuaXNM
YXN0T25MaW5lKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24g
aXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gYWRkTGluZUJveFJlY3RzLCBidXQgYW5ub3RhdGVzIHRo
ZSByZXR1cm5lZCByZWN0YW5nbGVzCisvLyB3aXRoIGFkZGl0aW9uYWwgc3RhdGUgd2hpY2ggaGVs
cHMgaU9TIGRyYXcgc2VsZWN0aW9ucyBpbiBpdHMgdW5pcXVlIHdheS4KK3ZvaWQgUmFuZ2U6OmNv
bGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzKQoreworICAg
IGlmICghbV9zdGFydC5jb250YWluZXIoKSB8fCAhbV9lbmQuY29udGFpbmVyKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gbV9zdGFydC5jb250YWluZXIo
KTsKKyAgICBOb2RlKiBlbmRDb250YWluZXIgPSBtX2VuZC5jb250YWluZXIoKTsKKyAgICBpbnQg
c3RhcnRPZmZzZXQgPSBtX3N0YXJ0Lm9mZnNldCgpOworICAgIGludCBlbmRPZmZzZXQgPSBtX2Vu
ZC5vZmZzZXQoKTsKKworICAgIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiBuZXdSZWN0czsKKyAgICBO
b2RlKiBzdG9wTm9kZSA9IHBhc3RMYXN0Tm9kZSgpOworICAgIGJvb2wgaGFzRmxpcHBlZFdyaXRp
bmdNb2RlID0gc3RhcnRDb250YWluZXItPnJlbmRlcmVyKCkgJiYgc3RhcnRDb250YWluZXItPnJl
bmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKKyAgICBib29s
IGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01vZGVzID0gZmFsc2U7CisgICAgZm9yIChOb2RlKiBu
b2RlID0gZmlyc3ROb2RlKCk7IG5vZGUgJiYgbm9kZSAhPSBzdG9wTm9kZTsgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQobm9kZSkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIC8vIE9ubHkgYXNrIGxlYWYgcmVuZGVyIG9iamVj
dHMgZm9yIHRoZWlyIGxpbmUgYm94IHJlY3RzLgorICAgICAgICBpZiAocmVuZGVyZXIgJiYgIXJl
bmRlcmVyLT5maXJzdENoaWxkU2xvdygpICYmIHJlbmRlcmVyLT5zdHlsZSgpLnVzZXJTZWxlY3Qo
KSAhPSBTRUxFQ1RfTk9ORSkgeworICAgICAgICAgICAgYm9vbCBpc1N0YXJ0Tm9kZSA9IHJlbmRl
cmVyLT5ub2RlKCkgPT0gc3RhcnRDb250YWluZXI7CisgICAgICAgICAgICBib29sIGlzRW5kTm9k
ZSA9IHJlbmRlcmVyLT5ub2RlKCkgPT0gZW5kQ29udGFpbmVyOworICAgICAgICAgICAgaWYgKGhh
c0ZsaXBwZWRXcml0aW5nTW9kZSAhPSByZW5kZXJlci0+c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01v
ZGVzID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kaW5nIDAgZm9yIHRoZSBzdGFy
dE9mZnNldCBpcyBhIHdlaXJkIHdheSBvZiB0ZWxsaW5nIHRoZSByZW5kZXJlciB0aGF0IHRoZSBz
ZWxlY3Rpb24KKyAgICAgICAgICAgIC8vIGRvZXNuJ3Qgc3RhcnQgaW5zaWRlIGl0LCBzaW5jZSB3
ZSdsbCBhbHNvIHNlbmQgMCBpZiB0aGUgc2VsZWN0aW9uICpkb2VzKiBzdGFydCBpbiBpdCwgYXQg
b2Zmc2V0IDAuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gRklYTUU6IFNlbGVjdGlv
biBlbmRwb2ludHMgYXJlbid0IGFsd2F5cyBpbnNpZGUgbGVhdmVzLCBhbmQgd2Ugb25seSBidWls
ZCBTZWxlY3Rpb25SZWN0cyBmb3IgbGVhdmVzLAorICAgICAgICAgICAgLy8gc28gd2UgY2FuJ3Qg
YWNjdXJhdGVseSBkZXRlcm1pbmUgd2hpY2ggU2VsZWN0aW9uUmVjdHMgY29udGFpbiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFuZCBlbmQgdXNpbmcKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIG9mZnNl
dHMgb2YgdGhlIHN0YXJ0IGFuZCBlbmQuIFdlIG5lZWQgdG8gcGFzcyB0aGUgd2hvbGUgUmFuZ2Uu
CisgICAgICAgICAgICBpbnQgYmVnaW5TZWxlY3Rpb25PZmZzZXQgPSBpc1N0YXJ0Tm9kZSA/IHN0
YXJ0T2Zmc2V0IDogMDsKKyAgICAgICAgICAgIGludCBlbmRTZWxlY3Rpb25PZmZzZXQgPSBpc0Vu
ZE5vZGUgPyBlbmRPZmZzZXQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAg
ICAgICAgICAgcmVuZGVyZXItPmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhuZXdSZWN0cywgYmVnaW5T
ZWxlY3Rpb25PZmZzZXQsIGVuZFNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgICAgICBzaXplX3Qg
bnVtYmVyT2ZOZXdSZWN0cyA9IG5ld1JlY3RzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZOZXdSZWN0czsgKytpKSB7CisgICAgICAgICAgICAgICAg
U2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCA9IG5ld1JlY3RzW2ldOworICAgICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb25SZWN0LmNvbnRhaW5zU3RhcnQoKSAmJiAhaXNTdGFydE5vZGUpCisg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0Q29udGFpbnNTdGFydChmYWxzZSk7
CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJlY3QuY29udGFpbnNFbmQoKSAmJiAhaXNF
bmROb2RlKQorICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldENvbnRhaW5zRW5k
KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5sb2dpY2FsV2lkdGgo
KSB8fCBzZWxlY3Rpb25SZWN0LmxvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmVjdHMuYXBwZW5kKG5ld1JlY3RzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5l
d1JlY3RzLnNocmluaygwKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAg
ICBwcmludFJlY3RzKHJlY3RzKTsKKyNlbmRpZgorCisgICAgLy8gVGhlIHJhbmdlIGNvdWxkIHNw
YW4gb3ZlciBub2RlcyB3aXRoIGRpZmZlcmVudCB3cml0aW5nIG1vZGVzLgorICAgIC8vIElmIHRo
aXMgaXMgdGhlIGNhc2UsIHdlIHVzZSB0aGUgd3JpdGluZyBtb2RlIG9mIHRoZSBjb21tb24gYW5j
ZXN0b3IuCisgICAgaWYgKGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01vZGVzKSB7CisgICAgICAg
IGlmIChOb2RlKiBhbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKHN0YXJ0Q29udGFp
bmVyLCBlbmRDb250YWluZXIpKQorICAgICAgICAgICAgaGFzRmxpcHBlZFdyaXRpbmdNb2RlID0g
YW5jZXN0b3ItPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KTsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgbnVtYmVyT2ZSZWN0cyA9IHJlY3RzLnNpemUo
KTsKKworICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbiBhIEJSLCB0aGVuIGFkZCB0aGUg
bGluZSBicmVhayBiaXQgdG8gdGhlIGxhc3QKKyAgICAvLyByZWN0IHdlIGhhdmUuIFRoaXMgd2ls
bCBjYXVzZSBpdHMgc2VsZWN0aW9uIHJlY3QgdG8gZXh0ZW5kIHRvIHRoZQorICAgIC8vIGVuZCBv
ZiB0aGUgbGluZS4KKyAgICBpZiAoc3RvcE5vZGUgJiYgc3RvcE5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpiclRhZykgJiYgbnVtYmVyT2ZSZWN0cykgeworICAgICAgICAvLyBPbmx5IHNldCB0
aGUgbGluZSBicmVhayBiaXQgaWYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgYWN0dWFsbHkKKyAgICAg
ICAgLy8gZXh0ZW5kcyBhbGwgdGhlIHdheSB0byBpbmNsdWRlIHRoZSA8YnI+LiBWaXNpYmxlUG9z
aXRpb24gaGVscHMgdG8KKyAgICAgICAgLy8gZmlndXJlIHRoaXMgb3V0LgorICAgICAgICBWaXNp
YmxlUG9zaXRpb24gZW5kUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVuZENv
bnRhaW5lciwgZW5kT2Zmc2V0KSwgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBiclBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdG9wTm9k
ZSwgMCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgICAgICBpZiAoZW5kUG9zaXRpb24gPT0g
YnJQb3NpdGlvbikKKyAgICAgICAgICAgIHJlY3RzLmxhc3QoKS5zZXRJc0xpbmVCcmVhayh0cnVl
KTsgICAgCisgICAgfQorCisgICAgaW50IGxpbmVUb3AgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpOworICAgIGludCBsaW5lQm90dG9tID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptaW4oKTsKKyAgICBpbnQgbGFzdExpbmVUb3AgPSBsaW5lVG9wOworICAgIGludCBsYXN0TGlu
ZUJvdHRvbSA9IGxpbmVCb3R0b207CisgICAgaW50IGxpbmVOdW1iZXIgPSAwOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyArK2kpIHsKKyAgICAgICAgaW50IGN1
cnJlbnRSZWN0VG9wID0gcmVjdHNbaV0ubG9naWNhbFRvcCgpOworICAgICAgICBpbnQgY3VycmVu
dFJlY3RCb3R0b20gPSBjdXJyZW50UmVjdFRvcCArIHJlY3RzW2ldLmxvZ2ljYWxIZWlnaHQoKTsK
KworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvdW50IHRoZSBydWJ5IHRleHQgYXMgYSBz
ZXBhcmF0ZSBsaW5lLgorICAgICAgICBpZiAoaW50ZXJ2YWxzU3VmZmljaWVudGx5T3ZlcmxhcChj
dXJyZW50UmVjdFRvcCwgY3VycmVudFJlY3RCb3R0b20sIGxpbmVUb3AsIGxpbmVCb3R0b20pIHx8
IChpICYmIHJlY3RzW2ldLmlzUnVieVRleHQoKSkpIHsKKyAgICAgICAgICAgIC8vIEdyb3cgdGhl
IGN1cnJlbnQgbGluZSBib3VuZHMuCisgICAgICAgICAgICBsaW5lVG9wID0gc3RkOjptaW4obGlu
ZVRvcCwgY3VycmVudFJlY3RUb3ApOworICAgICAgICAgICAgbGluZUJvdHRvbSA9IHN0ZDo6bWF4
KGxpbmVCb3R0b20sIGN1cnJlbnRSZWN0Qm90dG9tKTsKKyAgICAgICAgICAgIC8vIEF2b2lkIG92
ZXJsYXAgd2l0aCB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAgICAgICAgIGlmICghaGFzRmxpcHBl
ZFdyaXRpbmdNb2RlKQorICAgICAgICAgICAgICAgIGxpbmVUb3AgPSBzdGQ6Om1heChsYXN0TGlu
ZUJvdHRvbSwgbGluZVRvcCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGlu
ZUJvdHRvbSA9IHN0ZDo6bWluKGxhc3RMaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGFkanVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3Rz
LCBpLCBsaW5lTnVtYmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisgICAgICAg
ICAgICBpZiAoIWhhc0ZsaXBwZWRXcml0aW5nTW9kZSkgeworICAgICAgICAgICAgICAgIGxhc3RM
aW5lVG9wID0gbGluZVRvcDsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlY3RCb3R0b20g
Pj0gbGFzdExpbmVUb3ApIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSBs
aW5lQm90dG9tOworICAgICAgICAgICAgICAgICAgICBsaW5lVG9wID0gbGFzdExpbmVCb3R0b207
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGluZVRvcCA9
IGN1cnJlbnRSZWN0VG9wOworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZUJvdHRvbSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGxpbmVCb3R0b20gPSBjdXJyZW50UmVjdEJvdHRvbTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSBsaW5lQm90dG9tOworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50UmVjdFRvcCA8PSBsYXN0TGluZUJvdHRvbSAmJiBpICYm
IHJlY3RzW2ldLmNvbHVtbk51bWJlcigpID09IHJlY3RzW2kgLSAxXS5jb2x1bW5OdW1iZXIoKSkg
eworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRvcCA9IGxpbmVUb3A7CisgICAgICAgICAg
ICAgICAgICAgIGxpbmVCb3R0b20gPSBsYXN0TGluZVRvcDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRvcCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICAgICAgICAgIGxpbmVCb3R0b20gPSBjdXJyZW50
UmVjdEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGluZVRvcCA9
IGN1cnJlbnRSZWN0VG9wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsaW5lTnVtYmVy
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWRqdXN0IGxpbmUgaGVpZ2h0LgorICAgIGFk
anVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3RzLCBudW1iZXJPZlJlY3RzLCBsaW5l
TnVtYmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisKKyAgICAvLyBTb3J0IHRo
ZSByZWN0YW5nbGVzIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdhcHMuIFRoZSByZWN0YW5n
bGVzIGNvdWxkIGJlIHVuc29ydGVkIHdoZW4KKyAgICAvLyB0aGVyZSBpcyBydWJ5IHRleHQgYW5k
IHdlIGNvdWxkIGhhdmUgZ2FwcyBvbiB0aGUgbGluZSB3aGVuIGFkamFjZW50IGVsZW1lbnRzIG9u
IHRoZSBsaW5lCisgICAgLy8gaGF2ZSBhIGRpZmZlcmVudCBvcmllbnRhdGlvbi4KKyAgICBzaXpl
X3QgZmlyc3RSZWN0V2l0aEN1cnJlbnRMaW5lTnVtYmVyID0gMDsKKyAgICBmb3IgKHNpemVfdCBj
dXJyZW50UmVjdCA9IDE7IGN1cnJlbnRSZWN0IDwgbnVtYmVyT2ZSZWN0czsgKytjdXJyZW50UmVj
dCkgeworICAgICAgICBpZiAocmVjdHNbY3VycmVudFJlY3RdLmxpbmVOdW1iZXIoKSAhPSByZWN0
c1tjdXJyZW50UmVjdCAtIDFdLmxpbmVOdW1iZXIoKSkgeworICAgICAgICAgICAgZmlyc3RSZWN0
V2l0aEN1cnJlbnRMaW5lTnVtYmVyID0gY3VycmVudFJlY3Q7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVjdHNbY3VycmVudFJlY3RdLmxvZ2ljYWxMZWZ0
KCkgPj0gcmVjdHNbY3VycmVudFJlY3QgLSAxXS5sb2dpY2FsTGVmdCgpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0ID0gcmVjdHNb
Y3VycmVudFJlY3RdOworICAgICAgICBzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gY3VycmVu
dFJlY3Q7IGkgPiBmaXJzdFJlY3RXaXRoQ3VycmVudExpbmVOdW1iZXIgJiYgc2VsZWN0aW9uUmVj
dC5sb2dpY2FsTGVmdCgpIDwgcmVjdHNbaSAtIDFdLmxvZ2ljYWxMZWZ0KCk7IC0taSkKKyAgICAg
ICAgICAgIHJlY3RzW2ldID0gcmVjdHNbaSAtIDFdOworICAgICAgICByZWN0c1tpXSA9IHNlbGVj
dGlvblJlY3Q7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaiA9IDE7IGogPCBudW1iZXJPZlJl
Y3RzOyArK2opIHsKKyAgICAgICAgaWYgKHJlY3RzW2pdLmxpbmVOdW1iZXIoKSAhPSByZWN0c1tq
IC0gMV0ubGluZU51bWJlcigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFNlbGVj
dGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHJlY3RzW2ogLSAxXTsKKyAgICAgICAgYm9vbCBwcmV2
aW91c1JlY3RNYXlOb3RSZWFjaFJpZ2h0RWRnZSA9IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkg
PT0gTFRSICYmIHByZXZpb3VzUmVjdC5jb250YWluc0VuZCgpKSB8fCAocHJldmlvdXNSZWN0LmRp
cmVjdGlvbigpID09IFJUTCAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNTdGFydCgpKTsKKyAgICAg
ICAgaWYgKHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGludCBhZGp1c3RlZFdpZHRoID0gcmVjdHNbal0ubG9naWNhbExlZnQo
KSAtIHByZXZpb3VzUmVjdC5sb2dpY2FsTGVmdCgpOworICAgICAgICBpZiAoYWRqdXN0ZWRXaWR0
aCA+IHByZXZpb3VzUmVjdC5sb2dpY2FsV2lkdGgoKSkKKyAgICAgICAgICAgIHByZXZpb3VzUmVj
dC5zZXRMb2dpY2FsV2lkdGgoYWRqdXN0ZWRXaWR0aCk7CisgICAgfQorCisgICAgaW50IG1heExp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOworCisgICAgLy8gRXh0ZW5kIHJlY3RzIG91dCB0byBlZGdl
cyBhcyBuZWVkZWQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyAr
K2kpIHsKKyAgICAgICAgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwor
ICAgICAgICBpZiAoIXNlbGVjdGlvblJlY3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0
LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5lTnVtYmVyKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25S
ZWN0LmlzRmlyc3RPbkxpbmUoKSkgeworICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRMb2dp
Y2FsV2lkdGgoc2VsZWN0aW9uUmVjdC5sb2dpY2FsV2lkdGgoKSArIHNlbGVjdGlvblJlY3QubG9n
aWNhbExlZnQoKSAtIHNlbGVjdGlvblJlY3QubWluWCgpKTsKKyAgICAgICAgICAgIHNlbGVjdGlv
blJlY3Quc2V0TG9naWNhbExlZnQoc2VsZWN0aW9uUmVjdC5taW5YKCkpOworICAgICAgICB9IGVs
c2UgaWYgKHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSICYmIHNlbGVjdGlvblJlY3Qu
aXNMYXN0T25MaW5lKCkpCisgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxXaWR0
aChzZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7Cisg
ICAgfQorCisgICAgLy8gVW5pb24gYWxsIHRoZSByZWN0YW5nbGVzIG9uIGludGVyaW9yIGxpbmVz
IChpLmUuIG5vdCBmaXJzdCBvciBsYXN0KS4KKyAgICAvLyBPbiBmaXJzdCBhbmQgbGFzdCBsaW5l
cywganVzdCBhdm9pZCBoYXZpbmcgb3ZlcmxhcHMgYnkgbWVyZ2luZyBpbnRlcnNlY3RpbmcgcmVj
dGFuZ2xlcy4KKyAgICBWZWN0b3I8U2VsZWN0aW9uUmVjdD4gdW5pb25lZFJlY3RzOworICAgIElu
dFJlY3QgaW50ZXJpb3JVbmlvblJlY3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZlJlY3RzOyArK2kpIHsKKyAgICAgICAgU2VsZWN0aW9uUmVjdCYgY3VycmVudFJlY3QgPSBy
ZWN0c1tpXTsKKyAgICAgICAgaWYgKGN1cnJlbnRSZWN0LmxpbmVOdW1iZXIoKSA9PSAxKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIGlmICghdW5pb25lZFJlY3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFNlbGVj
dGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHVuaW9uZWRSZWN0cy5sYXN0KCk7CisgICAgICAgICAg
ICAgICAgaWYgKHByZXZpb3VzUmVjdC5yZWN0KCkuaW50ZXJzZWN0cyhjdXJyZW50UmVjdC5yZWN0
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVjdCA9IGNvYWxlc2NlU2VsZWN0
aW9uUmVjdHMoY3VycmVudFJlY3QsIHByZXZpb3VzUmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC8vIENvdWxkbid0IG1lcmdlIHdpdGggcHJldmlvdXMgcmVjdCwgc28ganVzdCBhcHBlbmRpbmcu
CisgICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBwZW5kKGN1cnJlbnRSZWN0KTsKKyAgICAgICAg
fSBlbHNlIGlmIChjdXJyZW50UmVjdC5saW5lTnVtYmVyKCkgPCBtYXhMaW5lTnVtYmVyKSB7Cisg
ICAgICAgICAgICBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gU3RhcnQgY29sbGVjdGluZyBpbnRlcmlvciByZWN0cy4KKyAgICAgICAgICAgICAg
ICBpbnRlcmlvclVuaW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsgICAgICAgICAKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaW50ZXJzZWN0cyhjdXJyZW50UmVj
dC5yZWN0KCkpCisgICAgICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QubWF4WCgpID09
IGN1cnJlbnRSZWN0LnJlY3QoKS54KCkKKyAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9u
UmVjdC5tYXhZKCkgPT0gY3VycmVudFJlY3QucmVjdCgpLnkoKQorICAgICAgICAgICAgICAgIHx8
IGludGVyaW9yVW5pb25SZWN0LngoKSA9PSBjdXJyZW50UmVjdC5yZWN0KCkubWF4WCgpCisgICAg
ICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QueSgpID09IGN1cnJlbnRSZWN0LnJlY3Qo
KS5tYXhZKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBPbmx5IHVuaW9uIHRoZSBsaW5lcyB0aGF0
IGFyZSBhdHRhY2hlZC4KKyAgICAgICAgICAgICAgICAvLyBGb3IgaUJvb2tzLCB0aGUgaW50ZXJp
b3IgbGluZXMgbWF5IGNyb3NzIG11bHRpcGxlIGhvcml6b250YWwgcGFnZXMuCisgICAgICAgICAg
ICAgICAgaW50ZXJpb3JVbmlvblJlY3QudW5pdGUoY3VycmVudFJlY3QucmVjdCgpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChTZWxl
Y3Rpb25SZWN0KGludGVyaW9yVW5pb25SZWN0LCBjdXJyZW50UmVjdC5pc0hvcml6b250YWwoKSwg
Y3VycmVudFJlY3QuY29sdW1uTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBpbnRlcmlvclVu
aW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgbGFzdCBsaW5lLgorICAgICAgICAgICAg
aWYgKCFpbnRlcmlvclVuaW9uUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICB1bmlv
bmVkUmVjdHMuYXBwZW5kKFNlbGVjdGlvblJlY3QoaW50ZXJpb3JVbmlvblJlY3QsIGN1cnJlbnRS
ZWN0LmlzSG9yaXpvbnRhbCgpLCBjdXJyZW50UmVjdC5jb2x1bW5OdW1iZXIoKSkpOworICAgICAg
ICAgICAgICAgIGludGVyaW9yVW5pb25SZWN0ID0gSW50UmVjdCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBBU1NFUlQoIXVuaW9uZWRSZWN0cy5pc0VtcHR5KCkpOworICAgICAgICAg
ICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gdW5pb25lZFJlY3RzLmxhc3QoKTsKKyAg
ICAgICAgICAgIGlmIChwcmV2aW91c1JlY3QubG9naWNhbFRvcCgpID09IGN1cnJlbnRSZWN0Lmxv
Z2ljYWxUb3AoKSAmJiBwcmV2aW91c1JlY3QucmVjdCgpLmludGVyc2VjdHMoY3VycmVudFJlY3Qu
cmVjdCgpKSkgeworICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzUmVjdCBpcyBhbHNvIG9uIHRo
ZSBsYXN0IGxpbmUsIGFuZCBpbnRlcnNlY3RzIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgICAgICAg
ICAgICBwcmV2aW91c1JlY3QgPSBjb2FsZXNjZVNlbGVjdGlvblJlY3RzKGN1cnJlbnRSZWN0LCBw
cmV2aW91c1JlY3QpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLy8gQ291bGRuJ3QgbWVyZ2Ugd2l0aCBwcmV2aW91cyByZWN0LCBzbyBqdXN0
IGFwcGVuZGluZy4KKyAgICAgICAgICAgIHVuaW9uZWRSZWN0cy5hcHBlbmQoY3VycmVudFJlY3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmVjdHMuc3dhcCh1bmlvbmVkUmVjdHMpOworfQor
I2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihj
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXgg
OGI3NzhmYS4uYzM1MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTQ1LDEyICs0NSwyMCBAQCBjbGFz
cyBGbG9hdFF1YWQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZVdpdGhJbmRleDsKIGNsYXNzIFRl
eHQ7CisjaWYgUExBVEZPUk0oSU9TKQorY2xhc3MgU2VsZWN0aW9uUmVjdDsKK2NsYXNzIFZpc2li
bGVQb3NpdGlvbjsKKyNlbmRpZgogCiBjbGFzcyBSYW5nZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJh
bmdlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShEb2N1
bWVudCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmLCBQ
YXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyLCBpbnQgc3RhcnRPZmZzZXQsIFBhc3NSZWZQ
dHI8Tm9kZT4gZW5kQ29udGFpbmVyLCBpbnQgZW5kT2Zmc2V0KTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxSYW5nZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbWFraW5n
IHRoaXMgYSBzdGF0aWMgbm9uLW1lbWJlciwgbm9uLWZyaWVuZCBmdW5jdGlvbi4KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisjZW5kaWYKICAgICB+UmFuZ2UoKTsKIAog
ICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxE
b2N1bWVudCY+KG1fb3duZXJEb2N1bWVudC5nZXQoKSk7IH0KQEAgLTEyNyw2ICsxMzUsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCB0ZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4ZWRQb3NpdGlvbiogPSAwKSBjb25zdDsK
ICAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0
OwogICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+Jik7
CisjZW5kaWYKIAogICAgIHZvaWQgbm9kZUNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlJik7
CiAgICAgdm9pZCBub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBiNWVi
YTVkLi5kZDMwZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogLy8gRklYTUU6IFRoaXMgaXMgYSBsYXllcmlu
ZyB2aW9sYXRpb24uCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKIAorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2VuZGlmCkBAIC0xNzcsNiArMTgx
LDEzIEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoKQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01P
YmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGlmIChtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpIHsK
KyAgICAgICAgQVNTRVJUKG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMgPT0g
QWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZVBhdXNlZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURP
TU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNob3VsZG4ndCBl
eGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0
cnVlOwogICAgIEFjdGl2ZURPTU9iamVjdHNTZXQ6Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQg
PSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CkBAIC0zMjAsNiArMzMxLDE0IEBAIGJvb2wgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hFcnJvckV2ZW50KGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICh0YXJnZXQgPT0gdGFyZ2V0LT50b0RPTVdpbmRv
dygpICYmIGlzRG9jdW1lbnQoKSkgeworICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZXR0aW5ncygpOworICAgICAgICBpZiAoc2V0dGlu
Z3MgJiYgIXNldHRpbmdzLT5zaG91bGREaXNwYXRjaEphdmFTY3JpcHRXaW5kb3dPbkVycm9yRXZl
bnRzKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKICAgICBT
dHJpbmcgbWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKICAgICBpbnQgbGluZSA9IGxpbmVOdW1iZXI7
CiAgICAgaW50IGNvbHVtbiA9IGNvbHVtbk51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
aW5kZXggZmVmZjJmOS4uMGFhOTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTI0
OCwxMSArMjQ4LDE3IEBAIE5vZGUqIG5vZGVGcm9tUG9pbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBp
bnQgeCwgaW50IHksIExheW91dFBvaW50KiBsb2NhbFBvaW50KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkg
KiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOworI2lmICFQTEFURk9STShJT1MpCiAgICAgSW50
UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludCh4ICogc2NhbGVGYWN0b3Ig
ICsgZnJhbWVWaWV3LT5zY3JvbGxYKCksIHkgKiBzY2FsZUZhY3RvciArIGZyYW1lVmlldy0+c2Ny
b2xsWSgpKSk7CiAKICAgICBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuY29u
dGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCisgICAgSW50UG9p
bnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludCh4ICogc2NhbGVGYWN0b3IgICsg
ZnJhbWVWaWV3LT5hY3R1YWxTY3JvbGxYKCksIHkgKiBzY2FsZUZhY3RvciArIGZyYW1lVmlldy0+
YWN0dWFsU2Nyb2xsWSgpKSk7CiAKKyAgICBpZiAoIWZyYW1lVmlldy0+YWN0dWFsVmlzaWJsZUNv
bnRlbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNl
bmRpZgogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRv
d0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKICAgICBkb2N1bWVu
dC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCA5ZTJmNWVmLi42MGYzOWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgog
CisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShCTEFDS0JFUlJZ
KSB8fCBQTEFURk9STShHVEspCkBAIC0yNjMsNiArMjY3LDEzIEBAIHN0YXRpYyBGbG9hdFNpemUg
Y29udmVydFRvVXNlclNwYWNlKGNvbnN0IEZsb2F0U2l6ZSYgZGV2aWNlU2l6ZSwgZmxvYXQgZGV2
aWNlUGl4CiAKIFZpZXdwb3J0QXR0cmlidXRlcyBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZp
ZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9wV2lkdGgsIGludCBkZXZpY2VXaWR0aCwg
aW50IGRldmljZUhlaWdodCwgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgSW50U2l6ZSB2aXNpYmxl
Vmlld3BvcnQpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSBiZSBmaXhlZCBlbHNld2hlcmUgb24gaU9TLiBpT1MgbWF5IG9ubHkgdXNlIGNv
bXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMgZm9yIHRlc3RzLgorICAgIENHU2l6ZSBzY3JlZW5TaXpl
ID0gd2tHZXRWaWV3cG9ydFNjcmVlblNpemUoKTsKKyAgICB2aXNpYmxlVmlld3BvcnQuc2V0V2lk
dGgoc2NyZWVuU2l6ZS53aWR0aCk7CisgICAgdmlzaWJsZVZpZXdwb3J0LnNldEhlaWdodChzY3Jl
ZW5TaXplLmhlaWdodCk7CisjZW5kaWYKKwogICAgIEZsb2F0U2l6ZSBpbml0aWFsVmlld3BvcnRT
aXplID0gY29udmVydFRvVXNlclNwYWNlKHZpc2libGVWaWV3cG9ydCwgZGV2aWNlUGl4ZWxSYXRp
byk7CiAgICAgRmxvYXRTaXplIGRldmljZVNpemUgPSBjb252ZXJ0VG9Vc2VyU3BhY2UoRmxvYXRT
aXplKGRldmljZVdpZHRoLCBkZXZpY2VIZWlnaHQpLCBkZXZpY2VQaXhlbFJhdGlvKTsKIApAQCAt
Mzk2LDEwICs0MDcsMzEgQEAgdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBr
ZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3UKICAgICAgICAgYXJndW1l
bnRzLT5tYXhab29tID0gZmluZFNjYWxlVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9j
dW1lbnQpOwogICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCiAgICAg
ICAgIGFyZ3VtZW50cy0+dXNlclpvb20gPSBmaW5kVXNlclNjYWxhYmxlVmFsdWUoa2V5U3RyaW5n
LCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlm
IChrZXlTdHJpbmcgPT0gIm1pbmltYWwtdWkiKQorICAgICAgICBhcmd1bWVudHMtPm1pbmltYWxV
SSA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2Fybmlu
Zyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEtleUVycm9yLCBrZXlTdHJp
bmcsIFN0cmluZygpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgZmluYWxpemVWaWV3
cG9ydEFyZ3VtZW50cyhWaWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzKQoreworICAgIENHU2l6
ZSBzY3JlZW5TaXplID0gd2tHZXRWaWV3cG9ydFNjcmVlblNpemUoKTsKKworICAgIGlmIChhcmd1
bWVudHMud2lkdGggPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlV2lkdGgpCisgICAg
ICAgIGFyZ3VtZW50cy53aWR0aCA9IHNjcmVlblNpemUud2lkdGg7CisgICAgZWxzZSBpZiAoYXJn
dW1lbnRzLndpZHRoID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZURldmljZUhlaWdodCkKKyAg
ICAgICAgYXJndW1lbnRzLndpZHRoID0gc2NyZWVuU2l6ZS5oZWlnaHQ7CisKKyAgICBpZiAoYXJn
dW1lbnRzLmhlaWdodCA9PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VXaWR0aCkKKyAg
ICAgICAgYXJndW1lbnRzLmhlaWdodCA9IHNjcmVlblNpemUud2lkdGg7CisgICAgZWxzZSBpZiAo
YXJndW1lbnRzLmhlaWdodCA9PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VIZWlnaHQp
CisgICAgICAgIGFyZ3VtZW50cy5oZWlnaHQgPSBzY3JlZW5TaXplLmhlaWdodDsKK30KKyNlbmRp
ZgorCiBzdGF0aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3
cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IGVycm9yc1tdID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJn
dW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCBj
NjQ5Mzc1Li5kNzQ5ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApA
QCAtNTEsNiArNTEsOSBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzIHsKIAogICAgIGZsb2F0
IHVzZXJTY2FsYWJsZTsKICAgICBmbG9hdCBvcmllbnRhdGlvbjsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgYm9vbCBtaW5pbWFsVUk7CisjZW5kaWYKIH07CiAKIHN0cnVjdCBWaWV3cG9ydEFyZ3Vt
ZW50cyB7CkBAIC02Myw2ICs2NiwxMCBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAg
ICAgICBIYW5kaGVsZEZyaWVuZGx5TWV0YSwKICAgICAgICAgTW9iaWxlT3B0aW1pemVkTWV0YSwK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgUGx1Z2luRG9jdW1lbnQsCisgICAg
ICAgIEltYWdlRG9jdW1lbnQsCisjZW5kaWYKICAgICAgICAgVmlld3BvcnRNZXRhLAogICAgICAg
ICBDU1NEZXZpY2VBZGFwdGF0aW9uCiAgICAgfSB0eXBlOwpAQCAtODgsNiArOTUsOSBAQCBzdHJ1
Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAgICAgICAsIG1heFpvb20oVmFsdWVBdXRvKQogICAg
ICAgICAsIHVzZXJab29tKFZhbHVlQXV0bykKICAgICAgICAgLCBvcmllbnRhdGlvbihWYWx1ZUF1
dG8pCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAsIG1pbmltYWxVSShmYWxzZSkKKyNlbmRp
ZgogICAgIHsKICAgICB9CiAKQEAgLTExMCw2ICsxMjAsMTAgQEAgc3RydWN0IFZpZXdwb3J0QXJn
dW1lbnRzIHsKICAgICB7CiAgICAgICAgIC8vIFVzZWQgZm9yIGZpZ3VyaW5nIG91dCB3aGV0aGVy
IHRvIHJlc2V0IHRoZSB2aWV3cG9ydCBvciBub3QsCiAgICAgICAgIC8vIHRodXMgd2UgYXJlIG5v
dCB0YWtpbmcgdHlwZSBpbnRvIGFjY291bnQuCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAv
LyBXZSBpZ25vcmUgbWluaW1hbFVJIGZvciB0aGUgc2FtZSByZWFzb24gLS0gaXQgaXMgYSBoaWdo
ZXItbGV2ZWwKKyAgICAgICAgLy8gcHJvcGVydHkgdGhhdCBkb2Vzbid0IGFmZmVjdCB0aGUgYWN0
dWFsIHZpZXdwb3J0LgorI2VuZGlmCiAgICAgICAgIHJldHVybiB3aWR0aCA9PSBvdGhlci53aWR0
aAogICAgICAgICAgICAgJiYgbWluV2lkdGggPT0gb3RoZXIubWluV2lkdGgKICAgICAgICAgICAg
ICYmIG1heFdpZHRoID09IG90aGVyLm1heFdpZHRoCkBAIC0xNDQsNiArMTU4LDEwIEBAIGZsb2F0
IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgcmVzCiB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcm
IGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBk
YXRhKTsKIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiwgVmlld3BvcnRFcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50Mik7CiAKKyNpZiBQTEFURk9STShJT1MpCit2b2lkIGZpbmFsaXplVmlld3BvcnRBcmd1bWVu
dHMoVmlld3BvcnRBcmd1bWVudHMmKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBWaWV3cG9ydEFyZ3VtZW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
CmluZGV4IGYwMzZjZmUuLjE2YmQ2ZjQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02
NSw4ICs2NSwxMCBAQCByZXF1aXJlIENvbmZpZzsKIG15ICRnY2NMb2NhdGlvbiA9ICIiOwogaWYg
KCRFTlZ7Q0N9KSB7CiAgICAgJGdjY0xvY2F0aW9uID0gJEVOVntDQ307Ci19IGVsc2lmICgoJENv
bmZpZzo6Q29uZmlneydvc25hbWUnfSkgPX4gL3NvbGFyaXMvaSkgeworfSBlbHNpZiAoKCRDb25m
aWc6OkNvbmZpZ3sib3NuYW1lIn0pID1+IC9zb2xhcmlzL2kpIHsKICAgICAkZ2NjTG9jYXRpb24g
PSAiL3Vzci9zZncvYmluL2djYyI7Cit9IGVsc2lmICgkQ29uZmlnOjpDb25maWd7Im9zbmFtZSJ9
IGVxICJkYXJ3aW4iICYmICRFTlZ7U0RLUk9PVH0pIHsKKyAgICBjaG9tcCgkZ2NjTG9jYXRpb24g
PSBgeGNydW4gLWZpbmQgY2MgLXNkayAnJEVOVntTREtST09UfSdgKTsKIH0gZWxzZSB7CiAgICAg
JGdjY0xvY2F0aW9uID0gIi91c3IvYmluL2djYyI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Nh
cGl0YWxpemUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYjQ3OTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNw
cApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5o
IgorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWVEZWZhdWx0KCkKK3sKKyAgICBy
ZXR1cm4gbnVsbEF0b207Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlT24o
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVl
T24oIm9uIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJu
IHZhbHVlT247Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlT2ZmKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiB2YWx1ZU9mZigi
b2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIHZh
bHVlT2ZmOworfQorCitzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZU5vbmUoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVlTm9uZSgi
bm9uZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB2
YWx1ZU5vbmU7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlV29yZHMoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVlV29y
ZHMoIndvcmRzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIHZhbHVlV29yZHM7Cit9CisKK3N0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlU2Vu
dGVuY2VzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5n
PiB2YWx1ZVNlbnRlbmNlcygic2VudGVuY2VzIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgcmV0dXJuIHZhbHVlU2VudGVuY2VzOworfQorCitzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZUFsbENoYXJhY3RlcnMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IHZhbHVlQWxsQ2hhcmFjdGVycygiY2hhcmFjdGVy
cyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHJldHVybiB2YWx1
ZUFsbENoYXJhY3RlcnM7Cit9CisKK1dlYkF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6
ZVR5cGVGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVl
KQoreworICAgIC8vIE9taXR0ZWQgLyBtaXNzaW5nIHZhbHVlcyBhcmUgdGhlIERlZmF1bHQgc3Rh
dGUuCisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpIHx8IGF0dHJpYnV0ZVZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdlYkF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQ7CisK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlT24oKSkgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlU2VudGVuY2VzKCkpKQorICAg
ICAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzOworICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhdHRyaWJ1dGVWYWx1ZSwgdmFsdWVPZmYoKSkgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoYXR0cmlidXRlVmFsdWUsIHZhbHVlTm9uZSgpKSkKKyAgICAgICAgcmV0dXJuIFdlYkF1
dG9jYXBpdGFsaXplVHlwZU5vbmU7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0
ZVZhbHVlLCB2YWx1ZVdvcmRzKCkpKQorICAgICAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxpemVU
eXBlV29yZHM7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZVZhbHVlLCB2YWx1
ZUFsbENoYXJhY3RlcnMoKSkpCisgICAgICAgIHJldHVybiBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVB
bGxDaGFyYWN0ZXJzOworCisgICAgLy8gVW5yZWNvZ25pemVkIHZhbHVlcyBmYWxsIGJhY2sgdG8g
Im9uIi4KKyAgICByZXR1cm4gV2ViQXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzOworfQorCitj
b25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXplVHlwZShXZWJBdXRvY2Fw
aXRhbGl6ZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFdlYkF1
dG9jYXBpdGFsaXplVHlwZURlZmF1bHQ6CisgICAgICAgIHJldHVybiB2YWx1ZURlZmF1bHQoKTsK
KyAgICBjYXNlIFdlYkF1dG9jYXBpdGFsaXplVHlwZU5vbmU6CisgICAgICAgIHJldHVybiB2YWx1
ZU5vbmUoKTsKKyAgICBjYXNlIFdlYkF1dG9jYXBpdGFsaXplVHlwZVNlbnRlbmNlczoKKyAgICAg
ICAgcmV0dXJuIHZhbHVlU2VudGVuY2VzKCk7CisgICAgY2FzZSBXZWJBdXRvY2FwaXRhbGl6ZVR5
cGVXb3JkczoKKyAgICAgICAgcmV0dXJuIHZhbHVlV29yZHMoKTsKKyAgICBjYXNlIFdlYkF1dG9j
YXBpdGFsaXplVHlwZUFsbENoYXJhY3RlcnM6CisgICAgICAgIHJldHVybiB2YWx1ZUFsbENoYXJh
Y3RlcnMoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
dmFsdWVEZWZhdWx0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQXV0b2NhcGl0YWxpemUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YjcyNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRh
bGl6ZS5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEF1dG9jYXBpdGFsaXplX2gKKyNkZWZpbmUgQXV0b2NhcGl0
YWxpemVfaAorCisjaW5jbHVkZSAiV2ViQXV0b2NhcGl0YWxpemUuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJBdXRvY2Fw
aXRhbGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9yQXR0cmlidXRlVmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJik7Citjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXpl
VHlwZShXZWJBdXRvY2FwaXRhbGl6ZVR5cGUpOworCit9CisKKyNlbmRpZiAvLyBBdXRvY2FwaXRh
bGl6ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJP
bmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDAyZDRlNjUuLjg4NzJhNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01Myw3ICs1Myw5IEBAIHZvaWQgQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKQogICAg
IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBpZiAoIWVsZW1lbnQo
KS5zZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMocGFyYW1ldGVycykpCiAgICAgICAgIHJl
dHVybjsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIG1fZGF0ZVRpbWVDaG9vc2VyID0gZWxlbWVu
dCgpLmRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5vcGVuRGF0ZVRpbWVDaG9vc2VyKHRoaXMs
IHBhcmFtZXRlcnMpOworI2VuZGlmCiB9CiAKIHZvaWQgQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDIxM2M5ZmYuLjE2ZjVkZjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5j
cHAKQEAgLTE3Myw1ICsxNzMsMTIgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZh
bHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBlbGVtZW50
KCkuaXNSZXF1aXJlZCgpICYmIHZhbHVlLmlzRW1wdHkoKTsKIH0KIAorI2lmIFBMQVRGT1JNKElP
UykKK2Jvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqKSBjb25zdAoreworICAgIHJldHVybiAhZWxlbWVudCgpLmlzUmVhZE9ubHko
KSAmJiBlbGVtZW50KCkuaXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDY4ZDIwYTguLmU5MTkwNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtNDks
MTAgKzQ5LDE1IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aENvbXBvbmVu
dHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2V0TWls
bGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCA9IDA7CisjaWYgIVBMQVRGT1JN
KElPUykKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3Qg
PSAwOworI2VuZGlmCiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25D
b2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RvdWJsZSgp
IGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXgg
NGRiNDM4MS4uNzg3OWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBA
IC04Niw2ICs4Niw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVXBsb2FkQnV0dG9uRWxlbWVudDo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAogRmlsZUlucHV0VHlwZTo6RmlsZUlucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KQogICAgIDogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5
cGUoZWxlbWVudCkKICAgICAsIG1fZmlsZUxpc3QoRmlsZUxpc3Q6OmNyZWF0ZSgpKQorI2lmIFBM
QVRGT1JNKElPUykKKyAgICAsIG1fZGlzcGxheVN0cmluZyhTdHJpbmcoKSkKKyNlbmRpZgogewog
fQogCkBAIC05NCw4ICs5NywxMCBAQCBGaWxlSW5wdXRUeXBlOjp+RmlsZUlucHV0VHlwZSgpCiAg
ICAgaWYgKG1fZmlsZUNob29zZXIpCiAgICAgICAgIG1fZmlsZUNob29zZXItPmludmFsaWRhdGUo
KTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKG1fZmlsZUljb25Mb2FkZXIpCiAgICAg
ICAgIG1fZmlsZUljb25Mb2FkZXItPmludmFsaWRhdGUoKTsKKyNlbmRpZgogfQogCiBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4gRmlsZUlucHV0VHlwZTo6ZmlsZXNGcm9tRm9ybUNvbnRyb2xT
dGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKQEAgLTMzMCw2ICszMzUsNyBAQCB2
b2lkIEZpbGVJbnB1dFR5cGU6OnJlcXVlc3RJY29uKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRo
cykKICAgICBpZiAoIXBhdGhzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgIVBMQVRG
T1JNKElPUykKICAgICBDaHJvbWUqIGNocm9tZSA9IHRoaXMtPmNocm9tZSgpOwogICAgIGlmICgh
Y2hyb21lKQogICAgICAgICByZXR1cm47CkBAIC0zNDAsNiArMzQ2LDcgQEAgdm9pZCBGaWxlSW5w
dXRUeXBlOjpyZXF1ZXN0SWNvbihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgbV9m
aWxlSWNvbkxvYWRlciA9IHN0ZDo6bWFrZV91bmlxdWU8RmlsZUljb25Mb2FkZXI+KHN0YXRpY19j
YXN0PEZpbGVJY29uTG9hZGVyQ2xpZW50Jj4oKnRoaXMpKTsKIAogICAgIGNocm9tZS0+bG9hZElj
b25Gb3JGaWxlcyhwYXRocywgbV9maWxlSWNvbkxvYWRlci5nZXQoKSk7CisjZW5kaWYKIH0KIAog
dm9pZCBGaWxlSW5wdXRUeXBlOjphcHBseUZpbGVDaG9vc2VyU2V0dGluZ3MoY29uc3QgRmlsZUNo
b29zZXJTZXR0aW5ncyYgc2V0dGluZ3MpCkBAIC0zOTEsNiArMzk4LDIwIEBAIHZvaWQgRmlsZUlu
cHV0VHlwZTo6c2V0RmlsZXMoUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMpCiAgICAgaW5wdXQt
PnNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgRmlsZUlucHV0VHlwZTo6ZmlsZXNDaG9zZW4oY29uc3Qg
VmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiBwYXRocywgY29uc3QgU3RyaW5nJiBkaXNwbGF5
U3RyaW5nLCBJY29uKiBpY29uKQoreworICAgIG1fZGlzcGxheVN0cmluZyA9IGRpc3BsYXlTdHJp
bmc7CisgICAgZmlsZXNDaG9zZW4ocGF0aHMpOworICAgIHVwZGF0ZVJlbmRlcmluZyhpY29uKTsK
K30KKworU3RyaW5nIEZpbGVJbnB1dFR5cGU6OmRpc3BsYXlTdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBtX2Rpc3BsYXlTdHJpbmc7Cit9CisjZW5kaWYKKwogdm9pZCBGaWxlSW5wdXRUeXBl
OjpmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mIGZpbGVzKQog
ewogICAgIHNldEZpbGVzKGNyZWF0ZUZpbGVMaXN0KGZpbGVzKSk7CkBAIC00MjgsNiArNDQ5LDcg
QEAgdm9pZCBGaWxlSW5wdXRUeXBlOjp1cGRhdGVSZW5kZXJpbmcoUGFzc1JlZlB0cjxJY29uPiBp
Y29uKQogCiBib29sIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQogeworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7CiAgICAgZHJhZ0RhdGEuYXNGaWxlbmFtZXMocGF0aHMpOwogICAgIGlm
IChwYXRocy5pc0VtcHR5KCkpCkBAIC00NTMsNiArNDc1LDEwIEBAIGJvb2wgRmlsZUlucHV0VHlw
ZTo6cmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAg
IGZpbGVzQ2hvc2VuKGZpcnN0RmlsZU9ubHkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGRyYWdEYXRhKTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIH0KIAogSWNvbiogRmlsZUlucHV0VHlwZTo6aWNv
bigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IDljZmFjY2YuLmRi
YzY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC00MSw2ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBGaWxlTGlzdDsK
K2NsYXNzIEljb247CiAKIGNsYXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGUsIHByaXZhdGUgRmlsZUNob29zZXJDbGllbnQsIHByaXZhdGUgRmls
ZUljb25Mb2FkZXJDbGllbnQgewogcHVibGljOgpAQCAtNjIsNiArNjMsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBjYW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIEZpbGVMaXN0KiBmaWxlcygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRGaWxlcyhQYXNzUmVmUHRyPEZpbGVMaXN0PikgT1ZFUlJJREU7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlTdHJpbmcoKSBjb25zdCBPVkVSUklE
RTsKKyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0VHlwZVNwZWNpZmljVmFsdWUoU3RyaW5nJikg
T1ZFUlJJREU7IC8vIENoZWNrZWQgZmlyc3QsIGJlZm9yZSBpbnRlcm5hbCBzdG9yYWdlIG9yIHRo
ZSB2YWx1ZSBhdHRyaWJ1dGUuCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBPVkVSUklERTsK
QEAgLTc1LDYgKzc5LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZpbGVDaG9vc2VyQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8
RmlsZUNob29zZXJGaWxlSW5mbz4mKSBPVkVSUklERTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
dmlydHVhbCB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZv
PiYsIGNvbnN0IFN0cmluZyYgZGlzcGxheVN0cmluZywgSWNvbiopIE9WRVJSSURFOworI2VuZGlm
CiAKICAgICAvLyBGaWxlSWNvbkxvYWRlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVuZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4pIE9WRVJSSURFOwpAQCAt
ODgsMTAgKzk1LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBseUZpbGVDaG9vc2VyU2V0dGlu
Z3MoY29uc3QgRmlsZUNob29zZXJTZXR0aW5ncyYpOwogCiAgICAgUmVmUHRyPEZpbGVDaG9vc2Vy
PiBtX2ZpbGVDaG9vc2VyOworI2lmICFQTEFURk9STShJT1MpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZpbGVJY29uTG9hZGVyPiBtX2ZpbGVJY29uTG9hZGVyOworI2VuZGlmCiAKICAgICBSZWZQdHI8
RmlsZUxpc3Q+IG1fZmlsZUxpc3Q7CiAgICAgUmVmUHRyPEljb24+IG1faWNvbjsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgU3RyaW5nIG1fZGlzcGxheVN0cmluZzsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApp
bmRleCA0N2UyMzEyLi4zZTAxNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcApAQCAtMzc5LDYgKzM3OSwxOCBAQCBGb3JtQ29udHJvbGxlcjo6fkZvcm1Db250cm9sbGVy
KCkKIHsKIH0KIAordW5zaWduZWQgRm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVtZW50c0NoYXJhY3Rl
ckNvdW50KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRv
IGl0ID0gbV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuYmVnaW4oKSwgZW5kID0gbV9mb3JtRWxlbWVu
dHNXaXRoU3RhdGUuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlKiBlbGVtZW50ID0gaXQtPmdldCgpOworICAgICAgICBGb3Jt
Q29udHJvbFN0YXRlIHN0YXRlID0gZWxlbWVudC0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKTsKKyAg
ICAgICAgaWYgKHN0YXRlLnZhbHVlU2l6ZSgpICYmIGVsZW1lbnQtPmlzVGV4dEZvcm1Db250cm9s
KCkpCisgICAgICAgICAgICBjb3VudCArPSBzdGF0ZVswXS5sZW5ndGgoKTsKKyAgICB9CisgICAg
cmV0dXJuIGNvdW50OworfQorCiBzdGF0aWMgU3RyaW5nIGZvcm1TdGF0ZVNpZ25hdHVyZSgpCiB7
CiAgICAgLy8gSW4gdGhlIGxlZ2FjeSB2ZXJzaW9uIG9mIHNlcmlhbGl6ZWQgc3RhdGUsIHRoZSBm
aXJzdCBpdGVtIHdhcyBhIG5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAppbmRl
eCA5ZGJjYTYyLi5lMTQ2YjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBA
IC04NCw2ICs4NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxlbWVudFdp
dGhTdGF0ZShIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUoSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSopOworCisgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRzQ2hhcmFjdGVyQ291bnQoKSBjb25zdDsK
KwogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxsZWQgb25seSBieSBEb2N1bWVudDo6Zm9ybUVs
ZW1lbnRzU3RhdGUoKS4KICAgICBWZWN0b3I8U3RyaW5nPiBmb3JtRWxlbWVudHNTdGF0ZSgpIGNv
bnN0OwogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGNhbGxsZWQgb25seSBieSBEb2N1bWVudDo6c2V0
U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAKaW5kZXggNzQ0NjRlYy4uZDJmOGQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTYxMSw3ICs2MTEsMTIgQEAgYm9vbCBzaG91bGRQ
cm9oaWJpdExpbmtzKEVsZW1lbnQqIGVsZW1lbnQpCiAKIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6
OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKIHsKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHJlY29uY2lsZSB0aGUgZGlmZmVyZW5jZSBpbiBkaXNqdW5jdCBvcmRlcmluZyBiZXR3ZWVu
IGlPUyBhbmQgT3BlblNvdXJjZS4KKyNpZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIEhUTUxF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIHx8IGlzTGluaygpOworI2Vs
c2UKICAgICByZXR1cm4gaXNMaW5rKCkgfHwgSFRNTEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEhUTUxB
bmNob3JFbGVtZW50KiwgUmVmUHRyPEVsZW1lbnQ+PiBSb290RWRpdGFibGVFbGVtZW50TWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAppbmRleCA3MzJkOGU3Li5i
ZjIxMzUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKQEAg
LTk5LDYgKzk5LDkgQEAgdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdp
bkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgIGlmICghaXNGaW5pc2hl
ZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgVU5VU0VEX1BBUkFNKHBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKKyNlbHNlCiAgICAgLy8g
RklYTUU6IEl0J3Mgc2FkbmVzcyB0aGF0IHdlIGhhdmUgdGhpcyBzcGVjaWFsIGNhc2UgaGVyZS4K
ICAgICAvLyAgICAgICAgU2VlIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1MTI4
IGFuZAogICAgIC8vICAgICAgICBwbHVnaW5zL25ldHNjYXBlLXBsdWdpbi1zZXR3aW5kb3ctc2l6
ZS5odG1sCkBAIC0xNjAsNiArMTYzLDcgQEAgdm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6dXBkYXRl
V2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgIEFT
U0VSVChmcmFtZSk7CiAKICAgICByZW5kZXJlci0+c2V0V2lkZ2V0KGZyYW1lLT5sb2FkZXIoKS5z
dWJmcmFtZUxvYWRlcigpLmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQocm91bmRlZEludFNpemUoTGF5
b3V0U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpKSwgKnRoaXMsIHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzKSk7CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIH0KIAogYm9vbCBIVE1M
QXBwbGV0RWxlbWVudDo6Y2FuRW1iZWRKYXZhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAppbmRleCA3MTk2MjA3Li5lMDkzMWU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC05MSw3ICs5MSw4IEBAIGJvb2wgSFRNTEFyZWFF
bGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhdGggSFRNTEFyZWFFbGVtZW50Ojpj
b21wdXRlUGF0aChSZW5kZXJFbGVtZW50KiBvYmopIGNvbnN0CisvLyBGSVhNRTogV2Ugc2hvdWxk
IHVzZSBSZW5kZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCogb25jZSB3ZSB1cHN0
cmVhbSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KK1BhdGggSFRNTEFyZWFFbGVt
ZW50Ojpjb21wdXRlUGF0aChSZW5kZXJPYmplY3QqIG9iaikgY29uc3QKIHsKICAgICBpZiAoIW9i
aikKICAgICAgICAgcmV0dXJuIFBhdGgoKTsKQEAgLTExNSw4ICsxMTYsOSBAQCBQYXRoIEhUTUxB
cmVhRWxlbWVudDo6Y29tcHV0ZVBhdGgoUmVuZGVyRWxlbWVudCogb2JqKSBjb25zdAogICAgIHAu
dHJhbnNsYXRlKHRvRmxvYXRTaXplKGFic1BvcykpOwogICAgIHJldHVybiBwOwogfQotICAgIAot
TGF5b3V0UmVjdCBIVE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVSZWN0KFJlbmRlckVsZW1lbnQqIG9i
aikgY29uc3QKKworLy8gRklYTUU6IFVzZSBSZW5kZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRl
ck9iamVjdCogb25jZSB3ZSB1cHN0cmVhbSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1t
fS4KK0xheW91dFJlY3QgSFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUmVjdChSZW5kZXJPYmplY3Qq
IG9iaikgY29uc3QKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChjb21wdXRlUGF0
aChvYmopLmZhc3RCb3VuZGluZ1JlY3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVs
ZW1lbnQuaAppbmRleCAxYzJjOGUzLi4yZDYxMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFy
ZWFFbGVtZW50LmgKQEAgLTQxLDggKzQxLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXBNb3Vz
ZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJl
c3VsdCYpOwogCi0gICAgTGF5b3V0UmVjdCBjb21wdXRlUmVjdChSZW5kZXJFbGVtZW50KikgY29u
c3Q7Ci0gICAgUGF0aCBjb21wdXRlUGF0aChSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgLy8g
RklYTUU6IFVzZSBSZW5kZXJFbGVtZW50KiBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCogb25jZSB3
ZSB1cHN0cmVhbSBpT1MncyBET01VSUtpdEV4dGVuc2lvbnMue2gsIG1tfS4KKyAgICBMYXlvdXRS
ZWN0IGNvbXB1dGVSZWN0KFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIFBhdGggY29tcHV0ZVBh
dGgoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKICAgICAvLyBUaGUgcGFyZW50IG1hcCdzIGltYWdl
LgogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA2NDRiMjRmLi45NDlkMDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgpAQCAtMjAzLDYgKzIw
Myw5IEBAIG9uaW52YWxpZAogb25rZXlkb3duCiBvbmtleXByZXNzCiBvbmtleXVwCitvbmdlc3R1
cmVzdGFydAorb25nZXN0dXJlY2hhbmdlCitvbmdlc3R1cmVlbmQKIG9ubG9hZAogb25sb2FkZWRk
YXRhCiBvbmxvYWRlZG1ldGFkYXRhCkBAIC0zNDIsMyArMzQ1LDEyIEBAIHdlYmtpdGFsbG93ZnVs
bHNjcmVlbgogd2Via2l0ZGlyZWN0b3J5CiB3aWR0aAogd3JhcAorCithdXRvY29ycmVjdAorYXV0
b2NhcGl0YWxpemUKK2RhdGEteW91dHViZS1pZAorb253ZWJraXRjdXJyZW50cGxheWJhY2t0YXJn
ZXRpc3dpcmVsZXNzY2hhbmdlZAorb253ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNo
YW5nZWQKK3dlYmtpdC1wbGF5c2lubGluZQoreC13ZWJraXQtYWlycGxheQoreC13ZWJraXQtd2ly
ZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcAppbmRleCBmMWM2NWU1Li44ZTNlMjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDExIEBAIGludCBIVE1MQm9keUVsZW1lbnQ6
OnNjcm9sbExlZnQoKQogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAg
aWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gMDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgcmV0
dXJuIGFkanVzdEZvclpvb20odmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkueCgpLCAq
ZnJhbWUpOworI2Vsc2UKICAgICByZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5zY3JvbGxYKCks
ICpmcmFtZSk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnNldFNjcm9sbExl
ZnQoaW50IHNjcm9sbExlZnQpCkBAIC0yMzIsNyArMjM2LDExIEBAIGludCBIVE1MQm9keUVsZW1l
bnQ6OnNjcm9sbFRvcCgpCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiAwOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBy
ZXR1cm4gYWRqdXN0Rm9yWm9vbSh2aWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS55KCks
ICpmcmFtZSk7CisjZWxzZQogICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPnNjcm9sbFko
KSwgKmZyYW1lKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxCb2R5RWxlbWVudDo6c2V0U2Nyb2xs
VG9wKGludCBzY3JvbGxUb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
dXR0b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
Y3BwCmluZGV4IDcyYTkwNDguLjcyMjFkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCkBAIC0xNTQsOSArMTU0LDEzIEBAIHZvaWQgSFRNTEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiBib29sIEhUTUxCdXR0b25F
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CisjZWxzZQogICAgIGlm
ICghaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgZm9ybSgpICYmIChtX3R5cGUgPT0gU1VCTUlU
IHx8IG1fdHlwZSA9PSBSRVNFVCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwor
I2VuZGlmCiB9CiAKIGJvb2wgSFRNTEJ1dHRvbkVsZW1lbnQ6OmlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IDlmOGFjZWMuLjJkZDg0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCkBAIC02NSw3ICs2NSw5IEBAIHN0YXRpYyBjb25zdCBpbnQgRGVmYXVsdEhlaWdo
dCA9IDE1MDsKIC8vIEZpcmVmb3ggbGltaXRzIHdpZHRoL2hlaWdodCB0byAzMjc2NyBwaXhlbHMs
IGJ1dCBzbG93cyBkb3duIGRyYW1hdGljYWxseSBiZWZvcmUgaXQKIC8vIHJlYWNoZXMgdGhhdCBs
aW1pdC4gV2UgbGltaXQgYnkgYXJlYSBpbnN0ZWFkLCBnaXZpbmcgdXMgbGFyZ2VyIG1heGltdW0g
ZGltZW5zaW9ucywKIC8vIGluIGV4Y2hhbmdlIGZvciBhIHNtYWxsZXIgbWF4aW11bSBjYW52YXMg
c2l6ZS4KKyNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIGNvbnN0IGZsb2F0IE1heENhbnZhc0Fy
ZWEgPSAzMjc2OCAqIDgxOTI7IC8vIE1heGltdW0gY2FudmFzIGFyZWEgaW4gQ1NTIHBpeGVscwor
I2VuZGlmCiAKIEhUTUxDYW52YXNFbGVtZW50OjpIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKQEAgLTc0LDYgKzc2LDEwIEBAIEhUTUxDYW52YXNFbGVtZW50
OjpIVE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jCiAgICAgLCBtX2lnbm9yZVJlc2V0KGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUZh
Y3Rvcih0YXJnZXREZXZpY2VTY2FsZUZhY3RvcigpKQogICAgICwgbV9vcmlnaW5DbGVhbih0cnVl
KQorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVj
b25jaWxlIHVzYWdlIG9mIE1heENhbnZhc0FyZWEgYW5kIG1fbWF4aW11bURlY29kZWRJbWFnZVNp
emUuCisgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplKGRvY3VtZW50LnNldHRpbmdzKCkg
PyBkb2N1bWVudC5zZXR0aW5ncygpLT5tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpIDogMCkKKyNl
bmRpZgogICAgICwgbV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoZmFsc2UpCiAgICAgLCBtX2RpZENs
ZWFySW1hZ2VCdWZmZXIoZmFsc2UpCiB7CkBAIC01NzMsOCArNTc5LDEzIEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3QKICAgICBpZiAoIWRldmljZVNp
emUuaXNFeHByZXNzaWJsZUFzSW50U2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKGRldmljZVNpemUud2lkdGgoKSAqIGRldmljZVNpemUuaGVpZ2h0
KCkgKiA0ID4gbV9tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuOworI2Vs
c2UKICAgICBpZiAoZGV2aWNlU2l6ZS53aWR0aCgpICogZGV2aWNlU2l6ZS5oZWlnaHQoKSA+IE1h
eENhbnZhc0FyZWEpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgogCiAgICAgSW50U2l6ZSBidWZm
ZXJTaXplKGRldmljZVNpemUud2lkdGgoKSwgZGV2aWNlU2l6ZS5oZWlnaHQoKSk7CiAgICAgaWYg
KCFidWZmZXJTaXplLndpZHRoKCkgfHwgIWJ1ZmZlclNpemUuaGVpZ2h0KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggNmI1MDMxOS4uZWFjYWIxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW5UYWludGVkKCkgeyBtX29yaWdpbkNsZWFuID0gZmFs
c2U7IH0KICAgICBib29sIG9yaWdpbkNsZWFuKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5DbGVh
bjsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgdXNlIHVuc2ln
bmVkIGRhdGEgdHlwZXMsIHVuc2lnbmVkIG9yIHNpemVfdD8KKyAgICB2b2lkIHNldE1heGl1bURl
Y29kZWRJbWFnZVNpemUoZmxvYXQgbWF4aW11bURlY29kZWRJbWFnZVNpemUpIHsgbV9tYXhpbXVt
RGVjb2RlZEltYWdlU2l6ZSA9IG1heGltdW1EZWNvZGVkSW1hZ2VTaXplOyB9CisgICAgZmxvYXQg
bWF4aW11bURlY29kZWRJbWFnZVNpemUoKSB7IHJldHVybiBtX21heGltdW1EZWNvZGVkSW1hZ2VT
aXplOyB9CisjZW5kaWYKKwogICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoV0VCR0wpICAgIApAQCAtMTc2LDYgKzE4MiwxMSBAQCBwcml2YXRl
OgogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAgICAgYm9vbCBtX29yaWdpbkNsZWFu
OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBDYW4gd2UgdXNlIGEgdW5zaWdu
ZWQgZGF0YSB0eXBlLCB1bnNpZ25lZCBvciBzaXplX3Q/CisgICAgZmxvYXQgbV9tYXhpbXVtRGVj
b2RlZEltYWdlU2l6ZTsKKyNlbmRpZgorCiAgICAgLy8gbV9jcmVhdGVkSW1hZ2VCdWZmZXIgbWVh
bnMgd2UgdHJpZWQgdG8gbWFsbG9jIHRoZSBidWZmZXIuICBXZSBkaWRuJ3QgbmVjZXNzYXJpbHkg
Z2V0IGl0LgogICAgIG11dGFibGUgYm9vbCBtX2hhc0NyZWF0ZWRJbWFnZUJ1ZmZlcjsKICAgICBt
dXRhYmxlIGJvb2wgbV9kaWRDbGVhckltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuY3BwCmluZGV4IDE3ZTIwNmUuLjIwYjYwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKQEAgLTgxLDggKzgxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFz
c2VzKQotICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzLCBib29sIGlz
U3ludGhlc2l6ZWQpCisgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBkb2N1bWVudENsYXNzZXMg
fCBIVE1MRG9jdW1lbnRDbGFzcywgaXNTeW50aGVzaXplZCkKIHsKICAgICBjbGVhclhNTFZlcnNp
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCmluZGV4IDE1MzQwZGUuLmU5MDYy
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApAQCAtMzUsNiArMzUsMTIgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJh
bWUsIHVybCkpOwogICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4g
Y3JlYXRlU3ludGhlc2l6ZWREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRG9jdW1lbnQoZnJhbWUsIHVy
bCwgdHJ1ZSkpOworICAgIH0KKwogICAgIHZpcnR1YWwgfkhUTUxEb2N1bWVudCgpOwogCiAgICAg
aW50IHdpZHRoKCk7CkBAIC04MCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgRG9jdW1lbnRDbGFzc0Zs
YWdzID0gMCk7CisgICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJiwgRG9jdW1lbnRD
bGFzc0ZsYWdzID0gMCwgYm9vbCBpc1N5bnRoZXNpemVkID0gZmFsc2UpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAppbmRleCA0MjVmNjE3Li41YzM2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcApAQCAtMTc1LDExICsxNzUsMTcgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUKICAg
ICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOwogICAgICAgICAgICAgYWRk
UHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdl
YmtpdE5ic3BNb2RlLCBDU1NWYWx1ZVNwYWNlKTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9Q
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJl
YWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAg
ICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIENTU1ZhbHVlTm9uZSk7CisjZW5kaWYKICAgICAg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInBsYWludGV4dC1vbmx5Iikp
IHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZVBsYWlu
dGV4dE9ubHkpOwogICAgICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwogICAgICAgICAgICAg
YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwgQ1NTVmFsdWVOb25lKTsK
KyNlbmRpZgogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiZmFs
c2UiKSkKICAgICAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsK
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaGlkZGVuQXR0cikgewpAQCAtMjc4LDYgKzI4NCwxMSBA
QCBzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGVFdmVudE5hbWVGb3JBdHRyaWJ1dGVM
b2NhbE5hbWVNYXAoSGFzaE1hcDxBdG9taQogICAgICAgICAmb252b2x1bWVjaGFuZ2VBdHRyLAog
ICAgICAgICAmb253YWl0aW5nQXR0ciwKICAgICAgICAgJm9ud2hlZWxBdHRyLAorI2lmIEVOQUJM
RShJT1NfR0VTVFVSRV9FVkVOVFMpCisgICAgICAgICZvbmdlc3R1cmVjaGFuZ2VBdHRyLAorICAg
ICAgICAmb25nZXN0dXJlZW5kQXR0ciwKKyAgICAgICAgJm9uZ2VzdHVyZXN0YXJ0QXR0ciwKKyNl
bmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgJm9ud2Via2l0ZnVsbHNj
cmVlbmNoYW5nZUF0dHIsCiAgICAgICAgICZvbndlYmtpdGZ1bGxzY3JlZW5lcnJvckF0dHIsCkBA
IC0xMDcxLDYgKzEwODIsMjMgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTENvbG9yVG9TdHls
ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydHkKICAgICBzdHlsZS5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjc3NWYWx1ZVBvb2woKS5jcmVhdGVDb2xvclZhbHVlKHBh
cnNlZENvbG9yLnJnYigpKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitib29sIEhUTUxFbGVt
ZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKK3sKKyAgICByZXR1cm4gIWlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpICYmIEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVu
dHMoKTsKK30KKworYm9vbCBIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVu
dHMoKQoreworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgRWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMoKTsKK30KKworYm9vbCBIVE1MRWxlbWVudDo6
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQoreworICAgIHJldHVybiAhaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkgJiYgRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVH
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMzc0YWJlNS4uM2FiZDhhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtOTIsNiArOTIsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxVbmtub3duRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCB3aWxsUmVzcG9uZFRvTW91c2VXaGVlbEV2ZW50cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFOworI2VuZGlmCisK
ICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgRm9ybU5hbWVkSXRlbSogYXNGb3JtTmFtZWRJdGVtKCkgeyByZXR1cm4gMDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApp
bmRleCAzMjk2NjNmLi5jZmYwOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ2OSw2ICs0NjksNDMgQEAgYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50Ojppc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29uc3QKICAgICByZXR1cm4g
aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgJiYgZm9ybSgpICYmIGZvcm0oKS0+ZGVmYXVsdEJ1
dHRvbigpID09IHRoaXM7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitib29sIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OmF1dG9jb3JyZWN0KCkgY29uc3QKK3sKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGF1dG9jb3JyZWN0VmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGF1dG9jb3JyZWN0QXR0cik7
CisgICAgaWYgKCFhdXRvY29ycmVjdFZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICFl
cXVhbElnbm9yaW5nQ2FzZShhdXRvY29ycmVjdFZhbHVlLCAib2ZmIik7CisgICAgaWYgKEhUTUxG
b3JtRWxlbWVudCogZm9ybSA9IHRoaXMtPmZvcm0oKSkKKyAgICAgICAgcmV0dXJuIGZvcm0tPmF1
dG9jb3JyZWN0KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9vbCBhdXRvY29ycmVjdCkKK3sKKyAgICBzZXRBdHRy
aWJ1dGUoYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29ycmVjdCA/IEF0b21pY1N0cmluZygib24iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0b21pY1N0cmluZygib2ZmIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworfQorCitXZWJBdXRvY2FwaXRh
bGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCkgY29u
c3QKK3sKKyAgICBXZWJBdXRvY2FwaXRhbGl6ZVR5cGUgdHlwZSA9IGF1dG9jYXBpdGFsaXplVHlw
ZUZvckF0dHJpYnV0ZVZhbHVlKGZhc3RHZXRBdHRyaWJ1dGUoYXV0b2NhcGl0YWxpemVBdHRyKSk7
CisgICAgaWYgKHR5cGUgPT0gV2ViQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdCkgeworICAgICAg
ICBpZiAoSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gdGhpcy0+Zm9ybSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZvcm0tPmF1dG9jYXBpdGFsaXplVHlwZSgpOworICAgIH0KKyAgICByZXR1cm4gdHlw
ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdXRv
Y2FwaXRhbGl6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0cmluZ0ZvckF1dG9jYXBpdGFsaXpl
VHlwZShhdXRvY2FwaXRhbGl6ZVR5cGUoKSk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBzZXRBdHRyaWJ1dGUoYXV0b2NhcGl0YWxpemVBdHRyLCB2YWx1ZSk7Cit9CisjZW5kaWYKKwog
SFRNTEZvcm1Db250cm9sRWxlbWVudCogSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5n
Rm9ybUNvbnRyb2xFbGVtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgZm9yICg7IG5vZGU7IG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggMjhlNjc5MC4uNzY2OGIyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTI3LDYgKzI3LDEwIEBACiAjaW5j
bHVkZSAiRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiTGFiZWxhYmxlRWxlbWVu
dC5oIgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkF1dG9jYXBpdGFsaXplLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3JtRGF0YUxpc3Q7CkBAIC04
NSw2ICs4OSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGVkU3VibWl0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVk
U3VibWl0KGJvb2wpIHsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgYXV0b2NvcnJl
Y3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOworCisgICAgV2ViQXV0
b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0OworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgYXV0b2NhcGl0YWxpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9jYXBp
dGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYpOworI2VuZGlmCisKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFs
aWRhdGlvbk1lc3NhZ2UoKTsKICAgICB2b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA2Y2UxODVjLi4w
MTZjMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgTm9kZSogSFRNTEZvcm1FbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQog
CiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3VibWl0SW1wbGljaXRseShFdmVudCogZXZlbnQsIGJv
b2wgZnJvbUltcGxpY2l0U3VibWlzc2lvblRyaWdnZXIpCiB7Ci0gICAgaW50IHN1Ym1pc3Npb25U
cmlnZ2VyQ291bnQgPSAwOworICAgIHVuc2lnbmVkIHN1Ym1pc3Npb25UcmlnZ2VyQ291bnQgPSAw
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29jaWF0ZWRFbGVtZW50cy5zaXpl
KCk7ICsraSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGZvcm1Bc3NvY2lhdGVk
RWxlbWVudCA9IG1fYXNzb2NpYXRlZEVsZW1lbnRzW2ldOwogICAgICAgICBpZiAoIWZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKQEAgLTE4Niw3ICsxODYsMTMg
QEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqIGV2ZW50LCBi
b29sIGZyb21JbXBsaWNpdFN1Ym1pc3Npb24KICAgICAgICAgfSBlbHNlIGlmIChmb3JtRWxlbWVu
dC0+Y2FuVHJpZ2dlckltcGxpY2l0U3VibWlzc2lvbigpKQogICAgICAgICAgICAgKytzdWJtaXNz
aW9uVHJpZ2dlckNvdW50OwogICAgIH0KLSAgICBpZiAoZnJvbUltcGxpY2l0U3VibWlzc2lvblRy
aWdnZXIgJiYgc3VibWlzc2lvblRyaWdnZXJDb3VudCA9PSAxKQorCisgICAgaWYgKCFzdWJtaXNz
aW9uVHJpZ2dlckNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbGRlciBpT1MgYXBw
cyB1c2luZyBXZWJWaWV3cyBleHBlY3QgdGhlIGJlaGF2aW9yIG9mIGF1dG8gc3VibWl0dGluZyBt
dWx0aS1pbnB1dCBmb3Jtcy4KKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCk7CisgICAgaWYgKGZyb21JbXBsaWNpdFN1Ym1pc3Npb25UcmlnZ2VyICYmIChzdWJt
aXNzaW9uVHJpZ2dlckNvdW50ID09IDEgfHwgKHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd011
bHRpRWxlbWVudEltcGxpY2l0U3VibWlzc2lvbigpKSkpCiAgICAgICAgIHByZXBhcmVGb3JTdWJt
aXNzaW9uKGV2ZW50KTsKIH0KIApAQCAtMzc3LDYgKzM4MywzOCBAQCB2b2lkIEhUTUxGb3JtRWxl
bWVudDo6cmVzZXQoKQogICAgIG1faXNJblJlc2V0RnVuY3Rpb24gPSBmYWxzZTsKIH0KIAorI2lm
IFBMQVRGT1JNKElPUykKK2Jvb2wgSFRNTEZvcm1FbGVtZW50OjphdXRvY29ycmVjdCgpIGNvbnN0
Cit7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdXRvY29ycmVjdFZhbHVlID0gZmFzdEdldEF0
dHJpYnV0ZShhdXRvY29ycmVjdEF0dHIpOworICAgIGlmICghYXV0b2NvcnJlY3RWYWx1ZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAhZXF1YWxJZ25vcmluZ0Nhc2UoYXV0b2NvcnJlY3RWYWx1
ZSwgIm9mZiIpOworICAgIGlmIChIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSB0aGlzLT5mb3JtKCkp
CisgICAgICAgIHJldHVybiBmb3JtLT5hdXRvY29ycmVjdCgpOworICAgIHJldHVybiB0cnVlOwor
fQorCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NvcnJlY3QoYm9vbCBhdXRvY29ycmVj
dCkKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyLCBhdXRvY29ycmVjdCA/IEF0
b21pY1N0cmluZygib24iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IEF0
b21pY1N0cmluZygib2ZmIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwor
fQorCitXZWJBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1FbGVtZW50OjphdXRvY2FwaXRhbGl6
ZVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBhdXRvY2FwaXRhbGl6ZVR5cGVGb3JBdHRyaWJ1
dGVWYWx1ZShmYXN0R2V0QXR0cmlidXRlKGF1dG9jYXBpdGFsaXplQXR0cikpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEhUTUxGb3JtRWxlbWVudDo6YXV0b2NhcGl0YWxpemUoKSBjb25zdAor
eworICAgIHJldHVybiBzdHJpbmdGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoYXV0b2NhcGl0YWxpemVU
eXBlKCkpOworfQorCit2b2lkIEhUTUxGb3JtRWxlbWVudDo6c2V0QXV0b2NhcGl0YWxpemUoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGUoYXV0b2NhcGl0YWxp
emVBdHRyLCB2YWx1ZSk7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gYWN0aW9uQXR0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5oCmluZGV4IDc2MDNkODAuLjUxMGE1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMzAsNiArMzAsMTAgQEAKICNpbmNsdWRlICJIVE1MRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNp
bmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRXZlbnQ7CkBAIC02MSw2ICs2NSwxNSBAQCBwdWJsaWM6CiAKICAgICBib29sIHNo
b3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wg
YXV0b2NvcnJlY3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOworCisg
ICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0OworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgYXV0b2NhcGl0YWxpemUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYpOworI2VuZGlmCisKICAgICAvLyBG
SVhNRTogU2hvdWxkIHJlbmFtZSB0aGVzZSB0d28gZnVuY3Rpb25zIHRvIHNheSAiZm9ybSBjb250
cm9sIiBvciAiZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnQiIGluc3RlYWQgb2YgImZvcm0gZWxlbWVu
dCIuCiAgICAgdm9pZCByZWdpc3RlckZvcm1FbGVtZW50KEZvcm1Bc3NvY2lhdGVkRWxlbWVudCop
OwogICAgIHZvaWQgcmVtb3ZlRm9ybUVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwKaW5kZXggZmE0YzE1Ny4uMGUyNDAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbApAQCAtMzYsNiArMzYs
MTEgQEAKIAogICAgIGdldHRlciBFbGVtZW50ICh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAorI2lm
IFdURl9QTEFURk9STV9JT1MKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKKyAg
ICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBhdXRvY2FwaXRh
bGl6ZTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5H
VUFHRV9KQVZBU0NSSVBUCiAgICAgW0ltcGxlbWVudGVkQXM9c3VibWl0RnJvbUphdmFTY3JpcHRd
IHZvaWQgc3VibWl0KCk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5oCmluZGV4IDU0YmZmNjUuLjQ3MGRkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmgKQEAgLTM3LDYgKzM3LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRN
TElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9h
cmRFdmVudCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAz
YTRkOTkwLi40ZjVlMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKQEAgLTEyMDIsNiArMTIwMiwxNSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IElz
IHRoaXMgY29kZSBuZWNlc3NhcnkgZ2l2ZW4gdGhhdCB3ZSBjaGVjayBldnQtPmlzVG91Y2hFdmVu
dCgpIChhYm92ZSk/CisgICAgaWYgKGV2dC0+ZXZlbnRJbnRlcmZhY2UoKSA9PSBUb3VjaEV2ZW50
SW50ZXJmYWNlVHlwZSkgeworICAgICAgICBtX2lucHV0VHlwZS0+aGFuZGxlVG91Y2hFdmVudChz
dGF0aWNfY2FzdDxUb3VjaEV2ZW50Kj4oZXZ0KSk7CisgICAgICAgIGlmIChldnQtPmRlZmF1bHRI
YW5kbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBtX2lu
cHV0VHlwZS0+Zm9yd2FyZEV2ZW50KGV2dCk7CiAKICAgICBpZiAoIWNhbGxCYXNlQ2xhc3NFYXJs
eSAmJiAhZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQpAQCAtMTIxMCwxMSArMTIxOSwxNSBAQCB2b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIAogYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7Cisj
ZWxzZQogICAgIC8vIEZJWE1FOiBDb25zaWRlciBpbXBsZW1lbnRpbmcgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBpbiBJbnB1dFR5cGUgaWYgbW9yZSBhY2N1cmF0ZSByZXN1bHRzIGFy
ZSBuZWNlc3NhcnkuCiAgICAgaWYgKCFpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6Ondp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CisjZW5kaWYKIH0KIAogYm9vbCBIVE1MSW5w
dXRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29u
c3QKQEAgLTEzNjEsNiArMTM3NCwxMyBAQCBJY29uKiBIVE1MSW5wdXRFbGVtZW50OjppY29uKCkg
Y29uc3QKICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmljb24oKTsKIH0KIAorI2lmIFBMQVRGT1JN
KElPUykKK1N0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpkaXNwbGF5U3RyaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRpc3BsYXlTdHJpbmcoKTsKK30KKyNlbmRpZgorCiBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OmNhblJlY2VpdmVEcm9wcGVkRmlsZXMoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NhblJlY2VpdmVEcm9wcGVkRmlsZXM7CkBAIC0xNjMxLDYgKzE2NTEsMTQg
QEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQoKSBjb25zdAogCiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKElPUykKK0RhdGVDb21wb25lbnRzOjpUeXBlIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRhdGVUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmRhdGVU
eXBlKCk7Cit9CisjZW5kaWYKKworCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVGV4dEJ1dHRv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1RleHRCdXR0b24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMDJiMmM0Zi4uOTI4MjljMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI5LDYgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJTdGVw
UmFuZ2UuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2hlY2tlZFJhZGlvQnV0
dG9uczsKQEAgLTEzOCw2ICsxNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcGVlY2hFbmFi
bGVkKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBEYXRlQ29tcG9u
ZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0OworI2VuZGlmCisKICAgICBIVE1MRWxlbWVudCog
Y29udGFpbmVyRWxlbWVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgSFRNTEVs
ZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7CkBAIC0yNDcsNiArMjU1LDkgQEAgcHVi
bGljOgogICAgIGJvb2wgcmVjZWl2ZURyb3BwZWRGaWxlcyhjb25zdCBEcmFnRGF0YSYpOwogCiAg
ICAgSWNvbiogaWNvbigpIGNvbnN0OworI2lmIFBMQVRGT1JNKElPUykKKyAgICBTdHJpbmcgZGlz
cGxheVN0cmluZygpIGNvbnN0OworI2VuZGlmCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1
c2VkIGZvciByZW5kZXJpbmcgdGhlIGlucHV0IGFjdGl2ZSBkdXJpbmcgYQogICAgIC8vIGRyYWct
YW5kLWRyb3Agb3BlcmF0aW9uLgogICAgIGJvb2wgY2FuUmVjZWl2ZURyb3BwZWRGaWxlcygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5pZGwKaW5kZXggNzI3YmY2
OS4uZTNlYmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaWRsCkBA
IC0xMjUsNiArMTI1LDExIEBAIGludGVyZmFjZSBIVE1MSW5wdXRFbGVtZW50IDogSFRNTEVsZW1l
bnQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBVUkwgYWJzb2x1dGVJbWFnZVVSTDsKICNlbmRp
ZgogCisjaWYgV1RGX1BMQVRGT1JNX0lPUworICAgIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3Jy
ZWN0OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF1
dG9jYXBpdGFsaXplOworI2VuZGlmCisKICAgICAvLyBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbC1tZWRpYS1jYXB0dXJlLwogICAgIFtDb25kaXRpb25hbD1NRURJQV9DQVBUVVJFXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGNhcHR1cmU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExhYmVs
RWxlbWVudC5jcHAKaW5kZXggMmFkOWEzOC4uZjViNjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMYWJlbEVsZW1lbnQuY3BwCkBAIC0xNDEsMTAgKzE0MSwxMSBAQCB2b2lkIEhUTUxMYWJl
bEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKIAogYm9vbCBIVE1MTGFi
ZWxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7Ci0gICAgaWYgKGNv
bnRyb2woKSAmJiBjb250cm9sKCktPndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gY29u
dHJvbCgpIHx8IEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpOwor
I2Vsc2UKKyAgICByZXR1cm4gKGNvbnRyb2woKSAmJiBjb250cm9sKCktPndpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkpIHx8IEhUTUxFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTExhYmVsRWxlbWVudDo6Zm9jdXMoYm9v
bCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNjQyMWYyZC4uYmI1Nzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04Myw2ICs4Myw3IEBACiAKICNpZiBFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgor
I2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjZW5kaWYK
IApAQCAtMTAzLDYgKzEwNCwxNCBAQAogI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzSU9TLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkK
KyNpbmNsdWRlICJXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgiCisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJEaXNwbGF5U2xlZXBEaXNhYmxlci5o
IgogI2VuZGlmCkBAIC0yNDgsNyArMjU3LDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogSFRNTE1l
ZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQorICAgIDogSFRNTEZyYW1lT3duZXJFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQorI2Vsc2UKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQorI2VuZGlmCiAgICAgLCBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQogICAgICwgbV9sb2Fk
VGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKQogICAgICwgbV9w
cm9ncmVzc0V2ZW50VGltZXIodGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnByb2dyZXNzRXZlbnRU
aW1lckZpcmVkKQpAQCAtMzEwLDYgKzMyMywxMCBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQog
I2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgICwgbV9pc0Rpc3BsYXlTbGVlcERp
c2FibGluZ1N1c3BlbmRlZChkb2N1bWVudC5oaWRkZW4oKSkKICNlbmRpZgorI2lmIFBMQVRGT1JN
KElPUykKKyAgICAsIG1fcmVxdWVzdGluZ1BsYXkoZmFsc2UpCisgICAgLCBtX3VzZXJTdGFydGVk
UGxheWJhY2soZmFsc2UpCisjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBt
X3RyYWNrc0FyZVJlYWR5KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrKGZhbHNl
KQpAQCAtMzM1LDYgKzM1Miw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCIpOwogICAgIHNldEhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
bGVhbiB1cCBhbmQgbG9vayB0byBiZXR0ZXIgbWVyZ2UgdGhlIGlPUyBhbmQgbm9uLWlPUyBjb2Rl
IGJlbG93LgorICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LnNldHRpbmdzKCk7Cisj
aWYgIVBMQVRGT1JNKElPUykKICAgICBkb2N1bWVudC5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2Fs
bGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3Rh
dGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogCkBAIC0zNDIsMTAgKzM2MiwyMCBAQCBIVE1MTWVk
aWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50JiBkb2N1bQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRl
Q2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNlbmRpZgogCi0gICAgaWYgKGRvY3VtZW50LnNldHRp
bmdzKCkgJiYgZG9jdW1lbnQuc2V0dGluZ3MoKS0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdl
c3R1cmUoKSkgeworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1Jl
cXVpcmVzVXNlckdlc3R1cmUoKSkgewogICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJl
cXVpcmVVc2VyR2VzdHVyZUZvclJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CiAgICAgICAgIGFkZEJl
aGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZFJlc3RyaWN0aW9uKTsK
ICAgICB9CisjZWxzZQorICAgIG1fc2VuZFByb2dyZXNzRXZlbnRzID0gZmFsc2U7CisgICAgaWYg
KCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUo
KSkgeworICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZv
clJhdGVDaGFuZ2VSZXN0cmljdGlvbik7CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgICAg
ICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICBtX3Jlc3RyaWN0aW9u
cyA9IE5vUmVzdHJpY3Rpb25zOworI2VuZGlmIC8vICFQTEFURk9STShJT1MpCiAKICAgICBhZGRF
bGVtZW50VG9Eb2N1bWVudE1hcCgqdGhpcywgZG9jdW1lbnQpOwogCkBAIC0zOTIsNiArNDIyLDEx
IEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBpZiAobV9wbGF5ZXIgJiYgIWhhc0V2ZW50
TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNo
YW5nZWRFdmVudCkpCisgICAgICAgIG1fcGxheWVyLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7CisjZW5kaWYKKwogICAgIGlmIChtX21lZGlhQ29udHJv
bGxlcikgewogICAgICAgICBtX21lZGlhQ29udHJvbGxlci0+cmVtb3ZlTWVkaWFFbGVtZW50KHRo
aXMpOwogICAgICAgICBtX21lZGlhQ29udHJvbGxlciA9IDA7CkBAIC00NTYsMTEgKzQ5MSw0NiBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzTW91c2VGb2N1c2FibGUoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6cGFyc2VNZWRpYVBsYXllckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQoreworICAgIEFTU0VSVChtX3BsYXllcik7CisgICAg
aWYgKG5hbWUgPT0gZGF0YV95b3V0dWJlX2lkQXR0cikgeworICAgICAgICBtX3BsYXllci0+YXR0
cmlidXRlQ2hhbmdlZChuYW1lLnRvU3RyaW5nKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIGlmIChuYW1lID09IHRpdGxlQXR0cikgeworICAgICAgICBtX3BsYXll
ci0+YXR0cmlidXRlQ2hhbmdlZChuYW1lLnRvU3RyaW5nKCksIHZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50
KCkuc2V0dGluZ3MoKSkgeworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICAgICAgaWYgKG5h
bWUgPT0gd2Via2l0YWlycGxheUF0dHIgJiYgc2V0dGluZ3MtPm1lZGlhUGxheWJhY2tBbGxvd3NB
aXJQbGF5KCkpIHsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hdHRyaWJ1dGVDaGFuZ2VkKG5hbWUu
dG9TdHJpbmcoKSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICBpZiAobmFtZSA9PSB3ZWJraXRfcGxheXNpbmxpbmVBdHRyICYmIHNl
dHRpbmdzLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKCkpIHsKKyAgICAgICAgICAgIG1fcGxh
eWVyLT5hdHRyaWJ1dGVDaGFuZ2VkKG5hbWUudG9TdHJpbmcoKSwgQVNDSUlMaXRlcmFsKHZhbHVl
LmlzTnVsbCgpID8gImZhbHNlIiA6ICJ0cnVlIikpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzcmNBdHRy
KSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBOb3RlLCB1bmxlc3MgdGhlIHJlc3Ry
aWN0aW9uIG9uIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiByZW1vdmVkLAorICAgICAg
ICAvLyBkbyBub3QgYmVnaW4gZG93bmxvYWRpbmcgZGF0YSBvbiBpT1MuCisgICAgICAgIGlmICgh
dXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhdmFsdWUuaXNOdWxsKCkpIHsKKyNlbHNl
CiAgICAgICAgIC8vIFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdzcmMnIGF0dHJp
YnV0ZSBpcyBwcmVzZW50LgogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisjZW5kaWYK
ICAgICAgICAgICAgIGNsZWFyTWVkaWFQbGF5ZXIoTG9hZE1lZGlhUmVzb3VyY2UpOwogICAgICAg
ICAgICAgc2NoZWR1bGVEZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICAgICAg
fQpAQCAtNTM1LDYgKzYwNSwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3Jl
ZW5FdmVudCwgbmFtZSwgdmFsdWUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gb253ZWJraXRlbmRm
dWxsc2NyZWVuQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50LCBuYW1lLCB2YWx1ZSk7CisjaWYgRU5BQkxF
KElPU19BSVJQTEFZKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gb253ZWJraXRjdXJyZW50cGxheWJh
Y2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxl
c3NjaGFuZ2VkRXZlbnQsIG5hbWUsIHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkQXR0cikKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQsIG5hbWUsIHZhbHVlKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JN
KElPUykKKyAgICBlbHNlIGlmIChtX3BsYXllciAmJiBwYXJzZU1lZGlhUGxheWVyQXR0cmlidXRl
KG5hbWUsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgZWxzZQogICAgICAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpAQCAtNjEyLDcg
KzY5MiwxMSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNZWRpYUVs
ZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJgogICAgIGlmIChpbnNlcnRpb25Qb2lu
dC5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIAot
ICAgICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSAmJiAhZ2V0QXR0cmli
dXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmICgh
dXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JL
X0VNUFRZICYmICFmYXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyNlbHNlCisg
ICAgICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZICYmICFmYXN0R2V0QXR0
cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKKyNlbmRpZgogICAgICAgICAgICAgc2NoZWR1bGVE
ZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICB9CiAKQEAgLTgyNCw2ICs5MDgs
MTUgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkKICAgICAgICAgcmVtb3ZlQmVoYXZp
b3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAgICAgcHJlcGFyZUZvckxv
YWQoKTsKICAgICBsb2FkSW50ZXJuYWwoKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBV
bmxlc3MgdGhpcyBtZXRob2Qgd2FzIGNhbGxlZCBkaXJlY3RseSBieSB0aGUgdXNlciBvciB0aGUg
YXBwbGljYXRpb24gYWxsb3dzIGFueSBzY3JpcHQgdG8gdHJpZ2dlciBwbGF5YmFjaywKKyAgICAv
LyByZXR1cm4gbm93IGJlY2F1c2UgcHJlcGFyZVRvUGxheSgpIHRlbGxzIHRoZSBtZWRpYSBlbmdp
bmUgdG8gc3RhcnQgbG9hZGluZyBkYXRhIGFzIHNvb24gYXMgdGhlIG1vdmllIHZhbGlkYXRlcy4K
KyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7CisgICAgaWYg
KCFtX2xvYWRJbml0aWF0ZWRCeVVzZXJHZXN0dXJlICYmICghc2V0dGluZ3MgfHwgc2V0dGluZ3Mt
Pm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKwogICAgIHByZXBhcmVUb1BsYXkoKTsKIH0KIApAQCAtODYwLDcgKzk1Myw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBpZiAoc2hvdWxkVXNlVmlkZW9QbHVnaW5Q
cm94eSgpKQorICAgIGlmIChzaG91bGRVc2VWaWRlb1BsdWdpblByb3h5KCkpIHsKICAgICAgICAg
aWYgKG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPmNhbmNlbExvYWQoKTsKICAgICAg
ICAgZWxzZQpAQCAtOTEyLDYgKzEwMDUsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVw
YXJlRm9yTG9hZCgpCiAgICAgaWYgKG1fcHJlbG9hZCAhPSBNZWRpYVBsYXllcjo6Tm9uZSkKICAg
ICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CiAKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOworICAgIGlm
IChtX3ByZWxvYWQgIT0gTWVkaWFQbGF5ZXI6Ok5vbmUgJiYgc2V0dGluZ3MgJiYgc2V0dGluZ3Mt
Pm1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpKQorICAgICAgICBwcmVwYXJlVG9QbGF5KCk7
CisjZW5kaWYKKwogICAgIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKIH0KIApAQCAtMTgyMiw2
ICsxOTIxLDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgc3RhdGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBzaG91bGRVcGRhdGVQbGF5U3RhdGUgPSBmYWxzZTsK
KyNlbmRpZgorCiAgICAgaWYgKHN0YXRlID09IE1lZGlhUGxheWVyOjpJZGxlKSB7CiAgICAgICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfSURMRSkgewogICAgICAgICAgICAgY2hhbmdl
TmV0d29ya1N0YXRlRnJvbUxvYWRpbmdUb0lkbGUoKTsKQEAgLTE4NDUsNiArMTk0OCwxMSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIHN0YXRlKQogCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVk
aWFDb250cm9scygpLT51cGRhdGVTdGF0dXNEaXNwbGF5KCk7CisKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKHNob3VsZFVwZGF0ZVBsYXlTdGF0ZSkKKyAgICAgICAgdXBkYXRlUGxheVN0YXRl
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjaGFuZ2VOZXR3b3JrU3Rh
dGVGcm9tTG9hZGluZ1RvSWRsZSgpCkBAIC0yNTExLDYgKzI2MTksMTYgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjplbmRlZCgpIGNvbnN0CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YXV0b3Bs
YXkoKSBjb25zdAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBVbmxlc3MgdGhlIHJlc3Ry
aWN0aW9uIG9uIHJlcXVpcmluZyB1c2VyIGFjdGlvbnMgaGFzIGJlZW4gbGlmdGVkLCB3ZSBkbyBu
b3QKKyAgICAvLyBhbGxvdyBwbGF5YmFjayB0byBzdGFydCBqdXN0IGJlY2F1c2UgdGhlIHBhZ2Ug
aGFzICJhdXRvcGxheSIuIFRoZXkgYXJlIGVpdGhlcgorICAgIC8vIGxpZnRlZCB0aHJvdWdoIFNl
dHRpbmdzLCBvciBvbmNlIHRoZSB1c2VyIGV4cGxpY3RseSBjYWxscyBsb2FkKCkgb3IgcGxheSgp
CisgICAgLy8gYmVjYXVzZSB0aGV5IGhhdmUgT0snZWQgdXMgbG9hZGluZyBkYXRhLiBUaGlzIGFs
bG93cyBwbGF5YmFjayB0byBjb250aW51ZSBpZgorICAgIC8vIHRoZSBVUkwgaXMgY2hhbmdlZCB3
aGlsZSB0aGUgbW92aWUgaXMgcGxheWluZy4KKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZv
clJhdGVDaGFuZ2UoKSB8fCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yTG9hZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRlKGF1dG9w
bGF5QXR0cik7CiB9CiAKQEAgLTI1NTMsNiArMjY3MSwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXkoKQogICAgIGlmIChTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSkKICAgICAgICAgcmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJH
ZXN0dXJlKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgdXNlclJlcXVlc3RzTWVkaWFMb2Fk
aW5nKCk7CisjZW5kaWYKKwogICAgIHBsYXlJbnRlcm5hbCgpOwogfQogCkBAIC0yNTgxLDYgKzI3
MDMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAgICAgICAgICAg
ICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQpOwogICAgIH0KICAgICBt
X2F1dG9wbGF5aW5nID0gZmFsc2U7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIG1fcmVxdWVzdGlu
Z1BsYXkgPSB0cnVlOworI2VuZGlmCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAgICAgdXBkYXRl
TWVkaWFDb250cm9sbGVyKCk7CiB9CkBAIC0yNjAxLDggKzI3MjYsMTUgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpwYXVzZUludGVybmFsIik7CiAKICAgICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVk
aWEgcmVzb3VyY2UKLSAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdP
UktfRU1QVFkpCisgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JL
X0VNUFRZKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBVbmxlc3MgdGhlIHJlc3Ry
aWN0aW9uIG9uIG1lZGlhIHJlcXVpcmluZyB1c2VyIGFjdGlvbiBoYXMgYmVlbiBsaWZ0ZWQKKyAg
ICAgICAgLy8gZG9uJ3QgdHJpZ2dlciBsb2FkaW5nIGlmIGEgc2NyaXB0IGNhbGxzIHBhdXNlKCku
CisgICAgICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yUmF0ZUNoYW5nZSgpKQorICAgICAg
ICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihMb2Fk
TWVkaWFSZXNvdXJjZSk7CisgICAgfQogCiAgICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwogCkBA
IC0yNzc3LDEyICsyOTA5LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKGRv
dWJsZSB2b2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKG1fdm9sdW1lICE9IHZvbCkgewogICAgICAg
ICBtX3ZvbHVtZSA9IHZvbDsKICAgICAgICAgbV92b2x1bWVJbml0aWFsaXplZCA9IHRydWU7CiAg
ICAgICAgIHVwZGF0ZVZvbHVtZSgpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMo
KS52b2x1bWVjaGFuZ2VFdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6bXV0ZWQoKSBjb25zdApAQCAtMjc5NCw2ICsyOTI4LDkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE11dGVkKCVzKSIsIGJvb2xTdHJpbmcobXV0ZWQpKTsKIAorI2lmIFBM
QVRGT1JNKElPUykKKyAgICBVTlVTRURfUEFSQU0obXV0ZWQpOworI2Vsc2UKICAgICBpZiAobV9t
dXRlZCAhPSBtdXRlZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CiAgICAgICAgIC8vIEF2
b2lkIHJlY3Vyc2lvbiB3aGVuIHRoZSBwbGF5ZXIgcmVwb3J0cyB2b2x1bWUgY2hhbmdlcy4KQEAg
LTI4MDYsNiArMjk0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBt
dXRlZCkKICAgICAgICAgfQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1
bWVjaGFuZ2VFdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dG9nZ2xlUGxheVN0YXRlKCkKQEAgLTM3NTcsOSArMzg5NSwxNCBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgICAgICAg
ICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKLSAgICB9Ci0gICAgZWxzZQorICAgIH0gZWxzZSB7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBUaGUgY29udHJvbGxlciBjaGFuZ2VzIG1vdmll
IHRpbWUgZGlyZWN0bHkgaW5zdGVhZCBvZiBjYWxsaW5nIHRocm91Z2ggaGVyZSBzbyB3ZSBuZWVk
CisgICAgICAgIC8vIHRvIHBvc3QgdGltZXVwZGF0ZSBldmVudHMgaW4gcmVzcG9uc2UgdG8gdGlt
ZSBjaGFuZ2VzLgorICAgICAgICBzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChmYWxzZSk7CisjZW5k
aWYKICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSBmYWxzZTsKKyAgICB9CiAKICAgICB1cGRhdGVQ
bGF5U3RhdGUoKTsKICAgICBlbmRQcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwpAQCAt
NDA1Myw2ICs0MTk2LDE0IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjptYXhUaW1lU2Vla2Fi
bGUoKSBjb25zdAogICAgIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVWb2x1bWUoKQog
eworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBPbmx5IHRoZSB1c2VyIGNhbiBjaGFuZ2UgYXVk
aW8gdm9sdW1lIHNvIHVwZGF0ZSB0aGUgY2FjaGVkIHZvbHVtZSBhbmQgcG9zdCB0aGUgY2hhbmdl
ZCBldmVudC4KKyAgICBmbG9hdCB2b2x1bWUgPSBtX3BsYXllci0+dm9sdW1lKCk7CisgICAgaWYg
KG1fdm9sdW1lICE9IHZvbHVtZSkgeworICAgICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKKyAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudm9sdW1lY2hhbmdlRXZlbnQpOworICAgIH0K
KyNlbHNlCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDc0LDYg
KzQyMjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVZvbHVtZSgpCiAKICAgICBp
ZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPmNoYW5nZWRW
b2x1bWUoKTsKKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlT
dGF0ZSgpCkBAIC00MDk1LDYgKzQyNDcsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVQbGF5U3RhdGUoKQogICAgIGJvb2wgc2hvdWxkQmVQbGF5aW5nID0gcG90ZW50aWFsbHlQbGF5
aW5nKCk7CiAgICAgYm9vbCBwbGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+cGF1c2VkKCk7CiAKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiAhbV9yZXF1ZXN0aW5n
UGxheSAmJiAhbV9wbGF5ZXItPnJlYWR5Rm9yUGxheWJhY2soKSkKKyAgICAgICAgc2hvdWxkQmVQ
bGF5aW5nID0gZmFsc2U7CisgICAgZWxzZSBpZiAoIXNob3VsZEJlUGxheWluZyAmJiBtX3JlcXVl
c3RpbmdQbGF5ICYmIG1fcGxheWVyLT5yZWFkeUZvclBsYXliYWNrKCkpCisgICAgICAgIHNob3Vs
ZEJlUGxheWluZyA9IHRydWU7CisjZW5kaWYKKwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSAtIHNob3VsZEJlUGxheWluZyA9ICVzLCBwbGF5ZXJQYXVz
ZWQgPSAlcyIsIAogICAgICAgICBib29sU3RyaW5nKHNob3VsZEJlUGxheWluZyksIGJvb2xTdHJp
bmcocGxheWVyUGF1c2VkKSk7CiAKQEAgLTQxNDAsNiArNDI5OSwxMCBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAgICAgICAgICAgICBtZWRpYUNvbnRyb2xzKCkt
PnBsYXliYWNrU3RvcHBlZCgpOwogICAgICAgICBtX2FjdGl2aXR5VG9rZW4gPSBudWxscHRyOwog
ICAgIH0KKyAgICAKKyNpZiBQTEFURk9STShJT1MpCisgICAgbV9yZXF1ZXN0aW5nUGxheSA9IGZh
bHNlOworI2VuZGlmCiAKICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKIApAQCAtNDE2Myw4
ICs0MzI2LDE0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoKQog
ewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkIik7
CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBpT1MgYW5k
IG5vbi1pT1MgY29kZSAoYmVsb3cpLgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSB8fCBtX3JlYWR5U3RhdGUgPj0gSEFWRV9NRVRBREFU
QSkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVU
V09SS19FTVBUWSB8fCBtX2NvbXBsZXRlbHlMb2FkZWQpCiAgICAgICAgIHJldHVybjsKKyNlbmRp
ZgogCiAgICAgLy8gSWYgdGhlIG1lZGlhIGRhdGEgZmV0Y2hpbmcgcHJvY2VzcyBpcyBhYm9ydGVk
IGJ5IHRoZSB1c2VyOgogCkBAIC00Mjg3LDggKzQ0NTYsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiAgICAgICAgICAgICBzdG9wKCk7
CiAgICAgICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRv
UmVzdW1lTWVkaWFSZXN0cmljdGlvbik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQYWdlV2lsbEJlU3VzcGVuZGVkOgorICAgICAgICBjYXNlIERvY3VtZW50V2lsbEJlUGF1c2Vk
OgogICAgICAgICBjYXNlIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKKyAgICAgICAgY2FzZSBQ
YWdlV2lsbEJlU3VzcGVuZGVkOgogICAgICAgICBjYXNlIFdpbGxEZWZlckxvYWRpbmc6CiAgICAg
ICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0
aGVzZSBjYXNlcy4KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDMxNCw2ICs0NDg0LDkgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogICAgICAgICAvLyBtX2Vycm9yIGlzIG9ubHkg
bGVmdCBhdCBNRURJQV9FUlJfQUJPUlRFRCB3aGVuIHRoZSBkb2N1bWVudCBiZWNvbWVzIGluYWN0
aXZlIChpdCBpcyBzZXQgdG8KICAgICAgICAgLy8gIE1FRElBX0VSUl9BQk9SVEVEIHdoaWxlIHRo
ZSBhYm9ydEV2ZW50IGlzIGJlaW5nIHNlbnQsIGJ1dCBjbGVhcmVkIGltbWVkaWF0ZWx5IGFmdGVy
d2FyZHMpLgogICAgICAgICAvLyBUaGlzIGJlaGF2aW9yIGlzIG5vdCBzcGVjaWZpZWQgYnV0IGl0
IHNlZW1zIGxpa2UgYSBzZW5zaWJsZSB0aGluZyB0byBkby4KKyNpZiBQTEFURk9STShJT1MpCisg
ICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vOTc1MTMwMz4gTWVyZ2U6IERvZXMgcjEw
MzMwOTIgbmVlZCB0byBiZSByZWZpeGVkIGluIFRvVD8KKyNlbmRpZgogICAgICAgICAvLyBBcyBp
dCBpcyBub3Qgc2FmZSB0byBpbW1lZGF0ZWx5IHN0YXJ0IGxvYWRpbmcgbm93LCBsZXQncyBzY2hl
ZHVsZSBhIGxvYWQuCiAgICAgICAgIHNjaGVkdWxlRGVsYXllZEFjdGlvbihMb2FkTWVkaWFSZXNv
dXJjZSk7CiAgICAgfQpAQCAtNDM1OCw2ICs0NTMxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBIVE1MRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAjaWYg
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC00MzY2LDYgKzQ1NDAsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICNlbmRp
ZgogICAgIHJldHVybiBIVE1MRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KTsKIH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZXF1aXJlc1RleHRUcmFja1JlcHJlc2VudGF0aW9u
KCkgY29uc3QKQEAgLTQzOTEsMTIgKzQ1NjYsNTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bnN1cmVNZWRpYVBsYXllcigpCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRlbGl2ZXJOb3RpZmlj
YXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKQogewog
ICAgIGlmIChub3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25QbGF5UGF1c2VC
dXR0b25QcmVzc2VkKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICB1c2VyUmVxdWVzdHNN
ZWRpYUxvYWRpbmcoKTsKKyNlbmRpZgogICAgICAgICB0b2dnbGVQbGF5U3RhdGUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyNpZiBQTEFURk9STShJT1MpCisgICAgZWxzZSBpZiAobm90aWZp
Y2F0aW9uID09IE1lZGlhUGxheWVyUmVxdWVzdEJlZ2luUGxheWJhY2spIHsKKyAgICAgICAgaWYg
KG1fcGF1c2VkKQorICAgICAgICAgICAgcGxheUludGVybmFsKCk7CisgICAgfSBlbHNlIGlmIChu
b3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJSZXF1ZXN0UGF1c2VQbGF5YmFjaykgeworICAgICAg
ICBpZiAoIW1fcGF1c2VkKQorICAgICAgICAgICAgcGF1c2VJbnRlcm5hbCgpOworICAgIH0gZWxz
ZSBpZiAobm90aWZpY2F0aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uTG9zZUZvY3VzKSB7
CisgICAgICAgIGlmICghbV9wYXVzZWQpCisgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7Cisg
ICAgfSBlbHNlIGlmIChub3RpZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25EaWRQ
bGF5VG9UaGVFbmQpIHsKKyAgICAgICAgaWYgKCFtX3BhdXNlZCAmJiAhbG9vcCgpKQorICAgICAg
ICAgICAgcGF1c2VJbnRlcm5hbCgpOworICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uID09IE1l
ZGlhUGxheWVyTm90aWZpY2F0aW9uTWVkaWFWYWxpZGF0ZWQgfHwgbm90aWZpY2F0aW9uID09IE1l
ZGlhUGxheWVyTm90aWZpY2F0aW9uUmVhZHlGb3JJbnNwZWN0aW9uKSB7CisgICAgICAgIC8vIFRo
ZSBtZWRpYSBwbGF5ZXIgc29tZXRpbWVzIHJlcG9ydHMgYW4gYXBwYXJlbnRseSBzcHVyaW91cyBl
cnJvciBqdXN0IGFzIHdlIHJlcXVlc3QgcGxheWJhY2ssIGFuZCB0aGVuIGZvbGxvd3MgYWxtb3N0
CisgICAgICAgIC8vIGltbWVkaWF0ZWx5IHdpdGggUmVhZHlGb3JJbnNwZWN0aW9uIGFuZC9vciBN
ZWRpYVZhbGlkYXRlZC4gVGhlIHNwZWMgZG9lc24ndCBkZWFsIHdpdGggYSAiZmF0YWwiIGVycm9y
IGZvbGxvd2VkCisgICAgICAgIC8vIGJ5IHJlc3N1cmVjdGlvbiwgc28gaWYgd2UgaGF2ZSBzZXQg
YW4gZXJyb3IgY2xlYXIgaXQgbm93LgorICAgICAgICBtX2Vycm9yID0gMDsKKyAgICB9IGVsc2Ug
aWYgKG5vdGlmaWNhdGlvbiA9PSBNZWRpYVBsYXllck5vdGlmaWNhdGlvbkVudGVyZWRGdWxsc2Ny
ZWVuKSB7CisgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVs
bHNjcmVlbkV2ZW50KTsKKyAgICAgICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOworICAgIH0gZWxz
ZSBpZiAobm90aWZpY2F0aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uRXhpdGVkRnVsbHNj
cmVlbikgeworICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxs
c2NyZWVuRXZlbnQpOworICAgICAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOworICAgIH0KKyNl
bmRpZgogCiAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICBtX3BsYXllci0+ZGVsaXZlck5vdGlm
aWNhdGlvbihub3RpZmljYXRpb24pOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChub3Rp
ZmljYXRpb24gPT0gTWVkaWFQbGF5ZXJOb3RpZmljYXRpb25NZWRpYVZhbGlkYXRlZCkgeworICAg
ICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBzdXBwb3NlZCB0byBhdXRvcGxheSBhbmQgd2UgYWxs
b3cgaXQsIHRlbGwgdGhlIG1lZGlhIGVuZ2luZSB0byBiZWdpbiBsb2FkaW5nCisgICAgICAgIC8v
IGRhdGEgbm93LiBQbGF5YmFjayB3aWxsIGJlZ2luIGF1dG9tYXRpY2FsbHkgd2hlbiBlbm91Z2gg
ZGF0YSBoYXMgbG9hZGVkLgorICAgICAgICBpZiAobV9hdXRvcGxheWluZyAmJiBtX3BhdXNlZCAm
JiBhdXRvcGxheSgpKQorICAgICAgICAgICAgcHJlcGFyZVRvUGxheSgpOworICAgIH0gZWxzZSBp
ZiAobm90aWZpY2F0aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uRW50ZXJlZEZ1bGxzY3Jl
ZW4pCisgICAgICAgIGRpZEJlY29tZUZ1bGxzY3JlZW5FbGVtZW50KCk7CisgICAgZWxzZSBpZiAo
bm90aWZpY2F0aW9uID09IE1lZGlhUGxheWVyTm90aWZpY2F0aW9uRXhpdGVkRnVsbHNjcmVlbikK
KyAgICAgICAgd2lsbFN0b3BCZWluZ0Z1bGxzY3JlZW5FbGVtZW50KCk7CisjZW5kaWYKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYVBsYXllclByb3h5KFdlYk1lZGlhUGxheWVy
UHJveHkqIHByb3h5KQpAQCAtNDQyNSw3ICs0NjQxLDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywg
VmVjCiAgICAgICAgIHZhbHVlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0cnVlIikpOwogICAgIH0K
IAotICAgIHVybCA9IHNyYygpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBEb24ndCBwYXNz
IHRoZSBVUkwgdG8gdGhlIHBsdWctaW4gYXMgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gYXJn
dW1lbnRzLCB3ZSBhbHdheXMgcGFzcyB0aGUgVVJMCisgICAgLy8gaW4gbG9hZFJlc291cmNlIGFu
ZCBjYWxsaW5nIHNlbGVjdE5leHRTb3VyY2VDaGlsZCBoZXJlIGNhbiBtZXNzIHVwIHRoZSBwcm9j
ZXNzaW5nIG9mIDxzb3VyY2U+CisgICAgLy8gZWxlbWVudHMgbGF0ZXIuCisgICAgVU5VU0VEX1BB
UkFNKHVybCk7CisjZWxzZQorICAgIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0
dHIpOwogICAgIGlmICghaXNTYWZlVG9Mb2FkVVJMKHVybCwgQ29tcGxhaW4pKQogICAgICAgICB1
cmwgPSBzZWxlY3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKIApAQCAtNDQzNCw2
ICs0NjU2LDQ0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMo
VVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjCiAgICAgICAgIG5hbWVzLmFwcGVu
ZChBU0NJSUxpdGVyYWwoIl9tZWRpYV9lbGVtZW50X3NyY18iKSk7CiAgICAgICAgIHZhbHVlcy5h
cHBlbmQobV9jdXJyZW50U3JjLnN0cmluZygpKTsKICAgICB9CisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7
CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
KCkgJiYgKGFwcGxpY2F0aW9uSXNEdW1wUmVuZGVyVHJlZSgpIHx8IGZhc3RIYXNBdHRyaWJ1dGUo
d2Via2l0X3BsYXlzaW5saW5lQXR0cikpKSB7CisgICAgICAgIG5hbWVzLmFwcGVuZChBU0NJSUxp
dGVyYWwoIl9tZWRpYV9lbGVtZW50X2FsbG93X2lubGluZV8iKSk7CisgICAgICAgIHZhbHVlcy5h
cHBlbmQoQVNDSUlMaXRlcmFsKCJ0cnVlIikpOworICAgIH0KKworICAgIFN0cmluZyBhaXJwbGF5
ID0gZmFzdEdldEF0dHJpYnV0ZSh3ZWJraXRhaXJwbGF5QXR0cik7CisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGFpcnBsYXksICJhbGxvdyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGFpcnBsYXks
ICJkZW55IikpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiX21lZGlhX2Vs
ZW1lbnRfYWlycGxheV8iKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQoYWlycGxheS5sb3dlcigp
KTsKKyAgICB9CisKKyAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShkYXRhX3lvdXR1YmVfaWRBdHRy
KSkgeworICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF95
b3V0dWJlX3ZpZGVvX2lkXyIpKTsKKyAgICAgICAgdmFsdWVzLmFwcGVuZChmYXN0R2V0QXR0cmli
dXRlKGRhdGFfeW91dHViZV9pZEF0dHIpKTsKKyAgICB9CisKKyAgICBTdHJpbmcgaW50ZXJmYWNl
TmFtZSA9IHNldHRpbmdzID8gc2V0dGluZ3MtPm5ldHdvcmtJbnRlcmZhY2VOYW1lKCkgOiBTdHJp
bmcoKTsKKyAgICBpZiAoIWludGVyZmFjZU5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIG5hbWVz
LmFwcGVuZChBU0NJSUxpdGVyYWwoIl9tZWRpYV9lbGVtZW50X25ldHdvcmtfaW50ZXJmYWNlX25h
bWUiKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQoaW50ZXJmYWNlTmFtZSk7CisgICAgfQorCisg
ICAgaWYgKGZhc3RIYXNBdHRyaWJ1dGUodGl0bGVBdHRyKSkgeworICAgICAgICBuYW1lcy5hcHBl
bmQodGl0bGVBdHRyLnRvU3RyaW5nKCkpOworICAgICAgICB2YWx1ZXMuYXBwZW5kKGZhc3RHZXRB
dHRyaWJ1dGUodGl0bGVBdHRyKSk7CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX0FJ
UlBMQVkpCisgICAgaWYgKGlzVmlkZW8oKSAmJiBmYXN0SGFzQXR0cmlidXRlKHdlYmtpdHdpcmVs
ZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikpIHsKKyAgICAgICAgbmFtZXMuYXBwZW5kKEFT
Q0lJTGl0ZXJhbCgiX21lZGlhX2VsZW1lbnRfd2lyZWxlc3NfdmlkZW9fcGxheWJhY2tfZGlzYWJs
ZWQiKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0cnVlIikpOworICAg
IH0KKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVy
UHJveHkoKQpAQCAtNDQ3OSw2ICs0NzM5LDc5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKQogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCiAKKyNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpCit7CisgICAgaWYg
KCFkb2N1bWVudCgpLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX3BsYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRUb1Nob3dQ
bGF5YmFja1RhcmdldFBpY2tlcigpICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGlu
Z3MoKS0+bWVkaWFQbGF5YmFja0FsbG93c0FpclBsYXkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wbGF5ZXItPnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpOworfQorCitib29sIEhUTUxN
ZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSBjb25z
dAoreworICAgIHJldHVybiBtX3BsYXllciAmJiBtX3BsYXllci0+aXNDdXJyZW50UGxheWJhY2tU
YXJnZXRXaXJlbGVzcygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQorewor
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGN1cnJlbnRwbGF5YmFja3Rhcmdl
dGlzd2lyZWxlc3NjaGFuZ2VkRXZlbnQpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKE1lZGlhUGxheWVyKikK
K3sKKyAgICBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsK
K30KKworYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCit7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Vi
a2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCisgICAgICAgIHJldHVy
biBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUp
OworCisgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExpc3RlbmVyID0gIWhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWRFdmVudCk7CisgICAgaWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlw
ZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1fcGxheWVyICYmIGlzRmlyc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIpCisgICAgICAg
IG1fcGxheWVyLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyh0cnVl
KTsKKworICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgp
OyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50Lgor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCit7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5h
bWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpCisgICAg
ICAgIHJldHVybiBOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpOworCisgICAgaWYgKCFOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBib29sIGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIgPSAhaGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEV2ZW50KTsKKyAgICBpZiAobV9wbGF5ZXIgJiYgZGlkUmVtb3ZlTGFzdEF2YWlsYWJp
bGl0eUNoYW5nZWRMaXN0ZW5lcikKKyAgICAgICAgbV9wbGF5ZXItPnNldEhhc1BsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlD
aGFuZ2VkRXZlbnQoKQoreworICAgIGlmICghbV9wbGF5ZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBib29sIGlzQWlyUGxheUF2YWlsYWJsZSA9IG1fcGxheWVyLT5oYXNXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0cygpOworICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFy
Z2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50LCBpc0FpclBsYXlBdmFpbGFibGUpOworICAgIGV2
ZW50LT5zZXRUYXJnZXQodGhpcyk7CisgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50
KGV2ZW50LnJlbGVhc2UoKSk7Cit9CisjZW5kaWYKKwogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpp
c0Z1bGxzY3JlZW4oKSBjb25zdAogewogICAgIGlmIChtX2lzRnVsbHNjcmVlbikKQEAgLTQ1MTcs
OCArNDg1MCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiAg
ICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9scygpLT5lbnRl
cmVkRnVsbHNjcmVlbigpOwogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSkgeworI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5l
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CisjZWxzZQorICAgICAgICBpZiAo
bV9wbGF5ZXIpCisgICAgICAgICAgICBtX3BsYXllci0+ZW50ZXJGdWxsc2NyZWVuKCk7CisjZW5k
aWYKICAgICB9CiB9CiAKQEAgLTQ1NDAsOCArNDg3OCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmV4aXRGdWxsc2NyZWVuKCkKICAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkpIHsKICAgICAg
ICAgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JW
aWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CisjaWYgIVBMQVRG
T1JNKElPUykKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLmV4
aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5h
bWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKKyNlbHNlCisgICAgICAgIGlmIChtX3Bs
YXllcikKKyAgICAgICAgICAgIG1fcGxheWVyLT5leGl0RnVsbHNjcmVlbigpOworI2VuZGlmCiAg
ICAgfQogfQogCkBAIC00OTM4LDYgKzUyODEsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpj
cmVhdGVNZWRpYVBsYXllcigpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VOb2RlLT51bmxvY2soKTsK
ICAgICB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfQUlSUExBWSkKKyAgICBpZiAoaGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEV2ZW50KSkgeworICAgICAgICBtX3BsYXllci0+c2V0SGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcnModHJ1ZSk7CisgICAgICAgIGVucXVldWVQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVy
IGdldHMgYXQgbGVhc3Qgb25lIGV2ZW50LgorICAgIH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxF
KFdFQl9BVURJTykKQEAgLTQ5NTgsNiArNTMwOCwxNiBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBI
VE1MTWVkaWFFbGVtZW50OjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIH0KICNlbmRpZgogCisjaWYg
UExBVEZPUk0oSU9TKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyUmVxdWVzdHNNZWRpYUxv
YWRpbmcoKQoreworICAgIC8vIFRoZSB1c2VyIGlzIHJlcXVlc3RpbmcgZGF0YSBsb2FkaW5nIGFu
ZC9vciBwbGF5YmFjaywgc28gcmVtb3ZlIHRoZSAib25seSBjaGFuZ2UgcGxheWJhY2sgaW4gcmVz
cG9uc2UKKyAgICAvLyB0byBhIHVzZXIgZ2VzdHVyZSIgcmVzdHJpY3Rpb24gb24gdGhpcyBtb3Zp
ZS4KKyAgICBtX3VzZXJTdGFydGVkUGxheWJhY2sgPSB0cnVlOworICAgIG1fcmVzdHJpY3Rpb25z
ID0gTm9SZXN0cmljdGlvbnM7Cit9CisjZW5kaWYKKwogY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYUdyb3VwKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYUdyb3VwOwpA
QCAtNTIzNSw3ICs1NTk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlv
cnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRVc2VWaWRlb1Bs
dWdpblByb3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSAm
JiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5pc1ZpZGVvUGx1Z2luUHJveHlFbmFibGVkKCk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50KCkuc2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCkt
PmlzVmlkZW9QbHVnaW5Qcm94eUVuYWJsZWQoKTsKIH0KICNlbmRpZgogCkBAIC01MzAwLDYgKzU2
NjAsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbnN1cmVNZWRpYUNvbnRyb2xzSW5qZWN0
ZWRTY3JpcHQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIHsKKyNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKKyAgICAvLyBKYXZhU2NyaXB0IGNvbnRyb2xzIGFyZSBub3QgZW5hYmxlZCB3aXRoIHRo
ZSB2aWRlbyBwbHVnaW4gcHJveHkuCisgICAgVU5VU0VEX1BBUkFNKHJvb3QpOworICAgIHJldHVy
bjsKKyNlbHNlCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTMzNiw4ICs1NzAxLDkgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiAg
ICAgSlNDOjpjYWxsKGV4ZWMsIG92ZXJsYXksIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBhcmdMaXN0KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIGV4
ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci19CiAjZW5kaWYKK30KKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfQ09OVFJPTFNfU0NSSVBUKQogCiB1bnNpZ25lZCBsb25nIGxvbmcgSFRNTE1lZGlhRWxlbWVu
dDo6ZmlsZVNpemUoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCBjM2QxYmYxLi4xY2YxMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25l
ckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcm94eS5oIgogI2VuZGlmCkBAIC05Nyw3ICs5OCwxMyBAQCB0eXBlZGVm
IEN1ZUludGVydmFsVHJlZTo6SW50ZXJ2YWxUeXBlIEN1ZUludGVydmFsOwogdHlwZWRlZiBWZWN0
b3I8Q3VlSW50ZXJ2YWw+IEN1ZUxpc3Q7CiAjZW5kaWYKIAotY2xhc3MgSFRNTE1lZGlhRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGlj
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVy
ZmFjZQorY2xhc3MgSFRNTE1lZGlhRWxlbWVudAorI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQorICAgIDogcHVibGljIEhUTUxGcmFtZU93bmVyRWxlbWVudAorI2Vsc2UKKyAgICA6
IHB1YmxpYyBIVE1MRWxlbWVudAorI2VuZGlmCisgICAgLCBwcml2YXRlIE1lZGlhUGxheWVyQ2xp
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQsIHByaXZhdGUgTWVkaWFD
YW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgTWVkaWFDb250
cm9sbGVySW50ZXJmYWNlCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBB
dWRpb1RyYWNrQ2xpZW50CiAgICAgLCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtMzI5LDcg
KzMzNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCi0gICAgdm9pZCBhbGxvY2F0ZU1lZGlhUGxheWVySWZOZWNlc3NhcnkoKTsKKyAgICB2
b2lkIGVuc3VyZU1lZGlhUGxheWVyKCk7CiAgICAgdm9pZCBzZXROZWVkV2lkZ2V0VXBkYXRlKGJv
b2wgbmVlZFdpZGdldFVwZGF0ZSkgeyBtX25lZWRXaWRnZXRVcGRhdGUgPSBuZWVkV2lkZ2V0VXBk
YXRlOyB9CiAgICAgdm9pZCBkZWxpdmVyTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJveHlOb3Rp
ZmljYXRpb25UeXBlIG5vdGlmaWNhdGlvbik7CiAgICAgdm9pZCBzZXRNZWRpYVBsYXllclByb3h5
KFdlYk1lZGlhUGxheWVyUHJveHkqIHByb3h5KTsKQEAgLTMzOCw2ICszNDUsMTcgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIHZvaWQgd2Via2l0U2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKCk7CisgICAgYm9vbCB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiwgYm9vbCB1
c2VDYXB0dXJlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNl
Q2FwdHVyZSkgT1ZFUlJJREU7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHdlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkKTsKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmls
aXR5Y2hhbmdlZCk7CisjZW5kaWYKKwogICAgIC8vIEV2ZW50VGFyZ2V0IGZ1bmN0aW9uLgogICAg
IC8vIEJvdGggTm9kZSAodmlhIEhUTUxFbGVtZW50KSBhbmQgQWN0aXZlRE9NT2JqZWN0IGRlZmlu
ZSB0aGlzIG1ldGhvZCwgd2hpY2gKICAgICAvLyBjYXVzZXMgYW4gYW1iaWd1aXR5IGVycm9yIGF0
IGNvbXBpbGUgdGltZS4gVGhpcyBjbGFzcydzIGNvbnN0cnVjdG9yCkBAIC0zODksNyArNDA3LDkg
QEAgcHVibGljOgogICAgIE1lZGlhQ29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29udHJvbGxlcihQYXNzUmVmUHRyPE1lZGlhQ29udHJvbGxlcj4pOwogCisjaWYg
IVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBPVkVSUklERTsKKyNlbmRpZgogCiAgICAgdm9pZCBlbnRlcmVkT3JFeGl0ZWRGdWxs
c2NyZWVuKCkgeyBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7IH0KIApAQCAtNDMyLDYgKzQ1Miw5
IEBAIHByb3RlY3RlZDoKICAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlblJl
c3RyaWN0aW9uID0gMSA8PCAyLAogICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRp
YVJlc3RyaWN0aW9uID0gMSA8PCAzLAogICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3Vt
ZU1lZGlhUmVzdHJpY3Rpb24gPSAxIDw8IDQsCisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAg
ICAgICBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciA9IDEgPDwg
NSwKKyNlbmRpZgogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0
aW9uczsKICAgICAKQEAgLTQ0MCw2ICs0NjMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCB1c2Vy
R2VzdHVyZVJlcXVpcmVkRm9yRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rp
b25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlblJlc3RyaWN0aW9uOyB9CiAgICAg
Ym9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yTG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJp
Y3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0cmljdGlvbjsgfQogICAg
IGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvclJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
dHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYVJlc3RyaWN0aW9uOyB9
CisjaWYgRU5BQkxFKElPU19BSVJQTEFZKQorICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZFRv
U2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjsgfQorI2VuZGlm
CiAgICAgCiAgICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rp
b25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CiAgICAg
dm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQpAQCAtNTIyLDYgKzU0
OCwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcktleU5lZWRlZChN
ZWRpYVBsYXllciosIFVpbnQ4QXJyYXkqKSBPVkVSUklERTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KElPU19BSVJQTEFZKQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckN1cnJlbnRQbGF5YmFj
a1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKE1lZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkKE1l
ZGlhUGxheWVyKikgT1ZFUlJJREU7CisgICAgdm9pZCBlbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCBTdHJpbmcgbWVk
aWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDT1JTTW9k
ZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgT1ZFUlJJREU7CkBAIC02MTUsNiArNjQ3LDEx
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgIGRv
dWJsZSBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBi
b29sIHBhcnNlTWVkaWFQbGF5ZXJBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgdXNlclJlcXVlc3RzTWVkaWFMb2FkaW5nKCk7Cisj
ZW5kaWYKKwogICAgIC8vIFBhdXNlcyBwbGF5YmFjayB3aXRob3V0IGNoYW5naW5nIGFueSBzdGF0
ZXMgb3IgZ2VuZXJhdGluZyBldmVudHMKICAgICB2b2lkIHNldFBhdXNlZEludGVybmFsKGJvb2wp
OwogCkBAIC03NTgsNiArNzk1LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRGlzcGxheVNs
ZWVwRGlzYWJsaW5nU3VzcGVuZGVkIDogMTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGJvb2wgbV9yZXF1ZXN0aW5nUGxheSA6IDE7CisgICAgYm9vbCBtX3VzZXJTdGFydGVkUGxh
eWJhY2sgOiAxOworI2VuZGlmCisKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgYm9vbCBt
X3RyYWNrc0FyZVJlYWR5IDogMTsKICAgICBib29sIG1faGF2ZVZpc2libGVUZXh0VHJhY2sgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKaW5kZXggNDNiNjU4MC4u
ZGM0MWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC0x
MjEsNCArMTIxLDExIEBACiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfR09CSkVDVCkgfHwgIUxBTkdV
QUdFX0dPQkpFQ1QKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFXSBWaWRlb1BsYXliYWNr
UXVhbGl0eSBnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgpOwogI2VuZGlmCisKKyNpZiBkZWZpbmVk
KEVOQUJMRV9JT1NfQUlSUExBWSkgJiYgRU5BQkxFX0lPU19BSVJQTEFZCisgICAgdm9pZCB3ZWJr
aXRTaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzOworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2No
YW5nZWQ7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRwbGF5YmFja3Rhcmdl
dGF2YWlsYWJpbGl0eWNoYW5nZWQ7CisjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRhRWxlbWVudC5jcHAKaW5kZXggYThmZWNkOS4uNmYzNjBmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGFFbGVtZW50LmNwcApAQCAtNzMsNiArNzMsMTIgQEAgdm9pZCBIVE1MTWV0YUVs
ZW1lbnQ6OnByb2Nlc3MoKQogCiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUoKSwgInZp
ZXdwb3J0IikpCiAgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1ZpZXdwb3J0KGNvbnRlbnRWYWx1
ZSwgVmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0TWV0YSk7CisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUoKSwgImZvcm1hdC1kZXRlY3Rpb24i
KSkKKyAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnRlbnRWYWx1
ZSk7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSgpLCAiYXBwbGUtbW9iaWxl
LXdlYi1hcHAtb3JpZW50YXRpb25zIikpCisgICAgICAgIGRvY3VtZW50KCkucHJvY2Vzc1dlYkFw
cE9yaWVudGF0aW9ucygpOworI2VuZGlmCiAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSgpLCAicmVmZXJyZXIiKSkKICAgICAgICAgZG9jdW1lbnQoKS5wcm9jZXNzUmVmZXJyZXJQ
b2xpY3koY29udGVudFZhbHVlKTsKICNpZiBFTkFCTEUoTEVHQUNZX1ZJRVdQT1JUX0FEQVBUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCA1MzNkZmUx
Li40ODEyZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApA
QCAtNTQsNiArNTQsMTEgQEAKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzSU9TLmgiCisjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE0
Niw2ICsxNTEsMTQgQEAgc3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0cmlu
Zz4qIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+KiBwYXJhbVYKICAgICB9CiB9CiAKKyNpZiBQ
TEFURk9STShJT1MpCitzdGF0aWMgYm9vbCBzaG91bGROb3RQZXJmb3JtVVJMQWRqdXN0bWVudCgp
Cit7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQgPSBhcHBs
aWNhdGlvbklzTkFTQUhEKCkgJiYgIWlvc0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQWZ0ZXJWZXJz
aW9uKHdrSU9TU3lzdGVtVmVyc2lvbl81XzApOworICAgIHJldHVybiBzaG91bGROb3RQZXJmb3Jt
VVJMQWRqdXN0bWVudDsKK30KKyNlbmRpZgorCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91
bGQgbm90IGRlYWwgd2l0aCB1cmwgb3Igc2VydmljZVR5cGUhCiB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIFN0cmluZyYgdXJsLCBTdHJpbmcmIHNlcnZpY2VUeXBl
KQogewpAQCAtMjA0LDYgKzIxNywxMSBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0
ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8UwogICAgIC8v
IGF0dHJpYnV0ZSwgbm90IGJ5IGEgcGFyYW0gZWxlbWVudC4gSG93ZXZlciwgZm9yIGNvbXBhdGli
aWxpdHksIGFsbG93IHRoZQogICAgIC8vIHJlc291cmNlJ3MgVVJMIHRvIGJlIGdpdmVuIGJ5IGEg
cGFyYW0gbmFtZWQgInNyYyIsICJtb3ZpZSIsICJjb2RlIiBvciAidXJsIgogICAgIC8vIGlmIHdl
IGtub3cgdGhhdCByZXNvdXJjZSBwb2ludHMgdG8gYSBwbHVnLWluLgorI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoc2hvdWxkTm90UGVyZm9ybVVSTEFkanVzdG1lbnQoKSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAhdXJsUGFyYW1ldGVyLmlz
RW1wdHkoKSkgewogICAgICAgICBTdWJmcmFtZUxvYWRlciYgbG9hZGVyID0gZG9jdW1lbnQoKS5m
cmFtZSgpLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpOwogICAgICAgICBpZiAobG9hZGVyLnJl
c291cmNlV2lsbFVzZVBsdWdpbih1cmxQYXJhbWV0ZXIsIHNlcnZpY2VUeXBlLCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCmluZGV4IDQ0NDFhZTQuLjgzM2U5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmgKQEAgLTgxLDYgKzgxLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5Qcm9j
ZXNzRHJhZygpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IGJlMjQ0MjcuLjNlMjliOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNTUsNiArNTUsMTIgQEAK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgor
I2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgorI2luY2x1ZGUgIllvdVR1YmVFbWJlZFNoYWRv
d0VsZW1lbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0yMjAsNiArMjI2LDEzIEBAIFJlbmRlckVsZW1lbnQqIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0
eWxlCiAgICAgICAgIHJldHVybiBpbWFnZTsKICAgICB9CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0aGlzLT5zaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgRWxlbWVudCogc2hhZG93RWxlbWVudCA9IHRvRWxlbWVudChzaGFkb3dSb290LT5maXJz
dENoaWxkKCkpOworICAgICAgICBpZiAoc2hhZG93RWxlbWVudCAmJiBzaGFkb3dFbGVtZW50LT5z
aGFkb3dQc2V1ZG9JZCgpID09ICItYXBwbGUteW91dHViZS1zaGFkb3ctaWZyYW1lIikKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgUmVuZGVyQmxvY2tGbG93KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUp
KTsKKyAgICB9CisjZW5kaWYKICAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKHN0ZDo6bW92ZShzdHlsZSkpOwogfQogCkBAIC00MTIsNiArNDI1LDM4IEBAIGJvb2wg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFydE9mU25hcHNob3RPdmVybGF5KE5vZGUqIG5vZGUp
CiAgICAgcmV0dXJuIG5vZGUgJiYgc25hcHNob3RMYWJlbCAmJiAobm9kZSA9PSBzbmFwc2hvdExh
YmVsLmdldCgpIHx8IG5vZGUtPmlzRGVzY2VuZGFudE9mKHNuYXBzaG90TGFiZWwuZ2V0KCkpKTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3Jl
YXRlU2hhZG93SUZyYW1lU3VidHJlZShjb25zdCBTdHJpbmcmIHNyYykKK3sKKyAgICBpZiAodGhp
cy0+c2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3JjLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFlvdVR1YmVFbWJlZFNoYWRvd0VsZW1l
bnQ+IHNoYWRvd0VsZW1lbnQgPSBZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQoKSk7CisgICAgU2hhZG93Um9vdCYgcm9vdCA9IHRoaXMtPmVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKTsKKyAgICByb290LmFwcGVuZENoaWxkKHNoYWRvd0VsZW1lbnQsIEFTU0VSVF9O
T19FWENFUFRJT04pOworCisgICAgUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBpZnJhbWVFbGVt
ZW50ID0gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmlmcmFtZVRhZywgZG9j
dW1lbnQoKSk7CisgICAgaWYgKGhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0cikpCisg
ICAgICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0ciwg
QXRvbWljU3RyaW5nKCIxMDAlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIGlmIChoYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjpoZWlnaHRBdHRyKSkgeworICAgICAg
ICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIEF0b21p
Y1N0cmluZygibWF4LWhlaWdodDogMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgaWZyYW1lRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
aGVpZ2h0QXR0ciwgZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aGVpZ2h0QXR0cikpOworICAgIH0K
KyAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyLCBzcmMp
OworICAgIGlmcmFtZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmZyYW1lYm9yZGVy
QXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworCisgICAgLy8gRGlzYWJsZSBmcmFtZSBmbGF0dGVuaW5nIGZvciB0aGlzIGlmcmFtZS4K
KyAgICBpZnJhbWVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzY3JvbGxpbmdBdHRy
LCBBdG9taWNTdHJpbmcoIm5vIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworICAgIHNoYWRvd0VsZW1lbnQtPmFwcGVuZENoaWxkKGlmcmFtZUVsZW1lbnQsIEFTU0VSVF9O
T19FWENFUFRJT04pOworCisgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAgIFN0eWxlOjpyZWF0
dGFjaFJlbmRlclRyZWUoKnRoaXMpOworfQorI2VuZGlmCisKIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6cmVtb3ZlU25hcHNob3RUaW1lckZpcmVkKFRpbWVyPEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ+KikKIHsKICAgICBtX3NuYXBzaG90SW1hZ2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAppbmRleCBlNGY1ODJiLi40MTAyN2M0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAt
NzMsNiArNzMsMTAgQEAgcHVibGljOgogICAgIC8vIFB1YmxpYyBmb3IgRnJhbWVWaWV3OjphZGRX
aWRnZXRUb1VwZGF0ZSgpCiAgICAgYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIHNldE5lZWRzV2lkZ2V0VXBkYXRl
KGJvb2wgbmVlZHNXaWRnZXRVcGRhdGUpIHsgbV9uZWVkc1dpZGdldFVwZGF0ZSA9IG5lZWRzV2lk
Z2V0VXBkYXRlOyB9CisgICAgCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgY3JlYXRlU2hh
ZG93SUZyYW1lU3VidHJlZShjb25zdCBTdHJpbmcmIHNyYyk7CisjZW5kaWYKIAogICAgIHZvaWQg
dXNlckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiwgYm9vbCBmb3J3YXJk
RXZlbnQpOwogICAgIHZvaWQgY2hlY2tTbmFwc2hvdFN0YXR1cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBiMDA3MDJkLi41NTA2OGFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMTkxLDEyICsxOTEsMTYg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bGlzdEJveFNlbGVjdEl0ZW0oaW50IGxpc3RJbmRl
eCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWMKIAogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6dXNl
c01lbnVMaXN0KCkgY29uc3QKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGNvbnN0IFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHJlbmRl
clRoZW1lID0gcGFnZSA/ICZwYWdlLT50aGVtZSgpIDogUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVt
ZSgpOwogICAgIGlmIChyZW5kZXJUaGVtZS0+ZGVsZWdhdGVzTWVudUxpc3RSZW5kZXJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gIW1fbXVsdGlwbGUgJiYgbV9zaXpl
IDw9IDE7CisjZWxzZQorICAgIHJldHVybiAhbV9tdWx0aXBsZTsKKyNlbmRpZgogfQogCiBpbnQg
SFRNTFNlbGVjdEVsZW1lbnQ6OmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdEluZGV4KCkgY29uc3QK
QEAgLTM0NSwxNyArMzQ5LDIzIEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNhblNlbGVjdEFs
bCgpIGNvbnN0CiAKIFJlbmRlckVsZW1lbnQqIEhUTUxTZWxlY3RFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJNZW51TGlz
dCgqdGhpcywgc3RkOjptb3ZlKHN0eWxlKSk7CiAgICAgcmV0dXJuIG5ldyBSZW5kZXJMaXN0Qm94
KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKKyNlbHNlCisgICAgcmV0dXJuIG5ldyBSZW5kZXJN
ZW51TGlzdCgqdGhpcywgc3RkOjptb3ZlKHN0eWxlKSk7CisjZW5kaWYKIH0KIAogYm9vbCBIVE1M
U2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGls
ZCkgY29uc3QKIHsKICAgICBpZiAoIUhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Cisj
aWYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoIXVzZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1
cm4gaXNIVE1MT3B0aW9uRWxlbWVudChjaGlsZCkgfHwgaXNIVE1MT3B0R3JvdXBFbGVtZW50KGNo
aWxkKSB8fCB2YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1RyZWVDb250YWlucyhjaGlsZCk7CisjZW5k
aWYKICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTaGFkb3dUcmVlQ29udGFpbnMoY2hpbGQp
OwogfQogCkBAIC00OTUsNiArNTA1LDEzIEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzUmVx
dWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzUmVxdWlyZWQoKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKK2Jvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OndpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkKK3sKKyAgICByZXR1cm4gIWlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
OworfQorI2VuZGlmCisKIC8vIFJldHVybnMgdGhlIDFzdCB2YWxpZCBpdGVtIHxza2lwfCBpdGVt
cyBmcm9tIHxsaXN0SW5kZXh8IGluIGRpcmVjdGlvbiB8ZGlyZWN0aW9ufCBpZiB0aGVyZSBpcyBv
bmUuCiAvLyBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHZhbGlkIGl0ZW0gY2xvc2VzdCB0byB0
aGF0IGJvdW5kYXJ5IHdoaWNoIGlzIHBhc3QgfGxpc3RJbmRleHwgaWYgdGhlcmUgaXMgb25lLgog
Ly8gT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHxsaXN0SW5kZXh8LgpAQCAtNjE3LDcgKzYzNCwxMSBA
QCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRBY3RpdmVTZWxlY3Rpb25FbmRJbmRleChpbnQg
aW5kZXgpCiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RCb3hTZWxlY3Rpb24o
Ym9vbCBkZXNlbGVjdE90aGVyT3B0aW9ucykKIHsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIEFT
U0VSVChyZW5kZXJlcigpICYmIChyZW5kZXJlcigpLT5pc0xpc3RCb3goKSB8fCBtX211bHRpcGxl
KSk7CisjZWxzZQorICAgIEFTU0VSVChyZW5kZXJlcigpICYmIChyZW5kZXJlcigpLT5pc01lbnVM
aXN0KCkgfHwgbV9tdWx0aXBsZSkpOworI2VuZGlmCiAgICAgQVNTRVJUKCFsaXN0SXRlbXMoKS5z
aXplKCkgfHwgbV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCA+PSAwKTsKIAogICAgIHVuc2ln
bmVkIHN0YXJ0ID0gc3RkOjptaW4obV9hY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCwgbV9hY3Rp
dmVTZWxlY3Rpb25FbmRJbmRleCk7CkBAIC02ODMsMjAgKzcwNCwyOSBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpkaXNwYXRjaENoYW5nZUV2ZW50Rm9yTWVudUxpc3QoKQogCiB2b2lkIEhUTUxT
ZWxlY3RFbGVtZW50OjpzY3JvbGxUb1NlbGVjdGlvbigpCiB7CisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJl
bmRlcmVyKS0+c2VsZWN0aW9uQ2hhbmdlZCgpOworI2Vsc2UKKyAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CisjZW5k
aWYKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRl
cmVyKCkKIHsKICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAg
ICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlciktPnNldE9w
dGlvbnNDaGFuZ2VkKHRydWUpOworI2Vsc2UKKyAgICAgICAgdG9SZW5kZXJNZW51TGlzdChyZW5k
ZXJlciktPnNldE9wdGlvbnNDaGFuZ2VkKHRydWUpOworI2VuZGlmCiAgICAgfQogfQogCkBAIC0x
MjI4LDYgKzEyNTgsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjptZW51TGlzdERlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBzdGF0
aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CiAg
ICAgICAgIGZvY3VzKCk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+aXNNZW51TGlzdCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVy
TWVudUxpc3QqIG1lbnVMaXN0ID0gdG9SZW5kZXJNZW51TGlzdChyZW5kZXJlcigpKSkgewogICAg
ICAgICAgICAgICAgIGlmIChtZW51TGlzdC0+cG9wdXBJc1Zpc2libGUoKSkKQEAgLTEyNDMsMTUg
KzEyNzQsMTggQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAg
ICB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQgJiYgIWZvY3VzZWQoKSkgewogICAgICAgICBpZiAoUmVuZGVyTWVu
dUxpc3QqIG1lbnVMaXN0ID0gdG9SZW5kZXJNZW51TGlzdChyZW5kZXJlcigpKSkgewogICAgICAg
ICAgICAgaWYgKG1lbnVMaXN0LT5wb3B1cElzVmlzaWJsZSgpKQogICAgICAgICAgICAgICAgIG1l
bnVMaXN0LT5oaWRlUG9wdXAoKTsKICAgICAgICAgfQogICAgIH0KKyNlbmRpZgogfQogCiB2b2lk
IEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVTZWxlY3RlZFN0YXRlKGludCBsaXN0SW5kZXgsIGJv
b2wgbXVsdGksIGJvb2wgc2hpZnQpCkBAIC0xNDcyLDYgKzE1MDYsNyBAQCB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICBpZiAoIXJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYg
KGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICByZXR1cm47
CkBAIC0xNDgxLDYgKzE1MTYsOSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgbWVudUxpc3REZWZhdWx0RXZlbnRIYW5k
bGVyKGV2ZW50KTsKICAgICBlbHNlIAogICAgICAgICBsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7CisjZWxzZQorICAgIG1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
CisjZW5kaWYKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IGRkMThjMTYu
LmM0ZTRhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTk0
LDYgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGlzdEJveFNlbGVjdEl0ZW0oaW50IGxp
c3RJbmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgYm9vbCBzaGlmdCwgYm9vbCBm
aXJlT25DaGFuZ2VOb3cgPSB0cnVlKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKKyNlbmRpZgor
CiAgICAgYm9vbCBjYW5TZWxlY3RBbGwoKSBjb25zdDsKICAgICB2b2lkIHNlbGVjdEFsbCgpOwog
ICAgIGludCBsaXN0VG9PcHRpb25JbmRleChpbnQgbGlzdEluZGV4KSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBiYTE5ZDMzLi40Y2U5NTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC0xNTcs
MTAgKzE1NywxNCBAQCB2b2lkIEhUTUxTdW1tYXJ5RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAKIGJvb2wgSFRNTFN1bW1hcnlFbGVtZW50Ojp3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHJldHVybiBIVE1M
RWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSB8fCAoaXNNYWluU3VtbWFy
eSgpICYmIHJlbmRlcmVyKCkgJiYgZGV0YWlsc0VsZW1lbnQoKSk7CisjZWxzZQogICAgIGlmIChp
c01haW5TdW1tYXJ5KCkgJiYgcmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7Cisj
ZW5kaWYKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKaW5kZXggYjdhYTRiYi4uYmM3ZDk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC01NDUsNCArNTQ1LDExIEBAIHZvaWQgSFRNTFRleHRBcmVh
RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICBtX3BsYWNlaG9sZGVyLT5zZXRJ
bm5lclRleHQocGxhY2Vob2xkZXJUZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAorI2lm
IFBMQVRGT1JNKElPUykKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQoreworICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7
CiB9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBlODkzMzA4Li5mOWVkM2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q29scyhpbnQpOwogICAgIHZvaWQgc2V0Um93cyhpbnQpOwogCisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIE9WRVJSSURFOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSFRNTFRleHRBcmVh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5pZGwKaW5kZXgg
YmQ1YjdhNS4uZjE1NmQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaWRsCkBAIC02NSw2ICs2NSwxMSBAQCBpbnRlcmZhY2UgSFRNTFRleHRBcmVhRWxlbWVu
dCA6IEhUTUxFbGVtZW50IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIERP
TVN0cmluZyBkaXJlY3Rpb24pOwogI2VuZGlmCiAKKyNpZiBXVEZfUExBVEZPUk1fSU9TCisgICAg
ICAgIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3JyZWN0OworICAgICAgICBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBhdXRvY2FwaXRhbGl6ZTsKKyNlbmRpZgor
CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZF
X0MKICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAKaW5kZXggMDcwYjc1Ny4uMjdjYjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTE4NSw3ICsxODUsMTQgQEAgdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uKQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZWxlY3QoKQogeworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWJzdHJhY3QgdGhlIHNlbGVjdGlv
biBiZWhhdmlvciBpbnRvIGFuIEVkaXRpbmdCZWhhdmlvciBmdW5jdGlvbiBpbnN0ZWFkCisgICAg
Ly8gb2YgaGFyZGNvZGluZyB0aGUgYmVoYXZpb3IgdXNpbmcgYSBtYWNybyBkZWZpbmUuCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VsZWN0IGFsbCB0aGUgdGV4
dCBvbiBpT1MuIEluc3RlYWQgdXNlIHRoZSBzdGFuZGFyZCB0ZXh0ZmllbGQgYmVoYXZpb3Igb2Yg
Z29pbmcgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICBzZXRTZWxlY3Rpb25SYW5nZShzdGQ6
Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpLCBTZWxlY3Rpb25IYXNGb3J3YXJkRGlyZWN0aW9uKTsKKyNlbHNlCiAgICAgc2V0U2VsZWN0
aW9uUmFuZ2UoMCwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSwgU2VsZWN0aW9uSGFz
Tm9EaXJlY3Rpb24pOworI2VuZGlmCiB9CiAKIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKQEAgLTMwMCwxMiArMzA3LDE0IEBAIHZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKGludCBzdGFydCwgaW50
IGVuZCwgVGV4dEZpZWxkCiAgICAgZWxzZQogICAgICAgICBlbmRQb3NpdGlvbiA9IHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KGVuZCk7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIHN0YXJ0
UG9zaXRpb24gYW5kIGVuZFBvc2l0aW9uIGNhbiBiZSBudWxsIHBvc2l0aW9uIGZvciBleGFtcGxl
IHdoZW4KICAgICAvLyAiLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZSIgc3R5bGUgYXR0cmlidXRl
IGlzIHNwZWNpZmllZC4KICAgICBpZiAoc3RhcnRQb3NpdGlvbi5pc05vdE51bGwoKSAmJiBlbmRQ
b3NpdGlvbi5pc05vdE51bGwoKSkgewogICAgICAgICBBU1NFUlQoc3RhcnRQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPnNoYWRvd0hvc3QoKSA9PSB0aGlzCiAgICAg
ICAgICAgICAmJiBlbmRQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkt
PnNoYWRvd0hvc3QoKSA9PSB0aGlzKTsKICAgICB9CisjZW5kaWYKICAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbjsKICAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkhhc0JhY2t3
YXJkRGlyZWN0aW9uKQogICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKGVu
ZFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uKTsKQEAgLTU0NCw2ICs1NTMsMjUgQEAgU3RyaW5nIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojppbm5lclRleHRWYWx1ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmhpZGVQbGFjZWhvbGRlcigpCit7CisgICAgaWYgKCFz
dXBwb3J0c1BsYWNlaG9sZGVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBIVE1MRWxlbWVudCog
cGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlckVsZW1lbnQoKTsKKyAgICBpZiAoIXBsYWNlaG9sZGVy
KSB7CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIHBsYWNlaG9sZGVyLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VmlzaWJpbGl0eSwgQVNDSUlMaXRlcmFsKCJoaWRkZW4iKSk7Cit9CisKK3ZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNob3dQbGFjZWhvbGRlcklmTmVjZXNzYXJ5KCkKK3sKKyAgICB1
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworfQorI2VuZGlmCisKIHN0YXRpYyB2
b2lkIGdldE5leHRTb2Z0QnJlYWsoUm9vdElubGluZUJveComIGxpbmUsIE5vZGUqJiBicmVha05v
ZGUsIHVuc2lnbmVkJiBicmVha09mZnNldCkKIHsKICAgICBSb290SW5saW5lQm94KiBuZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCmlu
ZGV4IDNkYmI0ZGQuLmZiZDc1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgZGlyZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dEFz
T2ZMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0
QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50ID0gdGV4dDsgfQorI2lmIFBMQVRGT1JNKElP
UykKKyAgICB2b2lkIGhpZGVQbGFjZWhvbGRlcigpOworICAgIHZvaWQgc2hvd1BsYWNlaG9sZGVy
SWZOZWNlc3NhcnkoKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVt
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBiNjkx
MjkxLi4wYmQ5MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgUmVuZGVyRWxlbWVudCogSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7CiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCiAgICAgaWYgKHNob3VsZFVzZVZpZGVvUGx1Z2luUHJveHkoKSkK
LSAgICAgICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBz
dHlsZSk7CisgICAgICAgIHJldHVybiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihz
dGQ6Om1vdmUoc3R5bGUpKTsKICNlbmRpZgogICAgIHJldHVybiBuZXcgUmVuZGVyVmlkZW8oKnRo
aXMsIHN0ZDo6bW92ZShzdHlsZSkpOwogfQpAQCAtMTMxLDggKzEzMSwyMyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICAg
ICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJ
bWFnZSgwKTsgCiAgICAgICAgIH0KLSAgICB9IGVsc2UKKyAgICB9CisjaWYgRU5BQkxFKElPU19B
SVJQTEFZKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0d2lyZWxlc3N2aWRlb3BsYXliYWNr
ZGlzYWJsZWRBdHRyKSB7CisgICAgICAgIGlmIChwbGF5ZXIoKSkKKyAgICAgICAgICAgIHBsYXll
cigpLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh3ZWJraXRXaXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZCgpKTsKKyAgICB9IGVsc2UgewogICAgICAgICBIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisKKyAgICAgICAgaWYgKG5hbWUgPT0g
d2Via2l0YWlycGxheUF0dHIpIHsKKyAgICAgICAgICAgIGlmIChwbGF5ZXIoKSkKKyAgICAgICAg
ICAgICAgICBwbGF5ZXIoKS0+c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQod2Via2l0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSk7CisgICAgICAgIH0KKyAgICB9CisjZWxz
ZQorICAgIGVsc2UKKyAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpOyAgICAKKyNlbmRpZgogfQogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBv
cnRzRnVsbHNjcmVlbigpIGNvbnN0CkBAIC0xNDQsNiArMTU5LDEwIEBAIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKICAgICBpZiAoIXBsYXllcigpIHx8
ICFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGdWxsc2NyZWVuIGltcGxlbWVudGVkIGJ5IHBs
YXllci4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIC8vIElmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgZW5hYmxlZCBhbmQgaXMgc3VwcG9y
dGVkIGZvciB0aGUgY3VycmVudCBlbGVtZW50CiAgICAgLy8gZG8gbm90IHJlcXVpcmUgdGhhdCB0
aGUgcGxheWVyIGhhcyBhIHZpZGVvIHRyYWNrIHRvIGVudGVyIGZ1bGwgc2NyZWVuLgpAQCAtMTU1
LDYgKzE3NCw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQogfQogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkg
Y29uc3QKQEAgLTMwNyw2ICszMjcsMjUgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRE
aXNwbGF5aW5nRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIGlzRnVsbHNjcmVlbigpOwogfQogCisj
aWYgRU5BQkxFKElPU19BSVJQTEFZKQorYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRXaXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0Cit7CisgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MgfHwgIXNldHRp
bmdzLT5tZWRpYVBsYXliYWNrQWxsb3dzQWlyUGxheSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIFN0cmluZyBsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUgPSBmYXN0R2V0QXR0cmli
dXRlKHdlYmtpdGFpcnBsYXlBdHRyKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobGVnYWN5
QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNh
YmxlZEF0dHIpOworfQorCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFdlYmtpdFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCit7CisgICAgc2V0Qm9vbGVhbkF0
dHJpYnV0ZSh3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIsIGRpc2FibGVk
KTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggMDgwZjU3Yy4uMzEzOTBkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTU0LDYgKzU0LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVlbihFeGNlcHRpb25Db2RlJiBl
YykgeyB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oZWMpOyB9CiAgICAgdm9pZCB3ZWJraXRFeGl0RnVs
bFNjcmVlbigpIHsgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsgfQogCisjaWYgRU5BQkxFKElPU19B
SVJQTEFZKQorICAgIGJvb2wgd2Via2l0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFdlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJv
b2wpOworI2VuZGlmCisKICNpZiBFTkFCTEUoTUVESUFfU1RBVElTVElDUykKICAgICAvLyBTdGF0
aXN0aWNzCiAgICAgdW5zaWduZWQgd2Via2l0RGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCmluZGV4IGM2MTVjODkuLjM4YTNh
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbApAQCAtNDMsNiAr
NDMsMTAgQEAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHdlYmtpdEVudGVyRnVsbFNjcmVl
bigpOwogICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxTY3JlZW4oKTsKIAorI2lmIGRlZmluZWQoRU5B
QkxFX0lPU19BSVJQTEFZKSAmJiBFTkFCTEVfSU9TX0FJUlBMQVkKKyAgICBhdHRyaWJ1dGUgYm9v
bGVhbiB3ZWJraXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKKyNlbmRpZgorCiAgICAg
Ly8gVGhlIG51bWJlciBvZiBmcmFtZXMgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCBhbmQgbWFkZSBh
dmFpbGFibGUgZm9yCiAgICAgLy8gcGxheWJhY2suCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NU
QVRJU1RJQ1NdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdlYmtpdERlY29kZWRG
cmFtZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggOWFiYzAz
OS4uNzU3OWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0yMTks
NiArMjE5LDEwIEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KQogICAgICAgICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSB0aGlzLT5kb21XaW5kb3coKSkK
ICAgICAgICAgICAgIGRvbVdpbmRvdy0+YWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgbGlzdGVu
ZXIsIGZhbHNlKTsKICAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIGxpc3RlbmVyLnJlbGVhc2UoKSwgZmFsc2UpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAg
ICAgLy8gU2V0IHRoZSB2aWV3cG9ydCB0byBiZSBpbiBkZXZpY2UgcGl4ZWxzIChyYXRoZXIgdGhh
biB0aGUgZGVmYXVsdCBvZiA5ODApLgorICAgICAgICBwcm9jZXNzVmlld3BvcnQoQVNDSUlMaXRl
cmFsKCJ3aWR0aD1kZXZpY2Utd2lkdGgiKSwgVmlld3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1l
bnQpOworI2VuZGlmCiAgICAgfQogCiAgICAgbV9pbWFnZUVsZW1lbnQgPSBpbWFnZUVsZW1lbnQu
Z2V0KCk7CkBAIC0yMjYsOCArMjMwLDEyIEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKQogCiBmbG9hdCBJbWFnZURvY3VtZW50OjpzY2FsZSgpIGNvbnN0CiB7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIE9uIGlPUyBiaWcgaW1hZ2VzIGFyZSBzdWJzYW1w
bGVkIHRvIG1ha2UgdGhlbSBzbWFsbGVyLiBTbywgZG9uJ3QgcmVzaXplIHRoZW0uCisgICAgcmV0
dXJuIDE7CisjZWxzZQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCi0gICAgICAgIHJldHVybiAx
LjBmOworICAgICAgICByZXR1cm4gMTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lKCkt
PnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0yMzUsMTUgKzI0MywyMCBAQCBmbG9hdCBJbWFn
ZURvY3VtZW50OjpzY2FsZSgpIGNvbnN0CiAKICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IG1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcihtX2ltYWdl
RWxlbWVudC0+cmVuZGVyZXIoKSwgcGFnZVpvb21GYWN0b3IodGhpcykpOwogICAgIExheW91dFNp
emUgd2luZG93U2l6ZSA9IExheW91dFNpemUodmlldy0+d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkp
OwotICAgIAotICAgIGZsb2F0IHdpZHRoU2NhbGUgPSAoZmxvYXQpd2luZG93U2l6ZS53aWR0aCgp
IC8gaW1hZ2VTaXplLndpZHRoKCk7Ci0gICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSAoZmxvYXQpd2lu
ZG93U2l6ZS5oZWlnaHQoKSAvIGltYWdlU2l6ZS5oZWlnaHQoKTsKKworICAgIGZsb2F0IHdpZHRo
U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9hdD4od2luZG93U2l6ZS53aWR0aCgpKSAvIGltYWdlU2l6
ZS53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodFNjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdp
bmRvd1NpemUuaGVpZ2h0KCkpIC8gaW1hZ2VTaXplLmhlaWdodCgpOwogCiAgICAgcmV0dXJuIHN0
ZDo6bWluKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKKyNlbmRpZgogfQogCiB2b2lkIEltYWdl
RG9jdW1lbnQ6OnJlc2l6ZUltYWdlVG9GaXQoKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAv
LyBPbiBpT1MgYmlnIGltYWdlcyBhcmUgc3Vic2FtcGxlZCB0byBtYWtlIHRoZW0gc21hbGxlci4g
U28sIGRvbid0IHJlc2l6ZSB0aGVtLgorICAgIHJldHVybjsKKyNlbHNlCiAgICAgaWYgKCFtX2lt
YWdlRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTIsMzEgKzI2NSwzOSBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OnJlc2l6ZUltYWdlVG9GaXQoKQogICAgIGZsb2F0IHNjYWxlID0gdGhp
cy0+c2NhbGUoKTsKICAgICBtX2ltYWdlRWxlbWVudC0+c2V0V2lkdGgoc3RhdGljX2Nhc3Q8aW50
PihpbWFnZVNpemUud2lkdGgoKSAqIHNjYWxlKSk7CiAgICAgbV9pbWFnZUVsZW1lbnQtPnNldEhl
aWdodChzdGF0aWNfY2FzdDxpbnQ+KGltYWdlU2l6ZS5oZWlnaHQoKSAqIHNjYWxlKSk7Ci0gICAg
CisKICAgICBtX2ltYWdlRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUN1cnNvciwgQ1NTVmFsdWVXZWJraXRab29tSW4pOworI2VuZGlmCiB9CiAKIHZvaWQgSW1hZ2VE
b2N1bWVudDo6aW1hZ2VDbGlja2VkKGludCB4LCBpbnQgeSkKIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgLy8gT24gaU9TIGJpZyBpbWFnZXMgYXJlIHN1YnNhbXBsZWQgdG8gbWFrZSB0aGVtIHNt
YWxsZXIuIFNvLCBkb24ndCByZXNpemUgdGhlbS4KKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAg
VU5VU0VEX1BBUkFNKHkpOworICAgIHJldHVybjsKKyNlbHNlCiAgICAgaWYgKCFtX2ltYWdlU2l6
ZUlzS25vd24gfHwgaW1hZ2VGaXRzSW5XaW5kb3coKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9zaG91bGRTaHJpbmtJbWFnZSA9ICFtX3Nob3VsZFNocmlua0ltYWdlOwotICAgIAorCiAgICAg
aWYgKG1fc2hvdWxkU2hyaW5rSW1hZ2UpCiAgICAgICAgIHdpbmRvd1NpemVDaGFuZ2VkKCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIHJlc3RvcmVJbWFnZVNpemUoKTsKLSAgICAgICAgCisKICAgICAg
ICAgdXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGZsb2F0IHNjYWxlID0gdGhp
cy0+c2NhbGUoKTsKLSAgICAgICAgCisKICAgICAgICAgaW50IHNjcm9sbFggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHggLyBzY2FsZSAtIChmbG9hdClmcmFtZSgpLT52aWV3KCktPndpZHRoKCkgLyAyKTsK
ICAgICAgICAgaW50IHNjcm9sbFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHkgLyBzY2FsZSAtIChmbG9h
dClmcmFtZSgpLT52aWV3KCktPmhlaWdodCgpIC8gMik7Ci0gICAgICAgIAorCiAgICAgICAgIGZy
YW1lKCktPnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsWCwgc2Nyb2xs
WSkpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEltYWdlRG9jdW1lbnQ6OmltYWdlVXBkYXRl
ZCgpCkBAIC0zMjQsOSArMzQ1LDEyIEBAIGJvb2wgSW1hZ2VEb2N1bWVudDo6aW1hZ2VGaXRzSW5X
aW5kb3coKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIExheW91dFNpemUgaW1h
Z2VTaXplID0gbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPmltYWdlU2l6ZUZvclJlbmRl
cmVyKG1faW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCBwYWdlWm9vbUZhY3Rvcih0aGlzKSk7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIExheW91dFNpemUgd2luZG93U2l6ZSA9IHZpZXctPmNvbnRl
bnRzVG9TY3JlZW4odmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkpLnNpemUoKTsKKyNl
bHNlCiAgICAgTGF5b3V0U2l6ZSB3aW5kb3dTaXplID0gTGF5b3V0U2l6ZSh2aWV3LT53aWR0aCgp
LCB2aWV3LT5oZWlnaHQoKSk7Ci0gICAgCi0gICAgcmV0dXJuIGltYWdlU2l6ZS53aWR0aCgpIDw9
IHdpbmRvd1NpemUud2lkdGgoKSAmJiBpbWFnZVNpemUuaGVpZ2h0KCkgPD0gd2luZG93U2l6ZS5o
ZWlnaHQoKTsgICAgCisjZW5kaWYKKyAgICByZXR1cm4gaW1hZ2VTaXplLndpZHRoKCkgPD0gd2lu
ZG93U2l6ZS53aWR0aCgpICYmIGltYWdlU2l6ZS5oZWlnaHQoKSA8PSB3aW5kb3dTaXplLmhlaWdo
dCgpOwogfQogCiB2b2lkIEltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFuZ2VkKCkKQEAgLTMz
NSw3ICszNTksMjEgQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp3aW5kb3dTaXplQ2hhbmdlZCgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgZml0c0luV2luZG93ID0gaW1hZ2VGaXRzSW5XaW5k
b3coKTsKLSAgICAKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoZml0c0luV2luZG93KQor
ICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IG1faW1hZ2VFbGVt
ZW50LT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcihtX2ltYWdlRWxlbWVudC0+
cmVuZGVyZXIoKSwgcGFnZVpvb21GYWN0b3IodGhpcykpOworICAgIExheW91dFJlY3QgdmlzaWJs
ZVNjcmVlblNpemUgPSBmcmFtZSgpLT52aWV3KCktPmNvbnRlbnRzVG9TY3JlZW4oZnJhbWUoKS0+
dmlldygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKSk7CisKKyAgICBmbG9hdCB3aWR0aFNj
YWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpc2libGVTY3JlZW5TaXplLndpZHRoKCkpIC8gaW1h
Z2VTaXplLndpZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBzdGF0aWNfY2FzdDxmbG9h
dD4odmlzaWJsZVNjcmVlblNpemUuaGVpZ2h0KCkpIC8gaW1hZ2VTaXplLmhlaWdodCgpOworICAg
IGlmICh3aWR0aFNjYWxlIDwgaGVpZ2h0U2NhbGUpCisgICAgICAgIHByb2Nlc3NWaWV3cG9ydChT
dHJpbmc6OmZvcm1hdCgid2lkdGg9JWQiLCBpbWFnZVNpemUud2lkdGgoKS50b0ludCgpKSwgVmll
d3BvcnRBcmd1bWVudHM6OkltYWdlRG9jdW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgcHJvY2Vz
c1ZpZXdwb3J0KFN0cmluZzo6Zm9ybWF0KCJ3aWR0aD0lZCIsIHN0YXRpY19jYXN0PGludD4oMS4w
ZiArICgxLjBmIC0gaGVpZ2h0U2NhbGUpKSAqIGltYWdlU2l6ZS53aWR0aCgpLnRvSW50KCkpLCBW
aWV3cG9ydEFyZ3VtZW50czo6SW1hZ2VEb2N1bWVudCk7CisjZWxzZQogICAgIC8vIElmIHRoZSBp
bWFnZSBoYXMgYmVlbiBleHBsaWNpdGx5IHpvb21lZCBpbiwgcmVzdG9yZSB0aGUgY3Vyc29yIGlm
IHRoZSBpbWFnZSBmaXRzCiAgICAgLy8gYW5kIHNldCBpdCB0byBhIHpvb20gb3V0IGN1cnNvciBp
ZiB0aGUgaW1hZ2UgZG9lc24ndCBmaXQKICAgICBpZiAoIW1fc2hvdWxkU2hyaW5rSW1hZ2UpIHsK
QEAgLTM0NSw3ICszODMsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OndpbmRvd1NpemVDaGFuZ2Vk
KCkKICAgICAgICAgICAgIG1faW1hZ2VFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5Q3Vyc29yLCBDU1NWYWx1ZVdlYmtpdFpvb21PdXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAorCiAgICAgaWYgKG1fZGlkU2hyaW5rSW1hZ2UpIHsKICAgICAgICAgLy8g
SWYgdGhlIHdpbmRvdyBoYXMgYmVlbiByZXNpemVkIHNvIHRoYXQgdGhlIGltYWdlIGZpdHMsIHJl
c3RvcmUgdGhlIGltYWdlIHNpemUKICAgICAgICAgLy8gb3RoZXJ3aXNlIHVwZGF0ZSB0aGUgcmVz
dG9yZWQgaW1hZ2Ugc2l6ZS4KQEAgLTM2MCw2ICszOTgsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OndpbmRvd1NpemVDaGFuZ2VkKCkKICAgICAgICAgICAgIG1fZGlkU2hyaW5rSW1hZ2UgPSB0cnVl
OwogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiB9CiAKIENhY2hlZEltYWdlKiBJbWFnZURvY3Vt
ZW50OjpjYWNoZWRJbWFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOWJkMzY0
OS4uMzM1MjM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNTI1LDYgKzUyNSwx
MyBAQCBTdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorRGF0ZUNvbXBvbmVu
dHM6OlR5cGUgSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIERhdGVD
b21wb25lbnRzOjpJbnZhbGlkOworfQorI2VuZGlmCisKIHZvaWQgSW5wdXRUeXBlOjpkaXNwYXRj
aFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKGVsZW1lbnQoKS5hY3RpdmUoKSkKQEAgLTU1MSw2ICs1NTgsMTAgQEAgYm9vbCBJbnB1
dFR5cGU6Omhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdAogCiBib29sIElucHV0VHlwZTo6aXNL
ZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIHsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgaWYgKGVsZW1lbnQoKS5pc1JlYWRPbmx5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogICAgIHJldHVybiBlbGVtZW50KCkuaXNUZXh0Rm9ybUNvbnRyb2xL
ZXlib2FyZEZvY3VzYWJsZShldmVudCk7CiB9CiAKQEAgLTcyOCw2ICs3MzksMTQgQEAgSWNvbiog
SW5wdXRUeXBlOjppY29uKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorI2lmIFBMQVRGT1JN
KElPUykKK1N0cmluZyBJbnB1dFR5cGU6OmRpc3BsYXlTdHJpbmcoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKyNlbmRpZgorCiBi
b29sIElucHV0VHlwZTo6c2hvdWxkUmVzZXRPbkRvY3VtZW50QWN0aXZhdGlvbigpCiB7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggZTRjOGE0OS4uOTk2ZDkz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIFBMQVRG
T1JNKElPUykKKyNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CkBAIC0yNDYsNiAr
MjUwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBTaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVu
IERyYWdEYXRhIGhhcyBtb3JlIHRoYW4gb25lIGRyb3BwZWQgZmlsZXMuCiAgICAgdmlydHVhbCBi
b29sIHJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKTsKICAgICB2aXJ0dWFsIElj
b24qIGljb24oKSBjb25zdDsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdmlydHVhbCBTdHJpbmcg
ZGlzcGxheVN0cmluZygpIGNvbnN0OworI2VuZGlmCisKICAgICAvLyBTaG91bGQgcmV0dXJuIHRy
dWUgaWYgdGhlIGNvcnJlc3BvbmRpbmcgcmVuZGVyZXIgZm9yIGEgdHlwZSBjYW4gZGlzcGxheSBh
IHN1Z2dlc3RlZCB2YWx1ZS4KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U3VnZ2VzdGVkVmFsdWUo
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2VuZENoYW5nZUV2ZW50QWZ0ZXJDaGVja2VkQ2hh
bmdlZCgpOwpAQCAtMjk0LDYgKzMwMiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gc3RyaW5nLiBUaGlz
IHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciB0eXBlcyB3aXRob3V0IHZhbHVlQXNOdW1iZXIuCiAg
ICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKIAorI2lm
IFBMQVRGT1JNKElPUykKKyAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBl
KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luZGV0ZXJtaW5h
dGVBcHBlYXJhbmNlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3Rp
b25BUEkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXgg
MTEzYTU2Yi4uMGQ0YTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAK
QEAgLTc0LDEwICs3NCwxOSBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSgpCiAgICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAgICAgIGRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLmRpc3BhdGNoRG9jdW1lbnRFbGVtZW50QXZhaWxh
YmxlKCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRv
IHpvb20gaW50byBzdGFuZGFsb25lIHBsdWctaW4gZG9jdW1lbnRzLgorICAgIGRvY3VtZW50KCkt
PnByb2Nlc3NWaWV3cG9ydChBU0NJSUxpdGVyYWwoInVzZXItc2NhbGFibGU9bm8iKSwgVmlld3Bv
cnRBcmd1bWVudHM6OlBsdWdpbkRvY3VtZW50KTsKKyNlbmRpZgorCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGJvZHkgPSBkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KGJvZHlUYWcsIGZhbHNlKTsKLSAg
ICBib2R5LT5zZXRBdHRyaWJ1dGUobWFyZ2lud2lkdGhBdHRyLCAiMCIpOwotICAgIGJvZHktPnNl
dEF0dHJpYnV0ZShtYXJnaW5oZWlnaHRBdHRyLCAiMCIpOwotICAgIGJvZHktPnNldEF0dHJpYnV0
ZShzdHlsZUF0dHIsICJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsMzgsMzgpIik7CisgICAgYm9k
eS0+c2V0QXR0cmlidXRlKG1hcmdpbndpZHRoQXR0ciwgQXRvbWljU3RyaW5nKCIwIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGJvZHktPnNldEF0dHJpYnV0ZSht
YXJnaW5oZWlnaHRBdHRyLCBBdG9taWNTdHJpbmcoIjAiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvZHktPnNldEF0dHJpYnV0
ZShzdHlsZUF0dHIsIEF0b21pY1N0cmluZygiYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNywyMjQs
MjMzKSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyNlbHNlCisgICAg
Ym9keS0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgQXRvbWljU3RyaW5nKCJiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMzgsMzgsMzgpIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OworI2VuZGlmCiAKICAgICByb290RWxlbWVudC0+YXBwZW5kQ2hpbGQoYm9keSwgSUdOT1JFX0VY
Q0VQVElPTik7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApp
bmRleCA5ZjYxMTQ0Li40YjE2YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcApAQCAtMTM4LDYgKzEzOCw3IEBAIGJvb2wgUmFuZ2VJbnB1dFR5cGU6OmlzU3RlcHBhYmxl
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmICFQTEFURk9STShJT1MpCiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50KiBldmVudCkK
IHsKICAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJlYWRPbmx5KCkpCkBAIC0xNTQsMTEg
KzE1NSwxNCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVudChNb3Vz
ZUV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIHRodW1iLmRyYWdGcm9tKGV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotI2lmIEVOQUJMRShUT1VDSF9TTElERVIpCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5k
bGVUb3VjaEV2ZW50KFRvdWNoRXZlbnQqIGV2ZW50KQogeworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpLmhhbmRsZVRvdWNoRXZlbnQoZXZlbnQpOworI2Vs
aWYgRU5BQkxFKFRPVUNIX1NMSURFUikKICAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJl
YWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTcyLDE0ICsxNzYsMjMgQEAgdm9pZCBS
YW5nZUlucHV0VHlwZTo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiBldmVudCkKICAgICAg
ICAgdHlwZWRTbGlkZXJUaHVtYkVsZW1lbnQoKS5zZXRQb3NpdGlvbkZyb21Qb2ludCh0b3VjaGVz
LT5pdGVtKDApLT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICB9CisjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9TTElERVIp
CiBib29sIFJhbmdlSW5wdXRUeXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgUmFu
Z2VJbnB1dFR5cGU6OmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgdHlwZWRTbGlk
ZXJUaHVtYkVsZW1lbnQoKS5kaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKK30KICNlbmRpZgor
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6Omhh
bmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaAppbmRleCBkMTEyZjFiLi5hYzAxZTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5oCkBAIC01MSw3ICs1MSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0
ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklERTsKKyNpZiAhUExB
VEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2
ZW50KikgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2
ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQq
IGNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+KSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIE9WRVJSSURFOwpAQCAtNzcsMTAg
Kzc5LDE4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPERlY2ltYWw+IG1fdGlja01hcmtWYWx1ZXM7
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9TTElE
RVIpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlVG91
Y2hFdmVudChUb3VjaEV2ZW50KikgT1ZFUlJJREU7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAg
dmlydHVhbCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOworI2Vsc2UK
KyNpZiBFTkFCTEUoVE9VQ0hfU0xJREVSKQogICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50
SGFuZGxlcigpIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCBhNTQ3
NTFkLi4zZGRhZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBA
IC01OSw4ICs1OSwxMCBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6YXR0YWNoKCkKIAogdm9pZCBT
ZWFyY2hJbnB1dFR5cGU6OmFkZFNlYXJjaFJlc3VsdCgpCiB7CisjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQoKS5yZW5kZXJlcigpKQog
ICAgICAgICB0b1JlbmRlclNlYXJjaEZpZWxkKHJlbmRlcmVyKS0+YWRkU2VhcmNoUmVzdWx0KCk7
CisjZW5kaWYKIH0KIAogUmVuZGVyRWxlbWVudCogU2VhcmNoSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCAzODkxZjY5Zi4uMTk0OGY4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNzAsNiArNzAsMTAg
QEAgVGV4dEZpZWxkSW5wdXRUeXBlOjp+VGV4dEZpZWxkSW5wdXRUeXBlKCkKIAogYm9vbCBUZXh0
RmllbGRJbnB1dFR5cGU6OmlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0
CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChlbGVtZW50KCkuaXNSZWFkT25seSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICByZXR1cm4gZWxlbWVudCgpLmlzVGV4
dEZvcm1Db250cm9sRm9jdXNhYmxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCmluZGV4IDUyMmRkN2YuLmRjZmRlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNjksNiArNjksOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZl
bnRCZWhhdmlvcikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlubmVyVGV4dFZh
bHVlKCkgT1ZFUlJJREU7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKIAogICAg
IHZpcnR1YWwgU3RyaW5nIGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgIGVudW0gVmFsdWVDaGFuZ2VTdGF0ZSB7CkBAIC04Nyw3ICs5MCw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFJlbmRlckVsZW1lbnQqIGNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8
UmVuZGVyU3R5bGU+KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNl
SW5wdXRNZXRob2QoKSBjb25zdCBPVkVSUklERTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7
CisjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlYkF1dG9jYXBpdGFs
aXplLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlYkF1dG9jYXBpdGFsaXplLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc2ZGRhNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvV2ViQXV0b2NhcGl0YWxpemUuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJB
dXRvY2FwaXRhbGl6ZV9oCisjZGVmaW5lIFdlYkF1dG9jYXBpdGFsaXplX2gKKwordHlwZWRlZiBl
bnVtIHsKKyAgICBXZWJBdXRvY2FwaXRhbGl6ZVR5cGVEZWZhdWx0LAorICAgIFdlYkF1dG9jYXBp
dGFsaXplVHlwZU5vbmUsCisgICAgV2ViQXV0b2NhcGl0YWxpemVUeXBlV29yZHMsCisgICAgV2Vi
QXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzLAorICAgIFdlYkF1dG9jYXBpdGFsaXplVHlwZUFs
bENoYXJhY3RlcnMKK30gV2ViQXV0b2NhcGl0YWxpemVUeXBlOworCisjZW5kaWYgLy8gV2ViQXV0
b2NhcGl0YWxpemVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggMDkwOWMyYS4uM2Y3YTNkZCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCkBAIC02NCw3ICs2NCwxMyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogI2lmIFVTRShDRykKKyNpZiAhUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPEFw
cGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorI2VuZGlmIC8vICFQTEFU
Rk9STShJT1MpCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE4MDksNiArMTgxNSwxNSBA
QCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJ
bWFnZURhdGEoZmxvYXQgc3csIGZsb2F0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lm
IFBMQVRGT1JNKElPUykKKyAgICAvLyBJZiB0aGUgY2FudmFzIGVsZW1lbnQgd2FzIGNyZWF0ZWQg
YmVmb3JlIERvY3VtZW50IGhhZCBhIEZyYW1lLAorICAgIC8vIHRoZW4gbm8gbWF4aW11bURlY29k
ZWRJbWFnZVNpemUgd2FzIHNldC4KKyAgICBpZiAoIWNhbnZhcygpLT5tYXhpbXVtRGVjb2RlZElt
YWdlU2l6ZSgpKSB7CisgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBjYW52YXMoKS0+
ZG9jdW1lbnQoKS5zZXR0aW5ncygpKQorICAgICAgICAgICAgY2FudmFzKCktPnNldE1heGl1bURl
Y29kZWRJbWFnZVNpemUoc2V0dGluZ3MtPm1heGltdW1EZWNvZGVkSW1hZ2VTaXplKCkpOworICAg
IH0KKyNlbmRpZgorCiAgICAgRmxvYXRTaXplIGxvZ2ljYWxTaXplKGZhYnMoc3cpLCBmYWJzKHNo
KSk7CiAgICAgaWYgKCFsb2dpY2FsU2l6ZS5pc0V4cHJlc3NpYmxlQXNJbnRTaXplKCkpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTg1OSw2ICsxODc0LDE1IEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmdldEltYWdlRGF0YShJbWFnZUJ1ZmZlcjo6Q29v
cmRpCiAgICAgICAgIHNoID0gLXNoOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAv
LyBJZiB0aGUgY2FudmFzIGVsZW1lbnQgd2FzIGNyZWF0ZWQgYmVmb3JlIERvY3VtZW50IGhhZCBh
IEZyYW1lLAorICAgIC8vIHRoZW4gbm8gbWF4aW11bURlY29kZWRJbWFnZVNpemUgd2FzIHNldC4K
KyAgICBpZiAoIWNhbnZhcygpLT5tYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpKSB7CisgICAgICAg
IGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBjYW52YXMoKS0+ZG9jdW1lbnQoKS5zZXR0aW5ncygp
KQorICAgICAgICAgICAgY2FudmFzKCktPnNldE1heGl1bURlY29kZWRJbWFnZVNpemUoc2V0dGlu
Z3MtPm1heGltdW1EZWNvZGVkSW1hZ2VTaXplKCkpOworICAgIH0KKyNlbmRpZgorCiAgICAgRmxv
YXRSZWN0IGxvZ2ljYWxSZWN0KHN4LCBzeSwgc3csIHNoKTsKICAgICBpZiAobG9naWNhbFJlY3Qu
d2lkdGgoKSA8IDEpCiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKDEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgKaW5kZXggNTYx
YTFlOC4uNzI3ZGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TENvbnN0cnVjdGlvblNpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
Q29uc3RydWN0aW9uU2l0ZS5oCkBAIC0xMzMsNiArMTMzLDEwIEBAIHB1YmxpYzoKIAogICAgIFBh
cnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSgpIHsgcmV0dXJuIG1fcGFyc2Vy
Q29udGVudFBvbGljeTsgfQogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgaXNUZWxlcGhv
bmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQtPmlzVGVsZXBob25l
TnVtYmVyUGFyc2luZ0VuYWJsZWQoKTsgfQorI2VuZGlmCisKICAgICBjbGFzcyBSZWRpcmVjdFRv
Rm9zdGVyUGFyZW50R3VhcmQgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWRpcmVj
dFRvRm9zdGVyUGFyZW50R3VhcmQpOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAppbmRleCBkYWI4NjI3Li44MmM5N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5oCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNv
cmVUaHJlYWQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwpAQCAtNjksNiArNzMsMTAgQEAgcHVibGljOgogICAgIC8vIElubGluZSBhcyB0aGlzIGlz
IGNhbGxlZCBhZnRlciBldmVyeSB0b2tlbiBpbiB0aGUgcGFyc2VyLgogICAgIHZvaWQgY2hlY2tG
b3JZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQogICAgIHsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgICAgIGlmIChXZWJUaHJlYWRTaG91bGRZaWVsZCgpKQorICAgICAgICAg
ICAgc2Vzc2lvbi5uZWVkc1lpZWxkID0gdHJ1ZTsKKyNlbmRpZgogICAgICAgICBpZiAoc2Vzc2lv
bi5wcm9jZXNzZWRUb2tlbnMgPiBtX3BhcnNlckNodW5rU2l6ZSB8fCBzZXNzaW9uLmRpZFNlZVNj
cmlwdCkgewogICAgICAgICAgICAgLy8gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgY2Fu
IGJlIGV4cGVuc2l2ZS4gQnkgZGVsYXlpbmcsIHdlIGF2b2lkZWQgY2FsbGluZwogICAgICAgICAg
ICAgLy8gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgd2hlbiBjb25zdHJ1Y3Rpbmcgbm9u
LXlpZWxkaW5nIFB1bXBTZXNzaW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDIwYmExZTEuLmU5YzBiZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNDQsNiArNDQsMjkg
QEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0No
YXJhY3Rlck5hbWVzLmg+CiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiU29mdExpbmtp
bmcuaCIKKworI2lmZGVmIF9faGFzX2luY2x1ZGUKKyNpZiBfX2hhc19pbmNsdWRlKDxEYXRhRGV0
ZWN0b3JzQ29yZS9ERERGQUNhY2hlLmg+KQorI2luY2x1ZGUgPERhdGFEZXRlY3RvcnNDb3JlL0RE
REZBQ2FjaGUuaD4KKyNlbHNlCit0eXBlZGVmIHZvaWQqIEREREZBQ2FjaGVSZWY7CisjZW5kaWYK
KworI2lmIF9faGFzX2luY2x1ZGUoPERhdGFEZXRlY3RvcnNDb3JlL0REREZBU2Nhbm5lci5oPikK
KyNpbmNsdWRlIDxEYXRhRGV0ZWN0b3JzQ29yZS9ERERGQVNjYW5uZXIuaD4KKyNlbHNlCit0eXBl
ZGVmIHZvaWQqIEREREZBU2Nhbm5lclJlZjsKKyNlbmRpZgorI2VuZGlmCisKK1NPRlRfTElOS19Q
UklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChEYXRhRGV0ZWN0b3JzQ29yZSkKK1NPRlRfTElOSyhE
YXRhRGV0ZWN0b3JzQ29yZSwgRERERkFDYWNoZUNyZWF0ZUZyb21GcmFtZXdvcmssIEREREZBQ2Fj
aGVSZWYsICgpLCAoKSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzQ29yZSwgRERERkFTY2FubmVy
Q3JlYXRlRnJvbUNhY2hlLCBERERGQVNjYW5uZXJSZWYsIChERERGQUNhY2hlUmVmIGNhY2hlKSwg
KGNhY2hlKSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzQ29yZSwgRERERkFTY2FubmVyRmlyc3RS
ZXN1bHRJblVuaWNoYXJBcnJheSwgQm9vbGVhbiwgKEREREZBU2Nhbm5lclJlZiBzY2FubmVyLCBj
b25zdCBVbmlDaGFyKiBzdHIsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBzdGFydFBvcywgaW50KiBl
bmRQb3MpLCAoc2Nhbm5lciwgc3RyLCBsZW5ndGgsIHN0YXJ0UG9zLCBlbmRQb3MpKQorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTIzNDIsNiArMjM2NSw5NiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3Rl
cihBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgIHByb2Nlc3NDaGFyYWN0ZXJCdWZmZXIoYnVm
ZmVyKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKy8vIEZyb20gdGhlIHN0cmluZyA0MDg5OTYx
MDEwLCBjcmVhdGVzIGEgbGluayBvZiB0aGUgZm9ybSA8YSBocmVmPSJ0ZWw6NDA4OTk2MTAxMCI+
NDA4OTk2MTAxMDwvYT4gYW5kIGluc2VydHMgaXQuCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5z
ZXJ0UGhvbmVOdW1iZXJMaW5rKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFZlY3RvcjxB
dHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgYXR0cmlidXRlcy5hcHBlbmQoQXR0cmlidXRlKEhU
TUxOYW1lczo6aHJlZkF0dHIsIEFTQ0lJTGl0ZXJhbCgidGVsOiIpICsgc3RyaW5nKSk7CisKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGFUYWdMb2NhbE5hbWUgPSBhVGFnLmxvY2FsTmFtZSgpOwor
ICAgIEF0b21pY0hUTUxUb2tlbiBhU3RhcnRUb2tlbihIVE1MVG9rZW46OlN0YXJ0VGFnLCBhVGFn
TG9jYWxOYW1lLCBhdHRyaWJ1dGVzKTsKKyAgICBBdG9taWNIVE1MVG9rZW4gYUVuZFRva2VuKEhU
TUxUb2tlbjo6RW5kVGFnLCBhVGFnTG9jYWxOYW1lKTsKKworICAgIHByb2Nlc3NTdGFydFRhZygm
YVN0YXJ0VG9rZW4pOworICAgIG1fdHJlZS5leGVjdXRlUXVldWVkVGFza3MoKTsKKyAgICBtX3Ry
ZWUuaW5zZXJ0VGV4dE5vZGUoc3RyaW5nKTsKKyAgICBwcm9jZXNzRW5kVGFnKCZhRW5kVG9rZW4p
OworfQorCisvLyBMb2NhdGVzIHRoZSBwaG9uZSBudW1iZXJzIGluIHRoZSBzdHJpbmcgYW5kIGRl
YWxzIHdpdGggaXQKKy8vIDEuIEFwcGVuZHMgdGhlIHRleHQgYmVmb3JlIHRoZSBwaG9uZSBudW1i
ZXIgYXMgYSB0ZXh0IG5vZGUuCisvLyAyLiBXcmFwcyB0aGUgcGhvbmUgbnVtYmVyIGluIGEgdGVs
OiBsaW5rLgorLy8gMy4gR29lcyBiYWNrIHRvIHN0ZXAgMSBpZiBhIHBob25lIG51bWJlciBpcyBm
b3VuZCBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLgorLy8gNC4gQXBwZW5kcyB0aGUgcmVzdCBv
ZiB0aGUgc3RyaW5nIGFzIGEgdGV4dCBub2RlLgordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omxpbmtp
ZnlQaG9uZU51bWJlcnMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RhdGljIEREREZB
Q2FjaGVSZWYgcGhvbmVOdW1iZXJzQ2FjaGUgPSBERERGQUNhY2hlQ3JlYXRlRnJvbUZyYW1ld29y
aygpOworICAgIGlmICghcGhvbmVOdW1iZXJzQ2FjaGUpIHsKKyAgICAgICAgbV90cmVlLmluc2Vy
dFRleHROb2RlKHN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMg
RERERkFTY2FubmVyUmVmIHBob25lTnVtYmVyc1NjYW5uZXIgPSBERERGQVNjYW5uZXJDcmVhdGVG
cm9tQ2FjaGUocGhvbmVOdW1iZXJzQ2FjaGUpOworCisgICAgLy8gcmVsYXRpdmVTdGFydFBvc2l0
aW9uIGFuZCByZWxhdGl2ZUVuZFBvc2l0aW9uIGFyZSB0aGUgZW5kcG9pbnRzIG9mIHRoZSBwaG9u
ZSBudW1iZXIgcmFuZ2UsCisgICAgLy8gcmVsYXRpdmUgdG8gdGhlIHNjYW5uZXJQb3NpdGlvbgor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBzY2Fu
bmVyUG9zaXRpb24gPSAwOworICAgIGludCByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gPSAwOworICAg
IGludCByZWxhdGl2ZUVuZFBvc2l0aW9uID0gMDsKKworICAgIC8vIFdoaWxlIHRoZXJlJ3MgYSBw
aG9uZSBudW1iZXIgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZy4uLgorICAgIHdoaWxlICgoc2Nh
bm5lclBvc2l0aW9uIDwgbGVuZ3RoKSAmJiBERERGQVNjYW5uZXJGaXJzdFJlc3VsdEluVW5pY2hh
ckFycmF5KHBob25lTnVtYmVyc1NjYW5uZXIsICZzdHJpbmcuY2hhcmFjdGVycygpW3NjYW5uZXJQ
b3NpdGlvbl0sIGxlbmd0aCAtIHNjYW5uZXJQb3NpdGlvbiwgJnJlbGF0aXZlU3RhcnRQb3NpdGlv
biwgJnJlbGF0aXZlRW5kUG9zaXRpb24pKSB7CisgICAgICAgIC8vIFRoZSBjb252ZW50aW9uIGlu
IHRoZSBEYXRhIERldGVjdG9ycyBmcmFtZXdvcmsgaXMgdGhhdCB0aGUgZW5kIHBvc2l0aW9uIGlz
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgTk9UIGluIHRoZSBwaG9uZSBudW1iZXIKKyAgICAgICAgLy8g
KHRoYXQgaXMsIHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIGlzIHJlbGF0aXZlRW5kUG9zaXRpb24g
LSByZWxhdGl2ZVN0YXJ0UG9zaXRpb24pLiBTbyBzdWJzdHJhY3QgMSB0byBnZXQgdGhlIHNhbWUK
KyAgICAgICAgLy8gY29udmVudGlvbiBhcyB0aGUgb2xkIFdlYkNvcmUgcGhvbmUgbnVtYmVyIHBh
cnNlciAoc28gdGhhdCB0aGUgcmVzdCBvZiB0aGUgY29kZSBpcyBzdGlsbCB2YWxpZCBpZiB3ZSB3
YW50IHRvIGdvIGJhY2sKKyAgICAgICAgLy8gdG8gdGhlIG9sZCBwYXJzZXIpLgorICAgICAgICAt
LXJlbGF0aXZlRW5kUG9zaXRpb247CisKKyAgICAgICAgQVNTRVJUKHNjYW5uZXJQb3NpdGlvbiAr
IHJlbGF0aXZlRW5kUG9zaXRpb24gPCBsZW5ndGgpOworCisgICAgICAgIG1fdHJlZS5pbnNlcnRU
ZXh0Tm9kZShzdHJpbmcuc3Vic3RyaW5nKHNjYW5uZXJQb3NpdGlvbiwgcmVsYXRpdmVTdGFydFBv
c2l0aW9uKSk7CisgICAgICAgIGluc2VydFBob25lTnVtYmVyTGluayhzdHJpbmcuc3Vic3RyaW5n
KHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiwgcmVsYXRpdmVFbmRQb3Np
dGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDEpKTsKKworICAgICAgICBzY2FubmVyUG9z
aXRpb24gKz0gcmVsYXRpdmVFbmRQb3NpdGlvbiArIDE7CisgICAgfQorCisgICAgLy8gQXBwZW5k
IHRoZSByZXN0IGFzIGEgdGV4dCBub2RlLgorICAgIGlmIChzY2FubmVyUG9zaXRpb24gPiAwKSB7
CisgICAgICAgIGlmIChzY2FubmVyUG9zaXRpb24gPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIFN0
cmluZyBhZnRlciA9IHN0cmluZy5zdWJzdHJpbmcoc2Nhbm5lclBvc2l0aW9uLCBsZW5ndGggLSBz
Y2FubmVyUG9zaXRpb24pOworICAgICAgICAgICAgbV90cmVlLmluc2VydFRleHROb2RlKGFmdGVy
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUo
c3RyaW5nKTsKK30KKworLy8gTG9va3MgYXQgdGhlIGFuY2VzdG9ycyBvZiB0aGUgZWxlbWVudCB0
byBkZXRlcm1pbmUgd2hldGhlciB3ZSdyZSBpbnNpZGUgYW4gZWxlbWVudCB3aGljaCBkaXNhbGxv
d3MgcGFyc2luZyBwaG9uZSBudW1iZXJzLgorc3RhdGljIGlubGluZSBib29sIGRpc2FsbG93VGVs
ZXBob25lTnVtYmVyUGFyc2luZyhjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBub2Rl
LmlzTGluaygpCisgICAgICAgIHx8IG5vZGUubm9kZVR5cGUoKSA9PSBOb2RlOjpDT01NRU5UX05P
REUKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKHNjcmlwdFRhZykKKyAgICAgICAgfHwgKG5v
ZGUuaXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVsZW1lbnQobm9kZSkuaXNGb3JtQ29udHJvbEVs
ZW1lbnQoKSkKKyAgICAgICAgfHwgbm9kZS5oYXNUYWdOYW1lKHN0eWxlVGFnKQorICAgICAgICB8
fCBub2RlLmhhc1RhZ05hbWUodHRUYWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShwcmVU
YWcpCisgICAgICAgIHx8IG5vZGUuaGFzVGFnTmFtZShjb2RlVGFnKTsKK30KKworc3RhdGljIGlu
bGluZSBib29sIHNob3VsZFBhcnNlVGVsZXBob25lTnVtYmVyc0luTm9kZShjb25zdCBDb250YWlu
ZXJOb2RlJiBub2RlKQoreworICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIGN1cnJlbnROb2RlID0g
Jm5vZGU7CisgICAgZG8geworICAgICAgICBpZiAoY3VycmVudE5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiBkaXNhbGxvd1RlbGVwaG9uZU51bWJlclBhcnNpbmcoKmN1cnJlbnROb2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+
cGFyZW50Tm9kZSgpOworICAgIH0gd2hpbGUgKGN1cnJlbnROb2RlKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzQ2hhcmFjdGVyQnVmZmVyKEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXImIGJ1ZmZl
cikKIHsKIFJlcHJvY2Vzc0J1ZmZlcjoKQEAgLTI1MTksNyArMjYzMiwxNSBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0NoYXJhY3RlckJ1ZmZlckZvckluQm9keShFeHRlcm5hbENoYXJh
Y3RlclRva2VuQnVmZgogewogICAgIG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRp
bmdFbGVtZW50cygpOwogICAgIFN0cmluZyBjaGFyYWN0ZXJzID0gYnVmZmVyLnRha2VSZW1haW5p
bmcoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFpc1BhcnNpbmdGcmFnbWVudCgpICYm
IG1fdHJlZS5pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCkgJiYgc2hvdWxkUGFyc2VU
ZWxlcGhvbmVOdW1iZXJzSW5Ob2RlKCptX3RyZWUuY3VycmVudE5vZGUoKSkgJiYgRGF0YURldGVj
dG9yc0NvcmVMaWJyYXJ5KCkpCisgICAgICAgIGxpbmtpZnlQaG9uZU51bWJlcnMoY2hhcmFjdGVy
cyk7CisgICAgZWxzZQorICAgICAgICBtX3RyZWUuaW5zZXJ0VGV4dE5vZGUoY2hhcmFjdGVycyk7
CisjZWxzZQogICAgIG1fdHJlZS5pbnNlcnRUZXh0Tm9kZShjaGFyYWN0ZXJzKTsKKyNlbmRpZgor
CiAgICAgaWYgKG1fZnJhbWVzZXRPayAmJiAhaXNBbGxXaGl0ZXNwYWNlT3JSZXBsYWNlbWVudENo
YXJhY3RlcnMoY2hhcmFjdGVycykpCiAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCBiOGU3
YTczLi42N2M1ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaApAQCAtMTIzLDYgKzEyMywxMSBAQCBwcml2YXRlOgogICAgIEhUTUxUcmVlQnVpbGRl
cihIVE1MRG9jdW1lbnRQYXJzZXImLCBIVE1MRG9jdW1lbnQmLCBQYXJzZXJDb250ZW50UG9saWN5
LCBib29sIHJlcG9ydEVycm9ycywgY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmKTsKICAgICBIVE1M
VHJlZUJ1aWxkZXIoSFRNTERvY3VtZW50UGFyc2VyJiwgRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5LCBjb25zdCBIVE1MUGFyc2Vy
T3B0aW9ucyYpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgaW5zZXJ0UGhvbmVOdW1i
ZXJMaW5rKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgbGlua2lmeVBob25lTnVtYmVycyhjb25z
dCBTdHJpbmcmKTsKKyNlbmRpZgorCiAgICAgdm9pZCBwcm9jZXNzVG9rZW4oQXRvbWljSFRNTFRv
a2VuKik7CiAKICAgICB2b2lkIHByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRNTFRva2VuKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHAKaW5kZXggZDBlMjRiYS4uNDJjNTMwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTc1MSw4ICs3NTEsMTMg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5l
ckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkKIAogTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9scykKICAgICA6IE1l
ZGlhQ29udHJvbERpdkVsZW1lbnQoZG9jdW1lbnQsIE1lZGlhQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3QpCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV9jb250cm9scyhjb250cm9scykK
KyNlbmRpZgogeworI2lmICFFTkFCTEUoVklERU9fVFJBQ0spCisgICAgVU5VU0VEX1BBUkFNKGNv
bnRyb2xzKTsKKyNlbmRpZgogfQogCiBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zVHJhY2tMaXN0RWxlbWVudD4gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RF
bGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUNvbnRyb2xzKiBjb250cm9s
cykKQEAgLTc5NCw2ICs3OTksOCBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJh
Y2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbgogICAgIH0KIAog
ICAgIE1lZGlhQ29udHJvbERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwogI2VuZGlmCiB9CiAKQEAgLTk1OCw2ICs5
NjUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIG1fY29udHJvbHMtPnVwZGF0ZUN1cnJlbnRUaW1l
RGlzcGxheSgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgTWVkaWFDb250cm9sVGlt
ZWxpbmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAgaWYg
KCFhdHRhY2hlZCgpKQpAQCAtOTY1LDYgKzk3Myw3IEBAIGJvb2wgTWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiB2b2lkIE1lZGlhQ29udHJvbFRp
bWVsaW5lRWxlbWVudDo6c2V0UG9zaXRpb24oZG91YmxlIGN1cnJlbnRUaW1lKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXgg
YTUyZmZiYy4uMmNkMDY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC00OSw4ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtYWtlT3BhcXVlKCk7CiAgICAgdm9pZCBtYWtlVHJhbnNwYXJlbnQoKTsKIAorI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMo
KSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50KERvY3VtZW50
Jik7CkBAIC0xMjEsNyArMTIzLDkgQEAgY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29u
dGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xEaXZFbGVtZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CkBAIC0xNTQsNyArMTU4LDkg
QEAgY2xhc3MgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudCBGSU5BTCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBN
ZWRpYUNvbnRyb2xzKik7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQor
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0
dG9uRWxlbWVudChEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKQEAgLTE4Myw3ICsxODksMTAg
QEAgY2xhc3MgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQgRklOQUwgOiBwdWJsaWMgTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKKyNpZiAh
UExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2
ZW50cygpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CkBAIC0yNDAsNyAr
MjQ5LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCisj
aWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KERvY3VtZW50Jik7
CkBAIC0yNTUsNyArMjY2LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW4KIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFJl
dHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KERvY3VtZW50Jik7CkBAIC0yNzAsNyArMjgzLDkg
QEAgY2xhc3MgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50IEZJ
TkFMIDogcHVibGljIE1lZGlhQ29udHJvbEkKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUo
KSBPVkVSUklERTsKIApAQCAtMjgwLDcgKzI5NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKIAotI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCisjaWYgUExB
VEZPUk0oSU9TKSB8fCBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0o
R1RLKQogICAgIE1lZGlhQ29udHJvbHMqIG1fY29udHJvbHM7CiAjZW5kaWYKIH07CkBAIC0yOTEs
NyArMzA2LDkgQEAgY2xhc3MgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVt
ZW50IEZJTkFMIDogcHVibGljIE1lZGlhQ29udHJvbERpdkUKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNy
ZWF0ZShEb2N1bWVudCYpOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRh
aW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKQEAgLTMwNCw3ICszMjEsOSBAQCBjbGFzcyBNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQgRklOQUwgOiBwdWJsaWMgTWVkaWFD
b250cm9sRGl2RQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50JiwgTWVkaWFDb250
cm9scyopOwogCisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYK
IAogICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogCkBAIC0zMzEsNyArMzUwLDkgQEAgY2xhc3Mg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50IEZJTkFMIDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
VGltZWxpbmVFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmLCBNZWRpYUNvbnRyb2xzKik7CiAKKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIE9WRVJSSURFOworI2VuZGlmCiAKICAgICB2b2lkIHNldFBvc2l0aW9uKGRvdWJs
ZSk7CiAgICAgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpOwpAQCAtMzUxLDcgKzM3Miw5IEBAIGNs
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50IEZJTkFMIDogcHVibGljIE1l
ZGlhQ29udHJvbElucHV0RWxlbWVuCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCisj
aWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0Z1bGxzY3JlZW4oYm9vbCk7CiAKQEAgLTM4OSw3ICs0MTIsOSBAQCBjbGFz
cyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xJbnB1dEVsZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQm
KTsKIAorI2lmICFQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9N
b3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRv
bkVsZW1lbnQoRG9jdW1lbnQmKTsKQEAgLTQwMyw3ICs0MjgsOSBAQCBjbGFzcyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJ
bnB1dEVsZQogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAorI2lmICFQ
TEFURk9STShJT1MpCiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQoRG9j
dW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaAppbmRl
eCBhNzllMmZkLi4zYTAzYTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5oCkBAIC05Myw3ICs5Myw5IEBAIGNsYXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMg
SFRNTERpdkVsZW1lbnQgewogICAgIHZpcnR1YWwgdm9pZCBlbnRlcmVkRnVsbHNjcmVlbigpOwog
ICAgIHZpcnR1YWwgdm9pZCBleGl0ZWRGdWxsc2NyZWVuKCk7CiAKKyNpZiAhUExBVEZPUk0oSU9T
KQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUZ1bGxz
Y3JlZW5Db250cm9sc1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9scz4qKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IGI2Yjgy
NzUuLmFlYjVmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcApAQCAtNDUsNiArNDUsMTIgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVt
ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2Uu
aCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTg5LDYgKzE5NSwxMCBAQCB2b2lk
IFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKIFNsaWRlclRodW1iRWxlbWVudDo6U2xp
ZGVyVGh1bWJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEhUTUxEaXZFbGVtZW50
KEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkKICAgICAsIG1faW5EcmFnTW9kZShmYWxzZSkK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLCBtX2V4Y2x1
c2l2ZVRvdWNoSWRlbnRpZmllcihOb0lkZW50aWZpZXIpCisgICAgLCBtX2lzUmVnaXN0ZXJlZEFz
VG91Y2hFdmVudExpc3RlbmVyKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgc2V0SGFzQ3VzdG9tU3R5
bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CiB9CkBAIC0yMzQsNyArMjQ0LDkgQEAgdm9pZCBTbGlkZXJU
aHVtYkVsZW1lbnQ6OmRyYWdGcm9tKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKIHsKICAgICBS
ZWY8U2xpZGVyVGh1bWJFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZy
b21Qb2ludChwb2ludCk7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGFydERyYWdnaW5nKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50JiBhYnNvbHV0ZVBvaW50KQpAQCAtMzIxLDYgKzMzMyw3IEBA
IHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpzdG9wRHJhZ2dpbmcoKQogICAgICAgICByZW5kZXJl
cigpLT5zZXROZWVkc0xheW91dCgpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIHZvaWQgU2xp
ZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAg
ICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewpAQCAtMzU4LDcgKzM3MSw5IEBAIHZvaWQg
U2xpZGVyVGh1bWJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAog
ICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KKyNlbmRp
ZgogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKIHsKICAgICBjb25zdCBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCA9IGhvc3RJbnB1dCgpOwpAQCAtMzc2LDYgKzM5MSw3IEBAIGJvb2wgU2xpZGVyVGh1bWJF
bGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiAKICAgICByZXR1cm4gSFRN
TERpdkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9CisjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OndpbGxEZXRhY2hS
ZW5kZXJlcnMoKQogewpAQCAtMzgzLDcgKzM5OSwxNjAgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1l
bnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLnNldENh
cHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsKICAgICB9CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQorICAgIHVucmVnaXN0ZXJGb3JUb3VjaEV2ZW50
cygpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJ
T1MpCit1bnNpZ25lZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmll
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyOworfQor
Cit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6c2V0RXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKHVu
c2lnbmVkIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fZXhjbHVzaXZlVG91Y2hJZGVudGlm
aWVyID09IE5vSWRlbnRpZmllcik7CisgICAgbV9leGNsdXNpdmVUb3VjaElkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6Y2xlYXJFeGNsdXNpdmVU
b3VjaElkZW50aWZpZXIoKQoreworICAgIG1fZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyID0gTm9J
ZGVudGlmaWVyOworfQorCitzdGF0aWMgVG91Y2gqIGZpbmRUb3VjaFdpdGhJZGVudGlmaWVyKFRv
dWNoTGlzdCogbGlzdCwgdW5zaWduZWQgaWRlbnRpZmllcikKK3sKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSBsaXN0LT5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgVG91Y2gqIHRvdWNoID0gbGlzdC0+aXRlbShpKTsKKyAgICAgICAg
aWYgKHRvdWNoLT5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVy
biB0b3VjaDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgU2xpZGVyVGh1
bWJFbGVtZW50OjpoYW5kbGVUb3VjaFN0YXJ0KFRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7Cisg
ICAgVG91Y2hMaXN0KiB0YXJnZXRUb3VjaGVzID0gdG91Y2hFdmVudC0+dGFyZ2V0VG91Y2hlcygp
OworICAgIGlmICh0YXJnZXRUb3VjaGVzLT5sZW5ndGgoKSAhPSAxKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBJZ25vcmUgdGhlIHRvdWNoIGlmIGl0IGlzIG5vdCByZWFsbHkgaW5zaWRlIHRo
ZSB0aHVtYi4KKyAgICBUb3VjaCogdG91Y2ggPSB0YXJnZXRUb3VjaGVzLT5pdGVtKDApOworICAg
IEludFJlY3QgYm91bmRpbmdCb3ggPSByZW5kZXJlcigpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCgpOworICAgIGlmICghYm91bmRpbmdCb3guY29udGFpbnModG91Y2gtPnBhZ2VYKCksIHRvdWNo
LT5wYWdlWSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0RXhjbHVzaXZlVG91Y2hJZGVu
dGlmaWVyKHRvdWNoLT5pZGVudGlmaWVyKCkpOworCisgICAgc3RhcnREcmFnZ2luZygpOworICAg
IHRvdWNoRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgU2xpZGVyVGh1bWJF
bGVtZW50OjpoYW5kbGVUb3VjaE1vdmUoVG91Y2hFdmVudCogdG91Y2hFdmVudCkKK3sKKyAgICB1
bnNpZ25lZCBpZGVudGlmaWVyID0gZXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKCk7CisgICAgaWYg
KGlkZW50aWZpZXIgPT0gTm9JZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBUb3Vj
aCogdG91Y2ggPSBmaW5kVG91Y2hXaXRoSWRlbnRpZmllcih0b3VjaEV2ZW50LT50YXJnZXRUb3Vj
aGVzKCksIGlkZW50aWZpZXIpOworICAgIGlmICghdG91Y2gpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2luRHJhZ01vZGUpCisgICAgICAgIHNldFBvc2l0aW9uRnJvbVBvaW50KEludFBv
aW50KHRvdWNoLT5wYWdlWCgpLCB0b3VjaC0+cGFnZVkoKSkpOworICAgIHRvdWNoRXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7Cit9CisKK3ZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpoYW5kbGVU
b3VjaEVuZEFuZENhbmNlbChUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIHVuc2lnbmVk
IGlkZW50aWZpZXIgPSBleGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKyAgICBpZiAoaWRlbnRp
ZmllciA9PSBOb0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIG91ciBl
eGNsdXNpdmUgdG91Y2ggc3RpbGwgZXhpc3RzLCBpdCB3YXMgbm90IHRoZSB0b3VjaAorICAgIC8v
IHRoYXQgZW5kZWQsIHNvIHdlIHNob3VsZCBub3Qgc3RvcCBkcmFnZ2luZy4KKyAgICBUb3VjaCog
ZXhjbHVzaXZlVG91Y2ggPSBmaW5kVG91Y2hXaXRoSWRlbnRpZmllcih0b3VjaEV2ZW50LT50YXJn
ZXRUb3VjaGVzKCksIGlkZW50aWZpZXIpOworICAgIGlmIChleGNsdXNpdmVUb3VjaCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2xlYXJFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKworICAg
IHN0b3BEcmFnZ2luZygpOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6ZGlkQXR0YWNo
UmVuZGVyZXJzKCkKK3sKKyAgICBpZiAoc2hvdWxkQWNjZXB0VG91Y2hFdmVudHMoKSkKKyAgICAg
ICAgcmVnaXN0ZXJGb3JUb3VjaEV2ZW50cygpOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVu
dDo6aGFuZGxlVG91Y2hFdmVudChUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0ID0gaG9zdElucHV0KCk7CisgICAgQVNTRVJUKGlucHV0KTsKKyAg
ICBpZiAoaW5wdXQtPmlzUmVhZE9ubHkoKSB8fCBpbnB1dC0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkpIHsKKyAgICAgICAgY2xlYXJFeGNsdXNpdmVUb3VjaElkZW50aWZpZXIoKTsKKyAgICAgICAg
c3RvcERyYWdnaW5nKCk7CisgICAgICAgIHRvdWNoRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CisgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKHRvdWNoRXZlbnQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUgPSB0b3VjaEV2ZW50LT50eXBlKCk7CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkudG91Y2hzdGFydEV2ZW50KSB7CisgICAgICAgIGhhbmRsZVRvdWNoU3RhcnQodG91Y2hF
dmVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkudG91Y2hlbmRFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnRvdWNo
Y2FuY2VsRXZlbnQpIHsKKyAgICAgICAgaGFuZGxlVG91Y2hFbmRBbmRDYW5jZWwodG91Y2hFdmVu
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkudG91Y2htb3ZlRXZlbnQpIHsKKyAgICAgICAgaGFuZGxlVG91Y2hNb3ZlKHRvdWNoRXZl
bnQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIodG91Y2hFdmVudCk7Cit9CisKK2Jvb2wgU2xpZGVyVGh1bWJFbGVtZW50
OjpzaG91bGRBY2NlcHRUb3VjaEV2ZW50cygpCit7CisgICAgcmV0dXJuIGF0dGFjaGVkKCkgJiYg
IWlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOworfQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6
cmVnaXN0ZXJGb3JUb3VjaEV2ZW50cygpCit7CisgICAgaWYgKG1faXNSZWdpc3RlcmVkQXNUb3Vj
aEV2ZW50TGlzdGVuZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChzaG91bGRBY2Nl
cHRUb3VjaEV2ZW50cygpKTsKKworICAgIGRvY3VtZW50KCkuYWRkVG91Y2hFdmVudExpc3RlbmVy
KHRoaXMpOworICAgIG1faXNSZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXIgPSB0cnVlOwor
fQorCit2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6dW5yZWdpc3RlckZvclRvdWNoRXZlbnRzKCkK
K3sKKyAgICBpZiAoIW1faXNSZWdpc3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGNsZWFyRXhjbHVzaXZlVG91Y2hJZGVudGlmaWVyKCk7CisgICAgc3Rv
cERyYWdnaW5nKCk7CisKKyAgICBkb2N1bWVudCgpLnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcih0
aGlzKTsKKyAgICBtX2lzUmVnaXN0ZXJlZEFzVG91Y2hFdmVudExpc3RlbmVyID0gZmFsc2U7Cit9
CisKK3ZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQor
eworICAgIGlmIChzaG91bGRBY2NlcHRUb3VjaEV2ZW50cygpKQorICAgICAgICByZWdpc3RlckZv
clRvdWNoRXZlbnRzKCk7CisgICAgZWxzZQorICAgICAgICB1bnJlZ2lzdGVyRm9yVG91Y2hFdmVu
dHMoKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1Mp
CiAKIEhUTUxJbnB1dEVsZW1lbnQqIFNsaWRlclRodW1iRWxlbWVudDo6aG9zdElucHV0KCkgY29u
c3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmgKaW5kZXggM2RjMjFmNS4uZGNlNmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgKQEAgLTQyLDYgKzQyLDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBGbG9hdFBvaW50OwogCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQorY2xhc3MgVG91Y2hFdmVu
dDsKKyNlbmRpZgorCiBjbGFzcyBTbGlkZXJUaHVtYkVsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRN
TERpdkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNsaWRlclRodW1i
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC01MSw2ICs1NSwxMyBAQCBwdWJsaWM6CiAg
ICAgSFRNTElucHV0RWxlbWVudCogaG9zdElucHV0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQb3Np
dGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgUExBVEZPUk0oSU9TKQorICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJl
cnMoKSBPVkVSUklERTsKKyAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hFdmVudCopOwor
CisgICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFNsaWRlclRodW1iRWxlbWVudChEb2N1bWVudCYpOwogCkBAIC02MCwxNiArNzEsNDAg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRPbmx5UHNldWRvQ2xhc3Mo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVk
b0NsYXNzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBFbGVtZW50KiBmb2N1c0RlbGVn
YXRlKCkgT1ZFUlJJREU7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB3aWxs
UmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgT1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dm9pZCBzdGFydERyYWdnaW5nKCk7CiAgICAgdm9pZCBzdG9wRHJhZ2dpbmcoKTsKIAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykKKyAgICB1bnNpZ25lZCBleGNsdXNp
dmVUb3VjaElkZW50aWZpZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4Y2x1c2l2ZVRvdWNoSWRl
bnRpZmllcih1bnNpZ25lZCk7CisgICAgdm9pZCBjbGVhckV4Y2x1c2l2ZVRvdWNoSWRlbnRpZmll
cigpOworCisgICAgdm9pZCBoYW5kbGVUb3VjaFN0YXJ0KFRvdWNoRXZlbnQqKTsKKyAgICB2b2lk
IGhhbmRsZVRvdWNoTW92ZShUb3VjaEV2ZW50Kik7CisgICAgdm9pZCBoYW5kbGVUb3VjaEVuZEFu
ZENhbmNlbChUb3VjaEV2ZW50Kik7CisKKyAgICBib29sIHNob3VsZEFjY2VwdFRvdWNoRXZlbnRz
KCk7CisgICAgdm9pZCByZWdpc3RlckZvclRvdWNoRXZlbnRzKCk7CisgICAgdm9pZCB1bnJlZ2lz
dGVyRm9yVG91Y2hFdmVudHMoKTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2luRHJhZ01vZGU7CisK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUU6
IEN1cnJlbnRseSBpdCBpcyBzYWZlIHRvIHVzZSAwLCBidXQgdGhpcyBtYXkgbmVlZCB0byBjaGFu
Z2UKKyAgICAvLyBpZiB0b3VjaCBpZGVudGlmZXJzIGNoYW5nZSBpbiB0aGUgZnV0dXJlIGFuZCBj
YW4gYmUgMC4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9JZGVudGlmaWVyID0gMDsKKyAg
ICB1bnNpZ25lZCBtX2V4Y2x1c2l2ZVRvdWNoSWRlbnRpZmllcjsKKyAgICBib29sIG1faXNSZWdp
c3RlcmVkQXNUb3VjaEV2ZW50TGlzdGVuZXI7CisjZW5kaWYKIH07CiAKIGlubGluZSBQYXNzUmVm
UHRyPFNsaWRlclRodW1iRWxlbWVudD4gU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoRG9jdW1l
bnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggOGYzZmY3Ny4uYTY3Zjg5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCkBAIC0xNjUsMTEgKzE2NSwxMyBAQCB2b2lkIFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIGlmIChp
bnB1dCAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiBl
dmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewogICAgICAgICBpbnB1dC0+Zm9jdXMoKTsKICAgICAg
ICAgaW5wdXQtPnNlbGVjdCgpOworI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgIFJlbmRlclNl
YXJjaEZpZWxkKiByZW5kZXJlciA9IHRvUmVuZGVyU2VhcmNoRmllbGQoaW5wdXQtPnJlbmRlcmVy
KCkpOwogICAgICAgICBpZiAocmVuZGVyZXItPnBvcHVwSXNWaXNpYmxlKCkpCiAgICAgICAgICAg
ICByZW5kZXJlci0+aGlkZVBvcHVwKCk7CiAgICAgICAgIGVsc2UgaWYgKGlucHV0LT5tYXhSZXN1
bHRzKCkgPiAwKQogICAgICAgICAgICAgcmVuZGVyZXItPnNob3dQb3B1cCgpOworI2VuZGlmCiAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIApAQCAtMTc3LDEwICsx
NzksMTIgQEAgdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgU2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KQogewogICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApAQCAtMjUwLDYgKzI1NCw3IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5jZWxC
dXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAg
SFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCisjaWYgIVBM
QVRGT1JNKElPUykKIGJvb2wgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpCiB7CiAgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSB0b0hUTUxJbnB1dEVsZW1lbnQoc2hhZG93SG9zdCgpKTsKQEAgLTI1OCw2ICsyNjMs
NyBAQCBib29sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKQogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOwogfQorI2VuZGlmCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIApAQCAtMzQ4LDYgKzM1NCw3IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBI
VE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKKyNpZiAhUExB
VEZPUk0oSU9TKQogYm9vbCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKQogewogICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gdG9IVE1MSW5wdXRFbGVtZW50KHNoYWRvd0hvc3QoKSk7CkBAIC0zNTYsNiArMzYzLDcg
QEAgYm9vbCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKQogCiAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50Ojp3aWxsUmVzcG9uZFRv
TW91c2VDbGlja0V2ZW50cygpOwogfQorI2VuZGlmCiAKIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQ6OnNldFN0YXRlKFNwZWVjaElucHV0U3RhdGUgc3RhdGUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
CmluZGV4IGEzMjViODMuLjIwYWFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC04MSw3ICs4MSw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVt
ZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KikgT1ZFUlJJREU7CisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFs
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERTsKKyNlbmRpZgog
CiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9jdW1lbnQm
KTsKQEAgLTk1LDcgKzk3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CisjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSBPVkVSUklERTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwpAQCAtMTIyLDcgKzEyNiw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
OworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgU3BlZWNoSW5wdXRTdGF0ZSBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICB2b2lkIHN0YXJ0U3BlZWNoSW5wdXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggNDg5NDkxYy4uYzVmYWQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKQEAgLTEzNSwxMSArMTM1LDE3IEBAIHN0YXRpYyBjb25zdCBib29s
IGRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkID0gZmFsc2U7CiBzdGF0aWMgY29uc3Qg
Ym9vbCBkZWZhdWx0U21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gdHJ1ZTsKIHN0YXRpYyBjb25z
dCBib29sIGRlZmF1bHRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7CiAK
Ky8vIFRoaXMgYW1vdW50IG9mIHRpbWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdpbGwg
ZXZlbiBjb25zaWRlciBzY2hlZHVsaW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KKy8vIEZJ
WE1FOiBGb3IgZmFzdGVyIG1hY2hpbmVzIHRoaXMgdmFsdWUgY2FuIHJlYWxseSBiZSBsb3dlcmVk
IHRvIDIwMC4gMjUwIGlzIGFkZXF1YXRlLCBidXQgYSBsaXR0bGUgaGlnaAorLy8gZm9yIGR1YWwg
RzVzLiA6KQorc3RhdGljIGNvbnN0IGludCBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MDsK
KwogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UoMCkKICAgICAs
IG1fbWVkaWFUeXBlT3ZlcnJpZGUoInNjcmVlbiIpCiAgICAgLCBtX2ZvbnRHZW5lcmljRmFtaWxp
ZXMoc3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAgICwgbV9zdG9y
YWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OkFsbG93QWxsU3RvcmFnZSkKKyAgICAs
IG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAjaWYgRU5BQkxFKFRF
WFRfQVVUT1NJWklORykKICAgICAsIG1fdGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3IoMSkK
ICNpZiBIQUNLX0ZPUkNFX1RFWFRfQVVUT1NJWklOR19PTl9ERVNLVE9QCkBAIC00NzMsNiArNDc5
LDEzIEBAIGRvdWJsZSBTZXR0aW5nczo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcGFnZS0+dGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpOwogfQogCit2b2lk
IFNldHRpbmdzOjpzZXRMYXlvdXRJbnRlcnZhbChpbnQgbGF5b3V0SW50ZXJ2YWwpCit7CisgICAg
Ly8gRklYTUU6IEl0IHNlZW1zIHdlaXJkIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgZGlzcmVnYXJk
IHRoZSBzcGVjaWZpZWQgbGF5b3V0IGludGVydmFsLgorICAgIC8vIFdlIHNob3VsZCBlaXRoZXIg
ZXhwb3NlIGxheW91dFNjaGVkdWxlVGhyZXNob2xkIG9yIGJldHRlciBjb21tdW5pY2F0ZSB0aGlz
IGludmFyaWFudC4KKyAgICBtX2xheW91dEludGVydmFsID0gc3RkOjptYXgobGF5b3V0SW50ZXJ2
YWwsIGxheW91dFNjaGVkdWxlVGhyZXNob2xkKTsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0VXNl
c1BhZ2VDYWNoZShib29sIHVzZXNQYWdlQ2FjaGUpCiB7CiAgICAgaWYgKG1fdXNlc1BhZ2VDYWNo
ZSA9PSB1c2VzUGFnZUNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDE5ZGJmODIuLjA1
MDExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTE3MSw2ICsxNzEsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3VibGUpOwogICAgIGRv
dWJsZSBkb21UaW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3Q7CiAKKyAgICAvLyBGSVhNRTog
Q2hhbmdlIHRoZXNlIG1ldGhvZHMgdG8gdGFrZS9yZXR1cm4gYW4gdW5zaWduZWQgaW50ZWdlciBh
ZnRlciB3ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQuCisgICAgdm9pZCBzZXRMYXlvdXRJbnRlcnZh
bChpbnQpOworICAgIGludCBsYXlvdXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
SW50ZXJ2YWw7IH0KKwogI2lmIEVOQUJMRShISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElO
RykKICAgICBib29sIGhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZDsgfQogICAgIHZv
aWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoYm9vbCk7CkBAIC0yNzYs
NiArMjgwLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwog
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2ZvbnRHZW5l
cmljRmFtaWxpZXM7CiAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBt
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKKyAgICBpbnQgbV9sYXlvdXRJbnRlcnZhbDsKICNpZiBF
TkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IG1fdGV4dEF1dG9zaXppbmdGb250U2Nh
bGVGYWN0b3I7CiAgICAgSW50U2l6ZSBtX3RleHRBdXRvc2l6aW5nV2luZG93U2l6ZU92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggZmQ2NGYyZi4uZjQ4YjRjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCkBAIC0yMTQsMyArMjE0LDYgQEAgc2ltcGxlTGluZUxheW91dERlYnVn
Qm9yZGVyc0VuYWJsZWQgaW5pdGlhbD1mYWxzZSwgc2V0TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJh
bWUKIAogYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgaW5pdGlhbD1mYWxzZQogbWVk
aWFTb3VyY2VFbmFibGVkIGluaXRpYWw9ZmFsc2UKKworIyBGSVhNRTogUmVuYW1lIHRvIGFsbG93
TXVsdGlFbGVtZW50SW1wbGljaXRGb3JtU3VibWlzc2lvbiBvbmNlIHdlIHVwc3RyZWFtIHRoZSBp
T1MgY2hhbmdlcyB0byBXZWJWaWV3Lm1tLgorYWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdFN1Ym1p
c3Npb24gaW5pdGlhbD1mYWxzZQotLSAKMS44LjMuNCAoQXBwbGUgR2l0LTQ3KQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>