<?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>131247</bug_id>
          
          <creation_ts>2014-04-04 15:46:36 -0700</creation_ts>
          <short_desc>Show DataDetector UI on scanned phone numbers</short_desc>
          <delta_ts>2014-04-04 20:05:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997717</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-04 15:46:36 -0700</bug_when>
    <thetext>Show DataDetector UI on scanned phone numbers

In radar as &lt;rdar://problem/16379588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997721</commentid>
    <comment_count>1</comment_count>
      <attachid>228627</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-04 15:52:53 -0700</bug_when>
    <thetext>Created attachment 228627
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997724</commentid>
    <comment_count>2</comment_count>
      <attachid>228628</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-04 15:59:29 -0700</bug_when>
    <thetext>Created attachment 228628
Patch v2 - Might apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997727</commentid>
    <comment_count>3</comment_count>
      <attachid>228627</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-04 16:05:44 -0700</bug_when>
    <thetext>Comment on attachment 228627
Patch v1

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

&gt; Source/WebCore/editing/Editor.cpp:3393
&gt; +        range.ownerDocument().markers().addMarkerToNode(range.startContainer(), startOffset, length, DocumentMarker::TelephoneNumber);

When are these markers removed? (I know you already had them, just curious).

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.cpp:76
&gt; +    m_telephoneNumberOverlay = 0;

nullptr

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.cpp:88
&gt; +    for (auto&amp; range : m_currentSelectionRanges)
&gt; +        result.append(enclosingIntRect(range-&gt;boundingRect()));

I think this will fall down if the phone number is wrapped at the edge of the view?

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:27
&gt; +#if ENABLE(TELEPHONE_NUMBER_DETECTION)

add space above

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:30
&gt; +#include &quot;WebPage.h&quot;

is this necessary?

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:67
&gt; +    virtual void pageOverlayDestroyed(PageOverlay*);
&gt; +    virtual void willMoveToWebPage(PageOverlay*, WebPage*);
&gt; +    virtual void didMoveToWebPage(PageOverlay*, WebPage*);
&gt; +    virtual void drawRect(PageOverlay*, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect);
&gt; +    virtual bool mouseEvent(PageOverlay*, const WebMouseEvent&amp;);

are these overrides?

&gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:27
&gt; +#import &quot;TelephoneNumberController.h&quot;

this class doesn&apos;t control telephone numbers.

&gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:36
&gt; +#ifdef __has_include

I think we decided you don&apos;t need the outer ifdef (checking for __has_include).

&gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:94
&gt; +        highlightBoundingRect.origin.x = 0;
&gt; +        highlightBoundingRect.origin.y = 0;

It might be a good idea to give the modified (highlight-relative) rect a new name.

&gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:172
&gt; +    m_mouseDownPosition = IntPoint::zero();

Just IntPoint(), I think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997740</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-04 16:20:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 228627 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228627&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3393
&gt; &gt; +        range.ownerDocument().markers().addMarkerToNode(range.startContainer(), startOffset, length, DocumentMarker::TelephoneNumber);
&gt; 
&gt; When are these markers removed? (I know you already had them, just curious).

Any time the selection changes.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.cpp:76
&gt; &gt; +    m_telephoneNumberOverlay = 0;
&gt; 
&gt; nullptr

Yup.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.cpp:88
&gt; &gt; +    for (auto&amp; range : m_currentSelectionRanges)
&gt; &gt; +        result.append(enclosingIntRect(range-&gt;boundingRect()));
&gt; 
&gt; I think this will fall down if the phone number is wrapped at the edge of the view?

It probably will.  I&apos;m also not sure what the expectation would be in that case. I think we should file a followup bug.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:27
&gt; &gt; +#if ENABLE(TELEPHONE_NUMBER_DETECTION)
&gt; 
&gt; add space above

K.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:30
&gt; &gt; +#include &quot;WebPage.h&quot;
&gt; 
&gt; is this necessary?

At one point, not anymore.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberController.h:67
&gt; &gt; +    virtual void pageOverlayDestroyed(PageOverlay*);
&gt; &gt; +    virtual void willMoveToWebPage(PageOverlay*, WebPage*);
&gt; &gt; +    virtual void didMoveToWebPage(PageOverlay*, WebPage*);
&gt; &gt; +    virtual void drawRect(PageOverlay*, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect);
&gt; &gt; +    virtual bool mouseEvent(PageOverlay*, const WebMouseEvent&amp;);
&gt; 
&gt; are these overrides?

Yes could call.
 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:27
&gt; &gt; +#import &quot;TelephoneNumberController.h&quot;
&gt; 
&gt; this class doesn&apos;t control telephone numbers.

On IRC we agreed to TelephoneNumberOverlayController.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:36
&gt; &gt; +#ifdef __has_include
&gt; 
&gt; I think we decided you don&apos;t need the outer ifdef (checking for __has_include).

okay.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:94
&gt; &gt; +        highlightBoundingRect.origin.x = 0;
&gt; &gt; +        highlightBoundingRect.origin.y = 0;
&gt; 
&gt; It might be a good idea to give the modified (highlight-relative) rect a new name.

Okay.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/mac/TelephoneNumberControllerMac.mm:172
&gt; &gt; +    m_mouseDownPosition = IntPoint::zero();
&gt; 
&gt; Just IntPoint(), I think?

Either.  Wonder why zero() even exists...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997759</commentid>
    <comment_count>5</comment_count>
      <attachid>228636</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-04 17:17:29 -0700</bug_when>
    <thetext>Created attachment 228636
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997776</commentid>
    <comment_count>6</comment_count>
      <attachid>228636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 18:10:38 -0700</bug_when>
    <thetext>Comment on attachment 228636
Patch v3

Clearing flags on attachment: 228636

Committed r166818: &lt;http://trac.webkit.org/changeset/166818&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997777</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 18:10:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997795</commentid>
    <comment_count>8</comment_count>
      <attachid>228636</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-04 19:44:22 -0700</bug_when>
    <thetext>Comment on attachment 228636
Patch v3

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

&gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberOverlayController.h:83
&gt; +#if PLATFORM(MAC)
&gt; +    Vector&lt;RetainPtr&lt;DDHighlightRef&gt;&gt; m_highlights;
&gt; +    RetainPtr&lt;DDHighlightRef&gt; m_currentMouseDownHighlight;
&gt; +#endif

These are accessed outside of PLATFORM(MAC) specifically PLATFORM(IOS). Are they intended to be PLATFORM(COCOA) or are a lot of these functions that deal with them (drawRect, mouseEvent, etc) PLATFORM(MAC) only right now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997799</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-04 19:53:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 228636 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228636&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/TelephoneNumberOverlayController.h:83
&gt; &gt; +#if PLATFORM(MAC)
&gt; &gt; +    Vector&lt;RetainPtr&lt;DDHighlightRef&gt;&gt; m_highlights;
&gt; &gt; +    RetainPtr&lt;DDHighlightRef&gt; m_currentMouseDownHighlight;
&gt; &gt; +#endif
&gt; 
&gt; These are accessed outside of PLATFORM(MAC) specifically PLATFORM(IOS). Are they intended to be PLATFORM(COCOA) or are a lot of these functions that deal with them (drawRect, mouseEvent, etc) PLATFORM(MAC) only right now?

Turning the PLATFORM(MAC)s in this file into PLATFORM(COCOA) will get iOS to compile. I will land with that to get the bots continuing to build, but I suspect you will want to include an improved follow-up fix, and either really make these PLATFORM(MAC) or have them all be PLATFORM(COCOA). For example in TelephoneNumberOverlayController::selectedTelephoneNumberRangesChanged I will leave PLATFORM(MAC) as is for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997804</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-04-04 20:05:09 -0700</bug_when>
    <thetext>iOS Build Fix: &lt;http://trac.webkit.org/changeset/166821&gt;

You may want to provide a follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228627</attachid>
            <date>2014-04-04 15:52:53 -0700</date>
            <delta_ts>2014-04-04 17:17:29 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38105</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDZkYjNmLi45ZmE4YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDQtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgRGF0YURldGVjdG9yIFVJIG9uIHNjYW5uZWQgcGhvbmUgbnVtYmVycy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE2Mzc5NTg4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdhdGhlciB0aGUgcmFuZ2VzIG9mIHRoZSBzY2FubmVkIHRlbGVwaG9u
