<?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>47834</bug_id>
          
          <creation_ts>2010-10-18 10:19:35 -0700</creation_ts>
          <short_desc>Refactor HTMLInputElement: Move createRender(), appendFormData(), saveFormControlState() and restoreFormControlState() to InputTypes.</short_desc>
          <delta_ts>2010-10-25 19:28:53 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295589</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-18 10:19:35 -0700</bug_when>
    <thetext>Refactor HTMLInputElement: Move createRender(), appendFormData(), saveFormControlState() and restoreFormControlState() to InputTypes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295597</commentid>
    <comment_count>1</comment_count>
      <attachid>71055</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-18 10:26:52 -0700</bug_when>
    <thetext>Created attachment 71055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295610</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-18 10:47:57 -0700</bug_when>
    <thetext>Attachment 71055 did not build on qt:
Build output: http://queues.webkit.org/results/4482030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295614</commentid>
    <comment_count>3</comment_count>
      <attachid>71055</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-18 10:59:16 -0700</bug_when>
    <thetext>Comment on attachment 71055
Patch

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

I think we should move the checks for empty name() into the individual appendFormData functions.

review- because I had enough comments plus the Qt build seems to have failed.

&gt; WebCore/html/BaseButtonInputType.cpp:3
&gt; + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.

Too much copyright for the contents of this file. I don’t think you need any of those Apple copyrights for the one or two lines of code here.

&gt; WebCore/html/BaseCheckableInputType.cpp:55
&gt; +RenderObject* BaseCheckableInputType::createRenderer(RenderArena*, RenderStyle* style) const
&gt; +{
&gt; +    return RenderObject::createObject(element(), style);
&gt; +}

Can this default implementation go into InputType instead of BaseCheckableInputType?

&gt; WebCore/html/BaseCheckableInputType.h:45
&gt; +    virtual bool saveFormControlState(String&amp;) const;
&gt; +    virtual void restoreFormControlState(const String&amp;) const;
&gt; +    virtual bool appendFormData(FormDataList&amp;, bool) const;
&gt; +    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const;

I think these can all be private rather than protected.

&gt; WebCore/html/HTMLFormControlElement.h:218
&gt; +    friend class TextFieldInputType;

Adding this friendship seems like the wrong approach. If we need one protected function to be public, then please do that instead.

&gt; WebCore/html/HTMLInputElement.cpp:812
&gt; +    // The image type generates its own names, but for other types there is no
&gt; +    // form data unless there&apos;s a name.
&gt; +    if (name().isEmpty() &amp;&amp; !isImageButton())
&gt;          return false;

It’s annoying to be left with an explicit isImageButton check here. The point of the InputType refactoring is to eliminate such things. Maybe we need another virtual function for this?

&gt; WebCore/html/HTMLInputElement.h:370
&gt; +    friend class ImageInputType;
&gt; +    friend class SubmitInputType;

I understand if we do need these friends, but please also do whatever you can to avoid them. Having one or two public functions that could otherwise be private is almost always preferable to having to friend another class, even in cases like this.

&gt; WebCore/html/ImageInputType.cpp:45
&gt; +    if (!element()-&gt;m_activeSubmit)
&gt; +        return false;

I’d like to see this accessed through a function, not a direct access to a data member.

&gt; WebCore/html/InputType.h:58
&gt; +    // -------- Type query functions

I don’t think this &quot;--------&quot; formatting adds much. Can’t we just use normal comments for these sections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297869</commentid>
    <comment_count>4</comment_count>
      <attachid>71536</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-22 01:38:43 -0700</bug_when>
    <thetext>Created attachment 71536
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297870</commentid>
    <comment_count>5</comment_count>
      <attachid>71055</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-22 01:45:49 -0700</bug_when>
    <thetext>Comment on attachment 71055
Patch

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

Thank you for reviewing.

&gt;&gt; WebCore/html/BaseButtonInputType.cpp:3
&gt;&gt; + * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; 
&gt; Too much copyright for the contents of this file. I don’t think you need any of those Apple copyrights for the one or two lines of code here.

I see.  I changed copyright headers with trivial existing code to &quot;2010 Google Inc.&quot; only.

&gt;&gt; WebCore/html/BaseCheckableInputType.cpp:55
&gt;&gt; +}
&gt; 
&gt; Can this default implementation go into InputType instead of BaseCheckableInputType?

Done.
Yes, RenderObject::createObject() should be the default.

&gt;&gt; WebCore/html/BaseCheckableInputType.h:45
&gt;&gt; +    virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const;
&gt; 
&gt; I think these can all be private rather than protected.

Done.

&gt;&gt; WebCore/html/HTMLFormControlElement.h:218
&gt;&gt; +    friend class TextFieldInputType;
&gt; 
&gt; Adding this friendship seems like the wrong approach. If we need one protected function to be public, then please do that instead.

Done.
I introduced placeholderShouldBeVisible() public and remove the friend declaration.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:812
&gt;&gt;          return false;
&gt; 
&gt; It’s annoying to be left with an explicit isImageButton check here. The point of the InputType refactoring is to eliminate such things. Maybe we need another virtual function for this?

Done.
I introduced isFormDataAppendable().

&gt;&gt; WebCore/html/HTMLInputElement.h:370
&gt;&gt; +    friend class SubmitInputType;
&gt; 
&gt; I understand if we do need these friends, but please also do whatever you can to avoid them. Having one or two public functions that could otherwise be private is almost always preferable to having to friend another class, even in cases like this.

Done.
I introduced new functions and removed the friends.

&gt;&gt; WebCore/html/InputType.h:58
&gt;&gt; +    // -------- Type query functions
&gt; 
&gt; I don’t think this &quot;--------&quot; formatting adds much. Can’t we just use normal comments for these sections?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299004</commentid>
    <comment_count>6</comment_count>
      <attachid>71536</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-25 11:47:38 -0700</bug_when>
    <thetext>Comment on attachment 71536
Patch 2

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

&gt; WebCore/html/HTMLInputElement.h:206
&gt; +    bool activeSubmit() const { return m_activeSubmit; }

This data member and function don’t have a great name. In fact I have no idea what the boolean means.

&gt; WebCore/html/InputType.h:49
&gt; +// One of InputType classes represents a type of HTMLInputElement.
&gt; +// Do not expose insntances of InputType and its subclasses to classes other
&gt; +// than HTMLInputElement.

The phrase “one of InputType classes” is not quite right here. I would word it more like this, “An InputType object represents the type-specific part of an HTMLInputElement.”

Typo: &quot;insntances&quot;.

The term “subclasses” is not a C++ term. Instead we should say “InputType and classes derived from it”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299239</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-25 19:27:39 -0700</bug_when>
    <thetext>Committed r70511: &lt;http://trac.webkit.org/changeset/70511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299240</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-25 19:28:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 71536 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71536&amp;action=review
&gt; 
&gt; &gt; WebCore/html/HTMLInputElement.h:206
&gt; &gt; +    bool activeSubmit() const { return m_activeSubmit; }
&gt; 
&gt; This data member and function don’t have a great name. In fact I have no idea what the boolean means.

I found we already had HTMLInputELement::isActivatedSubmit(), and removed activeSubmit().

&gt; &gt; WebCore/html/InputType.h:49
&gt; &gt; +// One of InputType classes represents a type of HTMLInputElement.
&gt; &gt; +// Do not expose insntances of InputType and its subclasses to classes other
&gt; &gt; +// than HTMLInputElement.
&gt; 
&gt; The phrase “one of InputType classes” is not quite right here. I would word it more like this, “An InputType object represents the type-specific part of an HTMLInputElement.”
&gt; 
&gt; Typo: &quot;insntances&quot;.
&gt; 
&gt; The term “subclasses” is not a C++ term. Instead we should say “InputType and classes derived from it”.

Fixed.  Thank you!.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71055</attachid>
            <date>2010-10-18 10:26:52 -0700</date>
            <delta_ts>2010-10-22 01:45:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47834-20101019022650.patch</filename>
            <type>text/plain</type>
            <size>59327</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCBmMTRkMGUxM2QyODRiODViOGNjNmY5ZjMyYTQ2MTRkYTMwYWYyMDg5Li4wMTUwY2U0YmRjMDJj