ZSBudW1iZXJzIGFuZCBzZW5kIHRoZW0gdXAgdG8gV0syOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhv
bmVOdW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBo
b25lTnVtYmVycyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
Y2xpZW50IG1ldGhvZCB0byByZWNlaXZlIHNjYW5uZWQgdGVsZXBob25lIG51bWJlciByYW5nZXM6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudDo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKToKKworICAgICAg
ICBSZW1vdmUgdW5uZWVkZWQgcGxhY2Vob2xkZXIgVUk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IpOiBEZWxldGVkLgorCiAyMDE0LTA0LTAzICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtFTUVdIENyYXNoIHdoZW4g
cGFzc2luZyBhIE5VTEwgaW5pdERhdGEgdG8gTWVkaWFLZXlzLmNyZWF0ZVNlc3Npb24oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM3MTMwNGMuLmJiOGUxY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzMTgsNyArMzMxOCwxMCBAQCB2b2lkIEVkaXRvcjo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgRnJhbWVTZWxl
Y3Rpb246OgogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigmbV9m
cmFtZSk7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFU
Rk9STShJT1MpCi0gICAgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKTsKKyAgICBW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4gbWFya2VkUmFuZ2VzOworICAgIHNjYW5TZWxlY3Rpb25Gb3JU
ZWxlcGhvbmVOdW1iZXJzKG1hcmtlZFJhbmdlcyk7CisgICAgaWYgKGNsaWVudCgpKQorICAgICAg
ICBjbGllbnQoKS0+c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKG1hcmtlZFJh
bmdlcyk7CiAjZW5kaWYKIAogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVlKTsK
QEAgLTMzMzQsNyArMzMzNyw3IEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBGcmFtZVNlbGVjdGlvbjo6CiB9CiAKICNpZiBF
TkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCi12b2lk
IEVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKQordm9pZCBFZGl0b3I6
OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYg
bWFya2VkUmFuZ2VzKQogewogICAgIGlmICghVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6OmlzU3Vw
cG9ydGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNTAsMTYgKzMzNTMsMTYgQEAgdm9pZCBF
ZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKCkKIAogICAgIC8vIEZJWE1F
OiBUaGlzIHdvbid0IHdvcmsgaWYgYSBwaG9uZSBudW1iZXIgc3BhbnMgbXVsdGlwbGUgY2h1bmtz
IG9mIHRleHQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIFRleHRJdGVyYXRvcgogICAgIC8v
IChCeSBhIHN0eWxlIGNoYW5nZSwgaW1hZ2UsIGxpbmUgYnJlYWssIGV0Yy4pCi0gICAgLy8gT24g
aWRlYSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSBhIG1vZGVsIGxpa2UgdGV4dCBzZWFyY2ggdGhh
dCB1c2VzIGEgcm90YXRpbmcgd2luZG93LgorICAgIC8vIE9uZSBpZGVhIHRvIGhhbmRsZSB0aGlz
IHdvdWxkIGJlIGEgbW9kZWwgbGlrZSB0ZXh0IHNlYXJjaCB0aGF0IHVzZXMgYSByb3RhdGluZyB3
aW5kb3cuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dENodW5rKHNlbGVjdGVkUmFuZ2UuZ2V0
KCkpOyAhdGV4dENodW5rLmF0RW5kKCk7IHRleHRDaHVuay5hZHZhbmNlKCkpIHsKICAgICAgICAg
Ly8gVGV4dEl0ZXJhdG9yIGlzIHN1cHBvc2VkIHRvIG5ldmVyIHJldHVybnMgYSBSYW5nZSB0aGF0
IHNwYW5zIG11bHRpcGxlIE5vZGVzLgogICAgICAgICBBU1NFUlQodGV4dENodW5rLnJhbmdlKCkt
PnN0YXJ0Q29udGFpbmVyKCkgPT0gdGV4dENodW5rLnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsK
IAotICAgICAgICBzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKCp0ZXh0Q2h1bmsucmFuZ2Uo
KSwgdGV4dENodW5rLnRleHQoKSk7CisgICAgICAgIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJl
cnMoKnRleHRDaHVuay5yYW5nZSgpLCB0ZXh0Q2h1bmsudGV4dCgpLCBtYXJrZWRSYW5nZXMpOwog
ICAgIH0KIH0KIAotdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFu
Z2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQordm9pZCBFZGl0b3I6OnNj
YW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmdWaWV3LCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcykKIHsKICAg
ICAvLyByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gYW5kIHJlbGF0aXZlRW5kUG9zaXRpb24gYXJlIHRo
ZSBlbmRwb2ludHMgb2YgdGhlIHBob25lIG51bWJlciByYW5nZSwKICAgICAvLyByZWxhdGl2ZSB0
byB0aGUgc2Nhbm5lclBvc2l0aW9uCkBAIC0zMzgzLDcgKzMzODYsMTEgQEAgdm9pZCBFZGl0b3I6
OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmcKICAgICAgICAgaWYgKCFyYW5nZS5zdGFydENvbnRhaW5lcigpLT5pc1RleHRO
b2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICByYW5nZS5vd25lckRvY3Vt
ZW50KCkubWFya2VycygpLmFkZE1hcmtlclRvTm9kZShyYW5nZS5zdGFydENvbnRhaW5lcigpLCBy
YW5nZS5zdGFydE9mZnNldCgpICsgc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBvc2l0
aW9uLCByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMSwgRG9j
dW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKSArIHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZlU3Rh
cnRQb3NpdGlvbjsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gcmVsYXRpdmVFbmRQb3NpdGlv
biAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisKKyAgICAgICAgbWFya2VkUmFuZ2VzLmFw
cGVuZChSYW5nZTo6Y3JlYXRlKHJhbmdlLm93bmVyRG9jdW1lbnQoKSwgcmFuZ2Uuc3RhcnRDb250
YWluZXIoKSwgc3RhcnRPZmZzZXQsIHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zmc2V0
ICsgbGVuZ3RoKSk7CisgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRk
TWFya2VyVG9Ob2RlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zmc2V0LCBsZW5ndGgs
IERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQb3Np
dGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCA5MjJmY2VjLi5iNDI1MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTQ3NCw4ICs0NzQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiAhUExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJl
cnMoKTsKLSAgICB2b2lkIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmLCBjb25z
dCBTdHJpbmdWaWV3Jik7CisgICAgdm9pZCBzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVtYmVy
cyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcyk7CisgICAgdm9pZCBzY2FuUmFu
Z2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiwgY29uc3QgU3RyaW5nVmlldyYsIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiYgbWFya2VkUmFuZ2VzKTsKICAgICB2b2lkIGNsZWFyRGF0YURldGVjdGVk
VGVsZXBob25lTnVtYmVycygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IGM2MWU3OTguLjFkYzg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApA
QCAtMTc4LDYgKzE3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRl
KGJvb2wgZW5hYmxlZCkgPSAwOwogCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNU
SU9OKQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5n
ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgeyB9CisjZW5kaWYKKwogICAgIC8vIFN1
cHBvcnQgZm9yIGdsb2JhbCBzZWxlY3Rpb25zLCB1c2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRoZSBY
IFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdAogICAgIC8vIHNlbGVjdGlvbiBhcyBhIHR5cGUgb2Yg
Y2xpcGJvYXJkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpIHsg
cmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggNTY2ZGNlYi4uZWQ3MmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcApAQCAtMTI0OCwzMyArMTI0OCw2IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxvYXRQ
b2ludCYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04p
Ci12b2lkIElubGluZVRleHRCb3g6OnBhaW50VGVsZXBob25lTnVtYmVyTWFya2VyKEdyYXBoaWNz
Q29udGV4dCogY3R4LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIERvY3VtZW50TWFya2Vy
KiBtYXJrZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCkKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyBwbGFjZWhvbGRlciBVSSBmb3IgZGV2ZWxvcG1lbnQgb2Yg
dGhlIGZlYXR1cmUuCi0KLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IHN0ZDo6bWF4PGludD4obWFy
a2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7Ci0gICAgaW50IGVuZFBvc2l0aW9uID0g
c3RkOjptaW48aW50PihtYXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgbV9sZW4pOwotCi0g
ICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQotICAgICAgICBlbmRQb3NpdGlv
biA9IHN0ZDo6bWluPGludD4oZW5kUG9zaXRpb24sIG1fdHJ1bmNhdGlvbik7Ci0KLSAgICBpbnQg
ZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSA/
IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2Vs
ZWN0aW9uVG9wKCk7Ci0gICAgaW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwotICAg
IEZsb2F0UG9pbnQgc3RhcnRQb2ludChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0gZGVs
dGFZKTsKLSAgICBUZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQpOwot
Ci0gICAgSW50UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVjdGlv
blJlY3RGb3JUZXh0KHJ1biwgc3RhcnRQb2ludCwgc2VsSGVpZ2h0LCBzdGFydFBvc2l0aW9uLCBl
bmRQb3NpdGlvbikpOwotCi0gICAgY29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihtYXJr
ZXIsIHN0eWxlLCBmb250KTsKLQotICAgIFBhdGggb3V0bGluZTsKLSAgICBvdXRsaW5lLmFkZFJv
dW5kZWRSZWN0KG1hcmtlclJlY3QsIEZsb2F0U2l6ZSg0LCA0KSk7Ci0gICAgY3R4LT5zZXRGaWxs
Q29sb3IoQ29sb3IoMTUwLCAxNTAsIDE1MCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgY3R4LT5maWxsUGF0aChvdXRsaW5lKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pCi0KIHZvaWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RGb3JS
ZXBsYWNlbWVudE1hcmtlcihEb2N1bWVudE1hcmtlciogbWFya2VyLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQpCiB7CiAgICAgLy8gUmVwbGFjZW1lbnQgbWFya2Vy
cyBhcmUgbm90IGFjdHVhbGx5IGRyYXduLCBidXQgdGhlaXIgcmVjdHMgbmVlZCB0byBiZSBjb21w
dXRlZCBmb3IgaGl0IHRlc3RpbmcuCkBAIC0xMzYzLDcgKzEzMzYsNiBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZs
b2F0UG9pbnQmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKQogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6VGVsZXBo
b25lTnVtYmVyOgotICAgICAgICAgICAgICAgIHBhaW50VGVsZXBob25lTnVtYmVyTWFya2VyKHB0
LCBib3hPcmlnaW4sIG1hcmtlciwgc3R5bGUsIGZvbnQpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmgKaW5kZXggOTM1OTI4Ny4uNDA1YTliZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xNzQsMTAgKzE3NCw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UG9pbnQmIGJveE9yaWdpbiwgRG9jdW1lbnRNYXJrZXIqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEZvbnQmLCBib29sIGdyYW1tYXIpOwogICAgIHZvaWQgcGFpbnRUZXh0TWF0Y2hNYXJrZXIo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1bWVudE1h
cmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwogCi0jaWYgRU5BQkxFKFRF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQotICAgIHZvaWQgcGFpbnRUZWxlcGhvbmVOdW1iZXJN
YXJrZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1
bWVudE1hcmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwotI2VuZGlmCi0K
ICAgICB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIoRG9jdW1lbnRNYXJrZXIq
LCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmKTsKIAogICAgIFRleHRSdW46OkV4cGFu
c2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5YzVm
MzEyYi4uMDkwYjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTA0LTA0ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTaG93IERhdGFEZXRl
Y3RvciBVSSBvbiBzY2FubmVkIHBob25lIG51bWJlcnMuCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNjM3OTU4OD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzEyNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBuZXcgUGFnZU92ZXJsYXkgZm9yIHRlbGVwaG9uZSBudW1iZXIgVUksIGhhbmRsZSBkcmF3
aW5nIHRoZSBVSSwgYW5kCisgICAgICAgIGhhbmRsZSBtb3VzZSBjbGlja3Mgb24gdGhlIGJ1dHRv
biBpbiB0aGF0IFVJLgorCisgICAgICAgIEV2ZW4gdGhvdWdoIGNsaWNrcyBhcmUgZGV0ZWN0ZWQs
IHRoZXkgYXJlbuKAmXQgYWN0ZWQgdXBvbiB5ZXQuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKTogUGFzcyByYW5nZXMgdG8K
KyAgICAgICAgICB0aGUgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorCisgICAgICAgIFRoaXMg
Y29udHJvbGxlciBoYW5kbGVzIGluc3RhbGxpbmcvcmVtb3ZpbmcgdGhlIFBhZ2VPdmVybGF5LCBk
cmF3aW5nIHRoZSBVSSBlbGVtZW50cywKKyAgICAgICAgYW5kIGhhbmRsaW5nIG1vdXNlIGV2ZW50
cyB3aGlsZSBhbnkgb2YgdGhlIFVJIGVsZW1lbnRzIGFyZSBzaG93bi4KKyAgICAgICAgVGhlcmXi
gJlzIGFsc28gYSBjbHVtc3kgYXR0ZW1wdCB0byBrZWVwIHBsYXRmb3JtLXNwZWNpZmljIHBhcnRz
IHNlcGFyYXRlZCBvdXQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVt
YmVyQ29udHJvbGxlcjo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNyZWF0ZU92ZXJsYXlJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmRlc3Ryb3lPdmVybGF5
KToKKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6cGFnZU92ZXJs
YXlEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
Ojp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlckNv
bnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVO
dW1iZXJDb250cm9sbGVyOjpyZWN0c0ZvckRyYXdpbmcpOgorICAgICAgICAoV2ViS2l0OjpUZWxl
cGhvbmVOdW1iZXJDb250cm9sbGVyOjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5n
ZWQpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51bWJlckNvbnRy
b2xsZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xs
ZXI6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RlbGVwaG9u
ZU51bWJlckNvbnRyb2xsZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhv
bmVOdW1iZXJDb250cm9sbGVyOjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9u
ZU51bWJlckNvbnRyb2xsZXI6OmhhbmRsZVRlbGVwaG9uZUNsaWNrKToKKyAgICAgICAgKFdlYktp
dDo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpjbGVhckhpZ2hs
aWdodHMpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorCiAyMDE0LTA0LTAzICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFVJQ2xpZW50
LntoLCBtbX0gdG8gVUlEZWxlZ2F0ZS57aCwgbW19LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5YTVhZDQuLmFmMmFmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTcxMSw2ICs3MTEsNyBAQAogCQkzRjg4OUQxNzE4ODc4NTkzMDBGRUFEQUYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDNGODg5RDBEMTg4NzY5OUMwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tICovOyB9OwogCQk0RjYwMTQzMjE1NUM1QUEyMDAxRkJERTAgLyogQmxvY2tp
bmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEY2MDE0MzAxNTVDNUEzMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCAq
LzsgfTsKIAkJNTEwMjFFOUMxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
MjFFOUIxMkIxNjc4ODAwNUMwMzNDIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50TWFjLm1tICovOyB9
OworCQk1MTAyN0QzNzE4RUREQzdEMDA4OTRDMTIgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxl
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MDI3RDM1MThFRERDNkEwMDg5NEMxMiAvKiBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyTWFjLm1t
ICovOyB9OwogCQk1MTAzMkYxODE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMDMyRjE2MTgwRjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTAzMkYxOTE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9E
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTAzMkYxNzE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uLmggKi87IH07CiAJCTUxMDMyRjFEMTgwRjc5MTcwMDk2MUJCNyAv
KiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMzJGMUIxODBGNzkx
NzAwOTYxQkI3IC8qIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CkBAIC05MDQsNiArOTA1LDcgQEAKIAkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlB
OTM4IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVz
c2FnZXMuaCAqLzsgfTsKIAkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFCIC8qIFdlYlJlc291cmNl
TG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTUxRjQ4NzI5MThFQTJENzkwMDc5ODU1
NCAvKiBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjQ4NzI2MThFQTI4MDMwMDc5ODU1NCAvKiBUZWxl
cGhvbmVOdW1iZXJDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTFGN0RDNDExODBDQzkzNjAwMjEy
Q0EzIC8qIFhQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWlu
Lm1tICovOyB9OwogCQk1MUY3REM0MzE4MENDOTM2MDAyMTJDQTMgLyogRm91bmRhdGlvbi5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzNERTQ2ODE1QTkxNzYzMDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJ
CTUxRjdEQzQ0MTgwQ0M5MzYwMDIxMkNBMyAvKiBXZWJLaXQyLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhEQzJFRjVCMDQ4NkE2OTQw
MDk4QjIxNiAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsKQEAgLTI1MjYsNiArMjUyOCw3IEBA
CiAJCTRGNjAxNDMwMTU1QzVBMzIwMDFGQkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NraW5nUmVzcG9uc2VNYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMDMxRjYxMzc5Q0FDQjAwQzhERkU0IC8qIFNl
Y0l0ZW1TaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gU2VjSXRlbVNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51
Q2xpZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAyN0QzNTE4RURE
QzZBMDA4OTRDMTIgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDMyRjE2MTgwRjczQkIwMDk2
MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMzJGMTcxODBGNzNCQjAwOTYxQkI3
IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMzJGMUExODBGNzRGMTAwOTYxQkI3IC8qIERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNzQ0LDYgKzI3NDcsOCBAQAogCQk1MUUzQjY3RTE2RjI2NkIzMDA5OTY4REMgLyogTmV0d29y
a1Jlc291cmNlTG9hZGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTmV0d29ya1Jlc291cmNlTG9hZGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERTE2
NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxRjQ4NzI2MThFQTI4MDMwMDc5ODU1NCAvKiBUZWxlcGhvbmVOdW1iZXJDb250cm9s
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY0ODcy
NzE4RUEyODAzMDA3OTg1NTQgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjdEQzRBMTgwQ0M5MzYwMDIxMkNBMyAvKiBj
b20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlcy54cGMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VzLnhwYzsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTFGQTFFMjgxODBDQ0FERTAwQzQ0QkU5IC8qIERhdGFi
YXNlUHJvY2Vzcy5hcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHdyYXBwZXIuYXBwbGljYXRpb247IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IERh
dGFiYXNlUHJvY2Vzcy5hcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMxNyw2ICs1MzIyLDggQEAK
IAkJCQk3Q0Y0N0ZGOTE3Mjc1QzU3MDA4QUNCOTEgLyogUGFnZUJhbm5lci5oICovLAogCQkJCTFB
OTBDMjM2MTI2NTA3MTcwMDNFNDRENCAvKiBQYWdlT3ZlcmxheS5jcHAgKi8sCiAJCQkJMUE5MEMy
MzUxMjY1MDcxNzAwM0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmggKi8sCisJCQkJNTFGNDg3MjYxOEVB
MjgwMzAwNzk4NTU0IC8qIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIuY3BwICovLAorCQkJCTUx
RjQ4NzI3MThFQTI4MDMwMDc5ODU1NCAvKiBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmggKi8s
CiAJCQkJMkQ4MTlCOTkxODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3IuY3BwICovLAogCQkJCTJEODE5QjlBMTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmggKi8sCiAJCQkJMkQ4MTlCOUIxODYyNzVCMzAwMUYwM0QxIC8q
IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gKi8sCkBAIC02MDY2LDYg
KzYwNzMsNyBAQAogCQkJCTFBQjE2QUU3MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVDb250ZXh0Lm1tICovLAogCQkJCTFBQjE2QURDMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQjE2QURCMTY0ODU5ODQwMDI5MEQ2MiAv
KiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAqLywKKwkJCQk1MTAyN0QzNTE4RUREQzZB
MDA4OTRDMTIgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5tbSAqLywKIAkJCQkxQUFG
MjYzNzE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCAq
LywKIAkJCQkxQUFGMjYzNjE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0gKi8sCiAJCQkJMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1hYy5tbSAqLywKQEAgLTgzMTgsNyArODMyNiw5IEBACiAJCQkJMUFFMTE3RjYxMURCQjMw
OTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzEx
MUIxRDExMkY1RkU2MDAzMzdCQUIgLyogUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFCMTZBRTkxNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUY0ODcyOTE4RUEyRDc5MDA3OTg1NTQgLyogVGVs
ZXBob25lTnVtYmVyQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUFCMDM3OTE4
NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MTAyN0QzNzE4RUREQzdEMDA4OTRDMTIgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUREMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUUxMTY0ODY1
NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY1OTQ3OUMxODdCM0I2MDAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggNjAyZjFi
NC4uZWYyMDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogCiAjaW5jbHVkZSAiRWRpdG9yU3RhdGUuaCIK
KyNpbmNsdWRlICJUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCkBAIC01MDAsNCArNTAxLDExIEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzdXBwb3J0
c0dsb2JhbFNlbGVjdGlvbigpCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZWxlY3RlZFRlbGVwaG9uZU51
bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZXMpCit7
CisgICAgbV9wYWdlLT50ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyKCkuc2VsZWN0ZWRUZWxlcGhv
bmVOdW1iZXJSYW5nZXNDaGFuZ2VkKHJhbmdlcyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MDUxM2FmLi5iMmJlMjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTE2Nyw2ICsxNjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpIG92ZXJyaWRlOwogCisjaWYgRU5B
QkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rl
ZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4+Jikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYlBhZ2UqIG1fcGFnZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UZWxlcGhv
bmVOdW1iZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9UZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40ZGVjNTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEs
MTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbGVw
aG9uZU51bWJlckNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
KFdlYlBhZ2UqIHdlYlBhZ2UpCisgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICAsIG1fdGVs
ZXBob25lTnVtYmVyT3ZlcmxheShudWxscHRyKQoreworICAgIEFTU0VSVChtX3dlYlBhZ2UpOwor
fQorCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNyZWF0ZU92ZXJsYXlJZk5lZWRl
ZCgpCit7CisgICAgaWYgKG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheSkgeworICAgICAgICBtX3Rl
bGVwaG9uZU51bWJlck92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gb3ZlcmxheSA9IFBhZ2VPdmVy
bGF5OjpjcmVhdGUodGhpcyk7CisgICAgbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5ID0gb3Zlcmxh
eS5nZXQoKTsKKyAgICBtX3dlYlBhZ2UtPmluc3RhbGxQYWdlT3ZlcmxheShvdmVybGF5LnJlbGVh
c2UoKSwgdHJ1ZSk7CisgICAgbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5LT5zZXROZWVkc0Rpc3Bs
YXkoKTsKK30KKwordm9pZCBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpkZXN0cm95T3Zlcmxh
eSgpCit7CisgICAgaWYgKCFtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fd2ViUGFnZS0+dW5pbnN0YWxsUGFnZU92ZXJsYXkobV90ZWxlcGhvbmVOdW1i
ZXJPdmVybGF5LCBmYWxzZSk7Cit9CisKK3ZvaWQgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6
cGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKQoreworICAgIC8vIEJlZm9yZSB0aGUg
b3ZlcmxheSBpcyBkZXN0cm95ZWQsIGl0IHNob3VsZCBoYXZlIG1vdmVkIG91dCBvZiB0aGUgV2Vi
UGFnZSwKKyAgICAvLyBhdCB3aGljaCBwb2ludCB3ZSBhbHJlYWR5IGNsZWFyZWQgb3VyIGJhY2sg
cG9pbnRlci4KKyAgICBBU1NFUlQoIW1fdGVsZXBob25lTnVtYmVyT3ZlcmxheSk7Cit9CisKK3Zv
aWQgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJs
YXkqLCBXZWJQYWdlKiB3ZWJQYWdlKQoreworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBBU1NFUlQobV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5KTsKKyAgICBtX3RlbGVw
aG9uZU51bWJlck92ZXJsYXkgPSAwOworfQorCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xs
ZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikKK3sKK30KKworVmVj
dG9yPEludFJlY3Q+IFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OnJlY3RzRm9yRHJhd2luZygp
IGNvbnN0Cit7CisgICAgVmVjdG9yPEludFJlY3Q+IHJlc3VsdDsKKworICAgIGZvciAoYXV0byYg
cmFuZ2UgOiBtX2N1cnJlbnRTZWxlY3Rpb25SYW5nZXMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
ZW5jbG9zaW5nSW50UmVjdChyYW5nZS0+Ym91bmRpbmdSZWN0KCkpKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK3ZvaWQgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6c2VsZWN0ZWRUZWxl
cGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFu
Z2VzKQoreworI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+IDEwOTAKKyAgICBtX2N1cnJlbnRTZWxlY3Rpb25SYW5nZXMgPSByYW5nZXM7CisgICAg
CisgICAgY2xlYXJIaWdobGlnaHRzKCk7CisgICAgCisgICAgaWYgKG1fY3VycmVudFNlbGVjdGlv
blJhbmdlcy5pc0VtcHR5KCkpCisgICAgICAgIGRlc3Ryb3lPdmVybGF5KCk7CisgICAgZWxzZQor
ICAgICAgICBjcmVhdGVPdmVybGF5SWZOZWVkZWQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHJhbmdlcyk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51bWJlckNvbnRyb2xs
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTlhNDYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyX2gKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT04pCisKKyNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgorI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCit0eXBl
ZGVmIHZvaWQqIERESGlnaGxpZ2h0UmVmOworI2VuZGlmCisKK2NsYXNzIFRlbGVwaG9uZU51bWJl
ckNvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
PiwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK3B1YmxpYzoKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI+IGNyZWF0ZShXZWJQYWdlKiB3ZWJQ
YWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZWxlcGhvbmVOdW1iZXJD
b250cm9sbGVyKHdlYlBhZ2UpKTsKKyAgICB9CisKKyAgICB2b2lkIHNlbGVjdGVkVGVsZXBob25l
TnVtYmVyUmFuZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlJhbmdlPj4m
KTsKKyAgICAKK3ByaXZhdGU6CisgICAgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcihXZWJQYWdl
Kik7CisKKyAgICB2b2lkIGNyZWF0ZU92ZXJsYXlJZk5lZWRlZCgpOworICAgIHZvaWQgZGVzdHJv
eU92ZXJsYXkoKTsKKyAgICAKKyAgICB2b2lkIGNsZWFySGlnaGxpZ2h0cygpOworICAgIHZvaWQg
Y2xlYXJNb3VzZURvd25JbmZvcm1hdGlvbigpOworICAgIAorICAgIHZvaWQgaGFuZGxlVGVsZXBo
b25lQ2xpY2soKTsKKyAgICAKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHNGb3JE
cmF3aW5nKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQo
UGFnZU92ZXJsYXkqKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92
ZXJsYXkqLCBXZWJQYWdlKik7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1dlYlBhZ2UoUGFn
ZU92ZXJsYXkqLCBXZWJQYWdlKik7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVy
bGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZGlydHlSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSosIGNv
bnN0IFdlYk1vdXNlRXZlbnQmKTsKKworICAgIFJlZlB0cjxXZWJQYWdlPiBtX3dlYlBhZ2U7Cisg
ICAgUGFnZU92ZXJsYXkqIG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheTsKKyAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlJhbmdlPj4gbV9jdXJyZW50U2VsZWN0aW9uUmFuZ2VzOworICAgIAorICAg
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBWZWN0b3I8UmV0YWluUHRyPERESGlnaGxpZ2h0UmVm
Pj4gbV9oaWdobGlnaHRzOworICAgIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4gbV9jdXJyZW50
TW91c2VEb3duSGlnaGxpZ2h0OworI2VuZGlmCisgICAgCisgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9tb3VzZURvd25Qb3NpdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorI2VuZGlmIC8vIFRlbGVw
aG9uZU51bWJlckNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDE0NjZmMTUuLjYyMjVmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNp
bmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlRlbGVwaG9uZU51bWJlckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkFsdGVybmF0aXZlVGV4dENsaWVu
dC5oIgpAQCAtNDUzMyw1ICs0NTM0LDE1IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IFdl
YlBhZ2U6OnJhbmdlRnJvbUVkaXRpbmdSYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsCiAgICAg
cmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZnJhbWUuc2Vs
ZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCksIHN0YXRpY19j
YXN0PGludD4ocmFuZ2UubG9jYXRpb24pLCBsZW5ndGgpOwogfQogCisjaWYgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKQorVGVsZXBob25lTnVtYmVyQ29udHJvbGxlciYgV2ViUGFn
ZTo6dGVsZXBob25lTnVtYmVyQ29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX3RlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXIpCisgICAgICAgIG1fdGVsZXBob25lTnVtYmVyQ29udHJvbGxlciA9IFRl
bGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKTsKKworICAgIHJldHVybiAqbV90
ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOworfQorI2VuZGlmCisKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBjNWQ5ZTM4Li42MjI5NDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTE3OCw2ICsxNzgsMTAgQEAgY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb247CiBjbGFzcyBXZWJUb3VjaEV2ZW50OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVEVM
RVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCitjbGFzcyBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
OworI2VuZGlmCisKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQYWdlT3ZlcmxheT4+IFBhZ2VPdmVy
bGF5TGlzdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtNzY2LDYgKzc3MCwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXBsYWNlQ29udHJvbGxlZEltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikK
KyAgICBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyJiB0ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC0xMTY4LDYgKzExNzYsMTAgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IG1fc3lzdGVtV2ViR0xQb2xpY3k7CiAjZW5kaWYKKworI2lmIEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKKyAgICBSZWZQdHI8VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcj4gbV90
ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY2ZmM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UZWxlcGhvbmVOdW1iZXJDb250cm9s
bGVyTWFjLm1tCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUo
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCisKKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9NYWluRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KKworI2lmZGVm
IF9faGFzX2luY2x1ZGUKKyNpZiBfX2hhc19pbmNsdWRlKDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxp
Z2h0RHJhd2luZy5oPikKKyNpbXBvcnQgPERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5n
Lmg+CisjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZ19Qcml2YXRlLmg+
CisjZWxzZQordHlwZWRlZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsKKyNlbmRpZgorI2VuZGlmCisK
K1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChEYXRhRGV0ZWN0b3JzKQorU09G
VF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0Q3JlYXRlV2l0aFJlY3RzSW5WaXNpYmxl
UmVjdCwgRERIaWdobGlnaHRSZWYsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENHUmVjdCAq
IHJlY3RzLCBDRkluZGV4IGNvdW50LCBDR1JlY3QgZ2xvYmFsVmlzaWJsZVJlY3QsIEJvb2xlYW4g
d2l0aEFycm93KSwgKGFsbG9jYXRvciwgcmVjdHMsIGNvdW50LCBnbG9iYWxWaXNpYmxlUmVjdCwg
d2l0aEFycm93KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodEdldExheWVy
V2l0aENvbnRleHQsIENHTGF5ZXJSZWYsIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQsIENHQ29u
dGV4dFJlZiBjb250ZXh0KSwgKGhpZ2hsaWdodCwgY29udGV4dCkpCitTT0ZUX0xJTksoRGF0YURl
dGVjdG9ycywgRERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QsIENHUmVjdCwgKERESGlnaGxpZ2h0
UmVmIGhpZ2hsaWdodCksIChoaWdobGlnaHQpKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMsIERE
SGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0LCBCb29sZWFuLCAoRERIaWdobGlnaHRSZWYgaGln
aGxpZ2h0LCBDR1BvaW50IHBvaW50LCBCb29sZWFuKiBvbkJ1dHRvbiksIChoaWdobGlnaHQsIHBv
aW50LCBvbkJ1dHRvbikpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRTZXRC
dXR0b25QcmVzc2VkLCB2b2lkLCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0LCBCb29sZWFuIGJ1
dHRvblByZXNzZWQpLCAoaGlnaGxpZ2h0LCBidXR0b25QcmVzc2VkKSkKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIAordm9pZCBUZWxlcGhvbmVO
dW1iZXJDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSogb3ZlcmxheSwgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdCkKK3sKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSByZWN0c0ZvckRyYXdp
bmcoKTsKKyAgICBpZiAocmVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgY2xlYXJIaWdobGlnaHRzKCk7CisgICAgCisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8m
IHJlY3QgOiByZWN0cykgeworICAgICAgICBDR1JlY3QgY2dSZWN0c1tdID0geyAoQ0dSZWN0KXJl
Y3QgfTsKKyAgICAgICAgRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0ID0gRERIaWdobGlnaHRDcmVh
dGVXaXRoUmVjdHNJblZpc2libGVSZWN0KG51bGxwdHIsIGNnUmVjdHMsIDEsIChDR1JlY3QpZGly
dHlSZWN0LCB0cnVlKTsKKyAgICAgICAgbV9oaWdobGlnaHRzLmFwcGVuZChhZG9wdENGKGhpZ2hs
aWdodCkpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiB0aGUgbW91c2Ug
aXMgY3VycmVudGx5IGRvd24gaW5zaWRlIHRoaXMgaGlnaGxpZ2h0J3MgYnV0dG9uLgorICAgICAg
ICBpZiAobV9tb3VzZURvd25Qb3NpdGlvbiAhPSBJbnRQb2ludDo6emVybygpKSB7CisgICAgICAg
ICAgICBCb29sZWFuIG9uQnV0dG9uOworICAgICAgICAgICAgaWYgKERESGlnaGxpZ2h0UG9pbnRJ
c09uSGlnaGxpZ2h0KGhpZ2hsaWdodCwgKENHUG9pbnQpbV9tb3VzZURvd25Qb3NpdGlvbiwgJm9u
QnV0dG9uKSkgeworICAgICAgICAgICAgICAgIGlmIChvbkJ1dHRvbikgeworICAgICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRNb3VzZURvd25IaWdobGlnaHQgPSBoaWdobGlnaHQ7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBk
byB0aGUgZm9sbG93aW5nLCBidXQgU09GVF9MSU5LIGlzbid0IHdvcmtpbmcgZm9yIHRoaXMgbWV0
aG9kLgorICAgICAgICAgICAgICAgICAgICAvLyBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQo
aGlnaGxpZ2h0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIENHTGF5ZXJSZWYgaGlnaGxpZ2h0TGF5ZXIgPSBEREhp
Z2hsaWdodEdldExheWVyV2l0aENvbnRleHQoaGlnaGxpZ2h0LCBjZ0NvbnRleHQpOworICAgICAg
ICBDR1JlY3QgaGlnaGxpZ2h0Qm91bmRpbmdSZWN0ID0gRERIaWdobGlnaHRHZXRCb3VuZGluZ1Jl
Y3QoaGlnaGxpZ2h0KTsKKyAgICAgICAgCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworCisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC50cmFuc2xhdGUodG9GbG9hdFNpemUoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9yaWdpbikpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoRmxvYXRTaXplKDAsIC1oaWdobGlnaHRCb3VuZGlu
Z1JlY3Quc2l6ZS5oZWlnaHQpKTsKKyAgICAgICAgCisgICAgICAgIGhpZ2hsaWdodEJvdW5kaW5n
UmVjdC5vcmlnaW4ueCA9IDA7CisgICAgICAgIGhpZ2hsaWdodEJvdW5kaW5nUmVjdC5vcmlnaW4u
eSA9IDA7CisgICAgICAgIAorICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY2dDb250
ZXh0LCBoaWdobGlnaHRCb3VuZGluZ1JlY3QsIGhpZ2hsaWdodExheWVyKTsKKyAgICB9Cit9Cisg
ICAgCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmhhbmRsZVRlbGVwaG9uZUNsaWNr
KCkKK3sKKyAgICAvLyBGSVhNRTogSGFuZGxlIHRoZSBidXR0b24gY2xpY2sgaGVyZS4KK30KKyAg
ICAKK2Jvb2wgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6bW91c2VFdmVudChQYWdlT3Zlcmxh
eSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIEludFBvaW50IG1vdXNlUG9z
aXRpb24gPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOworICAgIAorICAgIC8vIElmIHRoaXMgZXZl
bnQgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgbGVmdCBidXR0b24sIGl0IGNsZWFycyB0aGUg
Y3VycmVudCBtb3VzZSBkb3duIHRyYWNraW5nIGFuZCB3ZSdyZSBkb25lIHByb2Nlc3NpbmcgaXQu
CisgICAgaWYgKGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0b24pIHsK
KyAgICAgICAgY2xlYXJNb3VzZURvd25JbmZvcm1hdGlvbigpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4gY3VycmVudEhp
Z2hsaWdodCA9IG1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodDsKKyAgICAKKyAgICAvLyBDaGVj
ayBhbmQgc2VlIGlmIHRoZSBtb3VzZSB3ZW50IHVwIGFuZCB3ZSBoYXZlIGEgY3VycmVudCBtb3Vz
ZSBkb3duIGhpZ2hsaWdodCBidXR0b24uCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVu
dDo6TW91c2VVcCAmJiBjdXJyZW50SGlnaGxpZ2h0KSB7CisgICAgICAgIGNsZWFyTW91c2VEb3du
SW5mb3JtYXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSBtb3VzZSBsaWZ0ZWQg
d2hpbGUgc3RpbGwgb3ZlciB0aGUgaGlnaGxpZ2h0IGJ1dHRvbiB0aGF0IGl0IHdlbnQgZG93biBv
biwgdGhlbiB0aGF0IGlzIGEgY2xpY2suCisgICAgICAgIEJvb2xlYW4gb25CdXR0b247CisgICAg
ICAgIGlmIChEREhpZ2hsaWdodFBvaW50SXNPbkhpZ2hsaWdodChjdXJyZW50SGlnaGxpZ2h0Lmdl
dCgpLCAoQ0dQb2ludCltb3VzZVBvc2l0aW9uLCAmb25CdXR0b24pICYmIG9uQnV0dG9uKSB7Cisg
ICAgICAgICAgICBoYW5kbGVUZWxlcGhvbmVDbGljaygpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICAKKyAgICAvLyBDaGVjayBhbmQgc2VlIGlmIHRoZSBtb3VzZSBtb3Zl
ZCB3aXRoaW4gdGhlIGNvbmZpbmVzIG9mIHRoZSBERCBoaWdobGlnaHQgYnV0dG9uLgorICAgIGlm
IChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSAmJiBjdXJyZW50SGlnaGxpZ2h0
KSB7CisgICAgICAgIEJvb2xlYW4gb25CdXR0b247CisgICAgICAgIAorICAgICAgICAvLyBNb3Zp
bmcgd2l0aCB0aGUgbW91c2UgYnV0dG9uIGRvd24gaXMgb2theSBhcyBsb25nIGFzIHRoZSBtb3Vz
ZSBuZXZlciBsZWF2ZXMgdGhlIGhpZ2hsaWdodCBidXR0b24uCisgICAgICAgIGlmIChEREhpZ2hs
aWdodFBvaW50SXNPbkhpZ2hsaWdodChjdXJyZW50SGlnaGxpZ2h0LmdldCgpLCAoQ0dQb2ludClt
b3VzZVBvc2l0aW9uLCAmb25CdXR0b24pICYmIG9uQnV0dG9uKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIAorICAgICAgICBjbGVhck1vdXNlRG93bkluZm9ybWF0aW9uKCk7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIENoZWNr
IGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgZG93biBvdmVyIGEgREQgaGlnaGxpZ2h0IGJ1dHRv
bi4KKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICAg
ICAgQVNTRVJUKCFtX2N1cnJlbnRNb3VzZURvd25IaWdobGlnaHQpOworICAgICAgICAKKyAgICAg
ICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBtX2hpZ2hsaWdodHMpIHsKKyAgICAgICAgICAgIEJv
b2xlYW4gb25CdXR0b247CisgICAgICAgICAgICBpZiAoRERIaWdobGlnaHRQb2ludElzT25IaWdo
bGlnaHQoaGlnaGxpZ2h0LmdldCgpLCAoQ0dQb2ludCltb3VzZVBvc2l0aW9uLCAmb25CdXR0b24p
ICYmIG9uQnV0dG9uKSB7CisgICAgICAgICAgICAgICAgbV9tb3VzZURvd25Qb3NpdGlvbiA9IG1v
dXNlUG9zaXRpb247CisgICAgICAgICAgICAgICAgbV9jdXJyZW50TW91c2VEb3duSGlnaGxpZ2h0
ID0gaGlnaGxpZ2h0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcsIGJ1dCBTT0ZUX0xJTksgaXNuJ3Qgd29ya2lu
ZyBmb3IgdGhpcyBtZXRob2QuCisgICAgICAgICAgICAgICAgLy8gRERIaWdobGlnaHRTZXRCdXR0
b25QcmVzc2VkKGhpZ2hsaWdodC5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAgICAgCisgICAgcmV0
dXJuIGZhbHNlOworfQorICAgIAordm9pZCBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpjbGVh
ck1vdXNlRG93bkluZm9ybWF0aW9uKCkKK3sKKyAgICBtX2N1cnJlbnRNb3VzZURvd25IaWdobGln
aHQgPSBudWxscHRyOworICAgIG1fbW91c2VEb3duUG9zaXRpb24gPSBJbnRQb2ludDo6emVybygp
OworfQorICAgIAordm9pZCBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpjbGVhckhpZ2hsaWdo
dHMoKQoreworICAgIG1faGlnaGxpZ2h0cy5jbGVhcigpOyAgICAKKyAgICBtX2N1cnJlbnRNb3Vz
ZURvd25IaWdobGlnaHQgPSBudWxscHRyOworfQorICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228628</attachid>
            <date>2014-04-04 15:59:29 -0700</date>
            <delta_ts>2014-04-04 17:17:29 -0700</delta_ts>
            <desc>Patch v2 - Might apply.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38002</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MjAwYTA0Li4yNGNmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDQtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgRGF0YURldGVjdG9yIFVJIG9uIHNjYW5uZWQgcGhvbmUgbnVtYmVycy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE2Mzc5NTg4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdhdGhlciB0aGUgcmFuZ2VzIG9mIHRoZSBzY2FubmVkIHRlbGVwaG9u
ZSBudW1iZXJzIGFuZCBzZW5kIHRoZW0gdXAgdG8gV0syOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhv
bmVOdW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBo
b25lTnVtYmVycyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
Y2xpZW50IG1ldGhvZCB0byByZWNlaXZlIHNjYW5uZWQgdGVsZXBob25lIG51bWJlciByYW5nZXM6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudDo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKToKKworICAgICAg
ICBSZW1vdmUgdW5uZWVkZWQgcGxhY2Vob2xkZXIgVUk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IpOiBEZWxldGVkLgorCiAyMDE0LTA0LTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVwZ3JhZGUgdG8g
U2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHdoZW4gQ2hpbGQgc2VsZWN0b3IgaXMgZmFpbGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM3MTMwNGMuLmJiOGUxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzMTgsNyArMzMxOCwxMCBAQCB2b2lkIEVkaXRvcjo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgRnJhbWVT
ZWxlY3Rpb246OgogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigm
bV9mcmFtZSk7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQ
TEFURk9STShJT1MpCi0gICAgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gbWFya2VkUmFuZ2VzOworICAgIHNjYW5TZWxlY3Rpb25G
b3JUZWxlcGhvbmVOdW1iZXJzKG1hcmtlZFJhbmdlcyk7CisgICAgaWYgKGNsaWVudCgpKQorICAg
ICAgICBjbGllbnQoKS0+c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKG1hcmtl
ZFJhbmdlcyk7CiAjZW5kaWYKIAogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVl
KTsKQEAgLTMzMzQsNyArMzMzNyw3IEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBGcmFtZVNlbGVjdGlvbjo6CiB9CiAKICNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCi12
b2lkIEVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKQordm9pZCBFZGl0
b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+
PiYgbWFya2VkUmFuZ2VzKQogewogICAgIGlmICghVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6Omlz
U3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNTAsMTYgKzMzNTMsMTYgQEAgdm9p
ZCBFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKCkKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgYSBwaG9uZSBudW1iZXIgc3BhbnMgbXVsdGlwbGUgY2h1
bmtzIG9mIHRleHQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIFRleHRJdGVyYXRvcgogICAg
IC8vIChCeSBhIHN0eWxlIGNoYW5nZSwgaW1hZ2UsIGxpbmUgYnJlYWssIGV0Yy4pCi0gICAgLy8g
T24gaWRlYSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSBhIG1vZGVsIGxpa2UgdGV4dCBzZWFyY2gg
dGhhdCB1c2VzIGEgcm90YXRpbmcgd2luZG93LgorICAgIC8vIE9uZSBpZGVhIHRvIGhhbmRsZSB0
aGlzIHdvdWxkIGJlIGEgbW9kZWwgbGlrZSB0ZXh0IHNlYXJjaCB0aGF0IHVzZXMgYSByb3RhdGlu
ZyB3aW5kb3cuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dENodW5rKHNlbGVjdGVkUmFuZ2Uu
Z2V0KCkpOyAhdGV4dENodW5rLmF0RW5kKCk7IHRleHRDaHVuay5hZHZhbmNlKCkpIHsKICAgICAg
ICAgLy8gVGV4dEl0ZXJhdG9yIGlzIHN1cHBvc2VkIHRvIG5ldmVyIHJldHVybnMgYSBSYW5nZSB0
aGF0IHNwYW5zIG11bHRpcGxlIE5vZGVzLgogICAgICAgICBBU1NFUlQodGV4dENodW5rLnJhbmdl
KCktPnN0YXJ0Q29udGFpbmVyKCkgPT0gdGV4dENodW5rLnJhbmdlKCktPmVuZENvbnRhaW5lcigp
KTsKIAotICAgICAgICBzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKCp0ZXh0Q2h1bmsucmFu
Z2UoKSwgdGV4dENodW5rLnRleHQoKSk7CisgICAgICAgIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51
bWJlcnMoKnRleHRDaHVuay5yYW5nZSgpLCB0ZXh0Q2h1bmsudGV4dCgpLCBtYXJrZWRSYW5nZXMp
OwogICAgIH0KIH0KIAotdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMo
UmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQordm9pZCBFZGl0b3I6
OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcykKIHsK
ICAgICAvLyByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gYW5kIHJlbGF0aXZlRW5kUG9zaXRpb24gYXJl
IHRoZSBlbmRwb2ludHMgb2YgdGhlIHBob25lIG51bWJlciByYW5nZSwKICAgICAvLyByZWxhdGl2
ZSB0byB0aGUgc2Nhbm5lclBvc2l0aW9uCkBAIC0zMzgzLDcgKzMzODYsMTEgQEAgdm9pZCBFZGl0
b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmcKICAgICAgICAgaWYgKCFyYW5nZS5zdGFydENvbnRhaW5lcigpLT5pc1Rl
eHROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICByYW5nZS5vd25lckRv
Y3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlclRvTm9kZShyYW5nZS5zdGFydENvbnRhaW5lcigp
LCByYW5nZS5zdGFydE9mZnNldCgpICsgc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBv
c2l0aW9uLCByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMSwg
RG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKSArIHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZl
U3RhcnRQb3NpdGlvbjsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gcmVsYXRpdmVFbmRQb3Np
dGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisKKyAgICAgICAgbWFya2VkUmFuZ2Vz
LmFwcGVuZChSYW5nZTo6Y3JlYXRlKHJhbmdlLm93bmVyRG9jdW1lbnQoKSwgcmFuZ2Uuc3RhcnRD
b250YWluZXIoKSwgc3RhcnRPZmZzZXQsIHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zm
c2V0ICsgbGVuZ3RoKSk7CisgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkTWFya2VyVG9Ob2RlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zmc2V0LCBsZW5n
dGgsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQ
b3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAppbmRleCA5MjJmY2VjLi5iNDI1MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTQ3NCw4ICs0NzQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiAhUExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51
bWJlcnMoKTsKLSAgICB2b2lkIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmLCBj
b25zdCBTdHJpbmdWaWV3Jik7CisgICAgdm9pZCBzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVt
YmVycyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcyk7CisgICAgdm9pZCBzY2Fu
UmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiwgY29uc3QgU3RyaW5nVmlldyYsIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+PiYgbWFya2VkUmFuZ2VzKTsKICAgICB2b2lkIGNsZWFyRGF0YURldGVj
dGVkVGVsZXBob25lTnVtYmVycygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCmluZGV4IGM2MWU3OTguLjFkYzg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aApAQCAtMTc4LDYgKzE3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJ
bnB1dE1ldGhvZFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCkgPSAwOwogCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0No
YW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgeyB9CisjZW5kaWYKKwogICAgIC8v
IFN1cHBvcnQgZm9yIGdsb2JhbCBzZWxlY3Rpb25zLCB1c2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRo
ZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdAogICAgIC8vIHNlbGVjdGlvbiBhcyBhIHR5cGUg
b2YgY2xpcGJvYXJkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigp
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggNTY2ZGNlYi4uZWQ3MmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTI0OCwzMyArMTI0OCw2IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50VGVsZXBob25lTnVtYmVyTWFya2VyKEdyYXBo
aWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIERvY3VtZW50TWFy
a2VyKiBtYXJrZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCkK
LXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBwbGFjZWhvbGRlciBVSSBmb3IgZGV2ZWxvcG1lbnQg
b2YgdGhlIGZlYXR1cmUuCi0KLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IHN0ZDo6bWF4PGludD4o
bWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7Ci0gICAgaW50IGVuZFBvc2l0aW9u
ID0gc3RkOjptaW48aW50PihtYXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgbV9sZW4pOwot
Ci0gICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQotICAgICAgICBlbmRQb3Np
dGlvbiA9IHN0ZDo6bWluPGludD4oZW5kUG9zaXRpb24sIG1fdHJ1bmNhdGlvbik7Ci0KLSAgICBp
bnQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUo
KSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0g
c2VsZWN0aW9uVG9wKCk7Ci0gICAgaW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwot
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0g
ZGVsdGFZKTsKLSAgICBUZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQp
OwotCi0gICAgSW50UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVj
dGlvblJlY3RGb3JUZXh0KHJ1biwgc3RhcnRQb2ludCwgc2VsSGVpZ2h0LCBzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbikpOwotCi0gICAgY29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlciht
YXJrZXIsIHN0eWxlLCBmb250KTsKLQotICAgIFBhdGggb3V0bGluZTsKLSAgICBvdXRsaW5lLmFk
ZFJvdW5kZWRSZWN0KG1hcmtlclJlY3QsIEZsb2F0U2l6ZSg0LCA0KSk7Ci0gICAgY3R4LT5zZXRG
aWxsQ29sb3IoQ29sb3IoMTUwLCAxNTAsIDE1MCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgY3R4LT5maWxsUGF0aChvdXRsaW5lKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pCi0KIHZvaWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RG
b3JSZXBsYWNlbWVudE1hcmtlcihEb2N1bWVudE1hcmtlciogbWFya2VyLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQpCiB7CiAgICAgLy8gUmVwbGFjZW1lbnQgbWFy
a2VycyBhcmUgbm90IGFjdHVhbGx5IGRyYXduLCBidXQgdGhlaXIgcmVjdHMgbmVlZCB0byBiZSBj
b21wdXRlZCBmb3IgaGl0IHRlc3RpbmcuCkBAIC0xMzYzLDcgKzEzMzYsNiBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFRFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKQogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6VGVs
ZXBob25lTnVtYmVyOgotICAgICAgICAgICAgICAgIHBhaW50VGVsZXBob25lTnVtYmVyTWFya2Vy
KHB0LCBib3hPcmlnaW4sIG1hcmtlciwgc3R5bGUsIGZvbnQpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggOTM1OTI4Ny4uNDA1YTliZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xNzQsMTAgKzE3NCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbiwgRG9jdW1lbnRNYXJrZXIqLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEZvbnQmLCBib29sIGdyYW1tYXIpOwogICAgIHZvaWQgcGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1bWVu
dE1hcmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwogCi0jaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQotICAgIHZvaWQgcGFpbnRUZWxlcGhvbmVOdW1i
ZXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBE
b2N1bWVudE1hcmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwotI2VuZGlm
Ci0KICAgICB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIoRG9jdW1lbnRNYXJr
ZXIqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmKTsKIAogICAgIFRleHRSdW46OkV4
cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5
NjAzNmZkLi4zZTA3NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTQtMDQtMDQg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNob3cgRGF0YURl
dGVjdG9yIFVJIG9uIHNjYW5uZWQgcGhvbmUgbnVtYmVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE2Mzc5NTg4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBQYWdlT3ZlcmxheSBmb3IgdGVsZXBob25lIG51bWJlciBVSSwgaGFuZGxlIGRy
YXdpbmcgdGhlIFVJLCBhbmQKKyAgICAgICAgaGFuZGxlIG1vdXNlIGNsaWNrcyBvbiB0aGUgYnV0
dG9uIGluIHRoYXQgVUkuCisKKyAgICAgICAgRXZlbiB0aG91Z2ggY2xpY2tzIGFyZSBkZXRlY3Rl
ZCwgdGhleSBhcmVu4oCZdCBhY3RlZCB1cG9uIHlldC4KKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xp
ZW50OjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQpOiBQYXNzIHJhbmdlcyB0
bworICAgICAgICAgIHRoZSBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKKyAgICAgICAgVGhp
cyBjb250cm9sbGVyIGhhbmRsZXMgaW5zdGFsbGluZy9yZW1vdmluZyB0aGUgUGFnZU92ZXJsYXks
IGRyYXdpbmcgdGhlIFVJIGVsZW1lbnRzLAorICAgICAgICBhbmQgaGFuZGxpbmcgbW91c2UgZXZl
bnRzIHdoaWxlIGFueSBvZiB0aGUgVUkgZWxlbWVudHMgYXJlIHNob3duLgorICAgICAgICBUaGVy
ZeKAmXMgYWxzbyBhIGNsdW1zeSBhdHRlbXB0IHRvIGtlZXAgcGxhdGZvcm0tc3BlY2lmaWMgcGFy
dHMgc2VwYXJhdGVkIG91dC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25l
TnVtYmVyQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVO
dW1iZXJDb250cm9sbGVyOjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6ZGVzdHJveU92ZXJs
YXkpOgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpwYWdlT3Zl
cmxheURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xs
ZXI6OndpbGxNb3ZlVG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVy
Q29udHJvbGxlcjo6ZGlkTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9u
ZU51bWJlckNvbnRyb2xsZXI6OnJlY3RzRm9yRHJhd2luZyk6CisgICAgICAgIChXZWJLaXQ6OlRl
bGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hh
bmdlZCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVtYmVyQ29u
dHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVyQ29udHJv
bGxlcjo6Y3JlYXRlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGVsZXBo
b25lTnVtYmVyQ29udHJvbGxlck1hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRlbGVw
aG9uZU51bWJlckNvbnRyb2xsZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYktpdDo6VGVsZXBo
b25lTnVtYmVyQ29udHJvbGxlcjo6aGFuZGxlVGVsZXBob25lQ2xpY2spOgorICAgICAgICAoV2Vi
S2l0OjpUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6Y2xlYXJNb3VzZURvd25JbmZvcm1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNsZWFySGln
aGxpZ2h0cyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTQtMDQtMDQgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIGRvY3VtZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhYmM3YWY0Li41OGRhOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MTEsNiArNzExLDcgQEAKIAkJM0Y4
ODlEMTcxODg3ODU5MzAwRkVBREFGIC8qIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRjg4OUQwRDE4ODc2
OTlDMDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSAqLzsgfTsKIAkJNEY2
MDE0MzIxNTVDNUFBMjAwMUZCREUwIC8qIEJsb2NraW5nUmVzcG9uc2VNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNjAxNDMwMTU1QzVBMzIwMDFG
QkRFMCAvKiBCbG9ja2luZ1Jlc3BvbnNlTWFwLmggKi87IH07CiAJCTUxMDIxRTlDMTJCMTY3ODgw
MDVDMDMzQyAvKiBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDIxRTlCMTJCMTY3ODgwMDVDMDMzQyAvKiBX
ZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbSAqLzsgfTsKKwkJNTEwMjdEMzcxOEVEREM3RDAwODk0
QzEyIC8qIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAyN0QzNTE4RUREQzZBMDA4OTRDMTIgLyog
VGVsZXBob25lTnVtYmVyQ29udHJvbGxlck1hYy5tbSAqLzsgfTsKIAkJNTEwMzJGMTgxODBGNzNC
QjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAzMkYxNjE4MEY3M0JCMDA5
NjFCQjcgLyogV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNTEw
MzJGMTkxODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMzJGMTcx
ODBGNzNCQjAwOTYxQkI3IC8qIFdlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oICovOyB9
OwogCQk1MTAzMkYxRDE4MEY3OTE3MDA5NjFCQjcgLyogRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMDMyRjFCMTgwRjc5MTcwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtOTA0LDYgKzkw
NSw3IEBACiAJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMDYw
RTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MERFMTY1NDMxNzUw
MEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi87IH07CiAJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2
NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OworCQk1MUY0ODcyOTE4RUEyRDc5MDA3OTg1NTQgLyogVGVsZXBob25lTnVtYmVyQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUY0ODcyNjE4RUEyODAzMDA3OTg1NTQgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5jcHAg
Ki87IH07CiAJCTUxRjdEQzQxMTgwQ0M5MzYwMDIxMkNBMyAvKiBYUENTZXJ2aWNlTWFpbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI4Mzk2MTZC
NDdFQzQwMEEyNzhGRSAvKiBYUENTZXJ2aWNlTWFpbi5tbSAqLzsgfTsKIAkJNTFGN0RDNDMxODBD
QzkzNjAwMjEyQ0EzIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzREU0NjgxNUE5MTc2MzAwOEQyNkZDIC8q
IEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk1MUY3REM0NDE4MENDOTM2MDAyMTJDQTMg
LyogV2ViS2l0Mi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4REMyRUY1QjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0Mi5mcmFtZXdv
cmsgKi87IH07CkBAIC0yNTI2LDYgKzI1MjgsNyBAQAogCQk0RjYwMTQzMDE1NUM1QTMyMDAxRkJE
RTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCbG9ja2luZ1Jlc3BvbnNlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMDAzMUY2MTM3OUNBQ0IwMEM4REZFNCAvKiBTZWNJdGVtU2hpbS5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5k
eWxpYiI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFNlY0l0ZW1TaGltLmR5bGliOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTAyMUU5QjEyQjE2Nzg4MDA1QzAz
M0MgLyogV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMjdEMzUxOEVEREM2QTAwODk0QzEyIC8qIFRlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTAzMkYxNjE4MEY3M0JCMDA5NjFCQjcgLyogV2ViVG9EYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxMDMyRjE3MTgwRjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVG9EYXRhYmFz
ZVByb2Nlc3NDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDMy
RjFBMTgwRjc0RjEwMDk2MUJCNyAvKiBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjc0NCw2ICsyNzQ3LDggQEAKIAkJNTFF
M0I2N0UxNkYyNjZCMzAwOTk2OERDIC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtSZXNvdXJjZUxvYWRl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAw
RjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUY0ODcyNjE4RUEyODAzMDA3
OTg1NTQgLyogVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFGNDg3MjcxOEVBMjgwMzAwNzk4NTU0IC8qIFRlbGVw
aG9uZU51bWJlckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUY3REM0QTE4MENDOTM2MDAyMTJDQTMgLyogY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZXMu
eHBjICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFw
cGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0
LkRhdGFiYXNlcy54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUx
RkExRTI4MTgwQ0NBREUwMEM0NEJFOSAvKiBEYXRhYmFzZVByb2Nlc3MuYXBwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmFwcGxpY2F0aW9u
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBEYXRhYmFzZVByb2Nlc3MuYXBwOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIg
LyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUzMTcsNiArNTMyMiw4IEBACiAJCQkJN0NGNDdGRjkxNzI3NUM1NzAwOEFD
QjkxIC8qIFBhZ2VCYW5uZXIuaCAqLywKIAkJCQkxQTkwQzIzNjEyNjUwNzE3MDAzRTQ0RDQgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTFBOTBDMjM1MTI2NTA3MTcwMDNFNDRENCAvKiBQYWdl
T3ZlcmxheS5oICovLAorCQkJCTUxRjQ4NzI2MThFQTI4MDMwMDc5ODU1NCAvKiBUZWxlcGhvbmVO
dW1iZXJDb250cm9sbGVyLmNwcCAqLywKKwkJCQk1MUY0ODcyNzE4RUEyODAzMDA3OTg1NTQgLyog
VGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5oICovLAogCQkJCTJEODE5Qjk5MTg2Mjc1QjMwMDFG
MDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLywKIAkJCQkyRDgxOUI5
QTE4NjI3NUIzMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oICovLAog
CQkJCTJEODE5QjlCMTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLm1lc3NhZ2VzLmluICovLApAQCAtNjA2Niw2ICs2MDczLDcgQEAKIAkJCQkxQUIxNkFFNzE2
NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbSAqLywKIAkJCQkxQUIx
NkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCAqLywK
IAkJCQkxQUIxNkFEQjE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0gKi8sCisJCQkJNTEwMjdEMzUxOEVEREM2QTAwODk0QzEyIC8qIFRlbGVwaG9uZU51bWJl
ckNvbnRyb2xsZXJNYWMubW0gKi8sCiAJCQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAw
NEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovLAogCQkJCTFDOEUy
REFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8sCkBAIC04MzE4LDcg
KzgzMjYsOSBAQAogCQkJCTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1bmNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFCMUQxMTJGNUZFNjAwMzM3QkFCIC8qIFBy
b2Nlc3NMYXVuY2hlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQjE2QUU5MTY0QjNBODgw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTFGNDg3MjkxOEVBMkQ3OTAwNzk4NTU0IC8qIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBQjAzNzkxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VT
ZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEwMjdEMzcxOEVEREM3RDAwODk0QzEyIC8q
IFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUIx
NkFERDE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQUIxNkFFMTE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGNTk0NzlDMTg3QjNC
NjAwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDYwMmYxYjQuLmVmMjA0M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQu
aCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5jbHVkZSAiVGVsZXBob25lTnVtYmVy
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtNTAwLDQgKzUwMSwxMSBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6c3VwcG9ydHNHbG9iYWxTZWxlY3Rpb24oKQogI2VuZGlm
CiB9CiAKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VzKQoreworICAgIG1fcGFnZS0+dGVsZXBob25lTnVt
YmVyQ29udHJvbGxlcigpLnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZChyYW5n
ZXMpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNDA1MTNhZi4uYjJiZTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xNjcs
NiArMTY3LDEwIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNHbG9iYWxT
ZWxlY3Rpb24oKSBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVD
VElPTikKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+PiYpIG92ZXJyaWRlOworI2Vu
ZGlmCisKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVtYmVyQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVtYmVyQ29udHJvbGxl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRlYzUzYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UZWxlcGhvbmVO
dW1iZXJDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgiCisK
KyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVGVsZXBob25lTnVtYmVyQ29udHJv
bGxlcjo6VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcihXZWJQYWdlKiB3ZWJQYWdlKQorICAgIDog
bV93ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkobnVsbHB0
cikKK3sKKyAgICBBU1NFUlQobV93ZWJQYWdlKTsKK30KKwordm9pZCBUZWxlcGhvbmVOdW1iZXJD
b250cm9sbGVyOjpjcmVhdGVPdmVybGF5SWZOZWVkZWQoKQoreworICAgIGlmIChtX3RlbGVwaG9u
ZU51bWJlck92ZXJsYXkpIHsKKyAgICAgICAgbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5LT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8
UGFnZU92ZXJsYXk+IG92ZXJsYXkgPSBQYWdlT3ZlcmxheTo6Y3JlYXRlKHRoaXMpOworICAgIG1f
dGVsZXBob25lTnVtYmVyT3ZlcmxheSA9IG92ZXJsYXkuZ2V0KCk7CisgICAgbV93ZWJQYWdlLT5p
bnN0YWxsUGFnZU92ZXJsYXkob3ZlcmxheS5yZWxlYXNlKCksIHRydWUpOworICAgIG1fdGVsZXBo
b25lTnVtYmVyT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVGVsZXBob25l
TnVtYmVyQ29udHJvbGxlcjo6ZGVzdHJveU92ZXJsYXkoKQoreworICAgIGlmICghbV90ZWxlcGhv
bmVOdW1iZXJPdmVybGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3dlYlBhZ2UtPnVuaW5z
dGFsbFBhZ2VPdmVybGF5KG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheSwgZmFsc2UpOworfQorCit2
b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OnBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VP
dmVybGF5KikKK3sKKyAgICAvLyBCZWZvcmUgdGhlIG92ZXJsYXkgaXMgZGVzdHJveWVkLCBpdCBz
aG91bGQgaGF2ZSBtb3ZlZCBvdXQgb2YgdGhlIFdlYlBhZ2UsCisgICAgLy8gYXQgd2hpY2ggcG9p
bnQgd2UgYWxyZWFkeSBjbGVhcmVkIG91ciBiYWNrIHBvaW50ZXIuCisgICAgQVNTRVJUKCFtX3Rl
bGVwaG9uZU51bWJlck92ZXJsYXkpOworfQorCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xs
ZXI6OndpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSogd2ViUGFnZSkKK3sK
KyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fdGVsZXBo
b25lTnVtYmVyT3ZlcmxheSk7CisgICAgbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5ID0gMDsKK30K
Kwordm9pZCBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VP
dmVybGF5KiwgV2ViUGFnZSopCit7Cit9CisKK1ZlY3RvcjxJbnRSZWN0PiBUZWxlcGhvbmVOdW1i
ZXJDb250cm9sbGVyOjpyZWN0c0ZvckRyYXdpbmcoKSBjb25zdAoreworICAgIFZlY3RvcjxJbnRS
ZWN0PiByZXN1bHQ7CisKKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9jdXJyZW50U2VsZWN0aW9u
UmFuZ2VzKQorICAgICAgICByZXN1bHQuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QocmFuZ2UtPmJv
dW5kaW5nUmVjdCgpKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFRlbGVwaG9u
ZU51bWJlckNvbnRyb2xsZXI6OnNlbGVjdGVkVGVsZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZChj
b25zdCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlcykKK3sKKyNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMDkwCisgICAgbV9jdXJyZW50
U2VsZWN0aW9uUmFuZ2VzID0gcmFuZ2VzOworICAgIAorICAgIGNsZWFySGlnaGxpZ2h0cygpOwor
ICAgIAorICAgIGlmIChtX2N1cnJlbnRTZWxlY3Rpb25SYW5nZXMuaXNFbXB0eSgpKQorICAgICAg
ICBkZXN0cm95T3ZlcmxheSgpOworICAgIGVsc2UKKyAgICAgICAgY3JlYXRlT3ZlcmxheUlmTmVl
ZGVkKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyYW5nZXMpOworI2VuZGlmCit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1RlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9UZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjk5YTQ2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9UZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgKQEAgLTAsMCAr
MSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcl9o
CisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorCisjaW5jbHVkZSAiUGFn
ZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQordHlwZWRlZiB2b2lkKiBEREhpZ2hsaWdodFJlZjsK
KyNlbmRpZgorCitjbGFzcyBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8VGVsZXBob25lTnVtYmVyQ29udHJvbGxlcj4sIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNs
aWVudCB7CitwdWJsaWM6CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZWxlcGhvbmVOdW1iZXJD
b250cm9sbGVyPiBjcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcih3ZWJQYWdlKSk7CisgICAg
fQorCisgICAgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4+Jik7CisgICAgCitwcml2YXRlOgorICAgIFRl
bGVwaG9uZU51bWJlckNvbnRyb2xsZXIoV2ViUGFnZSopOworCisgICAgdm9pZCBjcmVhdGVPdmVy
bGF5SWZOZWVkZWQoKTsKKyAgICB2b2lkIGRlc3Ryb3lPdmVybGF5KCk7CisgICAgCisgICAgdm9p
ZCBjbGVhckhpZ2hsaWdodHMoKTsKKyAgICB2b2lkIGNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24o
KTsKKyAgICAKKyAgICB2b2lkIGhhbmRsZVRlbGVwaG9uZUNsaWNrKCk7CisgICAgCisgICAgVmVj
dG9yPFdlYkNvcmU6OkludFJlY3Q+IHJlY3RzRm9yRHJhd2luZygpIGNvbnN0OworCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kik7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCBi
b29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50Jik7CisKKyAg
ICBSZWZQdHI8V2ViUGFnZT4gbV93ZWJQYWdlOworICAgIFBhZ2VPdmVybGF5KiBtX3RlbGVwaG9u
ZU51bWJlck92ZXJsYXk7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4+IG1fY3Vy
cmVudFNlbGVjdGlvblJhbmdlczsKKyAgICAKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
VmVjdG9yPFJldGFpblB0cjxEREhpZ2hsaWdodFJlZj4+IG1faGlnaGxpZ2h0czsKKyAgICBSZXRh
aW5QdHI8RERIaWdobGlnaHRSZWY+IG1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodDsKKyNlbmRp
ZgorICAgIAorICAgIFdlYkNvcmU6OkludFBvaW50IG1fbW91c2VEb3duUG9zaXRpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikKKyNlbmRpZiAvLyBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MjRk
NTlmLi41NDM4ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCiAj
aW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
KyNpbmNsdWRlICJUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKQEAgLTQ1NDEsNSArNDU0MiwxNCBA
QCBib29sIFdlYlBhZ2U6OnN5bmNocm9ub3VzTWVzc2FnZXNTaG91bGRTcGluUnVuTG9vcCgpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKK1RlbGVwaG9uZU51bWJlckNvbnRyb2xsZXImIFdlYlBhZ2U6OnRlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXIoKQoreworICAgIGlmICghbV90ZWxlcGhvbmVOdW1iZXJDb250cm9sbGVy
KQorICAgICAgICBtX3RlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIgPSBUZWxlcGhvbmVOdW1iZXJD
b250cm9sbGVyOjpjcmVhdGUodGhpcyk7CisKKyAgICByZXR1cm4gKm1fdGVsZXBob25lTnVtYmVy
Q29udHJvbGxlcjsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIxNGMzMjYuLmE5MjA4
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTc4LDYgKzE3OCwxMCBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNz
IFdlYlRvdWNoRXZlbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKK2NsYXNzIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI7CisjZW5kaWYKKwogdHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPFBhZ2VPdmVybGF5Pj4gUGFnZU92ZXJsYXlMaXN0OwogCiBjbGFz
cyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVu
ZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2Fn
ZVNlbmRlciB7CkBAIC03NzAsNiArNzc0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBXaGlsZSB0aGlz
IGlzIG5vdCBpZGVhbCwgaXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhcHBsaWVkIHRvIGV2ZXJ5IHBs
YXRmb3JtIGF0IHRoZSBtb21lbnQuCiAgICAgc3RhdGljIGJvb2wgc3luY2hyb25vdXNNZXNzYWdl
c1Nob3VsZFNwaW5SdW5Mb29wKCk7CiAgICAgCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJf
REVURUNUSU9OKQorICAgIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXImIHRlbGVwaG9uZU51bWJl
ckNvbnRyb2xsZXIoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTExNzIsNiAr
MTE4MCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgbV9zeXN0ZW1XZWJHTFBvbGljeTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFRF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorICAgIFJlZlB0cjxUZWxlcGhvbmVOdW1iZXJDb250
cm9sbGVyPiBtX3RlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyTWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjZmYzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RlbGVwaG9uZU51
bWJlckNvbnRyb2xsZXJNYWMubW0KQEAgLTAsMCArMSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXIuaCIKKwor
I2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKKworI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5o
PgorCisjaWZkZWYgX19oYXNfaW5jbHVkZQorI2lmIF9faGFzX2luY2x1ZGUoPERhdGFEZXRlY3Rv
cnMvRERIaWdobGlnaHREcmF3aW5nLmg+KQorI2ltcG9ydCA8RGF0YURldGVjdG9ycy9EREhpZ2hs
aWdodERyYXdpbmcuaD4KKyNpbXBvcnQgPERhdGFEZXRlY3RvcnMvRERIaWdobGlnaHREcmF3aW5n
X1ByaXZhdGUuaD4KKyNlbHNlCit0eXBlZGVmIHZvaWQqIERESGlnaGxpZ2h0UmVmOworI2VuZGlm
CisjZW5kaWYKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLX09QVElPTkFMKERhdGFEZXRl
Y3RvcnMpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRDcmVhdGVXaXRoUmVj
dHNJblZpc2libGVSZWN0LCBEREhpZ2hsaWdodFJlZiwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ0dSZWN0ICogcmVjdHMsIENGSW5kZXggY291bnQsIENHUmVjdCBnbG9iYWxWaXNpYmxlUmVj
dCwgQm9vbGVhbiB3aXRoQXJyb3cpLCAoYWxsb2NhdG9yLCByZWN0cywgY291bnQsIGdsb2JhbFZp
c2libGVSZWN0LCB3aXRoQXJyb3cpKQorU09GVF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxp
Z2h0R2V0TGF5ZXJXaXRoQ29udGV4dCwgQ0dMYXllclJlZiwgKERESGlnaGxpZ2h0UmVmIGhpZ2hs
aWdodCwgQ0dDb250ZXh0UmVmIGNvbnRleHQpLCAoaGlnaGxpZ2h0LCBjb250ZXh0KSkKK1NPRlRf
TElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodEdldEJvdW5kaW5nUmVjdCwgQ0dSZWN0LCAo
RERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0KSwgKGhpZ2hsaWdodCkpCitTT0ZUX0xJTksoRGF0YURl
dGVjdG9ycywgRERIaWdobGlnaHRQb2ludElzT25IaWdobGlnaHQsIEJvb2xlYW4sIChEREhpZ2hs
aWdodFJlZiBoaWdobGlnaHQsIENHUG9pbnQgcG9pbnQsIEJvb2xlYW4qIG9uQnV0dG9uKSwgKGhp
Z2hsaWdodCwgcG9pbnQsIG9uQnV0dG9uKSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhp
Z2hsaWdodFNldEJ1dHRvblByZXNzZWQsIHZvaWQsIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQs
IEJvb2xlYW4gYnV0dG9uUHJlc3NlZCksIChoaWdobGlnaHQsIGJ1dHRvblByZXNzZWQpKQorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCit2b2lk
IFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGF5KiBvdmVybGF5
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJl
Y3RzRm9yRHJhd2luZygpOworICAgIGlmIChyZWN0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBjbGVhckhpZ2hsaWdodHMoKTsKKyAgICAKKyAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIAorICAg
IGZvciAoYXV0byYgcmVjdCA6IHJlY3RzKSB7CisgICAgICAgIENHUmVjdCBjZ1JlY3RzW10gPSB7
IChDR1JlY3QpcmVjdCB9OworICAgICAgICBEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQgPSBEREhp
Z2hsaWdodENyZWF0ZVdpdGhSZWN0c0luVmlzaWJsZVJlY3QobnVsbHB0ciwgY2dSZWN0cywgMSwg
KENHUmVjdClkaXJ0eVJlY3QsIHRydWUpOworICAgICAgICBtX2hpZ2hsaWdodHMuYXBwZW5kKGFk
b3B0Q0YoaGlnaGxpZ2h0KSk7CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayBhbmQgc2VlIGlm
IHRoZSBtb3VzZSBpcyBjdXJyZW50bHkgZG93biBpbnNpZGUgdGhpcyBoaWdobGlnaHQncyBidXR0
b24uCisgICAgICAgIGlmIChtX21vdXNlRG93blBvc2l0aW9uICE9IEludFBvaW50Ojp6ZXJvKCkp
IHsKKyAgICAgICAgICAgIEJvb2xlYW4gb25CdXR0b247CisgICAgICAgICAgICBpZiAoRERIaWdo
bGlnaHRQb2ludElzT25IaWdobGlnaHQoaGlnaGxpZ2h0LCAoQ0dQb2ludCltX21vdXNlRG93blBv
c2l0aW9uLCAmb25CdXR0b24pKSB7CisgICAgICAgICAgICAgICAgaWYgKG9uQnV0dG9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodCA9IGhpZ2hsaWdo
dDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcsIGJ1dCBTT0ZUX0xJTksgaXNuJ3Qgd29ya2luZyBm
b3IgdGhpcyBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgIC8vIERESGlnaGxpZ2h0U2V0QnV0
dG9uUHJlc3NlZChoaWdobGlnaHQsIHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ0dMYXllclJlZiBoaWdobGlnaHRM
YXllciA9IERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dChoaWdobGlnaHQsIGNnQ29udGV4
dCk7CisgICAgICAgIENHUmVjdCBoaWdobGlnaHRCb3VuZGluZ1JlY3QgPSBEREhpZ2hsaWdodEdl
dEJvdW5kaW5nUmVjdChoaWdobGlnaHQpOworICAgICAgICAKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShoaWdobGlnaHRCb3VuZGluZ1JlY3Qu
b3JpZ2luKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEp
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShGbG9hdFNpemUoMCwgLWhpZ2hs
aWdodEJvdW5kaW5nUmVjdC5zaXplLmhlaWdodCkpOworICAgICAgICAKKyAgICAgICAgaGlnaGxp
Z2h0Qm91bmRpbmdSZWN0Lm9yaWdpbi54ID0gMDsKKyAgICAgICAgaGlnaGxpZ2h0Qm91bmRpbmdS
ZWN0Lm9yaWdpbi55ID0gMDsKKyAgICAgICAgCisgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjZ0NvbnRleHQsIGhpZ2hsaWdodEJvdW5kaW5nUmVjdCwgaGlnaGxpZ2h0TGF5ZXIpOwor
ICAgIH0KK30KKyAgICAKK3ZvaWQgVGVsZXBob25lTnVtYmVyQ29udHJvbGxlcjo6aGFuZGxlVGVs
ZXBob25lQ2xpY2soKQoreworICAgIC8vIEZJWE1FOiBIYW5kbGUgdGhlIGJ1dHRvbiBjbGljayBo
ZXJlLgorfQorICAgIAorYm9vbCBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyOjptb3VzZUV2ZW50
KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCit7CisgICAgSW50UG9p
bnQgbW91c2VQb3NpdGlvbiA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpLT5yb290Vmlld1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CisgICAgCisgICAgLy8g
SWYgdGhpcyBldmVudCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBsZWZ0IGJ1dHRvbiwgaXQg
Y2xlYXJzIHRoZSBjdXJyZW50IG1vdXNlIGRvd24gdHJhY2tpbmcgYW5kIHdlJ3JlIGRvbmUgcHJv
Y2Vzc2luZyBpdC4KKyAgICBpZiAoZXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6TGVm
dEJ1dHRvbikgeworICAgICAgICBjbGVhck1vdXNlRG93bkluZm9ybWF0aW9uKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVm
PiBjdXJyZW50SGlnaGxpZ2h0ID0gbV9jdXJyZW50TW91c2VEb3duSGlnaGxpZ2h0OworICAgIAor
ICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgdGhlIG1vdXNlIHdlbnQgdXAgYW5kIHdlIGhhdmUgYSBj
dXJyZW50IG1vdXNlIGRvd24gaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlwZSgp
ID09IFdlYkV2ZW50OjpNb3VzZVVwICYmIGN1cnJlbnRIaWdobGlnaHQpIHsKKyAgICAgICAgY2xl
YXJNb3VzZURvd25JbmZvcm1hdGlvbigpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIG1v
dXNlIGxpZnRlZCB3aGlsZSBzdGlsbCBvdmVyIHRoZSBoaWdobGlnaHQgYnV0dG9uIHRoYXQgaXQg
d2VudCBkb3duIG9uLCB0aGVuIHRoYXQgaXMgYSBjbGljay4KKyAgICAgICAgQm9vbGVhbiBvbkJ1
dHRvbjsKKyAgICAgICAgaWYgKERESGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGN1cnJlbnRI
aWdobGlnaHQuZ2V0KCksIChDR1BvaW50KW1vdXNlUG9zaXRpb24sICZvbkJ1dHRvbikgJiYgb25C
dXR0b24pIHsKKyAgICAgICAgICAgIGhhbmRsZVRlbGVwaG9uZUNsaWNrKCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgdGhl
IG1vdXNlIG1vdmVkIHdpdGhpbiB0aGUgY29uZmluZXMgb2YgdGhlIEREIGhpZ2hsaWdodCBidXR0
b24uCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGN1cnJl
bnRIaWdobGlnaHQpIHsKKyAgICAgICAgQm9vbGVhbiBvbkJ1dHRvbjsKKyAgICAgICAgCisgICAg
ICAgIC8vIE1vdmluZyB3aXRoIHRoZSBtb3VzZSBidXR0b24gZG93biBpcyBva2F5IGFzIGxvbmcg
YXMgdGhlIG1vdXNlIG5ldmVyIGxlYXZlcyB0aGUgaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICAgICAg
aWYgKERESGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGN1cnJlbnRIaWdobGlnaHQuZ2V0KCks
IChDR1BvaW50KW1vdXNlUG9zaXRpb24sICZvbkJ1dHRvbikgJiYgb25CdXR0b24pCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGNsZWFyTW91c2VEb3duSW5mb3Jt
YXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiB0aGUgbW91c2Ugd2VudCBkb3duIG92ZXIgYSBERCBoaWdo
bGlnaHQgYnV0dG9uLgorICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93
bikgeworICAgICAgICBBU1NFUlQoIW1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodCk7CisgICAg
ICAgIAorICAgICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IG1faGlnaGxpZ2h0cykgeworICAg
ICAgICAgICAgQm9vbGVhbiBvbkJ1dHRvbjsKKyAgICAgICAgICAgIGlmIChEREhpZ2hsaWdodFBv
aW50SXNPbkhpZ2hsaWdodChoaWdobGlnaHQuZ2V0KCksIChDR1BvaW50KW1vdXNlUG9zaXRpb24s
ICZvbkJ1dHRvbikgJiYgb25CdXR0b24pIHsKKyAgICAgICAgICAgICAgICBtX21vdXNlRG93blBv
c2l0aW9uID0gbW91c2VQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRNb3VzZURv
d25IaWdobGlnaHQgPSBoaWdobGlnaHQ7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZywgYnV0IFNPRlRfTElOSyBp
c24ndCB3b3JraW5nIGZvciB0aGlzIG1ldGhvZC4KKyAgICAgICAgICAgICAgICAvLyBEREhpZ2hs
aWdodFNldEJ1dHRvblByZXNzZWQoaGlnaGxpZ2h0LmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBtX3RlbGVwaG9uZU51bWJlck92ZXJsYXktPnNldE5lZWRz
RGlzcGxheSgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgICAg
ICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRy
b2xsZXI6OmNsZWFyTW91c2VEb3duSW5mb3JtYXRpb24oKQoreworICAgIG1fY3VycmVudE1vdXNl
RG93bkhpZ2hsaWdodCA9IG51bGxwdHI7CisgICAgbV9tb3VzZURvd25Qb3NpdGlvbiA9IEludFBv
aW50Ojp6ZXJvKCk7Cit9CisgICAgCit2b2lkIFRlbGVwaG9uZU51bWJlckNvbnRyb2xsZXI6OmNs
ZWFySGlnaGxpZ2h0cygpCit7CisgICAgbV9oaWdobGlnaHRzLmNsZWFyKCk7ICAgIAorICAgIG1f
Y3VycmVudE1vdXNlRG93bkhpZ2hsaWdodCA9IG51bGxwdHI7Cit9CisgICAgCit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCg==
</data>
<flag name="review"
          id="252940"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228636</attachid>
            <date>2014-04-04 17:17:29 -0700</date>
            <delta_ts>2014-04-04 19:44:22 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36506</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MjAwYTA0Li4yNGNmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTQtMDQtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNob3cgRGF0YURldGVjdG9yIFVJIG9uIHNjYW5uZWQgcGhvbmUgbnVtYmVycy4KKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzE2Mzc5NTg4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEdhdGhlciB0aGUgcmFuZ2VzIG9mIHRoZSBzY2FubmVkIHRlbGVwaG9u