MWJiZGJiOWFhMzM5ZDA3N2RiYzk5ZmZkZDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0yNjEsNiArMjYxLDggQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJaGlzdG9yeS9hbmRyb2lkL0hpc3RvcnlJ
dGVtQW5kcm9pZC5jcHAgXAogCVwKIAlodG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCisJaHRt
bC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBcCisJaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBl
LmNwcCBcCiAJaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIFwKIAlodG1sL0Jhc2VU
ZXh0SW5wdXRUeXBlLmNwcCBcCiAJaHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDFhNWJjMzMwZmQ0YWRkZDYyZGFlNmQzMzhmZDcxOGJlMThiYmNlNTAuLmM5YTY0MjliM2ViMzRm
N2NlY2MxODQxZDU0NWUxNDc4YjQ4NjUzZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTQ0LDYgKzk0NCw4IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAogICAgIGh0bWwv
QXN5bmNJbWFnZVJlc2l6ZXIuY3BwCisgICAgaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAor
ICAgIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKICAgICBodG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5jcHAKICAgICBodG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcAogICAgIGh0
bWwvQnV0dG9uSW5wdXRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMjM3NzM5YWYzZDE2OGQxMzU3Y2VmYTYxMDRiMzEwZGY5
YzE5Nzg2Li4xNjcyOWYwYmE5MjI0MTM2ZDBmZDIzNTliZjk4ZGUwNGVjNTNhYjBiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDg5IEBACisyMDEwLTEwLTE4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBI
VE1MSW5wdXRFbGVtZW50OiBNb3ZlIGNyZWF0ZVJlbmRlcigpLCBhcHBlbmRGb3JtRGF0YSgpLAor
ICAgICAgICBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGFuZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0
ZSgpIHRvCisgICAgICAgIElucHV0VHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzgzNAorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgQmFz
ZUJ1dHRvbklucHV0VHlwZSBhbmQKKyAgICAgICAgQmFzZUNoZWNrYWJsZUlucHV0VHlwZS4gVGhl
eSBhcmUgc3VwZXIgY2xhc3NlcyBvZiBzb21lIGNvbmNyZXRlCisgICAgICAgIElucHV0VHlwZSBj
bGFzc2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBhIGNvZGUgcmVmYWN0b3Jpbmcu
CisKKyAgICAgICAgKiBBbmRyb2lkLm1rOiBBZGQgQmFzZUJ1dHRvbklucHV0VHlwZSBhbmQgQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZSBmaWxlcy4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogZGl0
dG8uCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IGRpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IGRpdHRvLgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBkaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGRpdHRvLgorICAgICAgICAqIGh0bWwvQmFzZUJ1dHRv
bklucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1dHRvbklucHV0
VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUJ1dHRvbklucHV0
VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlw
ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VCdXR0b25JbnB1dFR5cGU6OkJhc2VC
dXR0b25JbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c2F2
ZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0
VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNo
ZWNrYWJsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6QmFz
ZUNoZWNrYWJsZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VDaGVj
a2FibGVJbnB1dFR5cGU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
QnV0dG9uSW5wdXRUeXBlLmg6IENoYW5nZSB0aGUgc3VwZXIgY2xhc3MuCisgICAgICAgIChXZWJD
b3JlOjpCdXR0b25JbnB1dFR5cGU6OkJ1dHRvbklucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9D
aGVja2JveElucHV0VHlwZS5oOiBDaGFuZ2UgdGhlIHN1cGVyIGNsYXNzLgorICAgICAgICAoV2Vi
Q29yZTo6Q2hlY2tib3hJbnB1dFR5cGU6OkNoZWNrYm94SW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6
YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRl
UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5oOiBDaGFuZ2UgdGhlIHN1
cGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6RmlsZUlucHV0VHlw
ZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICAg
QWRkIFRleHRGaWVsZElucHV0VHlwZSBhcyBhIGZyaWVuZCBiZWNhdXNlIGl0IGFjY2Vzc2VzCisg
ICAgICAgICAgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKS4KKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c2F2ZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5o
OgorICAgICAgICAgIEFkZCBJbWFnZUlucHV0VHlwZSBhbmQgU3VibWl0SW5wdXRUeXBlIGFzIGZy
aWVuZHMgYmVjYXVzZSB0aGV5CisgICAgICAgICAgYWNjZXNzIG1fYWN0aXZlU3VibWl0LgorICAg
ICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpZGRl
bklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRU
eXBlLmg6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5w
dXRUeXBlLmg6IENoYW5nZSB0aGUgc3VwZXIgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUlucHV0VHlwZTo6SW1hZ2VJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKiBo
dG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3N3b3JkSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRy
b2xTdGF0ZSk6CisgICAgICAgICogaHRtbC9QYXNzd29yZElucHV0VHlwZS5oOgorICAgICAgICAq
IGh0bWwvUmFkaW9JbnB1dFR5cGUuaDogQ2hhbmdlIHRoZSBzdXBlciBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlvSW5wdXRUeXBlOjpSYWRpb0lucHV0VHlwZSk6CisgICAgICAgICogaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6
Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL1Jlc2V0SW5wdXRUeXBlLmg6IENoYW5nZSB0aGUgc3VwZXIgY2xhc3MuCisgICAg
ICAgIChXZWJDb3JlOjpSZXNldElucHV0VHlwZTo6UmVzZXRJbnB1dFR5cGUpOgorICAgICAgICAq
IGh0bWwvU3VibWl0SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1Ym1pdElucHV0
VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAqIGh0bWwvU3VibWl0SW5wdXRUeXBlLmg6
IENoYW5nZSB0aGUgc3VwZXIgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpTdWJtaXRJbnB1dFR5
cGU6OlN1Ym1pdElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaDoKKwogMjAxMC0xMC0xMyAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
YSB0cml2aWFsIGNoYW5nZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGRjNmU1NDgwY2Y4YjVmZTc5Y2M3YmEzZDY2NmRl
ZjU4YjQxZWIzNzAuLjZmYmY3NzAzZWNlMWQ0OTJiMDIyMTZlYjE0NDE2NTgyNTY3YmU1ZWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtMTQ0NCw2ICsxNDQ0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5oIFwKIAlXZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
Y3BwIFwKIAlXZWJDb3JlL2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuaCBcCisJV2ViQ29yZS9odG1s
L0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0
VHlwZS5oIFwKKwlXZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgXAorCVdl
YkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIFwKIAlXZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmggXAogCVdlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAgXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCAyNWY5ZDdhNjEyMGY0Y2NjOTU0NjQzMGUwMTExNGY5NTVmZWJhZjc3Li4wMWExMjc2YjM1ZmMx
NGQxNjNhMTQ5MTc2NzdhOTdlYjA0NTgyODU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTU0Miw2ICsxNTQyLDEwIEBACiAg
ICAgICAgICAgICAnaGlzdG9yeS9QYWdlQ2FjaGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9Bc3lu
Y0ltYWdlUmVzaXplci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
aCcsCisgICAgICAgICAgICAnaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCcsCisgICAgICAg
ICAgICAnaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgnLAorICAgICAgICAgICAgJ2h0bWwvQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQmFzZUNoZWNrYWJs
ZUlucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwJywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGVlZTU2ZWViZmE0
MTEwMjg4ZWE5NzY2YzJjNmE3YmEyMDg2MWQ1YjQuLjY0MTgyOTY3NmY0OTcxMjQ5YTA2OWFjYzQ3
MDliMjRkNjdhY2FjZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtODM2LDYgKzgzNiw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGhp
c3RvcnkvcXQvSGlzdG9yeUl0ZW1RdC5jcHAgXAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmNwcCBc
CiAgICAgaHRtbC9Bc3luY0ltYWdlUmVzaXplci5jcHAgXAorICAgIGh0bWwvQmFzZUJ1dHRvbklu
cHV0VHlwZS5jcHAgXAorICAgIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgXAogICAg
IGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBcCiAgICAgaHRtbC9CYXNlVGV4dElu
cHV0VHlwZS5jcHAgXAogICAgIGh0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3YWYyZDdmZDgzY2IxMDhmMTEwZmVhYzA5YTg5
MGU3NTNmYzc0ZDkwLi5lY2IzYTQzZTY4NjNjYWU1MzRjMTNkNzc1MjI0OTVmNGMzNzU2Mzk2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ3ODk3LDYgKzQ3ODk3LDIy
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJhc2VCdXR0b25JbnB1dFR5cGUuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJhc2VDaGVja2FibGVJbnB1dFR5cGUu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhNzk3MjVm
MWY1YzBkYWFhYjI2NTMxOTllMjA2YTcxNDBmODg2Y2MuLjIzNmJlZWJmMWZmNGM5MjMyZGY4NWQ0
ZjdiNjczZjQ1ZTU5NjBkMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04NDQsNiArODQ0LDEwIEBACiAJCTM3OTkxOTk2MTIwMERERjQwMEVBMDQxQyAv
KiBXT0ZGRmlsZUZvcm1hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzk5MTk5NDEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3Bw
ICovOyB9OwogCQkzNzk5MTk5NzEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOTk1MTIw
MERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovOyB9OwogCQkzNzk5MTlCMjEyMDBE
RTUwMDBFQTA0MUMgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3OTkxOUIxMTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6LmR5bGli
ICovOyB9OworCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlF
NjFDNTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgKi87IH07CisJ
CTM3OUU2MUNBMTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlFNjFDNjEyNkNBNUMz
MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oICovOyB9OworCQkzNzlFNjFDQjEyNkNB
NUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlFNjFDNzEyNkNBNUMzMDBCNjNFOEQg
LyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgKi87IH07CisJCTM3OUU2MUNDMTI2Q0E1QzQw
MEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzlFNjFDODEyNkNBNUMzMDBCNjNFOEQgLyogQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZS5oICovOyB9OwogCQkzN0FDQ0U0MjBEQTI5ODBGMDA4OUU2MDIg
LyogRm9udFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3QUNDRTQxMERBMjk4MEYwMDg5RTYwMiAvKiBGb250UmVuZGVyaW5nTW9k
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3
QUNDRjY5MERBNDE0RTcwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBQ0NFNjIwREEyQUE5NjAwODlF
NjAyIC8qIEZvbnREZXNjcmlwdGlvbi5jcHAgKi87IH07CiAJCTM3QzIzNjBCMTA5N0VERUQwMEVG
OUY3MiAvKiBGb250Q29tcGxleFRleHRNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzdDMjM2MEExMDk3RURFRDAwRUY5RjcyIC8qIEZvbnRDb21w
bGV4VGV4dE1hYy5jcHAgKi87IH07CkBAIC02ODY1LDYgKzY4NjksMTAgQEAKIAkJMzc5OTE5OTQx
MjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdPRkZGaWxlRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdPRkZGaWxlRm9ybWF0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdPRkZGaWxlRm9ybWF0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTkxOUIxMTIwMERFNTAwMEVBMDQxQyAvKiBsaWJ6
LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGliOyBwYXRoID0gL3Vzci9s
aWIvbGliei5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJMzc5RTYxQzUx
MjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUJ1dHRvbklucHV0VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3OUU2MUM2MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0
dG9uSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VCdXR0
b25JbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzc5RTYxQzcxMjZD
QTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM3OUU2MUM4MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNl
Q2hlY2thYmxlSW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJh
c2VDaGVja2FibGVJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdB
Q0NFNDEwREEyOTgwRjAwODlFNjAyIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTM3QUNDRTYyMERBMkFBOTYwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udERlc2NyaXB0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdDMjM2MEExMDk3RURFRDAw
RUY5RjcyIC8qIEZvbnRDb21wbGV4VGV4dE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250Q29tcGxleFRleHRNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ0OTgsNiArMTQ1MDYsMTAgQEAKIAkJCQk5N0MxRjU1MTEyMjg1NTg4MDBF
REU2MTYgLyogcGFyc2VyICovLAogCQkJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3lu
Y0ltYWdlUmVzaXplci5jcHAgKi8sCiAJCQkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFz
eW5jSW1hZ2VSZXNpemVyLmggKi8sCisJCQkJMzc5RTYxQzUxMjZDQTVDMzAwQjYzRThEIC8qIEJh
c2VCdXR0b25JbnB1dFR5cGUuY3BwICovLAorCQkJCTM3OUU2MUM2MTI2Q0E1QzMwMEI2M0U4RCAv
KiBCYXNlQnV0dG9uSW5wdXRUeXBlLmggKi8sCisJCQkJMzc5RTYxQzcxMjZDQTVDMzAwQjYzRThE
IC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwICovLAorCQkJCTM3OUU2MUM4MTI2Q0E1QzMw
MEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggKi8sCiAJCQkJRjU5Qzk1RkQxMjU1
QjIzRjAwMDYyM0MwIC8qIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU5
Qzk1RkUxMjU1QjIzRjAwMDYyM0MwIC8qIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oICovLAog
CQkJCUY1NUIzRDc5MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgKi8s
CkBAIC0xODMxOCw2ICsxODMzMCw4IEBACiAJCQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTI0RUU4MEMyNjQx
Q0QwMDlFMjM0OSAvKiBCYXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyMjBEMDA2
QzFEMDBFRjZGMjYgLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLywKKwkJCQkzNzlFNjFDQTEyNkNB
NUM0MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Mzc5RTYxQ0MxMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1OUM5NjAwMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREFFMTI1MUYxMkQwMDNFRjI2
OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NDYyRDgxMDdB
N0I0QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTQz
Miw2ICsyMTQ0Niw4IEBACiAJCQkJQkNBOENBNUYxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3
YXJkTGlzdEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMjRFRTcwQzI2NDFDRDAwOUUy
MzQ5IC8qIEJhckluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBMjEwRDAwNkMxRDAw
RUY2RjI2IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzNzlFNjFDOTEyNkNBNUMz
MDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
NzlFNjFDQjEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNTlDOTVGRjEyNTVCMjNGMDAwNjIzQzAgLyogQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREFEMTI1MUYxMkQwMDNF
RjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTcyMjA0
QjExRDI5NjA1MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwIGIvV2Vi
Q29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NDhiY2VhM2Y1
MTdhMGZkZThmMWU4MTgwMWNmNzg5Yjg1MzhlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJCYXNlQnV0dG9uSW5wdXRUeXBlLmgiCisKKyNpbmNsdWRlICJIVE1MaW5wdXRFbGVtZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVyQnV0dG9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Ym9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBi
b29sKSBjb25zdAoreworICAgIC8vIEJ1dHRvbnMgZXhjZXB0IG92ZXJyaWRkZW4gdHlwZXMgYXJl
IG5ldmVyIHN1Y2Nlc3NmdWwuCisgICAgcmV0dXJuIGZhbHNlOworfQorCitSZW5kZXJPYmplY3Qq
IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKSBjb25zdAoreworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJCdXR0
b24oZWxlbWVudCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdmNjgzYmFhOTFiMzU3YWY2Y2M5MmEyODRhM2E3
MjI3YmIyYzEzZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5w
dXRUeXBlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQmFzZUJ1dHRvbklucHV0VHlwZV9oCisj
ZGVmaW5lIEJhc2VCdXR0b25JbnB1dFR5cGVfaAorCisjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQmFzZSBvZiBidXR0b24sIGZpbGUsIGltYWdlLCBy
ZXNldCwgYW5kIHN1Ym1pdCB0eXBlcy4KK2NsYXNzIEJhc2VCdXR0b25JbnB1dFR5cGUgOiBwdWJs
aWMgSW5wdXRUeXBlIHsKK3Byb3RlY3RlZDoKKyAgICBCYXNlQnV0dG9uSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorCitwcml2YXRl
OgorICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQmFzZUJ1dHRvbklucHV0VHlwZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJs
ZUlucHV0VHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJhZGFlZWEwZjM2MGQ3Y2E3ZjJmYzM3MDU2NDky
NGQ2ZGNmN2I5MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxl
SW5wdXRUeXBlLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuaCIKKworI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgorI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZWd1
bGFyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2Jvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9s
U3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmVzdWx0ID0gZWxlbWVudCgpLT5j
aGVja2VkKCkgPyAib24iIDogIm9mZiI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5n
JiBzdGF0ZSkgY29uc3QKK3sKKyAgICBlbGVtZW50KCktPnNldENoZWNrZWQoc3RhdGUgPT0gIm9u
Iik7Cit9CisKK2Jvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnQoKS0+
Y2hlY2tlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZW5jb2RpbmcuYXBwZW5kRGF0
YShlbGVtZW50KCktPm5hbWUoKSwgZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworUmVuZGVyT2JqZWN0KiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2th
YmxlSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmEwYTU1ZDUxMmZkNjJlOGQ0NWIwOGRiYWVmM2Q1OTA1ZTg1MTk2MDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEJhc2VDaGVja2FibGVJbnB1dFR5cGVfaAorI2RlZmluZSBCYXNl
Q2hlY2thYmxlSW5wdXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKy8vIEJhc2Ugb2YgY2hlY2tib3ggYW5kIHJhZGlvIHR5cGVzLgorY2xh
c3MgQmFzZUNoZWNrYWJsZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHJvdGVjdGVk
OgorICAgIEJhc2VDaGVja2FibGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkg
OiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJv
bFN0YXRlKFN0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRy
b2xTdGF0ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJhc2VDaGVja2FibGVJbnB1
dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5oIGIvV2Vi
Q29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5oCmluZGV4IDdlZmJhZDI5ZDFjYzBiMjQ5OTVlNGRi
MGY3NzM4NzViZjViOTBiZjMuLmYwMTYxMTQ3YmI4MGY4ZWRmNDk0MjY1NWI4ZDg3OTBlMTdjNzU0
MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaAorKysgYi9XZWJD
b3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmgKQEAgLTMxLDE2ICszMSwxNiBAQAogI2lmbmRlZiBC
dXR0b25JbnB1dFR5cGVfaAogI2RlZmluZSBCdXR0b25JbnB1dFR5cGVfaAogCi0jaW5jbHVkZSAi
SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJ1dHRvbklucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUg
eworY2xhc3MgQnV0dG9uSW5wdXRUeXBlIDogcHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1
dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBCdXR0b25JbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgQnV0dG9uSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZUJ1dHRvbklucHV0VHlwZShlbGVt
ZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0Owog
fTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oIGIvV2ViQ29y
ZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKaW5kZXggZTA0MWEwNzFkYTJjM2NlZmU2ZWVjODdm
MDZlODFhYmEwOGFjYzZhMi4uYjY4ZTE0ZDQ3OWFhNmMwZjRmOTdjNzQxNDRjZjk5MTA2ZjA4YTFj
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKQEAgLTMxLDE2ICszMSwxNiBAQAogI2lmbmRl
ZiBDaGVja2JveElucHV0VHlwZV9oCiAjZGVmaW5lIENoZWNrYm94SW5wdXRUeXBlX2gKIAotI2lu
Y2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDaGVja2JveElucHV0VHlwZSA6IHB1Ymxp
YyBJbnB1dFR5cGUgeworY2xhc3MgQ2hlY2tib3hJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUNoZWNr
YWJsZUlucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBl
PiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRlOgotICAgIENoZWNrYm94SW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsg
fQorICAgIENoZWNrYm94SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFz
ZUNoZWNrYWJsZUlucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHZhbHVl
TWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5k
ZXggNmNiMTdmMmYxZTIzMmQ4ZGViNzI1ZWQ1YzU2NWY4MDQwMTBmYjhiNS4uZDk4ZDNiNmM4YmNl
YzQ5OWFkZWYwYzkyZWFjNjFlNWYwOGE4YjQ5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAt
MSwzNiArMSwzMiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJGaWxlSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJGaWxlLmgiCisjaW5jbHVkZSAiRmls
ZUxpc3QuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00Niw5ICs0Miw0MyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEZpbGVJbnB1dFR5cGU6OmZvcm1D
b250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpmaWxlKCk7CiB9
CiAKK2Jvb2wgRmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNv
ZGluZywgYm9vbCBtdWx0aXBhcnQpIGNvbnN0Cit7CisgICAgRmlsZUxpc3QqIGZpbGVMaXN0ID0g
ZWxlbWVudCgpLT5maWxlcygpOworICAgIHVuc2lnbmVkIG51bUZpbGVzID0gZmlsZUxpc3QtPmxl
bmd0aCgpOworICAgIGlmICghbXVsdGlwYXJ0KSB7CisgICAgICAgIC8vIFNlbmQgb25seSB0aGUg
YmFzZW5hbWVzLgorICAgICAgICAvLyA0LjEwLjE2LjQgYW5kIDQuMTAuMTYuNiBzZWN0aW9ucyBp
biBIVE1MNS4KKworICAgICAgICAvLyBVbmxpa2UgdGhlIG11bHRpcGFydCBjYXNlLCB3ZSBoYXZl
IG5vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBlbXB0eQorICAgICAgICAvLyBmaWxlTGlzdCBi
ZWNhdXNlIE5ldHNjYXBlIGRvZXNuJ3Qgc3VwcG9ydCBmb3Igbm9uLW11bHRpcGFydAorICAgICAg
ICAvLyBzdWJtaXNzaW9uIG9mIGZpbGUgaW5wdXRzLCBhbmQgRmlyZWZveCBkb2Vzbid0IGFkZCAi
bmFtZT0iIHF1ZXJ5CisgICAgICAgIC8vIHBhcmFtZXRlci4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpCisgICAgICAgICAgICBlbmNvZGluZy5hcHBlbmRE
YXRhKGVsZW1lbnQoKS0+bmFtZSgpLCBmaWxlTGlzdC0+aXRlbShpKS0+ZmlsZU5hbWUoKSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFs
bCBpcyBlbnRlcmVkLCByZXR1cm4gc3VjY2Vzc2Z1bCBidXQgZW1wdHkuCisgICAgLy8gTnVsbCB3
b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBOZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBB
cmdoLgorICAgIGlmICghbnVtRmlsZXMpIHsKKyAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihl
bGVtZW50KCktPm5hbWUoKSwgRmlsZTo6Y3JlYXRlKCIiKSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKQor
ICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKGVsZW1lbnQoKS0+bmFtZSgpLCBmaWxlTGlzdC0+
aXRlbShpKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgRmlsZUlucHV0VHlwZTo6dmFs
dWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhbHVl
LmlzRW1wdHkoKTsKIH0KIAorUmVuZGVyT2JqZWN0KiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK3sKKyAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woZWxlbWVudCgpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVJbnB1
dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKaW5kZXggMmNiZmU2NzY2ZGEx
ZDU1OWUwMDJmYTY0YzcxMzJhMzQxN2Q3OWY4NC4uMjQ0MzBmYjI0NzE4YjVmN2I0NDE1NGI5OGUz
OGNjYjBiNGY0YmQ5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAor
KysgYi9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC0zMSwxOCArMzEsMjAgQEAKICNp
Zm5kZWYgRmlsZUlucHV0VHlwZV9oCiAjZGVmaW5lIEZpbGVJbnB1dFR5cGVfaAogCi0jaW5jbHVk
ZSAiSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0VHlwZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBl
IHsKK2NsYXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0
RWxlbWVudCopOwogCiBwcml2YXRlOgotICAgIEZpbGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgRmlsZUlucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkg
eyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29s
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBiNjg1ODk2NTExNjU4MjZkMGRk
NmZhODYyN2M2YzZkMDI0ZTY1NGQzLi4xMjdkMzdlZTFkODYzN2NjZTIwNjJlMWZmZWU0ZDhlYjFm
NWVmOWZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTIxNCw2ICsy
MTQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSB7IH0K
IAogICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0UmVuZGVyZXJBZnRlclVwZGF0ZUxheW91dCgp
OworCisgICAgZnJpZW5kIGNsYXNzIFRleHRGaWVsZElucHV0VHlwZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMzc4ZGRlNDhiYzY3OWJjMjk3
YjViNmRmM2VlY2NkNWQzNGJlODliMS4uMjNhODA2ODZiMjBhNmY0ZGUzYjFmOGI0MTJmNzhjNzVl
ODlhNDMzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTYsMTEgKzU2LDkgQEAK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJCdXR0b24uaCIKICNpbmNsdWRlICJS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgpAQCAtNTI5LDc5ICs1MjcsMTIgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBj
b25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmlu
ZyYgcmVzdWx0KSBjb25zdAogewotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7
Ci0gICAgY2FzZSBCVVRUT046Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNlIERBVEU6Ci0gICAg
Y2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgY2FzZSBFTUFJTDoK
LSAgICBjYXNlIEZJTEU6Ci0gICAgY2FzZSBISURERU46Ci0gICAgY2FzZSBJTUFHRToKLSAgICBj
YXNlIElTSU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJFUjoKLSAgICBjYXNl
IFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBTVUJN
SVQ6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0gICAgY2FzZSBURVhUOgotICAgIGNhc2UgVElNRToK
LSAgICBjYXNlIFVSTDoKLSAgICBjYXNlIFdFRUs6IHsKLSAgICAgICAgU3RyaW5nIGN1cnJlbnRW
YWx1ZSA9IHZhbHVlKCk7Ci0gICAgICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZGVmYXVsdFZhbHVl
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IGN1cnJlbnRW
YWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0g
ICAgY2FzZSBSQURJTzoKLSAgICAgICAgcmVzdWx0ID0gY2hlY2tlZCgpID8gIm9uIiA6ICJvZmYi
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFBBU1NXT1JEOgotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNhdmVGb3JtQ29udHJvbFN0YXRlKHJlc3Vs
dCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoZGVwcmVjYXRlZElucHV0VHlwZSgp
ICE9IFBBU1NXT1JEKTsgLy8gc2hvdWxkIG5ldmVyIHNhdmUvcmVzdG9yZSBwYXNzd29yZCBmaWVs
ZHMKLSAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAgIGNhc2UgQlVUVE9O
OgotICAgIGNhc2UgQ09MT1I6Ci0gICAgY2FzZSBEQVRFOgotICAgIGNhc2UgREFURVRJTUU6Ci0g
ICAgY2FzZSBEQVRFVElNRUxPQ0FMOgotICAgIGNhc2UgRU1BSUw6Ci0gICAgY2FzZSBGSUxFOgot
ICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAgY2FzZSBJU0lOREVYOgotICAg
IGNhc2UgTU9OVEg6Ci0gICAgY2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBSQU5HRToKLSAgICBjYXNl
IFJFU0VUOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgU1VCTUlUOgotICAgIGNhc2UgVEVM
RVBIT05FOgotICAgIGNhc2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0gICAgY2FzZSBVUkw6Ci0g
ICAgY2FzZSBXRUVLOgotICAgICAgICBzZXRWYWx1ZShzdGF0ZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBSQURJTzoKLSAgICAgICAgc2V0Q2hlY2tlZChz
dGF0ZSA9PSAib24iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQQVNTV09SRDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5yZXN0b3JlRm9ybUNvbnRyb2xTdGF0
ZShzdGF0ZSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Y2FuU3RhcnRTZWxlY3Rpb24o
KSBjb25zdApAQCAtNzk2LDQ2ICs3MjcsOSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgIHJldHVybiBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJl
bmEsIFJlbmRlclN0eWxlICpzdHlsZSkKK1JlbmRlck9iamVjdCogSFRNTElucHV0RWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
Ci0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICBjYXNlIEJVVFRPTjoK
LSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2UgU1VCTUlUOgotICAgICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyQnV0dG9uKHRoaXMpOwotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBS
QURJTzoKLSAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0
eWxlKTsKLSAgICBjYXNlIEZJTEU6Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbCh0aGlzKTsKLSAgICBjYXNlIEhJRERFTjoKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJTUFHRTogewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFy
ZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKLSAgICAgICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2Uo
UmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwotICAgICAgICByZXR1cm4gaW1hZ2U7Ci0g
ICAgfQotICAgIGNhc2UgUkFOR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
bGlkZXIodGhpcyk7Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNlIERBVEU6Ci0gICAgY2FzZSBE
QVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgY2FzZSBFTUFJTDoKLSAgICBj
YXNlIElTSU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJFUjoKLSAgICBjYXNl
IFBBU1NXT1JEOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgVEVMRVBIT05FOgotICAgIGNh
c2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0gICAgY2FzZSBVUkw6Ci0gICAgY2FzZSBXRUVLOgot
ICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRo
aXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpOwotICAgIH0KLSAgICBBU1NFUlQoZmFs
c2UpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+Y3JlYXRlUmVuZGVy
ZXIoYXJlbmEsIHN0eWxlKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphdHRhY2goKQpA
QCAtOTEyLDkzICs4MDYsMTIgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRBY3RpdmF0ZWRT
dWJtaXQoYm9vbCBmbGFnKQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRh
KEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wgbXVsdGlwYXJ0KQogewotICAgIC8vIGltYWdl
IGdlbmVyYXRlcyBpdHMgb3duIG5hbWVzLCBidXQgZm9yIG90aGVyIHR5cGVzIHRoZXJlIGlzIG5v
IGZvcm0gZGF0YSB1bmxlc3MgdGhlcmUncyBhIG5hbWUKLSAgICBpZiAobmFtZSgpLmlzRW1wdHko
KSAmJiBkZXByZWNhdGVkSW5wdXRUeXBlKCkgIT0gSU1BR0UpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElucHV0VHlwZSgpKSB7Ci0gICAgY2FzZSBDT0xP
UjoKLSAgICBjYXNlIERBVEU6Ci0gICAgY2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1F
TE9DQUw6Ci0gICAgY2FzZSBFTUFJTDoKLSAgICBjYXNlIEhJRERFTjoKLSAgICBjYXNlIElTSU5E
RVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJFUjoKLSAgICBjYXNlIFBBU1NXT1JE
OgotICAgIGNhc2UgUkFOR0U6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0gICAgY2FzZSBURUxFUEhPTkU6
Ci0gICAgY2FzZSBURVhUOgotICAgIGNhc2UgVElNRToKLSAgICBjYXNlIFVSTDoKLSAgICBjYXNl
IFdFRUs6Ci0gICAgICAgIC8vIGFsd2F5cyBzdWNjZXNzZnVsCi0gICAgICAgIGVuY29kaW5nLmFw
cGVuZERhdGEobmFtZSgpLCB2YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBj
YXNlIENIRUNLQk9YOgotICAgIGNhc2UgUkFESU86Ci0gICAgICAgIGlmIChjaGVja2VkKCkpIHsK
LSAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSgpLCB2YWx1ZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBCVVRUT046Ci0gICAgY2FzZSBSRVNFVDoKLSAgICAgICAgLy8gdGhlc2UgdHlwZXMgb2YgYnV0
dG9ucyBhcmUgbmV2ZXIgc3VjY2Vzc2Z1bAorICAgIC8vIFRoZSBpbWFnZSB0eXBlIGdlbmVyYXRl
cyBpdHMgb3duIG5hbWVzLCBidXQgZm9yIG90aGVyIHR5cGVzIHRoZXJlIGlzIG5vCisgICAgLy8g
Zm9ybSBkYXRhIHVubGVzcyB0aGVyZSdzIGEgbmFtZS4KKyAgICBpZiAobmFtZSgpLmlzRW1wdHko
KSAmJiAhaXNJbWFnZUJ1dHRvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjYXNl
IElNQUdFOgotICAgICAgICBpZiAobV9hY3RpdmVTdWJtaXQpIHsKLSAgICAgICAgICAgIGVuY29k
aW5nLmFwcGVuZERhdGEobmFtZSgpLmlzRW1wdHkoKSA/ICJ4IiA6IChuYW1lKCkgKyAiLngiKSwg
bV94UG9zKTsKLSAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSgpLmlzRW1wdHko
KSA/ICJ5IiA6IChuYW1lKCkgKyAiLnkiKSwgbV95UG9zKTsKLSAgICAgICAgICAgIGlmICghbmFt
ZSgpLmlzRW1wdHkoKSAmJiAhdmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZW5j
b2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIHZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNVQk1JVDoKLSAgICAg
ICAgaWYgKG1fYWN0aXZlU3VibWl0KSB7Ci0gICAgICAgICAgICBTdHJpbmcgZW5jc3RyID0gdmFs
dWVXaXRoRGVmYXVsdCgpOwotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCks
IGVuY3N0cik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgRklMRTogewotICAgICAgICB1bnNpZ25lZCBudW1GaWxlcyA9IG1f
ZmlsZUxpc3QtPmxlbmd0aCgpOwotICAgICAgICBpZiAoIW11bHRpcGFydCkgewotICAgICAgICAg
ICAgLy8gU2VuZCBvbmx5IHRoZSBiYXNlbmFtZXMuCi0gICAgICAgICAgICAvLyA0LjEwLjE2LjQg
YW5kIDQuMTAuMTYuNiBzZWN0aW9ucyBpbiBIVE1MNS4KLSAgICAKLSAgICAgICAgICAgIC8vIFVu
bGlrZSB0aGUgbXVsdGlwYXJ0IGNhc2UsIHdlIGhhdmUgbm8gc3BlY2lhbAotICAgICAgICAgICAg
Ly8gaGFuZGxpbmcgZm9yIHRoZSBlbXB0eSBmaWxlTGlzdCBiZWNhdXNlIE5ldHNjYXBlCi0gICAg
ICAgICAgICAvLyBkb2Vzbid0IHN1cHBvcnQgZm9yIG5vbi1tdWx0aXBhcnQgc3VibWlzc2lvbiBv
ZgotICAgICAgICAgICAgLy8gZmlsZSBpbnB1dHMsIGFuZCBGaXJlZm94IGRvZXNuJ3QgYWRkICJu
YW1lPSIgcXVlcnkKLSAgICAgICAgICAgIC8vIHBhcmFtZXRlci4KLQotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpIAotICAgICAgICAgICAgICAgIGVu
Y29kaW5nLmFwcGVuZERhdGEobmFtZSgpLCBtX2ZpbGVMaXN0LT5pdGVtKGkpLT5maWxlTmFtZSgp
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYg
bm8gZmlsZW5hbWUgYXQgYWxsIGlzIGVudGVyZWQsIHJldHVybiBzdWNjZXNzZnVsIGJ1dCBlbXB0
eS4KLSAgICAgICAgLy8gTnVsbCB3b3VsZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBOZXRzY2FwZSBw
b3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdoLgotICAgICAgICBpZiAoIW51bUZpbGVzKSB7Ci0gICAg
ICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgRmlsZTo6Y3JlYXRlKCIiKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKQotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5k
QmxvYihuYW1lKCksIG1fZmlsZUxpc3QtPml0ZW0oaSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5hcHBlbmRGb3JtRGF0YShlbmNvZGluZywgbXVsdGlwYXJ0KTsKIH0KIAogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpyZXNldCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBlNTg0YTc4
ZGYzNzhjNjY3NmVmM2Q5MzBjZGMyN2M3ZWU3Y2I5YmI5Li42ZmQ3ZmNlM2M2NTNmOTg2NWIxYmY2
MWFmMzVkOGMxY2M2NTNmZmM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM2NSw2ICsz
NjUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNOb25FbXB0eUxpc3QgOiAxOwogI2VuZGlm
CiAgICAgT3duUHRyPElucHV0VHlwZT4gbV9pbnB1dFR5cGU7CisKKyAgICBmcmllbmQgY2xhc3Mg
SW1hZ2VJbnB1dFR5cGU7CisgICAgZnJpZW5kIGNsYXNzIFN1Ym1pdElucHV0VHlwZTsKIH07CiAK
IH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUu
Y3BwIGIvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKaW5kZXggNzY3NDJhZTMzODBj
NWVjODBiNTZiYjc3OWFkNjhhYmYxMDY5OTk0Yi4uNmUwODNlNjg2OGRhZTY0NmQ5ZjY3ZmVmYjVm
OTU5NzM1NjQxYzE5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKQEAgLTQ5LDQgKzQ5LDEw
IEBAIGJvb2wgSGlkZGVuSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorUmVuZGVyT2JqZWN0KiBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggYi9XZWJDb3Jl
L2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKaW5kZXggY2M0OWY5OGRhN2JjYmM1Y2RkOTA5NDQwOTFj
NDExOTk3MzNhMWRkNS4uMTYxNzM3MTJkYzM5NTdiMmEwZGI2ZTc1ZjgzNjJhNmFmNjI4YWE2YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IaWRkZW5JbnB1dFR5cGUuaApAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIEhp
ZGRlbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVt
ZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0Owor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmNwcAppbmRleCA2MDRiMDUyZDg2MDJmYjJiMThiODE0NzRkNjVkMzQ1YzllZmI4
MmQyLi5hYTZjZThhZDk0OTRhYmY1ZTUzMzA2NDlkNmVlMTZmZjNiZDgzY2ZlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFn
ZUlucHV0VHlwZS5jcHAKQEAgLTEsMzYgKzEsMzAgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2VJbnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgIkZv
cm1EYXRhTGlzdC5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJS
ZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ1LDkgKzM5LDI4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSW1hZ2VJbnB1
dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVz
OjppbWFnZSgpOwogfQogCitib29sIEltYWdlSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3Jt
RGF0YUxpc3QmIGVuY29kaW5nLCBib29sKSBjb25zdAoreworICAgIGlmICghZWxlbWVudCgpLT5t
X2FjdGl2ZVN1Ym1pdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSA9IGVsZW1lbnQoKS0+bmFtZSgpOworICAgIGVuY29kaW5nLmFwcGVuZERhdGEo
bmFtZS5pc0VtcHR5KCkgPyAieCIgOiAobmFtZSArICIueCIpLCBlbGVtZW50KCktPm1feFBvcyk7
CisgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lLmlzRW1wdHkoKSA/ICJ5IiA6IChuYW1lICsg
Ii55IiksIGVsZW1lbnQoKS0+bV95UG9zKTsKKyAgICBpZiAoIW5hbWUuaXNFbXB0eSgpICYmICFl
bGVtZW50KCktPnZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRh
KG5hbWUsIGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
SW1hZ2VJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitSZW5kZXJPYmplY3QqIEltYWdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK3sKKyAgICBSZW5kZXJJ
bWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShlbGVtZW50KCkpOworICAgIGlt
YWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRU
eXBlLmgKaW5kZXggYmUzMDhiMzA2ODNhN2M4NjZlMzAxZGE4Njg5OGRlODk1ODFmZWQwYS4uZjc1
Nzg5NzRiNmQ5MTJjNTg4OTM2M2Q0YmRlNGE0MDFhMjE5NzM3NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBl
LmgKQEAgLTMxLDE4ICszMSwyMCBAQAogI2lmbmRlZiBJbWFnZUlucHV0VHlwZV9oCiAjZGVmaW5l
IEltYWdlSW5wdXRUeXBlX2gKIAotI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJh
c2VCdXR0b25JbnB1dFR5cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFn
ZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworY2xhc3MgSW1hZ2VJbnB1dFR5cGUgOiBw
dWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRlOgotICAg
IEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVs
ZW1lbnQpIHsgfQorICAgIEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQp
IDogQmFzZUJ1dHRvbklucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFw
cGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCAxYjIzMDNhNjY2ZGVkMTM4
NWExN2ZkOGY3NzMxYWQzMTk3NTM3MTAwLi5mMjgwZTEwZWMwYTUzMDQ5Njc1M2E3MzdjZGE0MDZl
MWNiZTI5NmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRh
dGVUaW1lTG9jYWxJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJFbWFpbElucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIkZpbGVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlkZGVuSW5wdXRUeXBlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VJbnB1dFR5cGUuaCIKQEAgLTEyMiw2ICsxMjMsMjcgQEAgYm9vbCBJbnB1
dFR5cGU6OmlzVGV4dFR5cGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJ
bnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdAorewor
ICAgIFN0cmluZyBjdXJyZW50VmFsdWUgPSBlbGVtZW50KCktPnZhbHVlKCk7CisgICAgaWYgKGN1
cnJlbnRWYWx1ZSA9PSBlbGVtZW50KCktPmRlZmF1bHRWYWx1ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmVzdWx0ID0gY3VycmVudFZhbHVlOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIElucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBz
dGF0ZSkgY29uc3QKK3sKKyAgICBlbGVtZW50KCktPnNldFZhbHVlKHN0YXRlKTsKK30KKworYm9v
bCBJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wp
IGNvbnN0Cit7CisgICAgLy8gQWx3YXlzIHN1Y2Nlc3NmdWwuCisgICAgZW5jb2RpbmcuYXBwZW5k
RGF0YShlbGVtZW50KCktPm5hbWUoKSwgZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogZG91YmxlIElucHV0VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdAogewogICAg
IHJldHVybiBEYXRlQ29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmlu
ZGV4IDk1M2IxMjNmZjM5MzJlM2IyNzJmZDY4NmY1OWZhZGIzNGY5YTEyYzcuLmRkYTE3Mjk4OTEz
YTI3YTU1OTI2ZmM0YzFlY2UwY2IxMGQ5ZjUwOGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTM4LDI0ICszOCw0
MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRlQ29tcG9uZW50czsKK2NsYXNz
IEZvcm1EYXRhTGlzdDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Ci0KK2NsYXNzIFJlbmRlckFy
ZW5hOworY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyU3R5bGU7CisKKy8vIE9uZSBv
ZiBJbnB1dFR5cGUgY2xhc3NlcyByZXByZXNlbnRzIGEgdHlwZSBvZiBIVE1MSW5wdXRFbGVtZW50
LgorLy8KKy8vIERvIG5vdCBleHBvc2UgaW5zbnRhbmNlcyBvZiBJbnB1dFR5cGUgYW5kIGl0cyBz
dWJjbGFzc2VzIHRvIGNsYXNzZXMgb3RoZXIKKy8vIHRoYW4gSFRNTElucHV0RWxlbWVudCwgYW5k
IGZlZWwgZnJlZSB0byBhZGQgKklucHV0VHlwZSBjbGFzc2VzIGFzIGZyaWVuZHMgb2YKKy8vIEhU
TUxpbnB1dEVsZW1lbnQgYW5kIGl0cyBzdXBlcmNsYXNzZXMuCiBjbGFzcyBJbnB1dFR5cGUgOiBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0
VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZVRleHQoSFRNTElucHV0RWxlbWVu
dCopOwogICAgIHZpcnR1YWwgfklucHV0VHlwZSgpOwogCisgICAgLy8gLS0tLS0tLS0gVHlwZSBx
dWVyeSBmdW5jdGlvbnMKKwogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc1RleHRUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0ID0gMDsKIAorICAgIC8vIC0tLS0t
LS0tIEZvcm0gdmFsdWUgZnVuY3Rpb25zCisKKyAgICB2aXJ0dWFsIGJvb2wgc2F2ZUZvcm1Db250
cm9sU3RhdGUoU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sIG11bHRpcGFydCkgY29uc3Q7CisKKyAgICAvLyAt
LS0tLS0tLSBET00gcHJvcGVydHkgZnVuY3Rpb25zCisKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1
ZUFzRGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzTnVtYmVy
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBFeGNl
cHRpb25Db2RlJikgY29uc3Q7CiAKLSAgICAvLyBWYWxpZGF0aW9uLXJlbGF0ZWQgZnVuY3Rpb25z
CisgICAgLy8gLS0tLS0tLS0gVmFsaWRhdGlvbi1yZWxhdGVkIGZ1bmN0aW9ucwogCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB0
eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Q7CkBAIC03Nyw2ICs5NiwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVwVmFsZXVTaG91bGRCZUludGVnZXIo
KSBjb25zdDsKIAorICAgIC8vIC0tLS0tLS0tIE1pc2MuCisKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0ID0g
MDsKKwogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhlIHR5cGUsIGFu
ZCByZXR1cm4KICAgICAvLyB0aGUgZG91YmxlIHZhbHVlIGZvciB0aGUgcGFyc2luZyByZXN1bHQg
aWYgdGhlIHBhcnNpbmcKICAgICAvLyBzdWNjZWVkczsgUmV0dXJucyBkZWZhdWx0VmFsdWUgb3Ro
ZXJ3aXNlLiBUaGlzIGZ1bmN0aW9uIGNhbgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1Bhc3N3
b3JkSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAKaW5k
ZXggYTY0NWY5Njc3YWZlNWJiY2U3OTkwNDFjYmEyNWQ1ODc3NGRmNmFhYy4uNWEyYTJmNjBmOWE5
YWNiYzAwMmE0MDU5MDExODc5YzQ0MTcyMTNlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1Bh
c3N3b3JkSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUu
Y3BwCkBAIC0xLDM2ICsxLDI4IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBhc3N3b3JkSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ1LDQgKzM3LDE2IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUGFzc3dvcmRJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpw
YXNzd29yZCgpOwogfQogCitib29sIFBhc3N3b3JkSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xT
dGF0ZShTdHJpbmcmKSBjb25zdAoreworICAgIC8vIFNob3VsZCBuZXZlciBzYXZlL3Jlc3RvcmUg
cGFzc3dvcmQgZmllbGRzLgorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQYXNzd29yZElu
cHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgU3RyaW5nJikgY29uc3QKK3sK
KyAgICAvLyBTaG91bGQgbmV2ZXIgc2F2ZS9yZXN0b3JlIHBhc3N3b3JkIGZpZWxkcy4KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvUGFz
c3dvcmRJbnB1dFR5cGUuaAppbmRleCBkYjEzNDQ5Mzc1YjkwNWEzMzU3ZWViNzYyZjk4NDAwODhk
NTM3MTYxLi5jZjI1NTI1NDIxMzRjYzZjNTQ0MTk0NzFlNTU5YzMxMjg2YjFmYjhiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwv
UGFzc3dvcmRJbnB1dFR5cGUuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFBhc3N3b3JkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZVRl
eHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzYXZlRm9ybUNvbnRy
b2xTdGF0ZShTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaCBiL1dlYkNvcmUv
aHRtbC9SYWRpb0lucHV0VHlwZS5oCmluZGV4IDJmZjJjNDEzMWFjYjc2ZWNjODQwNjg3YTMwNDQw
NjA0OTg1MTJiZGMuLjllN2FiMDBkY2UyYjhhNjUyNjI3OGY0NjE2MzQ4NTg5MTgwMjI5NGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRt
bC9SYWRpb0lucHV0VHlwZS5oCkBAIC0zMSwxNiArMzEsMTYgQEAKICNpZm5kZWYgUmFkaW9JbnB1
dFR5cGVfaAogI2RlZmluZSBSYWRpb0lucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUu
aCIKKyNpbmNsdWRlICJCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgUmFkaW9JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNz
IFJhZGlvSW5wdXRUeXBlIDogcHVibGljIEJhc2VDaGVja2FibGVJbnB1dFR5cGUgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQqKTsKIAogcHJpdmF0ZToKLSAgICBSYWRpb0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KKyAgICBSYWRpb0lucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VDaGVja2FibGVJbnB1dFR5cGUoZWxlbWVudCkg
eyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggNzQ0ODA3MTRhNDBmNzlkZjU0MzlhMTRi
NmJiMjJiMjI1MWFhNzJjZC4uOTMyZjQ4YmVlYWE3ZDBmNDZlZjRjYmYwNmQzMjE5NDhkZWM5Mjk5
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC0xLDMxICsxLDIyIEBACiAvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMzQsNiArMjUsNyBAQAogI2luY2x1ZGUgIkhU
TUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSA8bGlt
aXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KQEAgLTEyNiw2ICsxMTgsMTEgQEAgZG91YmxlIFJhbmdlSW5wdXRUeXBlOjpzdGVwU2Nh
bGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiByYW5nZVN0ZXBTY2FsZUZhY3RvcjsKIH0KIAor
UmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNsaWRlcihlbGVtZW50KCkpOworfQorCiBkb3VibGUgUmFuZ2VJbnB1dFR5cGU6OnBhcnNl
VG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7
CiAgICAgZG91YmxlIG51bWJlclZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1Jhbmdl
SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCAwZmY2ZjYw
YzY3Y2ZjOTc4MzdmNjA2ZWFjODk0NmFjMmVjMDI1Zjg4Li42NDU0OGY2NzExOTg0ZjQ0ZGQ4NTkx
Yzk4YzllNDk1NzRkZWM4NGYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5
cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTMsNiArNTMsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBkb3VibGUgZGVmYXVsdFN0ZXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVw
U2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91
YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5o
CmluZGV4IDNmODgzYTMzOTkyZjY3ODg0ZjdiYzRjNjYxYWZkY2FhZTQ0MDQxMTUuLmFkOTQwYjQ0
YzZhMzI4MjUwNjRiZjMzYjhiZDBmOTMyMDZiYjRhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9SZXNldElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5oCkBA
IC0zMSwxNiArMzEsMTYgQEAKICNpZm5kZWYgUmVzZXRJbnB1dFR5cGVfaAogI2RlZmluZSBSZXNl
dElucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNlQnV0
dG9uSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVzZXRJbnB1
dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIFJlc2V0SW5wdXRUeXBlIDogcHVibGlj
IEJhc2VCdXR0b25JbnB1dFR5cGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
cHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBSZXNl
dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50
KSB7IH0KKyAgICBSZXNldElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJh
c2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c1ZhbGlkYXRpb24oKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvU3VibWl0
SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCmluZGV4IDY1
OTM0ZjkzZjU0YjM2ZTdmNjM1NjhmMTdjZjI0ZWFkZWMzZmRjYTIuLjY2NzUyOTAyNjRiNzJkM2Iw
M2IzYWRlMDVmMmI3MjU5ZjkwNDUwZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCkBAIC0z
MSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRU
eXBlLmgiCiAKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsNiArNDcsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTdWJtaXRJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjpz
dWJtaXQoKTsKIH0KIAorYm9vbCBTdWJtaXRJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1E
YXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0Cit7CisgICAgaWYgKCFlbGVtZW50KCktPm1f
YWN0aXZlU3VibWl0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZW5jb2RpbmcuYXBwZW5k
RGF0YShlbGVtZW50KCktPm5hbWUoKSwgZWxlbWVudCgpLT52YWx1ZVdpdGhEZWZhdWx0KCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFN1Ym1pdElucHV0VHlwZTo6c3VwcG9ydHNWYWxp
ZGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvU3VibWl0SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmgK
aW5kZXggODNmYTVlNTViN2JjMDFiMWIyNGJkZTliMTM5ZTg1MGNhMTY1NGU2OC4uMmZlN2FjZTk2
YzUzMDU3ODAyMmZiNGQyM2E0ZWMxOGY5MjdiMWZjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L1N1Ym1pdElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuaApA
QCAtMzEsMTcgKzMxLDE4IEBACiAjaWZuZGVmIFN1Ym1pdElucHV0VHlwZV9oCiAjZGVmaW5lIFN1
Ym1pdElucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJCYXNl
QnV0dG9uSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU3VibWl0
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitjbGFzcyBTdWJtaXRJbnB1dFR5cGUgOiBw
dWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRlOgotICAg
IFN1Ym1pdElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShl
bGVtZW50KSB7IH0KKyAgICBTdWJtaXRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVu
dCkgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmNwcAppbmRleCA4MjM4MmVmYjUzOWQzNzk3M2NmMjc0ZDM1MmE5NjkwMDcxNjM1MDRi
Li45MjZkMGFjNjc5NjY3NDY0ZGQ2ODI1NmY3M2EyMDRjZWVjM2JhZmI0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
NSw0ICs0Nyw5IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eSgpOwogfQogCitS
ZW5kZXJPYmplY3QqIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50KCksIGVsZW1lbnQoKS0+cGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCA5MTA4YzQyMWI0YWVkMWM4YWUzNWE5Zjg4OTYx
YTZhZjg0ZDNlZGU4Li43OGJlYzFkNThlMWEzZjViMmI5Y2IxYTMxNTA5MjVlYzdiZjRlOTU1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC00Miw2ICs0Miw3IEBAIHByb3RlY3RlZDoK
ICAgICBUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBJbnB1
dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71536</attachid>
            <date>2010-10-22 01:38:43 -0700</date>
            <delta_ts>2010-10-25 11:47:37 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-47834-20101022173841.patch</filename>
            <type>text/plain</type>
            <size>56255</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDQyZTM0NGE4ZjgyNjY2MDMxNWJlODk0ZTVkNWQwZTAwMDAzMjI4ZjkuLjU4YjA3