ZSBudW1iZXJzIGFuZCBzZW5kIHRoZW0gdXAgdG8gV0syOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhv
bmVOdW1iZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2NhblJhbmdlRm9yVGVsZXBo
b25lTnVtYmVycyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKworICAgICAgICBBZGQg
Y2xpZW50IG1ldGhvZCB0byByZWNlaXZlIHNjYW5uZWQgdGVsZXBob25lIG51bWJlciByYW5nZXM6
CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudDo6c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKToKKworICAgICAg
ICBSZW1vdmUgdW5uZWVkZWQgcGxhY2Vob2xkZXIgVUk6CisgICAgICAgICogcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRE
b2N1bWVudE1hcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
VGV4dEJveDo6ZXhwYW5zaW9uQmVoYXZpb3IpOiBEZWxldGVkLgorCiAyMDE0LTA0LTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFVwZ3JhZGUgdG8g
U2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHdoZW4gQ2hpbGQgc2VsZWN0b3IgaXMgZmFpbGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDM3MTMwNGMuLmJiOGUxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzMTgsNyArMzMxOCwxMCBAQCB2b2lkIEVkaXRvcjo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgRnJhbWVT
ZWxlY3Rpb246OgogICAgICAgICBjbGllbnQoKS0+cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigm
bV9mcmFtZSk7CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQ
TEFURk9STShJT1MpCi0gICAgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gbWFya2VkUmFuZ2VzOworICAgIHNjYW5TZWxlY3Rpb25G
b3JUZWxlcGhvbmVOdW1iZXJzKG1hcmtlZFJhbmdlcyk7CisgICAgaWYgKGNsaWVudCgpKQorICAg
ICAgICBjbGllbnQoKS0+c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKG1hcmtl
ZFJhbmdlcyk7CiAjZW5kaWYKIAogICAgIHNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZSh0cnVl
KTsKQEAgLTMzMzQsNyArMzMzNyw3IEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBGcmFtZVNlbGVjdGlvbjo6CiB9CiAKICNp
ZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmICFQTEFURk9STShJT1MpCi12
b2lkIEVkaXRvcjo6c2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51bWJlcnMoKQordm9pZCBFZGl0
b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+
PiYgbWFya2VkUmFuZ2VzKQogewogICAgIGlmICghVGVsZXBob25lTnVtYmVyRGV0ZWN0b3I6Omlz
U3VwcG9ydGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNTAsMTYgKzMzNTMsMTYgQEAgdm9p
ZCBFZGl0b3I6OnNjYW5TZWxlY3Rpb25Gb3JUZWxlcGhvbmVOdW1iZXJzKCkKIAogICAgIC8vIEZJ
WE1FOiBUaGlzIHdvbid0IHdvcmsgaWYgYSBwaG9uZSBudW1iZXIgc3BhbnMgbXVsdGlwbGUgY2h1
bmtzIG9mIHRleHQgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgdGhlIFRleHRJdGVyYXRvcgogICAg
IC8vIChCeSBhIHN0eWxlIGNoYW5nZSwgaW1hZ2UsIGxpbmUgYnJlYWssIGV0Yy4pCi0gICAgLy8g
T24gaWRlYSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSBhIG1vZGVsIGxpa2UgdGV4dCBzZWFyY2gg
dGhhdCB1c2VzIGEgcm90YXRpbmcgd2luZG93LgorICAgIC8vIE9uZSBpZGVhIHRvIGhhbmRsZSB0
aGlzIHdvdWxkIGJlIGEgbW9kZWwgbGlrZSB0ZXh0IHNlYXJjaCB0aGF0IHVzZXMgYSByb3RhdGlu
ZyB3aW5kb3cuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dENodW5rKHNlbGVjdGVkUmFuZ2Uu
Z2V0KCkpOyAhdGV4dENodW5rLmF0RW5kKCk7IHRleHRDaHVuay5hZHZhbmNlKCkpIHsKICAgICAg
ICAgLy8gVGV4dEl0ZXJhdG9yIGlzIHN1cHBvc2VkIHRvIG5ldmVyIHJldHVybnMgYSBSYW5nZSB0
aGF0IHNwYW5zIG11bHRpcGxlIE5vZGVzLgogICAgICAgICBBU1NFUlQodGV4dENodW5rLnJhbmdl
KCktPnN0YXJ0Q29udGFpbmVyKCkgPT0gdGV4dENodW5rLnJhbmdlKCktPmVuZENvbnRhaW5lcigp
KTsKIAotICAgICAgICBzY2FuUmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKCp0ZXh0Q2h1bmsucmFu
Z2UoKSwgdGV4dENodW5rLnRleHQoKSk7CisgICAgICAgIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51
bWJlcnMoKnRleHRDaHVuay5yYW5nZSgpLCB0ZXh0Q2h1bmsudGV4dCgpLCBtYXJrZWRSYW5nZXMp
OwogICAgIH0KIH0KIAotdm9pZCBFZGl0b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMo
UmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQordm9pZCBFZGl0b3I6
OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcykKIHsK
ICAgICAvLyByZWxhdGl2ZVN0YXJ0UG9zaXRpb24gYW5kIHJlbGF0aXZlRW5kUG9zaXRpb24gYXJl
IHRoZSBlbmRwb2ludHMgb2YgdGhlIHBob25lIG51bWJlciByYW5nZSwKICAgICAvLyByZWxhdGl2
ZSB0byB0aGUgc2Nhbm5lclBvc2l0aW9uCkBAIC0zMzgzLDcgKzMzODYsMTEgQEAgdm9pZCBFZGl0
b3I6OnNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmIHJhbmdlLCBjb25zdCBTdHJp
bmdWaWV3JiBzdHJpbmcKICAgICAgICAgaWYgKCFyYW5nZS5zdGFydENvbnRhaW5lcigpLT5pc1Rl
eHROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICByYW5nZS5vd25lckRv
Y3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlclRvTm9kZShyYW5nZS5zdGFydENvbnRhaW5lcigp
LCByYW5nZS5zdGFydE9mZnNldCgpICsgc2Nhbm5lclBvc2l0aW9uICsgcmVsYXRpdmVTdGFydFBv
c2l0aW9uLCByZWxhdGl2ZUVuZFBvc2l0aW9uIC0gcmVsYXRpdmVTdGFydFBvc2l0aW9uICsgMSwg
RG9jdW1lbnRNYXJrZXI6OlRlbGVwaG9uZU51bWJlcik7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQoKSArIHNjYW5uZXJQb3NpdGlvbiArIHJlbGF0aXZl
U3RhcnRQb3NpdGlvbjsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gcmVsYXRpdmVFbmRQb3Np
dGlvbiAtIHJlbGF0aXZlU3RhcnRQb3NpdGlvbiArIDE7CisKKyAgICAgICAgbWFya2VkUmFuZ2Vz
LmFwcGVuZChSYW5nZTo6Y3JlYXRlKHJhbmdlLm93bmVyRG9jdW1lbnQoKSwgcmFuZ2Uuc3RhcnRD
b250YWluZXIoKSwgc3RhcnRPZmZzZXQsIHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zm
c2V0ICsgbGVuZ3RoKSk7CisgICAgICAgIHJhbmdlLm93bmVyRG9jdW1lbnQoKS5tYXJrZXJzKCku
YWRkTWFya2VyVG9Ob2RlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0T2Zmc2V0LCBsZW5n
dGgsIERvY3VtZW50TWFya2VyOjpUZWxlcGhvbmVOdW1iZXIpOwogCiAgICAgICAgIHNjYW5uZXJQ
b3NpdGlvbiArPSByZWxhdGl2ZUVuZFBvc2l0aW9uICsgMTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaAppbmRleCA5MjJmY2VjLi5iNDI1MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTQ3NCw4ICs0NzQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiAhUExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2NhblNlbGVjdGlvbkZvclRlbGVwaG9uZU51
bWJlcnMoKTsKLSAgICB2b2lkIHNjYW5SYW5nZUZvclRlbGVwaG9uZU51bWJlcnMoUmFuZ2UmLCBj
b25zdCBTdHJpbmdWaWV3Jik7CisgICAgdm9pZCBzY2FuU2VsZWN0aW9uRm9yVGVsZXBob25lTnVt
YmVycyhWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIG1hcmtlZFJhbmdlcyk7CisgICAgdm9pZCBzY2Fu
UmFuZ2VGb3JUZWxlcGhvbmVOdW1iZXJzKFJhbmdlJiwgY29uc3QgU3RyaW5nVmlldyYsIFZlY3Rv
cjxSZWZQdHI8UmFuZ2U+PiYgbWFya2VkUmFuZ2VzKTsKICAgICB2b2lkIGNsZWFyRGF0YURldGVj
dGVkVGVsZXBob25lTnVtYmVycygpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCmluZGV4IGM2MWU3OTguLjFkYzg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQu
aApAQCAtMTc4LDYgKzE3OCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJ
bnB1dE1ldGhvZFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCkgPSAwOwogCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKQorICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0No
YW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgeyB9CisjZW5kaWYKKwogICAgIC8v
IFN1cHBvcnQgZm9yIGdsb2JhbCBzZWxlY3Rpb25zLCB1c2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRo
ZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdAogICAgIC8vIHNlbGVjdGlvbiBhcyBhIHR5cGUg
b2YgY2xpcGJvYXJkLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigp
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKaW5kZXggNTY2ZGNlYi4uZWQ3MmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTI0OCwzMyArMTI0OCw2IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgY29uc3QgRmxv
YXRQb2ludCYKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJ
T04pCi12b2lkIElubGluZVRleHRCb3g6OnBhaW50VGVsZXBob25lTnVtYmVyTWFya2VyKEdyYXBo
aWNzQ29udGV4dCogY3R4LCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIERvY3VtZW50TWFy
a2VyKiBtYXJrZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm9udCkK
LXsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBwbGFjZWhvbGRlciBVSSBmb3IgZGV2ZWxvcG1lbnQg
b2YgdGhlIGZlYXR1cmUuCi0KLSAgICBpbnQgc3RhcnRQb3NpdGlvbiA9IHN0ZDo6bWF4PGludD4o
bWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7Ci0gICAgaW50IGVuZFBvc2l0aW9u
ID0gc3RkOjptaW48aW50PihtYXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgbV9sZW4pOwot
Ci0gICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKQotICAgICAgICBlbmRQb3Np
dGlvbiA9IHN0ZDo6bWluPGludD4oZW5kUG9zaXRpb24sIG1fdHJ1bmNhdGlvbik7Ci0KLSAgICBp
bnQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUo
KSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0g
c2VsZWN0aW9uVG9wKCk7Ci0gICAgaW50IHNlbEhlaWdodCA9IHNlbGVjdGlvbkhlaWdodCgpOwot
ICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChib3hPcmlnaW4ueCgpLCBib3hPcmlnaW4ueSgpIC0g
ZGVsdGFZKTsKLSAgICBUZXh0UnVuIHJ1biA9IGNvbnN0cnVjdFRleHRSdW4oc3R5bGUsIGZvbnQp
OwotCi0gICAgSW50UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVj
dGlvblJlY3RGb3JUZXh0KHJ1biwgc3RhcnRQb2ludCwgc2VsSGVpZ2h0LCBzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbikpOwotCi0gICAgY29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlciht
YXJrZXIsIHN0eWxlLCBmb250KTsKLQotICAgIFBhdGggb3V0bGluZTsKLSAgICBvdXRsaW5lLmFk
ZFJvdW5kZWRSZWN0KG1hcmtlclJlY3QsIEZsb2F0U2l6ZSg0LCA0KSk7Ci0gICAgY3R4LT5zZXRG
aWxsQ29sb3IoQ29sb3IoMTUwLCAxNTAsIDE1MCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgY3R4LT5maWxsUGF0aChvdXRsaW5lKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pCi0KIHZvaWQgSW5saW5lVGV4dEJveDo6Y29tcHV0ZVJlY3RG
b3JSZXBsYWNlbWVudE1hcmtlcihEb2N1bWVudE1hcmtlciogbWFya2VyLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IEZvbnQmIGZvbnQpCiB7CiAgICAgLy8gUmVwbGFjZW1lbnQgbWFy
a2VycyBhcmUgbm90IGFjdHVhbGx5IGRyYXduLCBidXQgdGhlaXIgcmVjdHMgbmVlZCB0byBiZSBj
b21wdXRlZCBmb3IgaGl0IHRlc3RpbmcuCkBAIC0xMzYzLDcgKzEzMzYsNiBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFRFTEVQSE9O
RV9OVU1CRVJfREVURUNUSU9OKQogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6VGVs
ZXBob25lTnVtYmVyOgotICAgICAgICAgICAgICAgIHBhaW50VGVsZXBob25lTnVtYmVyTWFya2Vy
KHB0LCBib3hPcmlnaW4sIG1hcmtlciwgc3R5bGUsIGZvbnQpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggOTM1OTI4Ny4uNDA1YTliZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC0xNzQsMTAgKzE3NCw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UG9pbnQmIGJveE9yaWdpbiwgRG9jdW1lbnRNYXJrZXIqLCBjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IEZvbnQmLCBib29sIGdyYW1tYXIpOwogICAgIHZvaWQgcGFpbnRUZXh0TWF0Y2hNYXJr
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBEb2N1bWVu
dE1hcmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwogCi0jaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQotICAgIHZvaWQgcGFpbnRUZWxlcGhvbmVOdW1i
ZXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBE
b2N1bWVudE1hcmtlciosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRm9udCYpOwotI2VuZGlm
Ci0KICAgICB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwbGFjZW1lbnRNYXJrZXIoRG9jdW1lbnRNYXJr
ZXIqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnQmKTsKIAogICAgIFRleHRSdW46OkV4
cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5
NjAzNmZkLi5hNmJmMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTQtMDQtMDQg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNob3cgRGF0YURl
dGVjdG9yIFVJIG9uIHNjYW5uZWQgcGhvbmUgbnVtYmVycy4KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzE2Mzc5NTg4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzMTI0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBQYWdlT3ZlcmxheSBmb3IgdGVsZXBob25lIG51bWJlciBVSSwgaGFuZGxlIGRy
YXdpbmcgdGhlIFVJLCBhbmQKKyAgICAgICAgaGFuZGxlIG1vdXNlIGNsaWNrcyBvbiB0aGUgYnV0
dG9uIGluIHRoYXQgVUkuCisKKyAgICAgICAgRXZlbiB0aG91Z2ggY2xpY2tzIGFyZSBkZXRlY3Rl
ZCwgdGhleSBhcmVu4oCZdCBhY3RlZCB1cG9uIHlldC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQpOiBQYXNz
IHJhbmdlcyB0bworICAgICAgICAgIHRoZSBUZWxlcGhvbmVOdW1iZXJDb250cm9sbGVyLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKKyAg
ICAgICAgVGhpcyBjb250cm9sbGVyIGhhbmRsZXMgaW5zdGFsbGluZy9yZW1vdmluZyB0aGUgUGFn
ZU92ZXJsYXksIGRyYXdpbmcgdGhlIFVJIGVsZW1lbnRzLAorICAgICAgICBhbmQgaGFuZGxpbmcg
bW91c2UgZXZlbnRzIHdoaWxlIGFueSBvZiB0aGUgVUkgZWxlbWVudHMgYXJlIHNob3duLgorICAg
ICAgICBUaGVyZeKAmXMgYWxzbyBhIGNsdW1zeSBhdHRlbXB0IHRvIGtlZXAgcGxhdGZvcm0tc3Bl
Y2lmaWMgcGFydHMgc2VwYXJhdGVkIG91dC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6OlRlbGVwaG9uZU51bWJlck92
ZXJsYXlDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVyT3Zlcmxh
eUNvbnRyb2xsZXI6OmNyZWF0ZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlRl
bGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpkZXN0cm95T3ZlcmxheSk6CisgICAgICAg
IChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpwYWdlT3ZlcmxheURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9s
bGVyOjp3aWxsTW92ZVRvV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJl
ck92ZXJsYXlDb250cm9sbGVyOjpkaWRNb3ZlVG9XZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6OnJlY3RzRm9yRHJhd2luZyk6CisgICAg
ICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpzZWxlY3RlZFRl
bGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcjo6Y3JlYXRlKToKKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRy
b2xsZXJNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVOdW1iZXJPdmVy
bGF5Q29udHJvbGxlcjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpUZWxlcGhvbmVOdW1i
ZXJPdmVybGF5Q29udHJvbGxlcjo6aGFuZGxlVGVsZXBob25lQ2xpY2spOgorICAgICAgICAoV2Vi
S2l0OjpUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcjo6bW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpjbGVhck1vdXNl
RG93bkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6VGVsZXBob25lTnVtYmVyT3Zlcmxh
eUNvbnRyb2xsZXI6OmNsZWFySGlnaGxpZ2h0cyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRlbGVwaG9uZU51
bWJlck92ZXJsYXlDb250cm9sbGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDE0LTA0LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW9yZSBkb2N1bWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWJjN2FmNC4uYmZjNjc1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODUy
LDYgKzg1Miw4IEBACiAJCTUxOEU4RjBCMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4
RThGMDIxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5jcHAgKi87IH07CiAJCTUx
OEU4RjBDMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEU4RjAzMTZCMjA5MzcwMEU5MTQy
OSAvKiBEb3dubG9hZE1hbmFnZXIuaCAqLzsgfTsKIAkJNTE4RThGMEQxNkIyMDkzNzAwRTkxNDI5
IC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4RThGMDUxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFjLm1tICovOyB9
OworCQk1MTlFRjU4RTE4RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTlFRjU4RDE4RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNv
bnRyb2xsZXJNYWMubW0gKi87IH07CisJCTUxOUVGNTkyMThFRjgwQ0UwMDAzQjdGNCAvKiBUZWxl
cGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTlFRjU4RjE4RUY3NzIxMDAwM0I3RjQgLyogVGVsZXBo
b25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1MUE0RDVBOTE2Q0FDNEZG
MDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRp
c3RpY3NSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdL
Q29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTU1NUYzMTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5j
cHAgKi87IH07CiAJCTUxQTU1NUY2MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRl
bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1
RjQxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2NzMsNiArMjY3NSw5IEBACiAJ
CTUxOEU4RjAyMTZCMjA5MzcwMEU5MTQyOSAvKiBEb3dubG9hZE1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxvYWRNYW5hZ2VyLmNwcDsgcGF0aCA9
IERvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MThFOEYwMzE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkTWFuYWdlci5oOyBwYXRoID0gRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MThFOEYwNTE2QjIwOTM3MDBFOTE0MjkgLyogRG93bmxvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE5RUY1OEQxOEVGNzcwRDAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJl
ck92ZXJsYXlDb250cm9sbGVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXJNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOUVGNThGMThFRjc3MjEwMDAzQjdGNCAvKiBUZWxlcGhv
bmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOUVGNTkwMThFRjc3MjEwMDAzQjdGNCAvKiBUZWxlcGhv
bmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVl
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGlzdGljc1Jl
cXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE1NTVGMzEyOEM2QzQ3
MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMTcsNiArNTMyMiw4IEBACiAJCQkJN0NG
NDdGRjkxNzI3NUM1NzAwOEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCAqLywKIAkJCQkxQTkwQzIzNjEy
NjUwNzE3MDAzRTQ0RDQgLyogUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTFBOTBDMjM1MTI2NTA3
MTcwMDNFNDRENCAvKiBQYWdlT3ZlcmxheS5oICovLAorCQkJCTUxOUVGNThGMThFRjc3MjEwMDAz
QjdGNCAvKiBUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNTE5
RUY1OTAxOEVGNzcyMTAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVy
LmggKi8sCiAJCQkJMkQ4MTlCOTkxODYyNzVCMzAwMUYwM0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwICovLAogCQkJCTJEODE5QjlBMTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggKi8sCiAJCQkJMkQ4MTlCOUIxODYyNzVCMzAwMUYw
M0QxIC8qIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gKi8sCkBAIC02
MDY2LDYgKzYwNzMsNyBAQAogCQkJCTFBQjE2QUU3MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVDb250ZXh0Lm1tICovLAogCQkJCTFBQjE2QURDMTY0ODU5ODQwMDI5MEQ2MiAvKiBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oICovLAogCQkJCTFBQjE2QURCMTY0ODU5ODQwMDI5
MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAqLywKKwkJCQk1MTlFRjU4RDE4
RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXJNYWMubW0g
Ki8sCiAJCQkJMUFBRjI2MzcxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmggKi8sCiAJCQkJMUFBRjI2MzYxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tICovLAogCQkJCTFDOEUyREFEMTI3OEM1QjIwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8sCkBAIC04NTAwLDkgKzg1MDgsMTEgQEAKIAkJCQkz
M0QzQTNCQTEzMzk2MDYyMDA3MDlCRTQgLyogV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzM0QzQTNDQTEzMzk2MTc5MDA3MDlCRTQgLyogV2ViTWVkaWFD
YWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkNCNEU0RDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tDb250ZW50Vmlldy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTUxOUVGNTkyMThFRjgwQ0UwMDAzQjdGNCAvKiBUZWxlcGhvbmVOdW1iZXJPdmVybGF5
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDk4NTRFQzEyQkM0RTE3MDAwQUQw
ODAgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MDk4NTRFRTEy
QkM0RTE4MDAwQUQwODAgLyogV2ViTWVtb3J5U2FtcGxlci5tYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDMDMzN0RCMDEyN0EyOEQwMDA4RkY0RjQgLyogV2ViTW91c2VFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTlFRjU4RTE4RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVy
T3ZlcmxheUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBMzExNzZE
MDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzFBMkVDNDgxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDYwMmYx
YjQuLjQwM2VhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgi
CisjaW5jbHVkZSAiVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2UuaCIKQEAgLTUwMCw0ICs1MDEsMTEgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNlbGVjdGVkVGVs
ZXBob25lTnVtYmVyUmFuZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4mIHJh
bmdlcykKK3sKKyAgICBtX3BhZ2UtPnRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyKCku
c2VsZWN0ZWRUZWxlcGhvbmVOdW1iZXJSYW5nZXNDaGFuZ2VkKHJhbmdlcyk7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MDUxM2Fm
Li5iMmJlMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTE2Nyw2ICsxNjcsMTAgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0dsb2JhbFNlbGVjdGlvbigpIG92ZXJy
aWRlOwogCisjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQorICAgIHZpcnR1
YWwgdm9pZCBzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4+Jikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9UZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YjM4ZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVGVsZXBob25lTnVt
YmVyT3ZlcmxheUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250
cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCisKKyNp
bmNsdWRlICJXZWJQYWdlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKyAgICAKK1RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpUZWxl
cGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcihXZWJQYWdlKiB3ZWJQYWdlKQorICAgIDogbV93
ZWJQYWdlKHdlYlBhZ2UpCisgICAgLCBtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkobnVsbHB0cikK
K3sKKyAgICBBU1NFUlQobV93ZWJQYWdlKTsKK30KKwordm9pZCBUZWxlcGhvbmVOdW1iZXJPdmVy
bGF5Q29udHJvbGxlcjo6Y3JlYXRlT3ZlcmxheUlmTmVlZGVkKCkKK3sKKyAgICBpZiAobV90ZWxl
cGhvbmVOdW1iZXJPdmVybGF5KSB7CisgICAgICAgIG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheS0+
c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgUmVm
UHRyPFBhZ2VPdmVybGF5PiBvdmVybGF5ID0gUGFnZU92ZXJsYXk6OmNyZWF0ZSh0aGlzKTsKKyAg
ICBtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkgPSBvdmVybGF5LmdldCgpOworICAgIG1fd2ViUGFn
ZS0+aW5zdGFsbFBhZ2VPdmVybGF5KG92ZXJsYXkucmVsZWFzZSgpLCB0cnVlKTsKKyAgICBtX3Rl
bGVwaG9uZU51bWJlck92ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOworfQorCit2b2lkIFRlbGVw
aG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpkZXN0cm95T3ZlcmxheSgpCit7CisgICAgaWYg
KCFtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2Vi
UGFnZS0+dW5pbnN0YWxsUGFnZU92ZXJsYXkobV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5LCBmYWxz
ZSk7Cit9CisKK3ZvaWQgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6OnBhZ2VPdmVy
bGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5KikKK3sKKyAgICAvLyBCZWZvcmUgdGhlIG92ZXJsYXkg
aXMgZGVzdHJveWVkLCBpdCBzaG91bGQgaGF2ZSBtb3ZlZCBvdXQgb2YgdGhlIFdlYlBhZ2UsCisg
ICAgLy8gYXQgd2hpY2ggcG9pbnQgd2UgYWxyZWFkeSBjbGVhcmVkIG91ciBiYWNrIHBvaW50ZXIu
CisgICAgQVNTRVJUKCFtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkpOworfQorCit2b2lkIFRlbGVw
aG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3Zlcmxh
eSosIFdlYlBhZ2UqIHdlYlBhZ2UpCit7CisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChtX3RlbGVwaG9uZU51bWJlck92ZXJsYXkpOworICAgIG1fdGVsZXBo
b25lTnVtYmVyT3ZlcmxheSA9IDA7Cit9CisKK3ZvaWQgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNv
bnRyb2xsZXI6OmRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikKK3sKK30K
KworVmVjdG9yPEludFJlY3Q+IFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpyZWN0
c0ZvckRyYXdpbmcoKSBjb25zdAoreworICAgIFZlY3RvcjxJbnRSZWN0PiByZXN1bHQ7CisgICAg
CisgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBjaG9rZSBpZiB0aGUgcmFuZ2Ugd3JhcHMgYXJvdW5k
IHRoZSBlZGdlIG9mIHRoZSB2aWV3LgorICAgIC8vIFdoYXQgc2hvdWxkIHdlIGRvIGluIHRoYXQg
Y2FzZT8KKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV9jdXJyZW50U2VsZWN0aW9uUmFuZ2VzKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QocmFuZ2UtPmJvdW5kaW5nUmVj
dCgpKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFRlbGVwaG9uZU51bWJlck92
ZXJsYXlDb250cm9sbGVyOjpzZWxlY3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFJlZlB0cjxSYW5nZT4+JiByYW5nZXMpCit7CisjaWYgUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTA5MAorICAgIG1fY3VycmVudFNl
bGVjdGlvblJhbmdlcyA9IHJhbmdlczsKKyAgICAKKyAgICBjbGVhckhpZ2hsaWdodHMoKTsKKyAg
ICAKKyAgICBpZiAobV9jdXJyZW50U2VsZWN0aW9uUmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
ZGVzdHJveU92ZXJsYXkoKTsKKyAgICBlbHNlCisgICAgICAgIGNyZWF0ZU92ZXJsYXlJZk5lZWRl
ZCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmFuZ2VzKTsKKyNlbmRpZgorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9U
ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwNjc2YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9UZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRlbGVwaG9u
ZU51bWJlck92ZXJsYXlDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTikKKworI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgUmFuZ2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIAorY2xh
c3MgV2ViUGFnZTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCit0eXBlZGVmIHZvaWQqIERESGln
aGxpZ2h0UmVmOworI2VuZGlmCisKK2NsYXNzIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9s
bGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI+
LCBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworcHVibGljOgorCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI+IGNyZWF0ZShXZWJQYWdl
KiB3ZWJQYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZWxlcGhvbmVO
dW1iZXJPdmVybGF5Q29udHJvbGxlcih3ZWJQYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBzZWxl
Y3RlZFRlbGVwaG9uZU51bWJlclJhbmdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpSYW5nZT4+Jik7CisgICAgCitwcml2YXRlOgorICAgIFRlbGVwaG9uZU51bWJlck92ZXJs
YXlDb250cm9sbGVyKFdlYlBhZ2UqKTsKKworICAgIHZvaWQgY3JlYXRlT3ZlcmxheUlmTmVlZGVk
KCk7CisgICAgdm9pZCBkZXN0cm95T3ZlcmxheSgpOworICAgIAorICAgIHZvaWQgY2xlYXJIaWdo
bGlnaHRzKCk7CisgICAgdm9pZCBjbGVhck1vdXNlRG93bkluZm9ybWF0aW9uKCk7CisgICAgCisg
ICAgdm9pZCBoYW5kbGVUZWxlcGhvbmVDbGljaygpOworICAgIAorICAgIFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiByZWN0c0ZvckRyYXdpbmcoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBw
YWdlT3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2Uq
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3Qp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29u
c3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworCisgICAgUmVmUHRyPFdlYlBhZ2U+IG1fd2Vi
UGFnZTsKKyAgICBQYWdlT3ZlcmxheSogbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5OworICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+PiBtX2N1cnJlbnRTZWxlY3Rpb25SYW5nZXM7Cisg
ICAgCisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFZlY3RvcjxSZXRhaW5QdHI8RERIaWdo
bGlnaHRSZWY+PiBtX2hpZ2hsaWdodHM7CisgICAgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiBt
X2N1cnJlbnRNb3VzZURvd25IaWdobGlnaHQ7CisjZW5kaWYKKyAgICAKKyAgICBXZWJDb3JlOjpJ
bnRQb2ludCBtX21vdXNlRG93blBvc2l0aW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pCisjZW5kaWYg
Ly8gVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYyNGQ1OWYuLjA3YWMzNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUz
LDYgKzUzLDcgQEAKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJTZXNzaW9u
VHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlRlbGVw
aG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCIKQEAgLTQ1NDEsNSArNDU0MiwxNCBAQCBib29sIFdl
YlBhZ2U6OnN5bmNocm9ub3VzTWVzc2FnZXNTaG91bGRTcGluUnVuTG9vcCgpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogICAgIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikK
K1RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyJiBXZWJQYWdlOjp0ZWxlcGhvbmVOdW1i
ZXJPdmVybGF5Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX3RlbGVwaG9uZU51bWJlck92ZXJs
YXlDb250cm9sbGVyKQorICAgICAgICBtX3RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVy
ID0gVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6OmNyZWF0ZSh0aGlzKTsKKworICAg
IHJldHVybiAqbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcjsKK30KKyNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGIxNGMzMjYuLmJkYThkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTc4LDYgKzE3OCwxMCBAQCBjbGFzcyBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjsKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKK2NsYXNzIFRlbGVwaG9u
ZU51bWJlck92ZXJsYXlDb250cm9sbGVyOworI2VuZGlmCisKIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxQYWdlT3ZlcmxheT4+IFBhZ2VPdmVybGF5TGlzdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewpAQCAtNzcw
LDYgKzc3NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gV2hpbGUgdGhpcyBpcyBub3QgaWRlYWwsIGl0
IGRvZXMgbm90IGhhdmUgdG8gYmUgYXBwbGllZCB0byBldmVyeSBwbGF0Zm9ybSBhdCB0aGUgbW9t
ZW50LgogICAgIHN0YXRpYyBib29sIHN5bmNocm9ub3VzTWVzc2FnZXNTaG91bGRTcGluUnVuTG9v
cCgpOwogICAgIAorI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikKKyAgICBU
ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlciYgdGVsZXBob25lTnVtYmVyT3ZlcmxheUNv
bnRyb2xsZXIoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTExNzIsNiArMTE4
MCwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJHTCkKICAgICBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgbV9zeXN0ZW1XZWJHTFBvbGljeTsKICNlbmRpZgorCisjaWYgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKQorICAgIFJlZlB0cjxUZWxlcGhvbmVOdW1iZXJPdmVybGF5
Q29udHJvbGxlcj4gbV90ZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UZWxlcGhvbmVOdW1i
ZXJPdmVybGF5Q29udHJvbGxlck1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xNmE0ZDJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlck1hYy5tbQpAQCAt
MCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
VGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikKKworI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2lu
Zy5oPgorCisjaWYgX19oYXNfaW5jbHVkZSg8RGF0YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdp
bmcuaD4pCisjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzL0RESGlnaGxpZ2h0RHJhd2luZy5oPgorI2lt
cG9ydCA8RGF0YURldGVjdG9ycy9EREhpZ2hsaWdodERyYXdpbmdfUHJpdmF0ZS5oPgorI2Vsc2UK
K3R5cGVkZWYgdm9pZCogRERIaWdobGlnaHRSZWY7CisjZW5kaWYKKworU09GVF9MSU5LX1BSSVZB
VEVfRlJBTUVXT1JLX09QVElPTkFMKERhdGFEZXRlY3RvcnMpCitTT0ZUX0xJTksoRGF0YURldGVj
dG9ycywgRERIaWdobGlnaHRDcmVhdGVXaXRoUmVjdHNJblZpc2libGVSZWN0LCBEREhpZ2hsaWdo
dFJlZiwgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0dSZWN0ICogcmVjdHMsIENGSW5kZXgg
Y291bnQsIENHUmVjdCBnbG9iYWxWaXNpYmxlUmVjdCwgQm9vbGVhbiB3aXRoQXJyb3cpLCAoYWxs
b2NhdG9yLCByZWN0cywgY291bnQsIGdsb2JhbFZpc2libGVSZWN0LCB3aXRoQXJyb3cpKQorU09G
VF9MSU5LKERhdGFEZXRlY3RvcnMsIERESGlnaGxpZ2h0R2V0TGF5ZXJXaXRoQ29udGV4dCwgQ0dM
YXllclJlZiwgKERESGlnaGxpZ2h0UmVmIGhpZ2hsaWdodCwgQ0dDb250ZXh0UmVmIGNvbnRleHQp
LCAoaGlnaGxpZ2h0LCBjb250ZXh0KSkKK1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hs
aWdodEdldEJvdW5kaW5nUmVjdCwgQ0dSZWN0LCAoRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0KSwg
KGhpZ2hsaWdodCkpCitTT0ZUX0xJTksoRGF0YURldGVjdG9ycywgRERIaWdobGlnaHRQb2ludElz
T25IaWdobGlnaHQsIEJvb2xlYW4sIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQsIENHUG9pbnQg
cG9pbnQsIEJvb2xlYW4qIG9uQnV0dG9uKSwgKGhpZ2hsaWdodCwgcG9pbnQsIG9uQnV0dG9uKSkK
K1NPRlRfTElOSyhEYXRhRGV0ZWN0b3JzLCBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQsIHZv
aWQsIChEREhpZ2hsaWdodFJlZiBoaWdobGlnaHQsIEJvb2xlYW4gYnV0dG9uUHJlc3NlZCksICho
aWdobGlnaHQsIGJ1dHRvblByZXNzZWQpKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisgICAgCit2b2lkIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250
cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxheSogb3ZlcmxheSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVj
dCkKK3sKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSByZWN0c0ZvckRyYXdpbmcoKTsKKyAg
ICBpZiAocmVjdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY2xlYXJI
aWdobGlnaHRzKCk7CisgICAgCisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNz
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHJlY3QgOiBy
ZWN0cykgeworICAgICAgICBDR1JlY3QgY2dSZWN0c1tdID0geyAoQ0dSZWN0KXJlY3QgfTsKKyAg
ICAgICAgRERIaWdobGlnaHRSZWYgaGlnaGxpZ2h0ID0gRERIaWdobGlnaHRDcmVhdGVXaXRoUmVj
dHNJblZpc2libGVSZWN0KG51bGxwdHIsIGNnUmVjdHMsIDEsIChDR1JlY3QpZGlydHlSZWN0LCB0
cnVlKTsKKyAgICAgICAgbV9oaWdobGlnaHRzLmFwcGVuZChhZG9wdENGKGhpZ2hsaWdodCkpOwor
ICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiB0aGUgbW91c2UgaXMgY3VycmVu
dGx5IGRvd24gaW5zaWRlIHRoaXMgaGlnaGxpZ2h0J3MgYnV0dG9uLgorICAgICAgICBpZiAobV9t
b3VzZURvd25Qb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CisgICAgICAgICAgICBCb29sZWFuIG9u
QnV0dG9uOworICAgICAgICAgICAgaWYgKERESGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGhp
Z2hsaWdodCwgKENHUG9pbnQpbV9tb3VzZURvd25Qb3NpdGlvbiwgJm9uQnV0dG9uKSkgeworICAg
ICAgICAgICAgICAgIGlmIChvbkJ1dHRvbikgeworICAgICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRNb3VzZURvd25IaWdobGlnaHQgPSBoaWdobGlnaHQ7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5n
LCBidXQgU09GVF9MSU5LIGlzbid0IHdvcmtpbmcgZm9yIHRoaXMgbWV0aG9kLgorICAgICAgICAg
ICAgICAgICAgICAvLyBEREhpZ2hsaWdodFNldEJ1dHRvblByZXNzZWQoaGlnaGxpZ2h0LCB0cnVl
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIENHTGF5ZXJSZWYgaGlnaGxpZ2h0TGF5ZXIgPSBEREhpZ2hsaWdodEdldExheWVy
V2l0aENvbnRleHQoaGlnaGxpZ2h0LCBjZ0NvbnRleHQpOworICAgICAgICBDR1JlY3QgaGlnaGxp
Z2h0Qm91bmRpbmdSZWN0ID0gRERIaWdobGlnaHRHZXRCb3VuZGluZ1JlY3QoaGlnaGxpZ2h0KTsK
KyAgICAgICAgCisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihn
cmFwaGljc0NvbnRleHQpOworCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUodG9G
bG9hdFNpemUoaGlnaGxpZ2h0Qm91bmRpbmdSZWN0Lm9yaWdpbikpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC50cmFuc2xhdGUoRmxvYXRTaXplKDAsIC1oaWdobGlnaHRCb3VuZGluZ1JlY3Quc2l6ZS5oZWln
aHQpKTsKKyAgICAgICAgCisgICAgICAgIENHUmVjdCBoaWdobGlnaHREcmF3UmVjdCA9IGhpZ2hs
aWdodEJvdW5kaW5nUmVjdDsKKyAgICAgICAgaGlnaGxpZ2h0RHJhd1JlY3Qub3JpZ2luLnggPSAw
OworICAgICAgICBoaWdobGlnaHREcmF3UmVjdC5vcmlnaW4ueSA9IDA7CisgICAgICAgIAorICAg
ICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY2dDb250ZXh0LCBoaWdobGlnaHREcmF3UmVj
dCwgaGlnaGxpZ2h0TGF5ZXIpOworICAgIH0KK30KKyAgICAKK3ZvaWQgVGVsZXBob25lTnVtYmVy
T3ZlcmxheUNvbnRyb2xsZXI6OmhhbmRsZVRlbGVwaG9uZUNsaWNrKCkKK3sKKyAgICAvLyBGSVhN
RTogSGFuZGxlIHRoZSBidXR0b24gY2xpY2sgaGVyZS4KK30KKyAgICAKK2Jvb2wgVGVsZXBob25l
TnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBX
ZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgICBJbnRQb2ludCBtb3VzZVBvc2l0aW9uID0gbV93
ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKTsKKyAgICAKKyAgICAvLyBJZiB0aGlzIGV2ZW50IGhhcyBub3Ro
aW5nIHRvIGRvIHdpdGggdGhlIGxlZnQgYnV0dG9uLCBpdCBjbGVhcnMgdGhlIGN1cnJlbnQgbW91
c2UgZG93biB0cmFja2luZyBhbmQgd2UncmUgZG9uZSBwcm9jZXNzaW5nIGl0LgorICAgIGlmIChl
dmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpMZWZ0QnV0dG9uKSB7CisgICAgICAgIGNs
ZWFyTW91c2VEb3duSW5mb3JtYXRpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICAKKyAgICBSZXRhaW5QdHI8RERIaWdobGlnaHRSZWY+IGN1cnJlbnRIaWdobGlnaHQgPSBt
X2N1cnJlbnRNb3VzZURvd25IaWdobGlnaHQ7CisgICAgCisgICAgLy8gQ2hlY2sgYW5kIHNlZSBp
ZiB0aGUgbW91c2Ugd2VudCB1cCBhbmQgd2UgaGF2ZSBhIGN1cnJlbnQgbW91c2UgZG93biBoaWdo
bGlnaHQgYnV0dG9uLgorICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXAg
JiYgY3VycmVudEhpZ2hsaWdodCkgeworICAgICAgICBjbGVhck1vdXNlRG93bkluZm9ybWF0aW9u
KCk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgbW91c2UgbGlmdGVkIHdoaWxlIHN0aWxs
IG92ZXIgdGhlIGhpZ2hsaWdodCBidXR0b24gdGhhdCBpdCB3ZW50IGRvd24gb24sIHRoZW4gdGhh
dCBpcyBhIGNsaWNrLgorICAgICAgICBCb29sZWFuIG9uQnV0dG9uOworICAgICAgICBpZiAoRERI
aWdobGlnaHRQb2ludElzT25IaWdobGlnaHQoY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgKENHUG9p
bnQpbW91c2VQb3NpdGlvbiwgJm9uQnV0dG9uKSAmJiBvbkJ1dHRvbikgeworICAgICAgICAgICAg
aGFuZGxlVGVsZXBob25lQ2xpY2soKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgLy8gQ2hlY2sgYW5kIHNlZSBpZiB0aGUgbW91c2UgbW92ZWQgd2l0aGluIHRo
ZSBjb25maW5lcyBvZiB0aGUgREQgaGlnaGxpZ2h0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQudHlw
ZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYgY3VycmVudEhpZ2hsaWdodCkgeworICAgICAg
ICBCb29sZWFuIG9uQnV0dG9uOworICAgICAgICAKKyAgICAgICAgLy8gTW92aW5nIHdpdGggdGhl
IG1vdXNlIGJ1dHRvbiBkb3duIGlzIG9rYXkgYXMgbG9uZyBhcyB0aGUgbW91c2UgbmV2ZXIgbGVh
dmVzIHRoZSBoaWdobGlnaHQgYnV0dG9uLgorICAgICAgICBpZiAoRERIaWdobGlnaHRQb2ludElz
T25IaWdobGlnaHQoY3VycmVudEhpZ2hsaWdodC5nZXQoKSwgKENHUG9pbnQpbW91c2VQb3NpdGlv
biwgJm9uQnV0dG9uKSAmJiBvbkJ1dHRvbikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAKKyAgICAgICAgY2xlYXJNb3VzZURvd25JbmZvcm1hdGlvbigpOworICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLyBDaGVjayBhbmQgc2VlIGlm
IHRoZSBtb3VzZSB3ZW50IGRvd24gb3ZlciBhIEREIGhpZ2hsaWdodCBidXR0b24uCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CisgICAgICAgIEFTU0VSVCgh
bV9jdXJyZW50TW91c2VEb3duSGlnaGxpZ2h0KTsKKyAgICAgICAgCisgICAgICAgIGZvciAoYXV0
byYgaGlnaGxpZ2h0IDogbV9oaWdobGlnaHRzKSB7CisgICAgICAgICAgICBCb29sZWFuIG9uQnV0
dG9uOworICAgICAgICAgICAgaWYgKERESGlnaGxpZ2h0UG9pbnRJc09uSGlnaGxpZ2h0KGhpZ2hs
aWdodC5nZXQoKSwgKENHUG9pbnQpbW91c2VQb3NpdGlvbiwgJm9uQnV0dG9uKSAmJiBvbkJ1dHRv
bikgeworICAgICAgICAgICAgICAgIG1fbW91c2VEb3duUG9zaXRpb24gPSBtb3VzZVBvc2l0aW9u
OworICAgICAgICAgICAgICAgIG1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodCA9IGhpZ2hsaWdo
dDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBkbyB0aGUgZm9sbG93aW5nLCBidXQgU09GVF9MSU5LIGlzbid0IHdvcmtpbmcgZm9yIHRoaXMg
bWV0aG9kLgorICAgICAgICAgICAgICAgIC8vIERESGlnaGxpZ2h0U2V0QnV0dG9uUHJlc3NlZCho
aWdobGlnaHQuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IG1fdGVsZXBob25lTnVtYmVyT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgICAgIAorICAgIHJldHVybiBmYWxzZTsK
K30KKyAgICAKK3ZvaWQgVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyTW91
c2VEb3duSW5mb3JtYXRpb24oKQoreworICAgIG1fY3VycmVudE1vdXNlRG93bkhpZ2hsaWdodCA9
IG51bGxwdHI7CisgICAgbV9tb3VzZURvd25Qb3NpdGlvbiA9IEludFBvaW50KCk7Cit9CisgICAg
Cit2b2lkIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyOjpjbGVhckhpZ2hsaWdodHMo
KQoreworICAgIG1faGlnaGxpZ2h0cy5jbGVhcigpOyAgICAKKyAgICBtX2N1cnJlbnRNb3VzZURv
d25IaWdobGlnaHQgPSBudWxscHRyOworfQorICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKFRF
TEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>