MjA4NGZkZDc4NGU2NzUxODIxZmYxMTk4ZDc1OWQ2ODEzODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTQ5LDYgKzk0
OSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBoaXN0b3J5L1BhZ2VDYWNoZS5jcHAKIAog
ICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwCisgICAgaHRtbC9CYXNlQnV0dG9uSW5wdXRU
eXBlLmNwcAorICAgIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKICAgICBodG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKICAgICBodG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNw
cAogICAgIGh0bWwvQnV0dG9uSW5wdXRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNTU5NzdjYjg1N2RjMGNmNzFkZDRlMzNj
MTY0YWY1NmVmYmY5MjE1Li45NTE4MzkxMTQ3YzdhZmMzNTgyY2NmNWM5OTQ2OTkyNGUyM2IyMjYy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDg5IEBACisyMDEwLTEwLTE4ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWZhY3RvciBIVE1MSW5wdXRFbGVtZW50OiBNb3ZlIGNyZWF0ZVJlbmRlcigpLCBhcHBlbmRGb3Jt
RGF0YSgpLAorICAgICAgICBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGFuZCByZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZSgpIHRvIElucHV0VHlwZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzgzNAorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgQmFz
ZUJ1dHRvbklucHV0VHlwZSBhbmQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZS4gVGhleQorICAgICAg
ICBhcmUgc3VwZXIgY2xhc3NlcyBvZiBzb21lIGNvbmNyZXRlIElucHV0VHlwZSBjbGFzc2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gSnVzdCBhIGNvZGUgcmVmYWN0b3JpbmcuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIEJhc2VCdXR0b25JbnB1dFR5cGUgYW5kIEJhc2VDaGVj
a2FibGVJbnB1dFR5cGUgZmlsZXMuCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IGRpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaTogZGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IGRp
dHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBkaXR0by4KKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IGRpdHRvLgorICAgICAg
ICAqIGh0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhc2VCdXR0
b25JbnB1dFR5cGU6OkJhc2VCdXR0b25JbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvQmFzZUNo
ZWNrYWJsZUlucHV0VHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNr
YWJsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAg
ICAgICAqIGh0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGU6OkJhc2VDaGVja2FibGVJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvQnV0dG9uSW5wdXRUeXBlLmg6IENoYW5nZSB0aGUgc3VwZXIgY2xhc3Mu
CisgICAgICAgIChXZWJDb3JlOjpCdXR0b25JbnB1dFR5cGU6OkJ1dHRvbklucHV0VHlwZSk6Cisg
ICAgICAgICogaHRtbC9DaGVja2JveElucHV0VHlwZS5oOiBDaGFuZ2UgdGhlIHN1cGVyIGNsYXNz
LgorICAgICAgICAoV2ViQ29yZTo6Q2hlY2tib3hJbnB1dFR5cGU6OkNoZWNrYm94SW5wdXRUeXBl
KToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsZUlucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlu
cHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5o
OiBDaGFuZ2UgdGhlIHN1cGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlw
ZTo6RmlsZUlucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
Lmg6CisgICAgICAgICAgTWFrZSBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIHB1YmxpYyBm
b3IgYWNjZXNzIGZyb20gVGV4dEZpZWxkSW5wdXRUeXBlLgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpy
ZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6Cisg
ICAgICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGZvciBJbWFnZUlucHV0VHlwZSBh
bmQgU3VibWl0SW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
YWN0aXZlU3VibWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnhQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp5UG9zaXRpb24pOgor
ICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
ZGRlbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5w
dXRUeXBlLmg6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6aXNGb3JtRGF0YUFwcGVuZGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbWFn
ZUlucHV0VHlwZS5oOiBDaGFuZ2UgdGhlIHN1cGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VJbnB1dFR5cGU6OkltYWdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjppc0Zvcm1EYXRhQXBwZW5kYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRU
eXBlLmg6CisgICAgICAgICogaHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYXNzd29yZElucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzc3dvcmRJbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKToK
KyAgICAgICAgKiBodG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9SYWRp
b0lucHV0VHlwZS5oOiBDaGFuZ2UgdGhlIHN1cGVyIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6
UmFkaW9JbnB1dFR5cGU6OlJhZGlvSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5w
dXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5k
ZXJlcik6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
UmVzZXRJbnB1dFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc2V0SW5wdXRUeXBlOjpSZXNl
dElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VibWl0SW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YSk6CisgICAgICAgICog
aHRtbC9TdWJtaXRJbnB1dFR5cGUuaDogQ2hhbmdlIHRoZSBzdXBlciBjbGFzcy4KKyAgICAgICAg
KFdlYkNvcmU6OlN1Ym1pdElucHV0VHlwZTo6U3VibWl0SW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5oOgorCiAyMDEwLTEwLTIxICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5u
ZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyNmI2OTJk
M2VjNzM2MzYyYWZlMjU0NTk2NzgzYWVhNzhiYjhjMzYwLi45NWRiZTQ1MzM0OGI0YmVmOGIwYWEx
M2Q5MzBhYTNkNDY4MGIxM2ZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE0NTMsNiArMTQ1MywxMCBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBcCiAJV2ViQ29yZS9o
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmNwcCBcCiAJV2ViQ29yZS9odG1sL0FzeW5jSW1hZ2VSZXNp
emVyLmggXAorCVdlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCBcCisJV2ViQ29y
ZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaCBcCisJV2ViQ29yZS9odG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuY3BwIFwKKwlXZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5o
IFwKIAlXZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBcCiAJV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIFwKIAlXZWJDb3JlL2h0bWwvQmFzZVRl
eHRJbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGE0MTdmMzA4MzJhNmFlOGM4ZjkzNWM2YjViMjg0ZDdk
OGQ3YzhjZS4uYWM4YmI0ZjFkYjkzYTI4ODIzMzMzZjdkODA2MTI1MzcwNDk3ZmI5MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTE1NDMsNiArMTU0MywxMCBAQAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNhY2hlLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwJywKICAgICAgICAgICAgICdo
dG1sL0FzeW5jSW1hZ2VSZXNpemVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvQmFzZUJ1dHRvbklu
cHV0VHlwZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oJywK
KyAgICAgICAgICAgICdodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwJywKICAgICAgICAgICAgICdodG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5oJywKICAgICAgICAgICAgICdodG1sL0Jhc2VUZXh0SW5wdXRUeXBl
LmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCBiNmFjNGFlZThmYTZiMjhiMWUwODNiOTZhMTk0N2U1Y2M1ZmNjYmUzLi43YTE2
ZTkyNGRhODQ1NDA3NTM3YjE5YjFmZGFkODkzMjNjODRjOTM3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgzOSw2ICs4MzksOCBA
QCBTT1VSQ0VTICs9IFwKICAgICBoaXN0b3J5L3F0L0hpc3RvcnlJdGVtUXQuY3BwIFwKICAgICBo
aXN0b3J5L1BhZ2VDYWNoZS5jcHAgXAogICAgIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIuY3BwIFwK
KyAgICBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwIFwKKyAgICBodG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAg
XAogICAgIGh0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIFwKICAgICBodG1sL0J1dHRvbklucHV0
VHlwZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMGQ5YzIy
NDEyZmQ5Yzk5MTVhOTA4Y2VmYWRhZjcyY2Y4ZTVkMzY2Ny4uNTMwZWQ1Y2E0OThjM2JlM2EwNTli
YjdmOGMzZGYxMzViZTVkMTE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC00ODAxOSw2ICs0ODAxOSwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJhc2VCdXR0b25JbnB1dFR5cGUuY3BwIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxC
YXNlQnV0dG9uSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAwOThmOTE2ZDVhM2MxY2Q3NjNmNWJlYzc1NDExOGNmYjdhMjhmNzNhLi5l
Yzg5YzA3MzU0YWVhYjcyMzdmNWNjNjMzNDY3ODkwNDRmYTNmNDFlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODU2LDYgKzg1NiwxMCBAQAogCQkzNzk5
MTk5NjEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5OTE5OTQxMjAwRERGNDAwRUEwNDFD
IC8qIFdPRkZGaWxlRm9ybWF0LmNwcCAqLzsgfTsKIAkJMzc5OTE5OTcxMjAwRERGNDAwRUEwNDFD
IC8qIFdPRkZGaWxlRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyogV09GRkZpbGVGb3JtYXQuaCAq
LzsgfTsKIAkJMzc5OTE5QjIxMjAwREU1MDAwRUEwNDFDIC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzk5MTlCMTEyMDBERTUw
MDBFQTA0MUMgLyogbGliei5keWxpYiAqLzsgfTsKKwkJMzc5RTYxQzkxMjZDQTVDMzAwQjYzRThE
IC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzUxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25J
bnB1dFR5cGUuY3BwICovOyB9OworCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUJ1
dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc5RTYxQzYxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCAq
LzsgfTsKKwkJMzc5RTYxQ0IxMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5
RTYxQzcxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwICovOyB9
OworCQkzNzlFNjFDQzEyNkNBNUM0MDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5RTYxQzgx
MjZDQTVDMzAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCAqLzsgfTsKIAkJMzdB
Q0NFNDIwREEyOTgwRjAwODlFNjAyIC8qIEZvbnRSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FDQ0U0MTBEQTI5ODBGMDA4OUU2
MDIgLyogRm9udFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzN0FDQ0Y2OTBEQTQxNEU3MDA4OUU2MDIgLyogRm9udERlc2Ny
aXB0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QUNDRTYyMERBMkFBOTYwMDg5RTYwMiAvKiBGb250RGVzY3JpcHRpb24uY3BwICovOyB9Owog
CQkzN0MyMzYwQjEwOTdFREVEMDBFRjlGNzIgLyogRm9udENvbXBsZXhUZXh0TWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QzIzNjBBMTA5N0VE
RUQwMEVGOUY3MiAvKiBGb250Q29tcGxleFRleHRNYWMuY3BwICovOyB9OwpAQCAtNjg5NCw2ICs2
ODk4LDEwIEBACiAJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBXT0ZGRmlsZUZvcm1hdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXT0ZGRmlsZUZvcm1hdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3OTkxOTk1MTIwMERERjQwMEVBMDQx
QyAvKiBXT0ZGRmlsZUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
T0ZGRmlsZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzk5MTlCMTEy
MDBERTUwMDBFQTA0MUMgLyogbGliei5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGli
ei5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CisJCTM3OUU2MUM1MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VCdXR0b25J
bnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzlFNjFDNjEyNkNB
NUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCYXNlQnV0dG9uSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTM3OUU2MUM3MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNzlFNjFDODEy
NkNBNUMzMDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3QUNDRTQxMERBMjk4MEYwMDg5RTYwMiAvKiBGb250UmVuZGVy
aW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250UmVuZGVyaW5n
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0FDQ0U2MjBEQTJBQTk2MDA4
OUU2MDIgLyogRm9udERlc2NyaXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvbnREZXNjcmlwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTM3QzIzNjBBMTA5N0VERUQwMEVGOUY3MiAvKiBGb250Q29tcGxleFRleHRNYWMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENvbXBsZXhUZXh0TWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTUzLDYgKzE0NTYxLDEwIEBACiAJ
CQkJOTdDMUY1NTExMjI4NTU4ODAwRURFNjE2IC8qIHBhcnNlciAqLywKIAkJCQlCMDE0OUU3OTEx
QTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuY3BwICovLAogCQkJCUIwMTQ5RTdB
MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovLAorCQkJCTM3OUU2MUM1
MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQnV0dG9uSW5wdXRUeXBlLmNwcCAqLywKKwkJCQkzNzlF
NjFDNjEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlwZS5oICovLAorCQkJCTM3
OUU2MUM3MTI2Q0E1QzMwMEI2M0U4RCAvKiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCAqLywK
KwkJCQkzNzlFNjFDODEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5o
ICovLAogCQkJCUY1OUM5NUZEMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwICovLAogCQkJCUY1OUM5NUZFMTI1NUIyM0YwMDA2MjNDMCAvKiBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaCAqLywKIAkJCQlGNTVCM0Q3OTEyNTFGMTJEMDAzRUYyNjkgLyogQmFz
ZVRleHRJbnB1dFR5cGUuY3BwICovLApAQCAtMTgzNzcsNiArMTgzODksOCBAQAogCQkJCUJDQThD
QTYwMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFySW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjJDM0RBMjIwRDAwNkMxRDAwRUY2RjI2IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTM3OUU2MUNDMTI2Q0E1QzQwMEI2M0U4RCAvKiBCYXNlQ2hl
Y2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTlDOTYwMDEyNTVCMjNGMDAw
NjIzQzAgLyogQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RBRTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOTQ2MkQ4MTA3QTdCNEMwMDg1NzE5MyAvKiBCZWZvcmVMb2FkRXZlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMjE1MDUsNiArMjE1MTksOCBAQAogCQkJCUJDQThDQTVGMTFFNEU2
RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMTI0RUU3MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUIyQzNEQTIxMEQwMDZDMUQwMEVGNkYyNiAvKiBCYXNlNjQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzc5RTYxQzkxMjZDQTVDMzAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzc5RTYxQ0IxMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VDaGVj
a2FibGVJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU5Qzk1RkYxMjU1QjIzRjAw
MDYyM0MwIC8qIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNTVCM0RBRDEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE3MjIwNEIxMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZDZhOGZmZWQ4MGQyNTU5YmE2ODE1OGFiZDNlNjE0Yzg5YmJhNTdmCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQmFzZUJ1dHRvbklucHV0
VHlwZS5oIgorCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRl
ckJ1dHRvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgQmFzZUJ1dHRvbklucHV0
VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3QKK3sKKyAgICAv
LyBCdXR0b25zIGV4Y2VwdCBvdmVycmlkZGVuIHR5cGVzIGFyZSBuZXZlciBzdWNjZXNzZnVsLgor
ICAgIHJldHVybiBmYWxzZTsKK30KKworUmVuZGVyT2JqZWN0KiBCYXNlQnV0dG9uSW5wdXRUeXBl
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QK
K3sKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKGVsZW1lbnQoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQnV0
dG9uSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU3ZjY4M2JhYTkxYjM1N2FmNmNjOTJhMjg0YTNhNzIyN2JiMmMxM2UKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJhc2VCdXR0b25JbnB1dFR5cGVfaAorI2RlZmluZSBCYXNlQnV0dG9uSW5w
dXRUeXBlX2gKKworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIEJhc2Ugb2YgYnV0dG9uLCBmaWxlLCBpbWFnZSwgcmVzZXQsIGFuZCBzdWJtaXQgdHlw
ZXMuCitjbGFzcyBCYXNlQnV0dG9uSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7Citwcm90
ZWN0ZWQ6CisgICAgQmFzZUJ1dHRvbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CisgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBj
b25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJhc2VCdXR0
b25JbnB1dFR5cGVfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1
dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAwOWU4ZTQ4ZDNlMjBhZjEzZDBhZmVlM2ExOGE3OWU3NDg4ZDEwNWEKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCYXNlQ2hlY2thYmxlSW5w
dXRUeXBlLmgiCisKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEJhc2VDaGVja2FibGVJ
bnB1dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdAorewor
ICAgIHJlc3VsdCA9IGVsZW1lbnQoKS0+Y2hlY2tlZCgpID8gIm9uIiA6ICJvZmYiOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnJlc3RvcmVGb3Jt
Q29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgc3RhdGUpIGNvbnN0Cit7CisgICAgZWxlbWVudCgp
LT5zZXRDaGVja2VkKHN0YXRlID09ICJvbiIpOworfQorCitib29sIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0
Cit7CisgICAgaWYgKCFlbGVtZW50KCktPmNoZWNrZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1lKCksIGVsZW1lbnQoKS0+
dmFsdWUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggYi9XZWJD
b3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyZWRmMjk2ODQy
ZTdkY2IzYjAzNDI1MTg2ZDcxYzVhYjkzNzY4NmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJh
c2VDaGVja2FibGVJbnB1dFR5cGVfaAorI2RlZmluZSBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlX2gK
KworI2luY2x1ZGUgIklucHV0VHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEJh
c2Ugb2YgY2hlY2tib3ggYW5kIHJhZGlvIHR5cGVzLgorY2xhc3MgQmFzZUNoZWNrYWJsZUlucHV0
VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworcHJvdGVjdGVkOgorICAgIEJhc2VDaGVja2FibGVJ
bnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkg
eyB9CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRlKFN0
cmluZyYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9CdXR0b25JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaApp
bmRleCA3ZWZiYWQyOWQxY2MwYjI0OTk1ZTRkYjBmNzczODc1YmY1YjkwYmYzLi5mMDE2MTE0N2Ji
ODBmOGVkZjQ5NDI2NTViOGQ4NzkwZTE3Yzc1NDMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
QnV0dG9uSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5oCkBA
IC0zMSwxNiArMzEsMTYgQEAKICNpZm5kZWYgQnV0dG9uSW5wdXRUeXBlX2gKICNkZWZpbmUgQnV0
dG9uSW5wdXRUeXBlX2gKIAotI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJhc2VC
dXR0b25JbnB1dFR5cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBCdXR0b25J
bnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIEJ1dHRvbklucHV0VHlwZSA6IHB1
YmxpYyBCYXNlQnV0dG9uSW5wdXRUeXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAg
QnV0dG9uSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVs
ZW1lbnQpIHsgfQorICAgIEJ1dHRvbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
Q2hlY2tib3hJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oCmlu
ZGV4IGUwNDFhMDcxZGEyYzNjZWZlNmVlYzg3ZjA2ZTgxYWJhMDhhY2M2YTIuLmI2OGUxNGQ0Nzlh
YTZjMGY0Zjk3Yzc0MTQ0Y2Y5OTEwNmYwOGExY2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9D
aGVja2JveElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5o
CkBAIC0zMSwxNiArMzEsMTYgQEAKICNpZm5kZWYgQ2hlY2tib3hJbnB1dFR5cGVfaAogI2RlZmlu
ZSBDaGVja2JveElucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRl
ICJCYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2hlY2tib3hJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIENoZWNrYm94
SW5wdXRUeXBlIDogcHVibGljIEJhc2VDaGVja2FibGVJbnB1dFR5cGUgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsK
IAogcHJpdmF0ZToKLSAgICBDaGVja2JveElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KKyAgICBDaGVja2JveElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VDaGVja2FibGVJbnB1dFR5cGUoZWxlbWVudCkg
eyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwIGIvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IDZjYjE3ZjJmMWUyMzJkOGRlYjcyNWVkNWM1
NjVmODA0MDEwZmI4YjUuLmQ5OGQzYjZjOGJjZWM0OTlhZGVmMGM5MmVhYzYxZTVmMDhhOGI0OTIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKQEAgLTEsMzYgKzEsMzIgQEAKIC8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRmlsZUlucHV0VHlwZS5oIgogCisjaW5j
bHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCisjaW5jbHVkZSAiRm9ybURhdGFM
aXN0LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlckZp
bGVVcGxvYWRDb250cm9sLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDYsOSArNDIsNDMgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBGaWxlSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVy
biBJbnB1dFR5cGVOYW1lczo6ZmlsZSgpOwogfQogCitib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVu
ZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAor
eworICAgIEZpbGVMaXN0KiBmaWxlTGlzdCA9IGVsZW1lbnQoKS0+ZmlsZXMoKTsKKyAgICB1bnNp
Z25lZCBudW1GaWxlcyA9IGZpbGVMaXN0LT5sZW5ndGgoKTsKKyAgICBpZiAoIW11bHRpcGFydCkg
eworICAgICAgICAvLyBTZW5kIG9ubHkgdGhlIGJhc2VuYW1lcy4KKyAgICAgICAgLy8gNC4xMC4x
Ni40IGFuZCA0LjEwLjE2LjYgc2VjdGlvbnMgaW4gSFRNTDUuCisKKyAgICAgICAgLy8gVW5saWtl
IHRoZSBtdWx0aXBhcnQgY2FzZSwgd2UgaGF2ZSBubyBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUg
ZW1wdHkKKyAgICAgICAgLy8gZmlsZUxpc3QgYmVjYXVzZSBOZXRzY2FwZSBkb2Vzbid0IHN1cHBv
cnQgZm9yIG5vbi1tdWx0aXBhcnQKKyAgICAgICAgLy8gc3VibWlzc2lvbiBvZiBmaWxlIGlucHV0
cywgYW5kIEZpcmVmb3ggZG9lc24ndCBhZGQgIm5hbWU9IiBxdWVyeQorICAgICAgICAvLyBwYXJh
bWV0ZXIuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxlczsgKytpKQor
ICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShlbGVtZW50KCktPm5hbWUoKSwgZmlsZUxp
c3QtPml0ZW0oaSktPmZpbGVOYW1lKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nlc3Nm
dWwgYnV0IGVtcHR5LgorICAgIC8vIE51bGwgd291bGQgYmUgbW9yZSBsb2dpY2FsLCBidXQgTmV0
c2NhcGUgcG9zdHMgYW4gZW1wdHkgZmlsZS4gQXJnaC4KKyAgICBpZiAoIW51bUZpbGVzKSB7Cisg
ICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IoZWxlbWVudCgpLT5uYW1lKCksIEZpbGU6OmNyZWF0
ZSgiIikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkKKyAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihl
bGVtZW50KCktPm5hbWUoKSwgZmlsZUxpc3QtPml0ZW0oaSkpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIEZpbGVJbnB1dFR5cGU6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZS5pc0VtcHR5KCk7CiB9CiAKK1JlbmRlck9iamVj
dCogRmlsZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sKGVsZW1lbnQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5oCmluZGV4IDJjYmZlNjc2NmRhMWQ1NTllMDAyZmE2NGM3MTMyYTM0MTdkNzlmODQu
LjI0NDMwZmIyNDcxOGI1ZjdiNDQxNTRiOThlMzhjY2IwYjRmNGJkOTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuaApAQCAtMzEsMTggKzMxLDIwIEBACiAjaWZuZGVmIEZpbGVJbnB1dFR5cGVfaAogI2RlZmlu
ZSBGaWxlSW5wdXRUeXBlX2gKIAotI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgIkJh
c2VCdXR0b25JbnB1dFR5cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGaWxl
SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitjbGFzcyBGaWxlSW5wdXRUeXBlIDogcHVi
bGljIEJhc2VCdXR0b25JbnB1dFR5cGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAgICBG
aWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1l
bnQpIHsgfQorICAgIEZpbGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBC
YXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5k
Rm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHZh
bHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKaW5kZXggNDc5MmRiYTZmMzBhNGIzMTdlNGUxNDU1NTBmN2JmYWNhZDRkNjBmOC4uOGI3MjFk
OGFiMWVhMjkzOGE4MGJkM2QxMTdhZmM0YmE1N2NmNTg1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCkBAIC0xODAsNiArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIFRoZSBk
ZXJpdmVkIGNsYXNzIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBwbGFjZWhvbGRlciBwcm9jZXNzaW5n
IGlzIG5lZWRlZC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0
ID0gMDsKICAgICBTdHJpbmcgc3RyaXBwZWRQbGFjZWhvbGRlcigpIGNvbnN0OworICAgIGJvb2wg
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKIAogICAgIGludCBzZWxlY3Rpb25T
dGFydCgpOwogICAgIGludCBzZWxlY3Rpb25FbmQoKTsKQEAgLTE5Miw3ICsxOTMsNiBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKLSAgICBib29sIHBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMzc4ZGRl
NDhiYzY3OWJjMjk3YjViNmRmM2VlY2NkNWQzNGJlODliMS4uMmZmOGVjNWE4NTcyZDJkMDQzM2Y3
ZjNmYmQzMzVhZTIwOWRlNGIwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTYs
MTEgKzU2LDkgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJCdXR0b24uaCIK
ICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgpAQCAtNTI5LDc5
ICs1MjcsMTIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW5wdXRFbGVtZW50Ojpmb3JtQ29u
dHJvbFR5cGUoKSBjb25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNhdmVGb3JtQ29udHJv
bFN0YXRlKFN0cmluZyYgcmVzdWx0KSBjb25zdAogewotICAgIHN3aXRjaCAoZGVwcmVjYXRlZElu
cHV0VHlwZSgpKSB7Ci0gICAgY2FzZSBCVVRUT046Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNl
IERBVEU6Ci0gICAgY2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAg
Y2FzZSBFTUFJTDoKLSAgICBjYXNlIEZJTEU6Ci0gICAgY2FzZSBISURERU46Ci0gICAgY2FzZSBJ
TUFHRToKLSAgICBjYXNlIElTSU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJF
UjoKLSAgICBjYXNlIFJBTkdFOgotICAgIGNhc2UgUkVTRVQ6Ci0gICAgY2FzZSBTRUFSQ0g6Ci0g
ICAgY2FzZSBTVUJNSVQ6Ci0gICAgY2FzZSBURUxFUEhPTkU6Ci0gICAgY2FzZSBURVhUOgotICAg
IGNhc2UgVElNRToKLSAgICBjYXNlIFVSTDoKLSAgICBjYXNlIFdFRUs6IHsKLSAgICAgICAgU3Ry
aW5nIGN1cnJlbnRWYWx1ZSA9IHZhbHVlKCk7Ci0gICAgICAgIGlmIChjdXJyZW50VmFsdWUgPT0g
ZGVmYXVsdFZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3Vs
dCA9IGN1cnJlbnRWYWx1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGNhc2Ug
Q0hFQ0tCT1g6Ci0gICAgY2FzZSBSQURJTzoKLSAgICAgICAgcmVzdWx0ID0gY2hlY2tlZCgpID8g
Im9uIiA6ICJvZmYiOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFBBU1NXT1JEOgot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNhdmVGb3JtQ29udHJv
bFN0YXRlKHJlc3VsdCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cmVzdG9yZUZvcm1D
b250cm9sU3RhdGUoY29uc3QgU3RyaW5nJiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoZGVwcmVjYXRl
ZElucHV0VHlwZSgpICE9IFBBU1NXT1JEKTsgLy8gc2hvdWxkIG5ldmVyIHNhdmUvcmVzdG9yZSBw
YXNzd29yZCBmaWVsZHMKLSAgICBzd2l0Y2ggKGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSkgewotICAg
IGNhc2UgQlVUVE9OOgotICAgIGNhc2UgQ09MT1I6Ci0gICAgY2FzZSBEQVRFOgotICAgIGNhc2Ug
REFURVRJTUU6Ci0gICAgY2FzZSBEQVRFVElNRUxPQ0FMOgotICAgIGNhc2UgRU1BSUw6Ci0gICAg
Y2FzZSBGSUxFOgotICAgIGNhc2UgSElEREVOOgotICAgIGNhc2UgSU1BR0U6Ci0gICAgY2FzZSBJ
U0lOREVYOgotICAgIGNhc2UgTU9OVEg6Ci0gICAgY2FzZSBOVU1CRVI6Ci0gICAgY2FzZSBSQU5H
RToKLSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgU1VCTUlUOgot
ICAgIGNhc2UgVEVMRVBIT05FOgotICAgIGNhc2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0gICAg
Y2FzZSBVUkw6Ci0gICAgY2FzZSBXRUVLOgotICAgICAgICBzZXRWYWx1ZShzdGF0ZSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBSQURJTzoKLSAgICAgICAg
c2V0Q2hlY2tlZChzdGF0ZSA9PSAib24iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQQVNT
V09SRDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIG1faW5wdXRUeXBlLT5yZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZShzdGF0ZSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Y2FuU3Rh
cnRTZWxlY3Rpb24oKSBjb25zdApAQCAtNzk2LDQ2ICs3MjcsOSBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUgKnN0eWxlKQogICAgIHJldHVybiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsK
IH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlICpzdHlsZSkKK1JlbmRlck9iamVjdCogSFRNTElu
cHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7Ci0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAgICBj
YXNlIEJVVFRPTjoKLSAgICBjYXNlIFJFU0VUOgotICAgIGNhc2UgU1VCTUlUOgotICAgICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKHRoaXMpOwotICAgIGNhc2UgQ0hFQ0tCT1g6
Ci0gICAgY2FzZSBSQURJTzoKLSAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KHRoaXMsIHN0eWxlKTsKLSAgICBjYXNlIEZJTEU6Ci0gICAgICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCh0aGlzKTsKLSAgICBjYXNlIEhJRERFTjoKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJTUFHRTogewotICAgICAgICBSZW5kZXJJbWFnZSogaW1h
Z2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKLSAgICAgICAgaW1hZ2UtPnNldElt
YWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpOwotICAgICAgICByZXR1
cm4gaW1hZ2U7Ci0gICAgfQotICAgIGNhc2UgUkFOR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTbGlkZXIodGhpcyk7Ci0gICAgY2FzZSBDT0xPUjoKLSAgICBjYXNlIERBVEU6
Ci0gICAgY2FzZSBEQVRFVElNRToKLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6Ci0gICAgY2FzZSBF
TUFJTDoKLSAgICBjYXNlIElTSU5ERVg6Ci0gICAgY2FzZSBNT05USDoKLSAgICBjYXNlIE5VTUJF
UjoKLSAgICBjYXNlIFBBU1NXT1JEOgotICAgIGNhc2UgU0VBUkNIOgotICAgIGNhc2UgVEVMRVBI
T05FOgotICAgIGNhc2UgVEVYVDoKLSAgICBjYXNlIFRJTUU6Ci0gICAgY2FzZSBVUkw6Ci0gICAg
Y2FzZSBXRUVLOgotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpOwotICAgIH0KLSAg
ICBBU1NFUlQoZmFsc2UpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+
Y3JlYXRlUmVuZGVyZXIoYXJlbmEsIHN0eWxlKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjphdHRhY2goKQpAQCAtOTEyLDkzICs4MDYsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
dEFjdGl2YXRlZFN1Ym1pdChib29sIGZsYWcpCiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6YXBw
ZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCBtdWx0aXBhcnQpCiB7Ci0g
ICAgLy8gaW1hZ2UgZ2VuZXJhdGVzIGl0cyBvd24gbmFtZXMsIGJ1dCBmb3Igb3RoZXIgdHlwZXMg
dGhlcmUgaXMgbm8gZm9ybSBkYXRhIHVubGVzcyB0aGVyZSdzIGEgbmFtZQotICAgIGlmIChuYW1l
KCkuaXNFbXB0eSgpICYmIGRlcHJlY2F0ZWRJbnB1dFR5cGUoKSAhPSBJTUFHRSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChkZXByZWNhdGVkSW5wdXRUeXBlKCkpIHsKLSAg
ICBjYXNlIENPTE9SOgotICAgIGNhc2UgREFURToKLSAgICBjYXNlIERBVEVUSU1FOgotICAgIGNh
c2UgREFURVRJTUVMT0NBTDoKLSAgICBjYXNlIEVNQUlMOgotICAgIGNhc2UgSElEREVOOgotICAg
IGNhc2UgSVNJTkRFWDoKLSAgICBjYXNlIE1PTlRIOgotICAgIGNhc2UgTlVNQkVSOgotICAgIGNh
c2UgUEFTU1dPUkQ6Ci0gICAgY2FzZSBSQU5HRToKLSAgICBjYXNlIFNFQVJDSDoKLSAgICBjYXNl
IFRFTEVQSE9ORToKLSAgICBjYXNlIFRFWFQ6Ci0gICAgY2FzZSBUSU1FOgotICAgIGNhc2UgVVJM
OgotICAgIGNhc2UgV0VFSzoKLSAgICAgICAgLy8gYWx3YXlzIHN1Y2Nlc3NmdWwKLSAgICAgICAg
ZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIHZhbHVlKCkpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgY2FzZSBSQURJTzoKLSAgICAgICAgaWYgKGNo
ZWNrZWQoKSkgewotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIHZhbHVl
KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIEJVVFRPTjoKLSAgICBjYXNlIFJFU0VUOgotICAgICAgICAvLyB0aGVzZSB0
eXBlcyBvZiBidXR0b25zIGFyZSBuZXZlciBzdWNjZXNzZnVsCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGNhc2UgSU1BR0U6Ci0gICAgICAgIGlmIChtX2FjdGl2ZVN1Ym1pdCkgewotICAg
ICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCkuaXNFbXB0eSgpID8gIngiIDogKG5h
bWUoKSArICIueCIpLCBtX3hQb3MpOwotICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShu
YW1lKCkuaXNFbXB0eSgpID8gInkiIDogKG5hbWUoKSArICIueSIpLCBtX3lQb3MpOwotICAgICAg
ICAgICAgaWYgKCFuYW1lKCkuaXNFbXB0eSgpICYmICF2YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwgdmFsdWUoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
U1VCTUlUOgotICAgICAgICBpZiAobV9hY3RpdmVTdWJtaXQpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyBlbmNzdHIgPSB2YWx1ZVdpdGhEZWZhdWx0KCk7Ci0gICAgICAgICAgICBlbmNvZGluZy5hcHBl
bmREYXRhKG5hbWUoKSwgZW5jc3RyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBGSUxFOiB7Ci0gICAgICAgIHVuc2lnbmVk
IG51bUZpbGVzID0gbV9maWxlTGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbXVsdGlwYXJ0
KSB7Ci0gICAgICAgICAgICAvLyBTZW5kIG9ubHkgdGhlIGJhc2VuYW1lcy4KLSAgICAgICAgICAg
IC8vIDQuMTAuMTYuNCBhbmQgNC4xMC4xNi42IHNlY3Rpb25zIGluIEhUTUw1LgotICAgIAotICAg
ICAgICAgICAgLy8gVW5saWtlIHRoZSBtdWx0aXBhcnQgY2FzZSwgd2UgaGF2ZSBubyBzcGVjaWFs
Ci0gICAgICAgICAgICAvLyBoYW5kbGluZyBmb3IgdGhlIGVtcHR5IGZpbGVMaXN0IGJlY2F1c2Ug
TmV0c2NhcGUKLSAgICAgICAgICAgIC8vIGRvZXNuJ3Qgc3VwcG9ydCBmb3Igbm9uLW11bHRpcGFy
dCBzdWJtaXNzaW9uIG9mCi0gICAgICAgICAgICAvLyBmaWxlIGlucHV0cywgYW5kIEZpcmVmb3gg
ZG9lc24ndCBhZGQgIm5hbWU9IiBxdWVyeQotICAgICAgICAgICAgLy8gcGFyYW1ldGVyLgotCi0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRmlsZXM7ICsraSkgCi0gICAg
ICAgICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1lKCksIG1fZmlsZUxpc3QtPml0ZW0o
aSktPmZpbGVOYW1lKCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBJZiBubyBmaWxlbmFtZSBhdCBhbGwgaXMgZW50ZXJlZCwgcmV0dXJuIHN1Y2Nl
c3NmdWwgYnV0IGVtcHR5LgotICAgICAgICAvLyBOdWxsIHdvdWxkIGJlIG1vcmUgbG9naWNhbCwg
YnV0IE5ldHNjYXBlIHBvc3RzIGFuIGVtcHR5IGZpbGUuIEFyZ2guCi0gICAgICAgIGlmICghbnVt
RmlsZXMpIHsKLSAgICAgICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IobmFtZSgpLCBGaWxlOjpj
cmVhdGUoIiIpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpbGVzOyArK2kpCi0gICAgICAgICAgICBl
bmNvZGluZy5hcHBlbmRCbG9iKG5hbWUoKSwgbV9maWxlTGlzdC0+aXRlbShpKSk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPmlzRm9ybURhdGFBcHBlbmRhYmxlKCkgJiYgbV9pbnB1dFR5cGUt
PmFwcGVuZEZvcm1EYXRhKGVuY29kaW5nLCBtdWx0aXBhcnQpOwogfQogCiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnJlc2V0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGU1ODRhNzhkZjM3
OGM2Njc2ZWYzZDkzMGNkYzI3YzdlZTdjYjliYjkuLjRlZGE3YTBkMDEwNzFiZDZhMDUwZWI3YjIx
Y2JiMmZmMDYxMDAyYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMjAzLDYgKzIwMywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0
b25zKCk7CiAgICAgfQogCisgICAgYm9vbCBhY3RpdmVTdWJtaXQoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVN1Ym1pdDsgfQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbW92ZSBtX3hQb3MgYW5k
IG1feVBvcyB0byBJbWFnZUlucHV0VHlwZSBjbGFzcy4KKyAgICBpbnQgeFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV94UG9zOyB9CisgICAgaW50IHlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1feVBvczsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElucHV0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0hpZGRl
bklucHV0VHlwZS5jcHAKaW5kZXggNzY3NDJhZTMzODBjNWVjODBiNTZiYjc3OWFkNjhhYmYxMDY5
OTk0Yi4uNmUwODNlNjg2OGRhZTY0NmQ5ZjY3ZmVmYjVmOTU5NzM1NjQxYzE5OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hp
ZGRlbklucHV0VHlwZS5jcHAKQEAgLTQ5LDQgKzQ5LDEwIEBAIGJvb2wgSGlkZGVuSW5wdXRUeXBl
OjpzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUmVu
ZGVyT2JqZWN0KiBIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgK
aW5kZXggY2M0OWY5OGRhN2JjYmM1Y2RkOTA5NDQwOTFjNDExOTk3MzNhMWRkNS4uMTYxNzM3MTJk
YzM5NTdiMmEwZGI2ZTc1ZjgzNjJhNmFmNjI4YWE2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hpZGRlbklucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaApA
QCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIEhpZGRlbklucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW1hZ2VJ
bnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCA2MDRi
MDUyZDg2MDJmYjJiMThiODE0NzRkNjVkMzQ1YzllZmI4MmQyLi5iMTg5MzRkYjdmZWE2MjE2NDY0
NTZiYjIzYTU0MWJiYTJjOWQ4N2FhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKQEAgLTEsMzYg
KzEsMzAgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCiAgKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
SW1hZ2VJbnB1dFR5cGUuaCIKIAorI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgorI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDkgKzM5LDMz
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSW1hZ2VJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgp
IGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5hbWVzOjppbWFnZSgpOwogfQogCitib29sIElt
YWdlSW5wdXRUeXBlOjppc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgSW1hZ2VJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0Cit7CisgICAgaWYgKCFlbGVtZW50KCktPmFjdGl2
ZVN1Ym1pdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gZWxlbWVudCgpLT5uYW1lKCk7CisgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShuYW1l
LmlzRW1wdHkoKSA/ICJ4IiA6IChuYW1lICsgIi54IiksIGVsZW1lbnQoKS0+eFBvc2l0aW9uKCkp
OworICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZS5pc0VtcHR5KCkgPyAieSIgOiAobmFtZSAr
ICIueSIpLCBlbGVtZW50KCktPnlQb3NpdGlvbigpKTsKKyAgICBpZiAoIW5hbWUuaXNFbXB0eSgp
ICYmICFlbGVtZW50KCktPnZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAgICBlbmNvZGluZy5hcHBl
bmREYXRhKG5hbWUsIGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitSZW5kZXJPYmplY3QqIEltYWdlSW5wdXRUeXBlOjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK3sKKyAgICBS
ZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5kZXJJbWFnZShlbGVtZW50KCkpOwor
ICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlckltYWdlUmVzb3VyY2U6OmNyZWF0ZSgp
KTsKKyAgICByZXR1cm4gaW1hZ2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmgKaW5kZXggYmUzMDhiMzA2ODNhN2M4NjZlMzAxZGE4Njg5OGRlODk1ODFmZWQw
YS4uY2Q3NmU3MmZkNjYxOGFjZjQ2MmE2YjBiMzgyNGZiMjNkZjA1ZTdhNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmgKQEAgLTMxLDE4ICszMSwyMSBAQAogI2lmbmRlZiBJbWFnZUlucHV0VHlwZV9oCiAj
ZGVmaW5lIEltYWdlSW5wdXRUeXBlX2gKIAotI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1
ZGUgIkJhc2VCdXR0b25JbnB1dFR5cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBJbWFnZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworY2xhc3MgSW1hZ2VJbnB1dFR5
cGUgOiBwdWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRl
OgotICAgIEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRU
eXBlKGVsZW1lbnQpIHsgfQorICAgIEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVs
ZW1lbnQpIDogQmFzZUJ1dHRvbklucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzRm9ybURhdGFBcHBlbmRhYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFwcGVu
ZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCAxYjIzMDNhNjY2ZGVkMTM4NWEx
N2ZkOGY3NzMxYWQzMTk3NTM3MTAwLi5jODcwYzY5NDNlNmFiY2UwODcyZDBmOWQ2ODc2NGY1ZGQx
NmI1OGJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJFbWFpbElucHV0VHlwZS5oIgogI2luY2x1
ZGUgIkZpbGVJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlkZGVuSW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiSW1hZ2VJbnB1dFR5cGUuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSYWRp
b0lucHV0VHlwZS5oIgogI2luY2x1ZGUgIlJhbmdlSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiUmVn
dWxhckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJS
ZXNldElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlNlYXJjaElucHV0VHlwZS5oIgogI2luY2x1ZGUg
IlN1Ym1pdElucHV0VHlwZS5oIgpAQCAtMTIyLDYgKzEyNCwzMyBAQCBib29sIElucHV0VHlwZTo6
aXNUZXh0VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIElucHV0VHlw
ZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoU3RyaW5nJiByZXN1bHQpIGNvbnN0Cit7CisgICAgU3Ry
aW5nIGN1cnJlbnRWYWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKKyAgICBpZiAoY3VycmVudFZh
bHVlID09IGVsZW1lbnQoKS0+ZGVmYXVsdFZhbHVlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXN1bHQgPSBjdXJyZW50VmFsdWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBTdHJpbmcmIHN0YXRlKSBj
b25zdAoreworICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc3RhdGUpOworfQorCitib29sIElucHV0
VHlwZTo6aXNGb3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdAoreworICAgIC8vIFRoZXJlIGlzIG5v
IGZvcm0gZGF0YSB1bmxlc3MgdGhlcmUncyBhIG5hbWUgZm9yIG5vbi1pbWFnZSB0eXBlcy4KKyAg
ICByZXR1cm4gIWVsZW1lbnQoKS0+bmFtZSgpLmlzRW1wdHkoKTsKK30KKworYm9vbCBJbnB1dFR5
cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0Cit7
CisgICAgLy8gQWx3YXlzIHN1Y2Nlc3NmdWwuCisgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShlbGVt
ZW50KCktPm5hbWUoKSwgZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogZG91YmxlIElucHV0VHlwZTo6dmFsdWVBc0RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBE
YXRlQ29tcG9uZW50czo6aW52YWxpZE1pbGxpc2Vjb25kcygpOwpAQCAtMjI4LDYgKzI1NywxMSBA
QCBib29sIElucHV0VHlwZTo6c2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRlZ2VyKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1JlbmRlck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7Cit9CisK
IGRvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRl
ZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmlu
ZGV4IDk1M2IxMjNmZjM5MzJlM2IyNzJmZDY4NmY1OWZhZGIzNGY5YTEyYzcuLjBiZGRhNmVmZDcw
ZTVjNmFmY2MzNDQ4NGNjN2NkOTc3NzlhNGI4MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTM4LDI0ICszOCw0
MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRlQ29tcG9uZW50czsKK2NsYXNz
IEZvcm1EYXRhTGlzdDsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBSZW5kZXJBcmVu
YTsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlclN0eWxlOwogCisvLyBPbmUgb2Yg
SW5wdXRUeXBlIGNsYXNzZXMgcmVwcmVzZW50cyBhIHR5cGUgb2YgSFRNTElucHV0RWxlbWVudC4K
Ky8vIERvIG5vdCBleHBvc2UgaW5zbnRhbmNlcyBvZiBJbnB1dFR5cGUgYW5kIGl0cyBzdWJjbGFz
c2VzIHRvIGNsYXNzZXMgb3RoZXIKKy8vIHRoYW4gSFRNTElucHV0RWxlbWVudC4KIGNsYXNzIElu
cHV0VHlwZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCosIGNvbnN0IEF0b21pY1N0
cmluZyYpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlVGV4dChIVE1M
SW5wdXRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+SW5wdXRUeXBlKCk7CiAKKyAgICAvLyBUeXBl
IHF1ZXJ5IGZ1bmN0aW9ucworCiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzVGV4dFR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgPSAwOwogCisgICAgLy8gRm9y
bSB2YWx1ZSBmdW5jdGlvbnMKKworICAgIHZpcnR1YWwgYm9vbCBzYXZlRm9ybUNvbnRyb2xTdGF0
ZShTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRm9ybURhdGFBcHBl
bmRhYmxlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdDsKKworICAgIC8vIERPTSBwcm9wZXJ0eSBmdW5j
dGlvbnMKKwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNOdW1iZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWVBc051bWJlcihkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAg
IC8vIFZhbGlkYXRpb24tcmVsYXRlZCBmdW5jdGlvbnMKKyAgICAvLyBWYWxpZGF0aW9uIGZ1bmN0
aW9ucwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Q7CkBAIC03
Nyw2ICs5NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBWYWx1ZVNo
b3VsZEJlSW50ZWdlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVwVmFsZXVT
aG91bGRCZUludGVnZXIoKSBjb25zdDsKIAorICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25z
CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIGNvbnN0OworCiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3Ry
aW5nIGZvciB0aGUgdHlwZSwgYW5kIHJldHVybgogICAgIC8vIHRoZSBkb3VibGUgdmFsdWUgZm9y
IHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0aGUgcGFyc2luZwogICAgIC8vIHN1Y2NlZWRzOyBSZXR1
cm5zIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRoaXMgZnVuY3Rpb24gY2FuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL1Bhc3N3
b3JkSW5wdXRUeXBlLmNwcAppbmRleCBhNjQ1Zjk2NzdhZmU1YmJjZTc5OTA0MWNiYTI1ZDU4Nzc0
ZGY2YWFjLi5jZGE2ODliNmQ2ZmY0ZWE5ZGQ5YWQ2YTBiZTNlYTM5ZWIzZjU0NzE1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9QYXNzd29yZElucHV0VHlwZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJQYXNzd29yZElucHV0VHlwZS5oIgogCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00NSw0ICs0NiwxNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFBhc3N3b3JkSW5w
dXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogICAgIHJldHVybiBJbnB1dFR5cGVOYW1l
czo6cGFzc3dvcmQoKTsKIH0KIAorYm9vbCBQYXNzd29yZElucHV0VHlwZTo6c2F2ZUZvcm1Db250
cm9sU3RhdGUoU3RyaW5nJikgY29uc3QKK3sKKyAgICAvLyBTaG91bGQgbmV2ZXIgc2F2ZS9yZXN0
b3JlIHBhc3N3b3JkIGZpZWxkcy4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGFzc3dv
cmRJbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0
Cit7CisgICAgLy8gU2hvdWxkIG5ldmVyIHNhdmUvcmVzdG9yZSBwYXNzd29yZCBmaWVsZHMuCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1s
L1Bhc3N3b3JkSW5wdXRUeXBlLmgKaW5kZXggZGIxMzQ0OTM3NWI5MDVhMzM1N2VlYjc2MmY5ODQw
MDg4ZDUzNzE2MS4uY2YyNTUyNTQyMTM0Y2M2YzU0NDE5NDcxZTU1OWMzMTI4NmIxZmI4YiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9o
dG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBQYXNzd29yZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJh
c2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2F2ZUZvcm1D
b250cm9sU3RhdGUoU3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3Jt
Q29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmggYi9XZWJD
b3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaAppbmRleCAyZmYyYzQxMzFhY2I3NmVjYzg0MDY4N2Ez
MDQ0MDYwNDk4NTEyYmRjLi45ZTdhYjAwZGNlMmI4YTY1MjYyNzhmNDYxNjM0ODU4OTE4MDIyOTRl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaAorKysgYi9XZWJDb3Jl
L2h0bWwvUmFkaW9JbnB1dFR5cGUuaApAQCAtMzEsMTYgKzMxLDE2IEBACiAjaWZuZGVmIFJhZGlv
SW5wdXRUeXBlX2gKICNkZWZpbmUgUmFkaW9JbnB1dFR5cGVfaAogCi0jaW5jbHVkZSAiSW5wdXRU
eXBlLmgiCisjaW5jbHVkZSAiQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFJhZGlvSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7Citj
bGFzcyBSYWRpb0lucHV0VHlwZSA6IHB1YmxpYyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgUmFkaW9JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVu
dCogZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgUmFkaW9JbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlKGVsZW1l
bnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDc0NDgwNzE0YTQwZjc5ZGY1NDM5
YTE0YjZiYjIyYjIyNTFhYTcyY2QuLjE3NmQ3M2I1MjAyNmE3MGRjMDUyOWJjYTU0YmU5MDllOGVk
NjdlZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KQEAgLTEyNiw2ICsxMjcsMTEgQEAgZG91YmxlIFJhbmdlSW5wdXRUeXBlOjpz
dGVwU2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiByYW5nZVN0ZXBTY2FsZUZhY3RvcjsK
IH0KIAorUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclNsaWRlcihlbGVtZW50KCkpOworfQorCiBkb3VibGUgUmFuZ2VJbnB1dFR5cGU6
OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNv
bnN0CiB7CiAgICAgZG91YmxlIG51bWJlclZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCAw
ZmY2ZjYwYzY3Y2ZjOTc4MzdmNjA2ZWFjODk0NmFjMmVjMDI1Zjg4Li42NDU0OGY2NzExOTg0ZjQ0
ZGQ4NTkxYzk4YzllNDk1NzRkZWM4NGYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNTMsNiAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFN0ZXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJs
ZSBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1
YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdDsKIH07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9SZXNldElucHV0
VHlwZS5oCmluZGV4IDNmODgzYTMzOTkyZjY3ODg0ZjdiYzRjNjYxYWZkY2FhZTQ0MDQxMTUuLmFk
OTQwYjQ0YzZhMzI4MjUwNjRiZjMzYjhiZDBmOTMyMDZiYjRhZGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9SZXNldElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlw
ZS5oCkBAIC0zMSwxNiArMzEsMTYgQEAKICNpZm5kZWYgUmVzZXRJbnB1dFR5cGVfaAogI2RlZmlu
ZSBSZXNldElucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJC
YXNlQnV0dG9uSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVz
ZXRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIFJlc2V0SW5wdXRUeXBlIDog
cHVibGljIEJhc2VCdXR0b25JbnB1dFR5cGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKIAogcHJpdmF0ZToKLSAg
ICBSZXNldElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShl
bGVtZW50KSB7IH0KKyAgICBSZXNldElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
U3VibWl0SW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3BwCmlu
ZGV4IDY1OTM0ZjkzZjU0YjM2ZTdmNjM1NjhmMTdjZjI0ZWFkZWMzZmRjYTIuLjcxMDIzOGFkNTk5
MjE1ZGUyNjMzMDU2NGY5YWRlNTBmNjZhZDI4ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9T
dWJtaXRJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5cGUuY3Bw
CkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3VibWl0
SW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKKyNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDUsNiArNDcsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTdWJtaXRJ
bnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIElucHV0VHlwZU5h
bWVzOjpzdWJtaXQoKTsKIH0KIAorYm9vbCBTdWJtaXRJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRh
KEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0Cit7CisgICAgaWYgKCFlbGVtZW50
KCktPmFjdGl2ZVN1Ym1pdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZW5jb2Rpbmcu
YXBwZW5kRGF0YShlbGVtZW50KCktPm5hbWUoKSwgZWxlbWVudCgpLT52YWx1ZVdpdGhEZWZhdWx0
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFN1Ym1pdElucHV0VHlwZTo6c3VwcG9y
dHNWYWxpZGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRU
eXBlLmgKaW5kZXggODNmYTVlNTViN2JjMDFiMWIyNGJkZTliMTM5ZTg1MGNhMTY1NGU2OC4uMmZl
N2FjZTk2YzUzMDU3ODAyMmZiNGQyM2E0ZWMxOGY5MjdiMWZjYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL1N1Ym1pdElucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5
cGUuaApAQCAtMzEsMTcgKzMxLDE4IEBACiAjaWZuZGVmIFN1Ym1pdElucHV0VHlwZV9oCiAjZGVm
aW5lIFN1Ym1pdElucHV0VHlwZV9oCiAKLSNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRl
ICJCYXNlQnV0dG9uSW5wdXRUeXBlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U3VibWl0SW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CitjbGFzcyBTdWJtaXRJbnB1dFR5
cGUgOiBwdWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOwogCiBwcml2YXRl
OgotICAgIFN1Ym1pdElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0
VHlwZShlbGVtZW50KSB7IH0KKyAgICBTdWJtaXRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCkgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAppbmRleCA4MjM4MmVmYjUzOWQzNzk3M2NmMjc0ZDM1MmE5NjkwMDcx
NjM1MDRiLi45MjZkMGFjNjc5NjY3NDY0ZGQ2ODI1NmY3M2EyMDRjZWVjM2JhZmI0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlRleHRGaWVsZElucHV0VHlwZS5oIgogCisjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00NSw0ICs0Nyw5IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1ZU1pc3Npbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gdmFsdWUuaXNFbXB0eSgpOwog
fQogCitSZW5kZXJPYmplY3QqIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50KCksIGVsZW1lbnQoKS0+
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaCBiL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRleCA5MTA4YzQyMWI0YWVkMWM4YWUzNWE5
Zjg4OTYxYTZhZjg0ZDNlZGU4Li43OGJlYzFkNThlMWEzZjViMmI5Y2IxYTMxNTA5MjVlYzdiZjRl
OTU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIv
V2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC00Miw2ICs0Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICBUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkg
OiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="61610"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>