<?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>181623</bug_id>
          
          <creation_ts>2018-01-12 17:06:50 -0800</creation_ts>
          <short_desc>AVSampleBufferDisplayLayer should be flushed when application activates</short_desc>
          <delta_ts>2018-06-20 08:52:18 -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>WebRTC</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>186850</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389031</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-01-12 17:06:50 -0800</bug_when>
    <thetext>AVSampleBufferDisplayLayer sometimes gets into an error state when the web process deactivates, and it must be flushed when application activates again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389033</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-12 17:07:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/36487738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389039</commentid>
    <comment_count>2</comment_count>
      <attachid>331261</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-01-12 17:26:37 -0800</bug_when>
    <thetext>Created attachment 331261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389144</commentid>
    <comment_count>3</comment_count>
      <attachid>331261</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-01-13 13:47:32 -0800</bug_when>
    <thetext>Comment on attachment 331261
Patch

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

Can we find a way to test this?

&gt; Source/WebCore/dom/Document.h:1410
&gt; +    void applicationWillResignActive();
&gt; +    void applicationDidEnterBackground(bool);
&gt; +    void applicationWillEnterForeground(bool);
&gt; +    void applicationDidBecomeActive();

Perhaps instead of these we can just expose a single function:

    forEachApplicationStateChangeListener(const Function&lt;void(ApplicationStateChangeListener&amp;)&gt;&amp;);

I think this would cut down the total amount of code. The functions in Page can do more of the work.

&gt; Source/WebCore/dom/Document.h:1895
&gt; +    HashSet&lt;ApplicationStateChangeListener*&gt; m_applicationStateChangeListener;

Should be m_applicationStateChangeListeners, plural.

&gt; Source/WebCore/page/ApplicationStateChangeListener.h:39
&gt; +    virtual void applicationWillResignActive(Document&amp;) { };
&gt; +    virtual void applicationDidBecomeActive(Document&amp;) { };
&gt; +
&gt; +    enum class SuspendState { Suspended, SuspendedUnderLock };
&gt; +    virtual void applicationDidEnterBackground(Document&amp;, SuspendState) { };
&gt; +    virtual void applicationWillEnterForeground(Document&amp;, SuspendState) { };

I don’t think these functions need to receive a Document&amp; argument. I know that in Objective-C delegation patterns we often pass the object, but this is internal to WebKit and this might not be helpful. It’s very easy for DOM nodes to get their document.

The did/will enter foreground/background functions are not used yet. Can we wait to add them until we need them instead of adding them now?

What about the SuspendState? Will clients really need these? And is it better to use argument to communicate this rather than four separate functions?

If we do need to communicate the suspend state and decide we want to use an argument instead of additional separate functions, I suggest we just use a boolean; our rule of thumb is that we use enumerations when callers are going to be passing constants that would otherwise be mysterious. But there are no callers like that.

No need for any of these semicolons after the &quot;{ }&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389151</commentid>
    <comment_count>4</comment_count>
      <attachid>331261</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-01-13 15:02:22 -0800</bug_when>
    <thetext>Comment on attachment 331261
Patch

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

&gt; Source/WebCore/dom/Document.h:1411
&gt; +

All these state changes are probably the same for all documents of a page.
How about moving these methods to the page and having media elements register to the page directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389157</commentid>
    <comment_count>5</comment_count>
      <attachid>331261</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-01-13 16:35:15 -0800</bug_when>
    <thetext>Comment on attachment 331261
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:1411
&gt;&gt; +
&gt; 
&gt; All these state changes are probably the same for all documents of a page.
&gt; How about moving these methods to the page and having media elements register to the page directly?

The great thing about a document is that it always outlasts all the elements in the document. That’s why it’s a great place to register things. The page lifecycle is not such a good fit.

I think it’s OK to register on the document, but I do agree that we should keep the minimum on the document; that’s why I suggested exposing just three functions (add/remove/forEach) on Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389572</commentid>
    <comment_count>6</comment_count>
      <attachid>331391</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-01-16 09:08:38 -0800</bug_when>
    <thetext>Created attachment 331391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389573</commentid>
    <comment_count>7</comment_count>
      <attachid>331261</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-01-16 09:13:29 -0800</bug_when>
    <thetext>Comment on attachment 331261
Patch

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

&gt;&gt; Source/WebCore/dom/Document.h:1410
&gt;&gt; +    void applicationDidBecomeActive();
&gt; 
&gt; Perhaps instead of these we can just expose a single function:
&gt; 
&gt;     forEachApplicationStateChangeListener(const Function&lt;void(ApplicationStateChangeListener&amp;)&gt;&amp;);
&gt; 
&gt; I think this would cut down the total amount of code. The functions in Page can do more of the work.

Good idea, changed.

&gt;&gt; Source/WebCore/dom/Document.h:1895
&gt;&gt; +    HashSet&lt;ApplicationStateChangeListener*&gt; m_applicationStateChangeListener;
&gt; 
&gt; Should be m_applicationStateChangeListeners, plural.

Fixed.

&gt;&gt; Source/WebCore/page/ApplicationStateChangeListener.h:39
&gt;&gt; +    virtual void applicationWillEnterForeground(Document&amp;, SuspendState) { };
&gt; 
&gt; I don’t think these functions need to receive a Document&amp; argument. I know that in Objective-C delegation patterns we often pass the object, but this is internal to WebKit and this might not be helpful. It’s very easy for DOM nodes to get their document.
&gt; 
&gt; The did/will enter foreground/background functions are not used yet. Can we wait to add them until we need them instead of adding them now?
&gt; 
&gt; What about the SuspendState? Will clients really need these? And is it better to use argument to communicate this rather than four separate functions?
&gt; 
&gt; If we do need to communicate the suspend state and decide we want to use an argument instead of additional separate functions, I suggest we just use a boolean; our rule of thumb is that we use enumerations when callers are going to be passing constants that would otherwise be mysterious. But there are no callers like that.
&gt; 
&gt; No need for any of these semicolons after the &quot;{ }&quot;.

Removed all parameters and semicolons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389657</commentid>
    <comment_count>8</comment_count>
      <attachid>331391</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-16 11:46:45 -0800</bug_when>
    <thetext>Comment on attachment 331391
Patch

Clearing flags on attachment: 331391

Committed r226990: &lt;https://trac.webkit.org/changeset/226990&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389658</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-16 11:46:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331261</attachid>
            <date>2018-01-12 17:26:37 -0800</date>
            <delta_ts>2018-01-16 09:08:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181623-20180112172636.patch</filename>
            <type>text/plain</type>
            <size>40023</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjMWVmYmE3MTNiZDRh
NzhlZDY2NTY0ZDUzMDdjMmJjYWNiNWU5Yy4uODc4ODllNzNiYjIwMTQzNjJmMjlkMjg5OTg1MmI2
NzM3MTAwOWFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE4LTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIHNob3VsZCBiZSBmbHVzaGVkIHdoZW4gYXBwbGljYXRpb24gYWN0aXZh
dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2
MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NDg3NzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgSSB3YXNuJ3QgYWJs
ZSB0byByZXByb2R1Y2UgaXQgaW4gYSB0ZXN0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyKTog
TmV3LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUFwcGxpY2F0aW9uU3RhdGVD
aGFuZ2VMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBE
aXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZWdp
c3RlcldpdGhEb2N1bWVudCk6IFJlZ2lzdGVyIGZvciBhcHBsaWNhdGlvbiBzdGF0ZSBjaGFuZ2Vz
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1
bWVudCk6IFVucmVnaXN0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUpOiBQYXNzIHRocm91Z2ggdG8gdGhlIHBsYXllci4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAg
ICAgICAgKiBwYWdlL0FwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcjo6YXBwbGljYXRp
b25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uU3RhdGVD
aGFuZ2VMaXN0ZW5lcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyOjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlz
dGVuZXI6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZvckVhY2hEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKToKKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6YXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjphcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6YXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMpOiBTd2l0Y2gKKyAgICAgICAgdG8gcmVsZWFzZSBsb2dnaW5n
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVD
b3JyZWN0ZWRWaWRlb1NhbXBsZSk6IFNwbGl0IG91dCBvZiBlbnF1ZXVlVmlkZW9TYW1wbGUuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVWaWRlb1NhbXBsZSk6IE1vdmUgY29kZSB0aGF0IHVwZGF0ZXMKKyAgICAgICAgdGhlIGRp
c3BsYXkgbGF0ZXIgdG8gZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlLiBSZWFycmFuZ2UgbG9n
aWMgdG8gdGhlIGltYWdlIHBhaW50ZXIgc2FtcGxlCisgICAgICAgIGJ1ZmZlciBoYXMgdGhlIGNv
cnJlY3QgdGltZXN0YW1wLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKTogU3dpdGNoIHRvIHJlbGVhc2Ug
bG9nZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUpOiBmIHRoZSBkaXNwbGF5CisgICAgICAgIGxheWVyIGlzIGluIHRoZSAiZmFpbGVk
IiBzdGF0ZSwgZmx1c2ggdGhlIHJlbmRlcmVyIGFuZCB1cGRhdGUgdGhlIGRpc3BsYXkgbW9kZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
ZW5zdXJlTGF5ZXJzKTogU3dpdGNoIHRvIHJlbGVhc2UgbG9nZ2luZy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9hZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
YW5jZWxMb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1v
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6cGxheSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYXVzZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRWb2x1bWUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0TXV0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlUmVhZHlTdGF0ZSkgRGl0dG8uOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsb2dDaGFubmVs
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnVwZGF0ZVNhbXBsZVRpbWVzKTogRGVsZXRlZC4KKwogMjAxOC0wMS0x
MiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyNjkyNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGQyOWE3MTZkZTdlOTJk
Mjk3MmE2NTdiMTBiYmFlNzMyNzA4Yjk3OC4uN2E1NGJmM2I0N2U2MWMxYjc1NWM5MjMwNjQxYTky
YWMzNjVjMTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMS0xMiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBzaG91bGQgYmUgZmx1c2hlZCB3aGVuIGFwcGxpY2F0aW9uIGFjdGl2YXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjIz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NzczOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVz
aWduQWN0aXZlKTogQ2FsbCBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZCk6IERpdHRvLCBsZXQgaXQgY2FsbCBsaWJXZWJSVENQcm92
aWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKTogQ2FsbCBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSk6IERpdHRvLCBsZXQgaXQgY2FsbCBsaWJXZWJSVENQcm92aWRlci4K
KwogMjAxOC0wMS0xMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBSZW1vdmUgdW5uZWVkZWQgYWNjZXNzaWJpbGl0eS1yZWxhdGVkIHNhbmRib3gg
cnVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3ZTVkNjEyNGViNjk1MWY2N2ZhYWZjY2M5NDE0YjE4OTdjMzIzNzAzLi4yMmVm
NjgwNjliZjg0MDZiMjcyNGI0NDA1ZDY2MThjYWJlNmQ0YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTgsNiArMjE4LDcg
QEAKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFRTc2RUMxQkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0VFNzZFQTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RUU3NkVE
MUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oICovOyB9Owor
CQkwN0YwNEE5NDIwMDZCMUUzMDBBRTJBMEEgLyogQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Yw
NEE5MjIwMDY4NEJDMDBBRTJBMEEgLyogQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGODc2
ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Y4NzY4MzFBRDRBOTQ1
MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMx
Q0IgLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwODE3NDZCOTU3MDA1MzJENzggLyogUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGRTk5REQxODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxl
bWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNzaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyNzcsNiAr
NTI3OCw3IEBACiAJCTA3RUU3NkVBMUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0VFNzZFRDFCRUE2
MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMzIC8qIE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3RjA0QTkyMjAwNjg0QkMwMEFFMkEwQSAvKiBBcHBsaWNhdGlvblN0YXRl
Q2hhbmdlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwbGlj
YXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0ZFOTlEQTE4ODA3QTdEMDAy
NTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxlbWVudFNlc3Np
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFFbGVtZW50U2Vzc2lv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1ODksNiArMTg1OTEsNyBAQAog
CQkJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCAqLywKIAkJCQlCQ0Y0OENFNjEzNzBEMTE0MDA0RTg3RDYgLyogQWRqdXN0Vmlld1NpemVP
ck5vdC5oICovLAogCQkJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaCAqLywKKwkJCQkwN0YwNEE5MjIwMDY4NEJDMDBBRTJBMEEgLyogQXBwbGljYXRp
b25TdGF0ZUNoYW5nZUxpc3RlbmVyLmggKi8sCiAJCQkJQzlENDY3MDQxRTYwQzNFQjAwODE5NUZC
IC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyog
QXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhD
MyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAtMjYzNTAsNiArMjYzNTMsNyBAQAog
CQkJCTYzQkQ0QTVGMUY3NzhFOUYwMDQzODcyMiAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk2MzE1MkQxOTFGOTUzMUVFMDA3QTVFNEIgLyogQXBwbGljYXRpb25N
YW5pZmVzdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjM1NEY0QzkxRjdBRkM5NDAwRDg5
REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3
RjA0QTk0MjAwNkIxRTMwMEFFMkEwQSAvKiBBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJs
b2NrRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIw
MDU2RTU4MSAvKiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4
RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggYzdkNDg1YjM1YTg0MzdlZTdjNzI5YTUwMmE0ZjdjNWU2NDVkMzRi
My4uZGJkMjQ3NGFhOWZlOGFkNDBjNmNiODcyMGQ4ZTAyNjMwNTQ5MTkwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKIAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlvblN0YXRlQ2hh
bmdlTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQmVmb3JlVW5sb2Fk
RXZlbnQuaCIKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKQEAgLTczNzEsNiArNzM3Miw0MCBA
QCB2b2lkIERvY3VtZW50OjptZWRpYVN0cmVhbUNhcHR1cmVTdGF0ZUNoYW5nZWQoKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcihB
cHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXImIGxpc3RlbmVyKQoreworICAgIG1fYXBwbGlj
YXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmFkZCgmbGlzdGVuZXIpOworfQorCit2b2lkIERvY3Vt
ZW50OjpyZW1vdmVBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIoQXBwbGljYXRpb25TdGF0
ZUNoYW5nZUxpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICBtX2FwcGxpY2F0aW9uU3RhdGVDaGFu
Z2VMaXN0ZW5lci5yZW1vdmUoJmxpc3RlbmVyKTsKK30KKwordm9pZCBEb2N1bWVudDo6YXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sKKyAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogbV9h
cHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIpCisgICAgICAgIGxpc3RlbmVyLT5hcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmUoKnRoaXMpOworfQorCit2b2lkIERvY3VtZW50OjphcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBtX2FwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcikK
KyAgICAgICAgbGlzdGVuZXItPmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCp0aGlzLCBp
c1N1c3BlbmRlZFVuZGVyTG9jayA/IEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcjo6U3Vz
cGVuZFN0YXRlOjpTdXNwZW5kZWRVbmRlckxvY2sgOiBBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlz
dGVuZXI6OlN1c3BlbmRTdGF0ZTo6U3VzcGVuZGVkKTsKK30KKwordm9pZCBEb2N1bWVudDo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCit7
CisgICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IG1fYXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3Rl
bmVyKQorICAgICAgICBsaXN0ZW5lci0+YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCp0
aGlzLCBpc1N1c3BlbmRlZFVuZGVyTG9jayA/IEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5l
cjo6U3VzcGVuZFN0YXRlOjpTdXNwZW5kZWRVbmRlckxvY2sgOiBBcHBsaWNhdGlvblN0YXRlQ2hh
bmdlTGlzdGVuZXI6OlN1c3BlbmRTdGF0ZTo6U3VzcGVuZGVkKTsKK30KKwordm9pZCBEb2N1bWVu
dDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIGZvciAoYXV0byogbGlzdGVu
ZXIgOiBtX2FwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcikKKyAgICAgICAgbGlzdGVuZXIt
PmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCp0aGlzKTsKK30KKwogY29uc3QgQXRvbWljU3Ry
aW5nJiBEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB7CiAgICAgYXV0byogYm9keUVsZW1lbnQg
PSBib2R5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGZiMzY5NzI0NjJlYmJhNjhjYTQ4MGYx
NjUzMTJiYjYwOTI1OTZlNWIuLjczNDY5Mzk4NTAxYWViOTY2ODAxMzY5ZWI4MWI3ZGJjOTZjNTU0
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03Niw2ICs3Niw3IEBAIGNsYXNzIElucHV0Q3Vy
c29yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFwcGxpY2F0aW9uU3RhdGVDaGFu
Z2VMaXN0ZW5lcjsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBBdHRyOwogY2xhc3MgQ0RB
VEFTZWN0aW9uOwpAQCAtMTQwMCw2ICsxNDAxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKFNXQ2xpZW50Q29ubmVjdGlvbiopOwogI2VuZGlmCiAKKyAg
ICB2b2lkIGFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcihBcHBsaWNhdGlvblN0YXRl
Q2hhbmdlTGlzdGVuZXImKTsKKyAgICB2b2lkIHJlbW92ZUFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VM
aXN0ZW5lcihBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXImKTsKKworICAgIHZvaWQgYXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZChib29sKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3Vu
ZChib29sKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisKIHByb3Rl
Y3RlZDoKICAgICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25S
ZW5kZXJlZFBsYWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1
Y3Rpb25GbGFncyA9IDApOwpAQCAtMTg4Miw2ICsxODkxLDggQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmUHRyPFNXQ2xpZW50Q29ubmVjdGlvbj4gbV9zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbjsKICNlbmRpZgorCisgICAgSGFzaFNldDxBcHBsaWNhdGlvblN0
YXRlQ2hhbmdlTGlzdGVuZXIqPiBtX2FwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcjsKIH07
CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAyMzdiNDFiNmZmOGJk
YjBmNWJhZGFiMzlkYzIyZTJlMDJjOTljODQ5Li4xOTRlZWYyY2E2NjYyYjk5OTQ3MzkwMWNlNmI3
MDIyOWMwNmFhNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTc0Miw2ICs3NDIsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERv
Y3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAg
IGRvY3VtZW50LnJlZ2lzdGVyRm9yTWVkaWFTdHJlYW1TdGF0ZUNoYW5nZUNhbGxiYWNrcygqdGhp
cyk7CiAjZW5kaWYKKworICAgIGRvY3VtZW50LmFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0
ZW5lcigqdGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhE
b2N1bWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC03ODIsNiArNzg0LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICBkb2N1bWVudC51bnJlZ2lzdGVyRm9yTWVkaWFTdHJlYW1TdGF0ZUNoYW5nZUNhbGxiYWNr
cygqdGhpcyk7CiAjZW5kaWYKIAorICAgIGRvY3VtZW50LnJlbW92ZUFwcGxpY2F0aW9uU3RhdGVD
aGFuZ2VMaXN0ZW5lcigqdGhpcyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpCkBAIC03ODY0LDYgKzc4NjcsMjAgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTG9n
KFdURkxvZ0xldmVsIGxldmVsKSBjb25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKERvY3VtZW50JiBkb2N1bWVudCkKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9jdW1lbnQgPT0gJnRoaXMtPmRvY3VtZW50
KCkpOworICAgIGlmIChtX3BsYXllcikKKyAgICAgICAgbV9wbGF5ZXItPmFwcGxpY2F0aW9uV2ls
bFJlc2lnbkFjdGl2ZSgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VE
KGRvY3VtZW50LCAmZG9jdW1lbnQgPT0gJnRoaXMtPmRvY3VtZW50KCkpOworICAgIGlmIChtX3Bs
YXllcikKKyAgICAgICAgbV9wbGF5ZXItPmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7Cit9
CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IDhmMzBkNmI3Y2MzOGI0MWRlYzZjYTdmMmE0YjM0MTVmMWZkODhiZTkuLjM4YjI0NjA3MWZlODhm
NjBlMjY2NDc1MGYwODMwMWE3MmI5ZWIyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFZJREVPKQogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiQXV0b3BsYXlFdmVudC5oIgogI2luY2x1ZGUgIkdlbmVyaWNF
dmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgpAQCAtMTI4LDYgKzEy
OSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJD
bGllbnQKICAgICAsIHByaXZhdGUgTWVkaWFQcm9kdWNlcgogICAgICwgcHJpdmF0ZSBWaXNpYmls
aXR5Q2hhbmdlQ2xpZW50CisgICAgLCBwcml2YXRlIEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0
ZW5lcgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAsIHByaXZhdGUgQXVkaW9UcmFja0Ns
aWVudAogICAgICwgcHJpdmF0ZSBUZXh0VHJhY2tDbGllbnQKQEAgLTkwNCw2ICs5MDYsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgaGFuZGxlU2Vla1RvUGxheWJhY2tQb3NpdGlvbihkb3VibGUpOwog
ICAgIHZvaWQgc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXJGaXJlZCgpOwogCisgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoRG9jdW1lbnQmKSBmaW5hbDsKKyAgICB2
b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKERvY3VtZW50JikgZmluYWw7CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiSFRNTE1lZGlhRWxlbWVudCI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9BcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2IwOGY5MDFhNWVjNjg1MWRiMTkxYWZjYjlhYTVkYzg0NWViOTA0OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVy
LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
b2N1bWVudDsKKworY2xhc3MgQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKERvY3VtZW50
JikgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZShEb2N1
bWVudCYpIHsgfTsKKworICAgIGVudW0gY2xhc3MgU3VzcGVuZFN0YXRlIHsgU3VzcGVuZGVkLCBT
dXNwZW5kZWRVbmRlckxvY2sgfTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQoRG9jdW1lbnQmLCBTdXNwZW5kU3RhdGUpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKERvY3VtZW50JiwgU3VzcGVuZFN0YXRl
KSB7IH07CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BcHBsaWNhdGlvblN0YXRlQ2hhbmdl
TGlzdGVuZXIoKSA9IGRlZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2Y2QyOTJjOTQ2YTc4Y2Q1N2QyODdlY2JhY2IyYWMwMTc5N2YzYmJk
Li5jZDZlZDRlMzE1NzQ4ODBjZGMxNWU3OTVlMWJkMjRlOGNiNjQ2N2E2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTIzNDksNCArMjM0OSw0NCBAQCB2b2lkIFBhZ2U6OmRpZENoYW5nZU1haW5Eb2N1
bWVudCgpCiAjZW5kaWYKIH0KIAordm9pZCBQYWdlOjpmb3JFYWNoRG9jdW1lbnQoY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBmdW5jdG9yKQoreworICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CisgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBmdW5jdG9yKCpmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAg
fQorfQorCit2b2lkIFBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCit7CisgICAg
Zm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGRvY3Vt
ZW50LmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOworICAgIH0pOworfQorCit2b2lkIFBh
Z2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxv
Y2spCit7CisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGRvY3VtZW50LmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGlzU3VzcGVuZGVk
VW5kZXJMb2NrKTsKKyAgICB9KTsKKyAgICBtX2xpYldlYlJUQ1Byb3ZpZGVyLT5zZXRBY3RpdmUo
ZmFsc2UpOworfQorCit2b2lkIFBhZ2U6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZChi
b29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQoreworICAgIG1fbGliV2ViUlRDUHJvdmlkZXItPnNl
dEFjdGl2ZSh0cnVlKTsKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKKyAgICAgICAgZG9jdW1lbnQuYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGlz
U3VzcGVuZGVkVW5kZXJMb2NrKTsKKyAgICB9KTsKK30KKwordm9pZCBQYWdlOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQm
IGRvY3VtZW50KSB7CisgICAgICAgIGRvY3VtZW50LmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNDZiNmY2MjcxZWVmZTJjOWVkNzQ5ZmFiMDY3YTE3ZDQ4N2FhNjkyOC4uZTEzNjMyNWM3NWZj
YTY5ZDljMzJjYjMzMmM3NTQ4ZGE2ZjAyMzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTU4OCw2ICs1
ODgsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJpZGVG
b3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKwogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFN0cmluZyBkb21haW47CkBAIC02MTgsNiAr
NjIzLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlTG93TW9kZVBvd2VyQ2hhbmdlKGJv
b2wpOwogCisgICAgdm9pZCBmb3JFYWNoRG9jdW1lbnQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KERvY3VtZW50Jik+Jik7CisKICAgICBlbnVtIGNsYXNzIFRpbWVyVGhyb3R0bGluZ1N0YXRlIHsg
RGlzYWJsZWQsIEVuYWJsZWQsIEVuYWJsZWRJbmNyZWFzaW5nIH07CiAgICAgdm9pZCBoaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBzZXRUaW1lclRo
cm90dGxpbmdTdGF0ZShUaW1lclRocm90dGxpbmdTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggODU5NGI2NWU4MmQ5NDQ0
MDFhYjQ2NzEyNjEwNDFkZWNlY2M0NTc2ZC4uYzBlNzdmNWY2N2QzMmFmNDg5MjA5Y2IwOTczY2Rm
OTZjY2ZiYjM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcApAQCAtMTUwMiw2ICsxNTAyLDE2IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OnNo
b3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0KCkgY29uc3QKICAgICByZXR1cm4gY2xpZW50KCkubWVk
aWFQbGF5ZXJTaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpOwogfQogCit2b2lkIE1lZGlhUGxh
eWVyOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQoreworICAgIG1fcHJpdmF0ZS0+YXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXI6OmFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKK3sKKyAgICBtX3ByaXZhdGUtPmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKCk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGNvbnN0IExv
Z2dlciYgTWVkaWFQbGF5ZXI6Om1lZGlhUGxheWVyTG9nZ2VyKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDUxNzYyZjhmNmIwZDA3
Mjk1MTlmZTExNmFjYTAyM2IwMTUzMTk1NzAuLjcxMDA1OTA0ZWYzYjhjZTc1MjY3NzQ4MGEyMWM2
ZTBiMzVmZWMyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNjM4LDYgKzYzOCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCB2b2lkKiBt
ZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSB7IHJldHVybiBjbGllbnQoKS5tZWRpYVBsYXllckxv
Z0lkZW50aWZpZXIoKTsgfQogI2VuZGlmCiAKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJlc2ln
bkFjdGl2ZSgpOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKwogcHJp
dmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmlu
ZGV4IDY4YjA0MzAzMTY3NjI2Y2FiODg2M2Y5YWVkM2NkMjNkYjdiOGY0ODAuLmQ4YzZiYWM1ZjEz
OGQ1YTI2ZmQ0MTBjYzRjMjc0ZGQ5YmQ3NTBiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yODAsNiArMjgw
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBY3RpdmVTb3VyY2VCdWZmZXJz
Q2hhbmdlZCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc2FibGVTbGVlcChi
b29sKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKSB7IH0K
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKaW5kZXggMjE0YTJkZDc1NzM5ZGNiYzI1
ZGIxOGU3MmYyZmQwMmQ1Mjg1MTA2Yy4uMDAxZDFkNWVmZjM3Mzg0ZjgwNGY1MGRlYTkzMzU3ZGQz
MzAyM2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dB
ZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3
dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTQyLDcgKzQzLDYgQEAgT0JKQ19DTEFTUyBBVlNhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplcjsKIE9CSkNfQ0xBU1MgQVZTdHJlYW1TZXNzaW9uOwogT0JK
Q19DTEFTUyBOU051bWJlcjsKIE9CSkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFu
Z2VMaXN0ZW5lcjsKLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBs
ZUJ1ZmZlclJlZjsKIAogbmFtZXNwYWNlIFBBTCB7CiBjbGFzcyBDbG9jazsKQEAgLTYwLDcgKzYw
LDExIEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW07CiBjbGFzcyBWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXI7CiAjZW5kaWYKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2VydmVyLCBwcml2YXRlIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKE1lZGlhUGxheWVyKik7CiAg
ICAgdmlydHVhbCB+TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCk7CkBAIC04
OSw2ICs5MywxMyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7
CiAgICAgUGxhdGZvcm1MYXllciogYmFja2dyb3VuZExheWVyKCk7CiAKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyI7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQorICAg
IFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZQogCkBAIC0xNDQsMTAgKzE1
NSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoUGVuZGlu
Z1NhbXBsZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNG
cm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYpOwogCi0gICAgdm9pZCB1cGRhdGVT
YW1wbGVUaW1lcyhNZWRpYVNhbXBsZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IGNoYXIqKTsK
ICAgICBNZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUm
LCBkb3VibGUpOwogICAgIAogICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIGVucXVldWVDb3JyZWN0ZWRW
aWRlb1NhbXBsZShNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgZmx1c2hBbmRSZW1vdmVWaWRlb1Nh
bXBsZUJ1ZmZlcnMoKTsKICAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JW
aWRlb0RhdGEoKTsKIApAQCAtMjIzLDEyICsyMzQsMTIgQEAgcHJpdmF0ZToKIAogICAgIENHQWZm
aW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoTWVkaWFTYW1wbGUmLCBib29s
IGZvcmNlVXBkYXRlID0gZmFsc2UpOwogCisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpIGZpbmFsOworCiAgICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9Owog
ICAgIFdlYWtQdHJGYWN0b3J5PE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4g
bV93ZWFrUHRyRmFjdG9yeTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX21lZGlh
U3RyZWFtUHJpdmF0ZTsKLQogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9h
Y3RpdmVWaWRlb1RyYWNrOwotCiAgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKICAg
ICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9iYWNrZ3JvdW5kTGF5ZXI7CkBAIC0yNzIsNiAr
MjgzLDEyIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
OwogI2VuZGlmCisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBSZWY8Y29uc3QgTG9n
Z2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYK
KwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBmM2FjY2NmM2Q5
NTdhNDQ0YWUzODVhYjY2NzhiZTBiNmNmNGM3ZGY5Li5hZTdjY2UzMzE5MGEyZjVlY2NhNDBkZGEy
NzdiMGFhZjk2ZjRlMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xOTQsMTMg
KzE5NCwxNyBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYQogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICAs
IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyKFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
cjo6Y3JlYXRlKCkpCiAjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1f
bG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmll
cihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7Ci0gICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoJXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpCiB7Ci0gICAgTE9HKE1lZGlh
LCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCVwKSIsIHRoaXMpOworICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCiAgICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW52YWxpZGF0ZV07CiAKQEAg
LTI3NiwyNyArMjgwLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGUKICAgICBxdWV1ZS5hcHBl
bmQoc2FtcGxlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnVwZGF0ZVNhbXBsZVRpbWVzKE1lZGlhU2FtcGxlJiBzYW1wbGUsIGNvbnN0IE1lZGlhVGlt
ZSYgdGltZWxpbmVPZmZzZXQsIGNvbnN0IGNoYXIqIGxvZ2dpbmdQcmVmaXgpCi17Ci0gICAgTE9H
KE1lZGlhQ2FwdHVyZVNhbXBsZXMsICIlcyglcCk6IG9yaWdpbmFsIHNhbXBsZSA9ICVzIiwgbG9n
Z2luZ1ByZWZpeCwgdGhpcywgdG9TdHJpbmcoc2FtcGxlKS51dGY4KCkuZGF0YSgpKTsKLSAgICBz
YW1wbGUub2Zmc2V0VGltZXN0YW1wc0J5KHRpbWVsaW5lT2Zmc2V0KTsKLSAgICBMT0coTWVkaWFD
YXB0dXJlU2FtcGxlcywgIiVzKCVwKTogYWRqdXN0ZWQgc2FtcGxlID0gJXMiLCBsb2dnaW5nUHJl
Zml4LCB0aGlzLCB0b1N0cmluZyhzYW1wbGUpLnV0ZjgoKS5kYXRhKCkpOwotCi0jaWYgIUxPR19E
SVNBQkxFRAotICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7Ci0gICAgZG91YmxlIGRl
bHRhID0gKHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCkgLSBub3cpLnRvRG91YmxlKCk7Ci0gICAg
aWYgKGRlbHRhIDwgMCkKLSAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXApOiAqTk9URSogYXVkaW8g
c2FtcGxlIGF0IHRpbWUgJXMgaXMgJWYgc2Vjb25kcyBsYXRlIiwgbG9nZ2luZ1ByZWZpeCwgdGhp
cywgdG9TdHJpbmcobm93KS51dGY4KCkuZGF0YSgpLCAtZGVsdGEpOwotICAgIGVsc2UgaWYgKGRl
bHRhIDwgLjAxKQotICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpOT1RFKiBhdWRpbyBzYW1w
bGUgYXQgdGltZSAlcyBpcyBvbmx5ICVmIHNlY29uZHMgZWFybHkiLCBsb2dnaW5nUHJlZml4LCB0
aGlzLCB0b1N0cmluZyhub3cpLnV0ZjgoKS5kYXRhKCksIGRlbHRhKTsKLSAgICBlbHNlIGlmIChk
ZWx0YSA+IC4zKQotICAgICAgICBMT0coTWVkaWEsICIlcyglcCk6ICpOT1RFKiBhdWRpbyBzYW1w
bGUgYXQgdGltZSAlcyBpcyAlZiBzZWNvbmRzIGVhcmx5ISIsIGxvZ2dpbmdQcmVmaXgsIHRoaXMs
IHRvU3RyaW5nKG5vdykudXRmOCgpLmRhdGEoKSwgZGVsdGEpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obG9nZ2luZ1ByZWZpeCk7Ci0jZW5kaWYKLQotfQotCiBNZWRpYVRpbWUgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYWxjdWxhdGVUaW1lbGluZU9mZnNldChjb25z
dCBNZWRpYVNhbXBsZSYgc2FtcGxlLCBkb3VibGUgbGF0ZW5jeSkKIHsKICAgICBNZWRpYVRpbWUg
c2FtcGxlVGltZSA9IHNhbXBsZS5vdXRwdXRQcmVzZW50YXRpb25UaW1lKCk7CkBAIC0zNDAsNiAr
MzIzLDM2IEBAIHN0YXRpYyB2b2lkIHJ1bldpdGhvdXRBbmltYXRpb25zKGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYgZnVuY3Rpb24pCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIH0K
IAordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVDb3Jy
ZWN0ZWRWaWRlb1NhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQoreworICAgIGlmIChtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICBpZiAoW21fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIHN0YXR1c10gPT0gQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmdTdGF0dXNGYWls
ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0
aW9uKCkgIT0gbV92aWRlb1JvdGF0aW9uIHx8IHNhbXBsZS52aWRlb01pcnJvcmVkKCkgIT0gbV92
aWRlb01pcnJvcmVkKSB7CisgICAgICAgICAgICBtX3ZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlk
ZW9Sb3RhdGlvbigpOworICAgICAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVv
TWlycm9yZWQoKTsKKyAgICAgICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzLCAmc2Ft
cGxlXSB7CisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCku
YWZmaW5lVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUp
OworICAgICAgICAgICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBp
c1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKKyAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGlu
Z1F1ZXVlKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUsIHNhbXBsZSk7CisgICAgICAgICAgICBy
ZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1w
bGVCdWZmZXJdOworICAgIH0KKworICAgIGlmICghbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1l
KSB7CisgICAgICAgIG1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSA9IHRydWU7CisgICAgICAg
IG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoKTsKKyAgICB9Cit9CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUo
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQogewog
ICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tNYXAuY29udGFpbnModHJhY2suaWQoKSkpOwpAQCAtMzYy
LDM0ICszNzUsMjYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHIKICAgICBpZiAodGltZWxpbmVP
ZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKSB7CiAgICAgICAgIHRpbWVsaW5lT2Zm
c2V0ID0gY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoc2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOwog
ICAgICAgICB2aWRlb1RyYWNrLT5zZXRUaW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7Ci0g
ICAgICAgIExPRyhNZWRpYUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJh
Y2sgJXMgc2V0IHRvICVzIiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1l
bGluZU9mZnNldCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQogCi0gICAgdXBkYXRlU2FtcGxlVGlt
ZXMoc2FtcGxlLCB0aW1lbGluZU9mZnNldCwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlIik7Ci0KLSAgICBpZiAobV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgaWYgKHNhbXBsZS52aWRlb1JvdGF0aW9uKCkgIT0gbV92
aWRlb1JvdGF0aW9uIHx8IHNhbXBsZS52aWRlb01pcnJvcmVkKCkgIT0gbV92aWRlb01pcnJvcmVk
KSB7Ci0gICAgICAgICAgICBtX3ZpZGVvUm90YXRpb24gPSBzYW1wbGUudmlkZW9Sb3RhdGlvbigp
OwotICAgICAgICAgICAgbV92aWRlb01pcnJvcmVkID0gc2FtcGxlLnZpZGVvTWlycm9yZWQoKTsK
LSAgICAgICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzLCAmc2FtcGxlXSB7Ci0gICAg
ICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYWZmaW5lVHJhbnNm
b3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUpOwotICAgICAgICAg
ICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9y
ZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKG1fcGVu
ZGluZ1ZpZGVvU2FtcGxlUXVldWUsIHNhbXBsZSk7Ci0gICAgICAgICAgICByZXF1ZXN0Tm90aWZp
Y2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZW5xdWV1ZVNhbXBs
ZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOwor
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidGltZWxpbmUgb2Zmc2V0IGZvciB0cmFj
ayAiLCB0cmFjay5pZCgpLCAiIHNldCB0byAiLCB0aW1lbGluZU9mZnNldCk7CiAgICAgfQogCi0g
ICAgaWYgKCFtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUpIHsKLSAgICAgICAgbV9oYXNFdmVy
RW5xdWV1ZWRWaWRlb0ZyYW1lID0gdHJ1ZTsKLSAgICAgICAgbV9wbGF5ZXItPmZpcnN0VmlkZW9G
cmFtZUF2YWlsYWJsZSgpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAib3JpZ2luYWwg
c2FtcGxlID0gIiwgdG9TdHJpbmcoc2FtcGxlKSk7CisgICAgc2FtcGxlLm9mZnNldFRpbWVzdGFt
cHNCeSh0aW1lbGluZU9mZnNldCk7CisgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJ1cGRh
dGVkIHNhbXBsZSA9ICIsIHRvU3RyaW5nKHNhbXBsZSkpOworCisgICAgaWYgKFdJTExfTE9HKFdU
RkxvZ0xldmVsRGVidWcpKSB7CisgICAgICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7
CisgICAgICAgIGRvdWJsZSBkZWx0YSA9IChzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpIC0gbm93
KS50b0RvdWJsZSgpOworICAgICAgICBpZiAoZGVsdGEgPCAwKQorICAgICAgICAgICAgREVCVUdf
TE9HKExPR0lERU5USUZJRVIsICIqTk9URSogc2FtcGxlIGF0IHRpbWUgaXMgIiwgbm93LCAiIGlz
IiwgLWRlbHRhLCAiIHNlY29uZHMgbGF0ZSIpOworICAgICAgICBlbHNlIGlmIChkZWx0YSA8IC4w
MSkKKyAgICAgICAgICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiKk5PVEUqIGF1ZGlvIHNh
bXBsZSBhdCB0aW1lICIsIG5vdywgIiBpcyBvbmx5ICIsIGRlbHRhLCAiIHNlY29uZHMgZWFybHki
KTsKKyAgICAgICAgZWxzZSBpZiAoZGVsdGEgPiAuMykKKyAgICAgICAgICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiKk5PVEUqIGF1ZGlvIHNhbXBsZSBhdCB0aW1lICIsIG5vdywgIiBpcyAi
LCBkZWx0YSwgIiBzZWNvbmRzIGVhcmx5ISIpOwogICAgIH0KKworICAgIGVucXVldWVDb3JyZWN0
ZWRWaWRlb1NhbXBsZShzYW1wbGUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgp
CkBAIC00MjIsMTIgKzQyNywxMiBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyRXJyb3JEaWRDaGFuZ2UoQVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyKQogewogICAgIFVOVVNFRF9QQVJBTShsYXll
cik7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpsYXllckVycm9yRGlkQ2hhbmdlKCVwKSAtIGVycm9yID0gJXMiLCB0aGlzLCBbW2xheWVyLmVy
cm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7CisgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsICJlcnJvciA9ICIsIFtbbGF5ZXIuZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRp
b25dIFVURjhTdHJpbmddKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KiBsYXllcikKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKCVwKSAtIHN0YXR1cyA9ICVkIiwgdGhpcywg
KGludClsYXllci5zdGF0dXMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInN0YXR1
cyA9ICIsIChpbnQpbGF5ZXIuc3RhdHVzKTsKIAogICAgIGlmIChsYXllci5zdGF0dXMgIT0gQVZR
dWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmdTdGF0dXNSZW5kZXJpbmcpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQzOSw2ICs0NDQsMTYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGkKICAgICAgICAg
dHJhY2stPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CiB9CiAK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpCit7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYm
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVm
ZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKSB7CisgICAgICAgIGZsdXNoUmVuZGVyZXJzKCk7Cisg
ICAgICAgIGlmIChtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKKyAgICAgICAgICAgIGVucXVl
dWVDb3JyZWN0ZWRWaWRlb1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOworICAg
ICAgICB1cGRhdGVEaXNwbGF5TW9kZSgpOworICAgIH0KK30KKwogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKCkKIHsKICAgICBpZiAobV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCkBAIC00NjAsNyArNDc1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAKICAgICBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjplbnN1cmVMYXllcnM6ICtbQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgYWxs
b2NdIGZhaWxlZC4iKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICIrW0FWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGFsbG9jXSBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUzMSw3ICs1NDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6bG9hZChjb25zdCBTdHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9hZChNZWRpYVN0cmVh
bVByaXZhdGUmIHN0cmVhbSkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoJXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUik7CiAKICAgICBtX2ludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoKTsKIApAQCAtNTU2
LDE0ICs1NzEsMTQgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYW5jZWxMb2FkKCVwKSIsIHRoaXMp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogICAgIGlmIChwbGF5aW5nKCkpCiAgICAg
ICAgIHBhdXNlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpwcmVwYXJlVG9QbGF5KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXkoJXApIiwgdGhpcyk7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUik7CiB9CiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CkBAIC02MTYsNiAr
NjMxLDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZURpc3BsYXlNb2RlKCkKIAogICAgIGlmIChkaXNwbGF5TW9kZSA9PSBtX2Rpc3BsYXlNb2RlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBk
YXRlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRpc3BsYXlNb2RlKSk7CiAgICAgbV9kaXNwbGF5
TW9kZSA9IGRpc3BsYXlNb2RlOwogCiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KSB7CkBAIC02MjksNyArNjQ2LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBsYXkoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxheSglcCkiLCB0aGlzKTsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IHBs
YXlpbmcoKSB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47CkBAIC02NTMsNyArNjcwLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXkoKQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2UoKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGF1c2UoJXAp
IiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGlmICghbWV0
YURhdGFBdmFpbGFibGUoKSB8fCAhcGxheWluZygpIHx8IG1fZW5kZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTY3NSwxMSArNjkyLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpwYXVzZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKCVwKSIsIHRoaXMpOwot
CiAgICAgaWYgKG1fdm9sdW1lID09IHZvbHVtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCB2b2x1bWUpOwogICAgIG1fdm9sdW1lID0gdm9sdW1lOwog
ICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCiAg
ICAgICAgIHRyYWNrLT5zZXRWb2x1bWUobV9tdXRlZCA/IDAgOiBtX3ZvbHVtZSk7CkBAIC02ODcs
MTEgKzcwMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRNdXRlZCglcCkiLCB0aGlzKTsK
LQogICAgIGlmIChtdXRlZCA9PSBtX211dGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIsIG11dGVkKTsKICAgICBtX211dGVkID0gbXV0ZWQ7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja01hcC52YWx1ZXMoKSkKICAgICAg
ICAgdHJhY2stPnNldFZvbHVtZShtX211dGVkID8gMCA6IG1fdm9sdW1lKTsKQEAgLTc3OCw4ICs3
OTMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZVJlYWR5U3RhdGUoKQogewogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG5ld1JlYWR5U3Rh
dGUgPSBjdXJyZW50UmVhZHlTdGF0ZSgpOwogCi0gICAgaWYgKG5ld1JlYWR5U3RhdGUgIT0gbV9y
ZWFkeVN0YXRlKQorICAgIGlmIChuZXdSZWFkeVN0YXRlICE9IG1fcmVhZHlTdGF0ZSkgeworICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ1cGRhdGVkIHRvICIsIChpbnQpbmV3UmVh
ZHlTdGF0ZSk7CiAgICAgICAgIHNldFJlYWR5U3RhdGUobmV3UmVhZHlTdGF0ZSk7CisgICAgfQog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YWN0aXZlU3Rh
dHVzQ2hhbmdlZCgpCkBAIC0xMTcwLDYgKzExODcsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKQogICAg
IH0pOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvZ0NoYW5uZWwoKSBjb25zdAorewor
ICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCisKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDdmMmU0NzhjNjI1YzI1YTdlMjBiMzM2NjFhYWJlYTcwMzA3ZGIzNTUuLmQxY2RlOGM2OTQwNjAz
Nzg4YzIxMzM1MDllZTlhMDA0MDVjMjg2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNjg5LDYgKzI2ODksNyBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKQogdm9p
ZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogewogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVUlB
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAg
bV9wYWdlLT5hcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2Nr
KQpAQCAtMjY5OCw3ICsyNjk5LDcgQEAgdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZChib29sIGlzU3VzcGVuZGVkVW5kZXJMb2NrKQogICAgIG1faXNTdXNwZW5kZWRV
bmRlckxvY2sgPSBpc1N1c3BlbmRlZFVuZGVyTG9jazsKICAgICBzZXRMYXllclRyZWVTdGF0ZUlz
RnJvemVuKHRydWUpOwogCi0gICAgbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnNldEFjdGl2
ZShmYWxzZSk7CisgICAgbV9wYWdlLT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZChpc1N1
c3BlbmRlZFVuZGVyTG9jayk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25EaWRGaW5p
c2hTbmFwc2hvdHRpbmdBZnRlckVudGVyaW5nQmFja2dyb3VuZCgpCkBAIC0yNzE0LDEyICsyNzE1
LDEzIEBAIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKGJvb2wg
aXNTdXNwZW5kZWRVbmRlckxvY2spCiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJG
b3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86QHtAImlzU3VzcGVuZGVk
VW5kZXJMb2NrIjogQChpc1N1c3BlbmRlZFVuZGVyTG9jayl9XTsKIAotICAgIG1fcGFnZS0+bGli
V2ViUlRDUHJvdmlkZXIoKS5zZXRBY3RpdmUodHJ1ZSk7CisgICAgbV9wYWdlLT5hcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQoaXNTdXNwZW5kZWRVbmRlckxvY2spOwogfQogCiB2b2lkIFdl
YlBhZ2U6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGlj
YXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgbV9wYWdl
LT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
YWRqdXN0VmVsb2NpdHlEYXRhRm9yQm91bmRlZFNjYWxlKGRvdWJsZSYgaG9yaXpvbnRhbFZlbG9j
aXR5LCBkb3VibGUmIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSYgc2NhbGVDaGFuZ2VSYXRlLCBk
b3VibGUgZXhwb3NlZFJlY3RTY2FsZSwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGlt
dW1TY2FsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331391</attachid>
            <date>2018-01-16 09:08:38 -0800</date>
            <delta_ts>2018-01-16 11:46:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181623-20180116090837.patch</filename>
            <type>text/plain</type>
            <size>38268</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2OTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTVmNjI4OTA1ZDFkMGMw
ZDJlYWY1Y2M4NDY3ZTg5ZGUxMjFjOTRiNy4uODFlMGZlYzdkMmVkZWNiMTM3YzhjZWU1ZWYxYmRj
NTQxNzA2OTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE4LTAxLTEyICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIHNob3VsZCBiZSBmbHVzaGVkIHdoZW4gYXBwbGljYXRpb24gYWN0aXZh
dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE2
MjMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NDg3NzM4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgSSB3YXNuJ3QgYWJsZSB0
byByZXByb2R1Y2UgaXQgaW4gYSB0ZXN0LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyKTogTmV3
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUFwcGxpY2F0aW9uU3RhdGVDaGFu
Z2VMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZvckVhY2hB
cHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1bWVudCk6IFJlZ2lz
dGVyIGZvciBhcHBsaWNhdGlvbiBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6IFVucmVnaXN0ZXIuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmUpOiBQYXNzIHRocm91Z2ggdG8gdGhlIHBsYXllci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKTogRGl0dG8uCisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisKKyAgICAgICAgKiBwYWdlL0FwcGxpY2F0aW9u
U3RhdGVDaGFuZ2VMaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcjo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcjo6YXBwbGljYXRp
b25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpmb3JFYWNoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlKToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
KTogU3dpdGNoCisgICAgICAgIHRvIHJlbGVhc2UgbG9nZ2luZy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1wbGUp
OiBTcGxpdCBvdXQgb2YgZW5xdWV1ZVZpZGVvU2FtcGxlLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlkZW9TYW1wbGUpOiBN
b3ZlIGNvZGUgdGhhdCB1cGRhdGVzCisgICAgICAgIHRoZSBkaXNwbGF5IGxhdGVyIHRvIGVucXVl
dWVDb3JyZWN0ZWRWaWRlb1NhbXBsZS4gUmVhcnJhbmdlIGxvZ2ljIHRvIHRoZSBpbWFnZSBwYWlu
dGVyIHNhbXBsZQorICAgICAgICBidWZmZXIgaGFzIHRoZSBjb3JyZWN0IHRpbWVzdGFtcC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bGF5
ZXJFcnJvckRpZENoYW5nZSk6IFN3aXRjaCB0byByZWxlYXNlIGxvZ2dpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyU3RhdHVz
RGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKTogZiB0aGUgZGlz
cGxheQorICAgICAgICBsYXllciBpcyBpbiB0aGUgImZhaWxlZCIgc3RhdGUsIGZsdXNoIHRoZSBy
ZW5kZXJlciBhbmQgdXBkYXRlIHRoZSBkaXNwbGF5IG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6IFN3aXRj
aCB0byByZWxlYXNlIGxvZ2dpbmcuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpw
cmVwYXJlVG9QbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXkpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6cGF1c2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0Vm9sdW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldE11dGVkKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnVwZGF0ZVJlYWR5U3RhdGUpIERpdHRvLjoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bG9nQ2hhbm5lbCBjb25zdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRh
dGVTYW1wbGVUaW1lcyk6IERlbGV0ZWQuCisKIDIwMTgtMDEtMTUgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFByZXZlbnQgdXNlbGVzcyBNZWRpYVBs
YXllciBtdXRlIHN0YXRlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWJiMGFjYjRmYWJlZjI2
OWUwZmIzMTlmMjA5NDg5YmIwNDZmZDQ4Mi4uMjBjZjdkMDcxMTIwODE1MzUzZTNiYzk0NDFmZjEx
YzRkNDZhNTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMS0xNiAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBzaG91bGQgYmUgZmx1c2hlZCB3aGVuIGFwcGxpY2F0aW9uIGFjdGl2YXRl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjIz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NzczOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlKTogQ2FsbCBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZCk6IERpdHRvLCBsZXQgaXQgY2FsbCBsaWJXZWJSVENQcm92aWRl
ci4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKTogQ2FsbCBwYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSk6IERpdHRvLCBsZXQgaXQgY2FsbCBsaWJXZWJSVENQcm92aWRlci4KKwog
MjAxOC0wMS0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVNTRVJUSU9OIEZBSUxFRDogbV9wdHIgdW5kZXIgV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hl
czo6d3JpdGVSZWNvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA3ZTVkNjEyNGViNjk1MWY2N2ZhYWZjY2M5NDE0YjE4OTdjMzIz
NzAzLi4yMmVmNjgwNjliZjg0MDZiMjcyNGI0NDA1ZDY2MThjYWJlNmQ0YmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTgs
NiArMjE4LDcgQEAKIAkJMDdFOUUxMzAxOEY2MkIzNzAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0U5RTEyRjE4RjYyQjM3MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLzsgfTsKIAkJMDdFRTc2RUMxQkU5NkRCMDAwRjg5MTMz
IC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwN0VFNzZFQTFCRTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3RUU3NkVEMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5o
ICovOyB9OworCQkwN0YwNEE5NDIwMDZCMUUzMDBBRTJBMEEgLyogQXBwbGljYXRpb25TdGF0ZUNo
YW5nZUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwN0YwNEE5MjIwMDY4NEJDMDBBRTJBMEEgLyogQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxp
c3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDdGODc2ODQxQUQ1ODBGOTAwOTA1ODQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0Y4NzY4
MzFBRDRBOTQ1MDA5MDU4NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwN0Y5NDQxNjE4NjRE
MDQ2MDA1RDMxQ0IgLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFFOEMwODE3NDZCOTU3MDA1MzJE
NzggLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDdGRTk5REQxODgwN0E3RDAwMjU2NjQ4IC8q
IE1lZGlhRWxlbWVudFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3RkU5OURCMTg4MDdBN0QwMDI1NjY0OCAvKiBNZWRpYUVsZW1lbnRTZXNz
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTUyNzcsNiArNTI3OCw3IEBACiAJCTA3RUU3NkVBMUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0VF
NzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdFRTc2RUUxQkVBNjE5ODAwRjg5MTMz
IC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3RjA0QTkyMjAwNjg0QkMwMEFFMkEwQSAvKiBBcHBsaWNh
dGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3Rjg3NjgzMUFENEE5NDUwMDkwNTg0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNr
VGFyZ2V0Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0ZFOTlEQTE4
ODA3QTdEMDAyNTY2NDggLyogTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdGRTk5REIxODgwN0E3RDAwMjU2NjQ4IC8qIE1lZGlhRWxl
bWVudFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFFbGVt
ZW50U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1ODksNiArMTg1
OTEsNyBAQAogCQkJCTcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlCQ0Y0OENFNjEzNzBEMTE0MDA0RTg3RDYgLyogQWRqdXN0
Vmlld1NpemVPck5vdC5oICovLAogCQkJCUNFREExMkQ2MTUyQ0ExQ0IwMEQ5RTA4RCAvKiBBbHRl
cm5hdGl2ZVRleHRDbGllbnQuaCAqLywKKwkJCQkwN0YwNEE5MjIwMDY4NEJDMDBBRTJBMEEgLyog
QXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyLmggKi8sCiAJCQkJQzlENDY3MDQxRTYwQzNF
QjAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCAqLywKIAkJCQk0NTgzMEQ0QjE2NzlCNEY4MDBB
Q0Y4QzMgLyogQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1ODMwRDRDMTY3OUI0
RjgwMEFDRjhDMyAvKiBBdXRvc2Nyb2xsQ29udHJvbGxlci5oICovLApAQCAtMjYzNTAsNiArMjYz
NTMsNyBAQAogCQkJCTYzQkQ0QTVGMUY3NzhFOUYwMDQzODcyMiAvKiBBcHBsaWNhdGlvbk1hbmlm
ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzE1MkQxOTFGOTUzMUVFMDA3QTVFNEIgLyogQXBw
bGljYXRpb25NYW5pZmVzdExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjM1NEY0QzkxRjdB
RkM5NDAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTA3RjA0QTk0MjAwNkIxRTMwMEFFMkEwQSAvKiBBcHBsaWNhdGlvblN0YXRlQ2hhbmdl
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAv
KiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5
MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzdkNDg1YjM1YTg0MzdlZTdjNzI5YTUwMmE0Zjdj
NWU2NDVkMzRiMy4uZGUxOGFkMTVlMDAzODgxYTEzZDk2MDI5YjgzNWM2YThmNzA1ZTA0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlv
blN0YXRlQ2hhbmdlTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQmVm
b3JlVW5sb2FkRXZlbnQuaCIKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKQEAgLTczNzEsNiAr
NzM3MiwyMiBAQCB2b2lkIERvY3VtZW50OjptZWRpYVN0cmVhbUNhcHR1cmVTdGF0ZUNoYW5nZWQo
KQogfQogI2VuZGlmCiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VM
aXN0ZW5lcihBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXImIGxpc3RlbmVyKQoreworICAg
IG1fYXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVycy5hZGQoJmxpc3RlbmVyKTsKK30KKwor
dm9pZCBEb2N1bWVudDo6cmVtb3ZlQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyKEFwcGxp
Y2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lciYgbGlzdGVuZXIpCit7CisgICAgbV9hcHBsaWNhdGlv
blN0YXRlQ2hhbmdlTGlzdGVuZXJzLnJlbW92ZSgmbGlzdGVuZXIpOworfQorCit2b2lkIERvY3Vt
ZW50Ojpmb3JFYWNoQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyJik+JiBmdW5jdG9yKQoreworICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBtX2FwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcnMp
CisgICAgICAgIGZ1bmN0b3IoKmxpc3RlbmVyKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5nJiBE
b2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB7CiAgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGZiMzY5NzI0NjJlYmJhNjhjYTQ4MGYxNjUzMTJi
YjYwOTI1OTZlNWIuLmY2OGI1NDdmOTU5YWIxNjIwZGM0MjcxOWEyOGNkODlmYjZmMWRlNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03Niw2ICs3Niw3IEBAIGNsYXNzIElucHV0Q3Vyc29yOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0
ZW5lcjsKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiBjbGFzcyBBdHRyOwogY2xhc3MgQ0RBVEFTZWN0
aW9uOwpAQCAtMTQwMCw2ICsxNDAxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKFNXQ2xpZW50Q29ubmVjdGlvbiopOwogI2VuZGlmCiAKKyAgICB2b2lk
IGFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcihBcHBsaWNhdGlvblN0YXRlQ2hhbmdl
TGlzdGVuZXImKTsKKyAgICB2b2lkIHJlbW92ZUFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5l
cihBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXImKTsKKyAgICB2b2lkIGZvckVhY2hBcHBs
aWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIoY29uc3QgRnVuY3Rpb248dm9pZChBcHBsaWNhdGlv
blN0YXRlQ2hhbmdlTGlzdGVuZXImKT4mKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3Ry
dWN0aW9uRmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAx
IDw8IDEgfTsKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVm
YXVsdERvY3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0x
ODgyLDYgKzE4ODcsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBSZWZQdHI8U1dDbGllbnRDb25uZWN0aW9uPiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uOwog
I2VuZGlmCisKKyAgICBIYXNoU2V0PEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcio+IG1f
YXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyczsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFy
Z2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCAyMzdiNDFiNmZmOGJkYjBmNWJhZGFiMzlkYzIyZTJlMDJj
OTljODQ5Li42OGM1Y2RiMWIzZmVhZGNiNGRiMjk2YjMzOTZmZmM5ZGQ3MjYzNzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTc0Miw2ICs3NDIsOCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1
bWVudCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9y
TWVkaWFTdHJlYW1TdGF0ZUNoYW5nZUNhbGxiYWNrcygqdGhpcyk7CiAjZW5kaWYKKworICAgIGRv
Y3VtZW50LmFkZEFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcigqdGhpcyk7CiB9CiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYgZG9j
dW1lbnQpCkBAIC03ODIsNiArNzg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1bnJlZ2lz
dGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICBkb2N1bWVudC51bnJlZ2lz
dGVyRm9yTWVkaWFTdHJlYW1TdGF0ZUNoYW5nZUNhbGxiYWNrcygqdGhpcyk7CiAjZW5kaWYKIAor
ICAgIGRvY3VtZW50LnJlbW92ZUFwcGxpY2F0aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcigqdGhpcyk7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCkBAIC03ODY0LDYgKzc4Njcs
MTggQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTG9nKFdURkxvZ0xldmVsIGxldmVsKSBj
b25zdAogI2VuZGlmCiB9CiAKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlKCkKK3sKKyAgICBpZiAobV9wbGF5ZXIpCisgICAgICAgIG1fcGxheWVyLT5h
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgaWYgKG1fcGxheWVyKQorICAg
ICAgICBtX3BsYXllci0+YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKK30KKwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggOGYzMGQ2Yjdj
YzM4YjQxZGVjNmNhN2YyYTRiMzQxNWYxZmQ4OGJlOS4uZWJkZmM0ZmVjOWI4NWMyNmJhZmJjNmJh
MzAwYzg2MWRiMTg5OTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoVklERU8pCiAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKyNpbmNsdWRlICJBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJBdXRvcGxheUV2ZW50LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVldWUu
aCIKICNpbmNsdWRlICJHZW5lcmljVGFza1F1ZXVlLmgiCkBAIC0xMjgsNiArMTI5LDcgQEAgY2xh
c3MgSFRNTE1lZGlhRWxlbWVudAogICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudAogICAg
ICwgcHJpdmF0ZSBNZWRpYVByb2R1Y2VyCiAgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VD
bGllbnQKKyAgICAsIHByaXZhdGUgQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50CiAgICAg
LCBwcml2YXRlIFRleHRUcmFja0NsaWVudApAQCAtOTA0LDYgKzkwNiw5IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVTZWVrVG9QbGF5YmFja1Bvc2l0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBz
ZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVkKCk7CiAKKyAgICB2b2lkIGFwcGxp
Y2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpIGZpbmFsOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoKSBmaW5hbDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJIVE1MTWVkaWFF
bGVtZW50IjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0FwcGxpY2F0aW9u
U3RhdGVDaGFuZ2VMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BcHBsaWNhdGlvblN0
YXRlQ2hhbmdlTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMThlMDUyNjE3N2I3OTYyN2M3N2Q5OWVj
YmQ2Nzc3Yjk3Njk4YjhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9B
cHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIuaApAQCAtMCwwICsxLDQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworCitjbGFzcyBBcHBsaWNhdGlv
blN0YXRlQ2hhbmdlTGlzdGVuZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBhcHBsaWNh
dGlvbldpbGxSZXNpZ25BY3RpdmUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFwcGxpY2F0
aW9uU3RhdGVDaGFuZ2VMaXN0ZW5lcigpID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZjZDI5MmM5NDZhNzhjZDU3ZDI4N2VjYmFj
YjJhYzAxNzk3ZjNiYmQuLmVjMzQ2NjlmMzBlNDgxNjNkMTA0YjU4ZTgxZTg1OWM0ZjgzNjM5YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjM0OSw0ICsyMzQ5LDQyIEBAIHZvaWQgUGFnZTo6ZGlk
Q2hhbmdlTWFpbkRvY3VtZW50KCkKICNlbmRpZgogfQogCit2b2lkIFBhZ2U6OmZvckVhY2hEb2N1
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBmdW5jdG9yKQoreworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmdW5jdG9yKCpmcmFtZS0+ZG9jdW1lbnQo
KSk7CisgICAgfQorfQorCit2b2lkIFBhZ2U6OmFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgp
Cit7CisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAg
ICAgIGRvY3VtZW50LmZvckVhY2hBcHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXIoWyZdIChB
cHBsaWNhdGlvblN0YXRlQ2hhbmdlTGlzdGVuZXImIGxpc3RlbmVyKSB7CisgICAgICAgICAgICBs
aXN0ZW5lci5hcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgUGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQorewor
ICAgIG1fbGliV2ViUlRDUHJvdmlkZXItPnNldEFjdGl2ZShmYWxzZSk7Cit9CisKK3ZvaWQgUGFn
ZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKK3sKKyAgICBtX2xpYldlYlJUQ1By
b3ZpZGVyLT5zZXRBY3RpdmUodHJ1ZSk7Cit9CisKK3ZvaWQgUGFnZTo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUoKQoreworICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1
bWVudCkgeworICAgICAgICBkb2N1bWVudC5mb3JFYWNoQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxp
c3RlbmVyKFsmXSAoQXBwbGljYXRpb25TdGF0ZUNoYW5nZUxpc3RlbmVyJiBsaXN0ZW5lcikgewor
ICAgICAgICAgICAgbGlzdGVuZXIuYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggNDZiNmY2MjcxZWVmZTJjOWVkNzQ5ZmFiMDY3YTE3ZDQ4N2FhNjkyOC4uZGIxNDZhZTZj
NTNhZTdkOGIxMzZkOGUzZmNiZGZiZDE5Y2Q1ZThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTU4OCw2
ICs1ODgsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb3dQb3dlck1vZGVFbmFibGVkKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQb3dlck1vZGVFbmFibGVkT3ZlcnJp
ZGVGb3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pOwogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisKIHByaXZhdGU6CiAgICAgc3Ry
dWN0IE5hdmlnYXRpb24gewogICAgICAgICBTdHJpbmcgZG9tYWluOwpAQCAtNjE4LDYgKzYyMyw4
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGhhbmRsZUxvd01vZGVQb3dlckNoYW5nZShib29sKTsK
IAorICAgIHZvaWQgZm9yRWFjaERvY3VtZW50KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChEb2N1
bWVudCYpPiYpOworCiAgICAgZW51bSBjbGFzcyBUaW1lclRocm90dGxpbmdTdGF0ZSB7IERpc2Fi
bGVkLCBFbmFibGVkLCBFbmFibGVkSW5jcmVhc2luZyB9OwogICAgIHZvaWQgaGlkZGVuUGFnZURP
TVRpbWVyVGhyb3R0bGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgc2V0VGltZXJUaHJvdHRs
aW5nU3RhdGUoVGltZXJUaHJvdHRsaW5nU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDhhMTBhZGE5NDI2MjJmZjkyNjFm
N2MzMjI1NjhkMGJlYjYxYTNhYzEuLjJmOWQwNGFiYTJjMjkwNDM0ZWMwZDg0YTczMTI0YTQwMWVh
NTYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTE1MDUsNiArMTUwNSwxNiBAQCBib29sIE1lZGlhUGxheWVyOjpzaG91bGRD
aGVja0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0CiAgICAgcmV0dXJuIGNsaWVudCgpLm1lZGlhUGxh
eWVyU2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKTsKIH0KIAordm9pZCBNZWRpYVBsYXllcjo6
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKK3sKKyAgICBtX3ByaXZhdGUtPmFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZSgpOworfQorCit2b2lkIE1lZGlhUGxheWVyOjphcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgbV9wcml2YXRlLT5hcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpOworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBjb25zdCBMb2dnZXIm
IE1lZGlhUGxheWVyOjptZWRpYVBsYXllckxvZ2dlcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1MTc2MmY4ZjZiMGQwNzI5NTE5
ZmUxMTZhY2EwMjNiMDE1MzE5NTcwLi43MTAwNTkwNGVmM2I4Y2U3NTI2Nzc0ODBhMjFjNmUwYjM1
ZmVjMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKQEAgLTYzOCw2ICs2MzgsOSBAQCBwdWJsaWM6CiAgICAgY29uc3Qgdm9pZCogbWVkaWFQ
bGF5ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2xpZW50KCkubWVkaWFQbGF5ZXJMb2dJZGVu
dGlmaWVyKCk7IH0KICNlbmRpZgogCisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmUoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisKIHByaXZhdGU6
CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA2
OGIwNDMwMzE2NzYyNmNhYjg4NjNmOWFlZDNjZDIzZGI3YjhmNDgwLi5kOGM2YmFjNWYxMzhkNWEy
NmZkNDEwY2M0YzI3NGRkOWJkNzUwYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAtMjgwLDYgKzI4MCw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QWN0aXZlU291cmNlQnVmZmVyc0NoYW5n
ZWQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgeyB9CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDIxNGEyZGQ3NTczOWRjYmMyNWRiMThl
NzJmMmZkMDJkNTI4NTEwNmMuLjAwMWQxZDVlZmYzNzM4NGY4MDRmNTBkZWE5MzM1N2RkMzMwMjNh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5l
VHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xv
Z2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCkBAIC00Miw3ICs0Myw2IEBAIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJS
ZW5kZXJTeW5jaHJvbml6ZXI7CiBPQkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKIE9CSkNfQ0xB
U1MgTlNOdW1iZXI7CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXI7Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CiAKIG5hbWVzcGFjZSBQQUwgewogY2xhc3MgQ2xvY2s7CkBAIC02MCw3ICs2MCwxMSBA
QCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOwogY2xhc3MgVmlkZW9GdWxsc2Ny
ZWVuTGF5ZXJNYW5hZ2VyOwogI2VuZGlmCiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2Us
IHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDIGZpbmFsIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSwg
cHJpdmF0ZSBNZWRpYVN0cmVhbVByaXZhdGU6Ok9ic2VydmVyLCBwcml2YXRlIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpPYnNlcnZlcgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyNlbmRpZgorewogcHVibGljOgogICAgIGV4cGxpY2l0IE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciopOwogICAgIHZp
cnR1YWwgfk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygpOwpAQCAtODksNiAr
OTMsMTMgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5ZXIqIGRpc3BsYXlMYXllcigpOwogICAg
IFBsYXRmb3JtTGF5ZXIqIGJhY2tncm91bmRMYXllcigpOwogCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMiOyB9
CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KG1fbG9nSWRlbnRpZmllcik7IH0KKyAgICBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKIApAQCAtMTQ0LDEwICsxNTUsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1w
bGVRdWV1ZSYsIE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBl
bmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmKTsKIAotICAgIHZvaWQgdXBkYXRlU2FtcGxl
VGltZXMoTWVkaWFTYW1wbGUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBjaGFyKik7CiAgICAg
TWVkaWFUaW1lIGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhU2FtcGxlJiwgZG91
YmxlKTsKICAgICAKICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYsIE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBlbnF1ZXVlQ29ycmVjdGVkVmlkZW9T
YW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlVmlkZW9TYW1wbGVC
dWZmZXJzKCk7CiAgICAgdm9pZCByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9E
YXRhKCk7CiAKQEAgLTIyMywxMiArMjM0LDEyIEBAIHByaXZhdGU6CiAKICAgICBDR0FmZmluZVRy
YW5zZm9ybSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KE1lZGlhU2FtcGxlJiwgYm9vbCBmb3Jj
ZVVwZGF0ZSA9IGZhbHNlKTsKIAorICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUo
KSBmaW5hbDsKKwogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllciB7IG51bGxwdHIgfTsKICAgICBX
ZWFrUHRyRmFjdG9yeTxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+IG1fd2Vh
a1B0ckZhY3Rvcnk7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVh
bVByaXZhdGU7Ci0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fYWN0aXZl
VmlkZW9UcmFjazsKLQogICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5n
ZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fYmFja2dyb3VuZExheWVyOwpAQCAtMjcyLDYgKzI4Mywx
MiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5B
QkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKICNl
bmRpZgorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKIH07
CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggZjNhY2NjZjNkOTU3YTQ0
NGFlMzg1YWI2Njc4YmUwYjZjZjRjN2RmOS4uYWU3Y2NlMzMxOTBhMmY1ZWNjYTQwZGRhMjc3YjBh
YWY5NmY0ZTBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMTk0LDEzICsxOTQs
MTcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWEKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgLCBtX3Zp
ZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI6OmNy
ZWF0ZSgpKQogI2VuZGlmCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dl
cihwbGF5ZXItPm1lZGlhUGxheWVyTG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIocGxh
eWVyLT5tZWRpYVBsYXllckxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewotICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKCVwKSIsIHRoaXMpOworICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogewotICAgIExPRyhNZWRpYSwgIk1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQyglcCkiLCB0aGlzKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGludmFsaWRhdGVdOwogCkBAIC0yNzYs
MjcgKzI4MCw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjph
ZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlCiAgICAgcXVldWUuYXBwZW5kKHNh
bXBsZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1
cGRhdGVTYW1wbGVUaW1lcyhNZWRpYVNhbXBsZSYgc2FtcGxlLCBjb25zdCBNZWRpYVRpbWUmIHRp
bWVsaW5lT2Zmc2V0LCBjb25zdCBjaGFyKiBsb2dnaW5nUHJlZml4KQotewotICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiJXMoJXApOiBvcmlnaW5hbCBzYW1wbGUgPSAlcyIsIGxvZ2dpbmdQ
cmVmaXgsIHRoaXMsIHRvU3RyaW5nKHNhbXBsZSkudXRmOCgpLmRhdGEoKSk7Ci0gICAgc2FtcGxl
Lm9mZnNldFRpbWVzdGFtcHNCeSh0aW1lbGluZU9mZnNldCk7Ci0gICAgTE9HKE1lZGlhQ2FwdHVy
ZVNhbXBsZXMsICIlcyglcCk6IGFkanVzdGVkIHNhbXBsZSA9ICVzIiwgbG9nZ2luZ1ByZWZpeCwg
dGhpcywgdG9TdHJpbmcoc2FtcGxlKS51dGY4KCkuZGF0YSgpKTsKLQotI2lmICFMT0dfRElTQUJM
RUQKLSAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGltZSgpOwotICAgIGRvdWJsZSBkZWx0YSA9
IChzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpIC0gbm93KS50b0RvdWJsZSgpOwotICAgIGlmIChk
ZWx0YSA8IDApCi0gICAgICAgIExPRyhNZWRpYSwgIiVzKCVwKTogKk5PVEUqIGF1ZGlvIHNhbXBs
ZSBhdCB0aW1lICVzIGlzICVmIHNlY29uZHMgbGF0ZSIsIGxvZ2dpbmdQcmVmaXgsIHRoaXMsIHRv
U3RyaW5nKG5vdykudXRmOCgpLmRhdGEoKSwgLWRlbHRhKTsKLSAgICBlbHNlIGlmIChkZWx0YSA8
IC4wMSkKLSAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXApOiAqTk9URSogYXVkaW8gc2FtcGxlIGF0
IHRpbWUgJXMgaXMgb25seSAlZiBzZWNvbmRzIGVhcmx5IiwgbG9nZ2luZ1ByZWZpeCwgdGhpcywg
dG9TdHJpbmcobm93KS51dGY4KCkuZGF0YSgpLCBkZWx0YSk7Ci0gICAgZWxzZSBpZiAoZGVsdGEg
PiAuMykKLSAgICAgICAgTE9HKE1lZGlhLCAiJXMoJXApOiAqTk9URSogYXVkaW8gc2FtcGxlIGF0
IHRpbWUgJXMgaXMgJWYgc2Vjb25kcyBlYXJseSEiLCBsb2dnaW5nUHJlZml4LCB0aGlzLCB0b1N0
cmluZyhub3cpLnV0ZjgoKS5kYXRhKCksIGRlbHRhKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGxvZ2dpbmdQcmVmaXgpOwotI2VuZGlmCi0KLX0KLQogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVk
aWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVuY3kpCiB7CiAgICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0aW9uVGltZSgpOwpAQCAtMzQwLDYgKzMyMywz
NiBAQCBzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mIGZ1bmN0aW9uKQogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVk
VmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICBpZiAobV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpIHsKKyAgICAgICAgaWYgKFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigp
ICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9N
aXJyb3JlZCkgeworICAgICAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90
YXRpb24oKTsKKyAgICAgICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJv
cmVkKCk7CisgICAgICAgICAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhbdGhpcywgJnNhbXBsZV0g
eworICAgICAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmlu
ZVRyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoc2FtcGxlLCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFk
eUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1
ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOworICAgICAgICAgICAgcmVxdWVz
dE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVl
dWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVm
ZmVyXTsKKyAgICB9CisKKyAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewor
ICAgICAgICBtX2hhc0V2ZXJFbnF1ZXVlZFZpZGVvRnJhbWUgPSB0cnVlOworICAgICAgICBtX3Bs
YXllci0+Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKCk7CisgICAgfQorfQorCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBB
U1NFUlQobV92aWRlb1RyYWNrTWFwLmNvbnRhaW5zKHRyYWNrLmlkKCkpKTsKQEAgLTM2MiwzNCAr
Mzc1LDI2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1
ZXVlVmlkZW9TYW1wbGUoTWVkaWFTdHJlYW1UcmFja1ByCiAgICAgaWYgKHRpbWVsaW5lT2Zmc2V0
ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICB0aW1lbGluZU9mZnNldCA9
IGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KHNhbXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKICAgICAg
ICAgdmlkZW9UcmFjay0+c2V0VGltZWxpbmVPZmZzZXQodGltZWxpbmVPZmZzZXQpOwotICAgICAg
ICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlOiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVz
IHNldCB0byAlcyIsIHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcodGltZWxpbmVP
ZmZzZXQpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KIAotICAgIHVwZGF0ZVNhbXBsZVRpbWVzKHNh
bXBsZSwgdGltZWxpbmVPZmZzZXQsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVWaWRlb1NhbXBsZSIpOwotCi0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyKSB7Ci0gICAgICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlkZW9S
b3RhdGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgewot
ICAgICAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24oKTsKLSAg
ICAgICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7Ci0gICAg
ICAgICAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhbdGhpcywgJnNhbXBsZV0gewotICAgICAgICAg
ICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9
IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoc2FtcGxlLCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRp
YURhdGFdKSB7Ci0gICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOwotICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlv
bldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVldWVTYW1wbGVCdWZm
ZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKKyAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgIiwg
dHJhY2suaWQoKSwgIiBzZXQgdG8gIiwgdGltZWxpbmVPZmZzZXQpOwogICAgIH0KIAotICAgIGlm
ICghbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lKSB7Ci0gICAgICAgIG1faGFzRXZlckVucXVl
dWVkVmlkZW9GcmFtZSA9IHRydWU7Ci0gICAgICAgIG1fcGxheWVyLT5maXJzdFZpZGVvRnJhbWVB
dmFpbGFibGUoKTsKKyAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIm9yaWdpbmFsIHNhbXBs
ZSA9ICIsIHRvU3RyaW5nKHNhbXBsZSkpOworICAgIHNhbXBsZS5vZmZzZXRUaW1lc3RhbXBzQnko
dGltZWxpbmVPZmZzZXQpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCBz
YW1wbGUgPSAiLCB0b1N0cmluZyhzYW1wbGUpKTsKKworICAgIGlmIChXSUxMX0xPRyhXVEZMb2dM
ZXZlbERlYnVnKSkgeworICAgICAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGltZSgpOworICAg
ICAgICBkb3VibGUgZGVsdGEgPSAoc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSAtIG5vdykudG9E
b3VibGUoKTsKKyAgICAgICAgaWYgKGRlbHRhIDwgMCkKKyAgICAgICAgICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiKk5PVEUqIHNhbXBsZSBhdCB0aW1lIGlzICIsIG5vdywgIiBpcyIsIC1k
ZWx0YSwgIiBzZWNvbmRzIGxhdGUiKTsKKyAgICAgICAgZWxzZSBpZiAoZGVsdGEgPCAuMDEpCisg
ICAgICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIipOT1RFKiBhdWRpbyBzYW1wbGUg
YXQgdGltZSAiLCBub3csICIgaXMgb25seSAiLCBkZWx0YSwgIiBzZWNvbmRzIGVhcmx5Iik7Cisg
ICAgICAgIGVsc2UgaWYgKGRlbHRhID4gLjMpCisgICAgICAgICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUiwgIipOT1RFKiBhdWRpbyBzYW1wbGUgYXQgdGltZSAiLCBub3csICIgaXMgIiwgZGVs
dGEsICIgc2Vjb25kcyBlYXJseSEiKTsKICAgICB9CisKKyAgICBlbnF1ZXVlQ29ycmVjdGVkVmlk
ZW9TYW1wbGUoc2FtcGxlKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQpAQCAt
NDIyLDEyICs0MjcsMTIgQEAgQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKiBsYXllcikKIHsKICAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwot
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bGF5
ZXJFcnJvckRpZENoYW5nZSglcCkgLSBlcnJvciA9ICVzIiwgdGhpcywgW1tsYXllci5lcnJvciBs
b2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOworICAgIEVSUk9SX0xPRyhMT0dJREVO
VElGSUVSLCAiZXJyb3IgPSAiLCBbW2xheWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBV
VEY4U3RyaW5nXSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5
ZXIpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpsYXllclN0YXR1c0RpZENoYW5nZSglcCkgLSBzdGF0dXMgPSAlZCIsIHRoaXMsIChpbnQp
bGF5ZXIuc3RhdHVzKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGF0dXMgPSAi
LCAoaW50KWxheWVyLnN0YXR1cyk7CiAKICAgICBpZiAobGF5ZXIuc3RhdHVzICE9IEFWUXVldWVk
U2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQogICAgICAgICByZXR1cm47CkBA
IC00MzksNiArNDQ0LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpCiAgICAgICAgIHRyYWNr
LT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOwogfQogCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKQoreworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBbbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJl
bmRlcmluZ1N0YXR1c0ZhaWxlZCkgeworICAgICAgICBmbHVzaFJlbmRlcmVycygpOworICAgICAg
ICBpZiAobV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpCisgICAgICAgICAgICBlbnF1ZXVlQ29y
cmVjdGVkVmlkZW9TYW1wbGUoKm1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKKyAgICAgICAg
dXBkYXRlRGlzcGxheU1vZGUoKTsKKyAgICB9Cit9CisKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycygpCiB7CiAgICAgaWYgKG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKQpAQCAtNDYwLDcgKzQ3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQogCiAgICAgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cikgewotICAgICAgICBMT0dfRVJST1IoIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6ZW5zdXJlTGF5ZXJzOiArW0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGFsbG9jXSBm
YWlsZWQuIik7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiK1tBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBhbGxvY10gZmFpbGVkLiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC01MzEsNyArNTQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFTb3VyY2VQcml2YXQKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxvYWQoTWVkaWFTdHJlYW1Qcml2
YXRlJiBzdHJlYW0pCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpsb2FkKCVwKSIsIHRoaXMpOworICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCiAgICAgbV9pbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKCk7CiAKQEAgLTU1NiwxNCAr
NTcxLDE0IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaWRQ
YXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmNhbmNlbExvYWQoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FuY2VsTG9hZCglcCkiLCB0aGlzKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBpZiAocGxheWluZygpKQogICAgICAgICBw
YXVzZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cHJlcGFyZVRvUGxheSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpwcmVwYXJlVG9QbGF5KCVwKSIsIHRoaXMpOworICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdApAQCAtNjE2LDYgKzYzMSw4
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNw
bGF5TW9kZSgpCiAKICAgICBpZiAoZGlzcGxheU1vZGUgPT0gbV9kaXNwbGF5TW9kZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInVwZGF0ZWQg
dG8gIiwgc3RhdGljX2Nhc3Q8aW50PihkaXNwbGF5TW9kZSkpOwogICAgIG1fZGlzcGxheU1vZGUg
PSBkaXNwbGF5TW9kZTsKIAogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewpA
QCAtNjI5LDcgKzY0Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp1cGRhdGVEaXNwbGF5TW9kZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpwbGF5KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXkoJXApIiwgdGhpcyk7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKIAogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBwbGF5aW5n
KCkgfHwgbV9lbmRlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNjUzLDcgKzY3MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwbGF5KCkKIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKCkKIHsKLSAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhdXNlKCVwKSIsIHRo
aXMpOworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoIW1ldGFEYXRh
QXZhaWxhYmxlKCkgfHwgIXBsYXlpbmcoKSB8fCBtX2VuZGVkKQogICAgICAgICByZXR1cm47CkBA
IC02NzUsMTEgKzY5MiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6cGF1c2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6c2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZvbHVtZSglcCkiLCB0aGlzKTsKLQogICAg
IGlmIChtX3ZvbHVtZSA9PSB2b2x1bWUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgdm9sdW1lKTsKICAgICBtX3ZvbHVtZSA9IHZvbHVtZTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKQogICAgICAg
ICB0cmFjay0+c2V0Vm9sdW1lKG1fbXV0ZWQgPyAwIDogbV92b2x1bWUpOwpAQCAtNjg3LDExICs3
MDMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldFZv
bHVtZShmbG9hdCB2b2x1bWUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpzZXRNdXRlZChib29sIG11dGVkKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0TXV0ZWQoJXApIiwgdGhpcyk7Ci0KICAg
ICBpZiAobXV0ZWQgPT0gbV9tdXRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCBtdXRlZCk7CiAgICAgbV9tdXRlZCA9IG11dGVkOwogICAgIGZvciAo
Y29uc3QgYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCiAgICAgICAgIHRy
YWNrLT5zZXRWb2x1bWUobV9tdXRlZCA/IDAgOiBtX3ZvbHVtZSk7CkBAIC03NzgsOCArNzkzLDEw
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVSZWFk
eVN0YXRlKCkKIHsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBuZXdSZWFkeVN0YXRlID0g
Y3VycmVudFJlYWR5U3RhdGUoKTsKIAotICAgIGlmIChuZXdSZWFkeVN0YXRlICE9IG1fcmVhZHlT
dGF0ZSkKKyAgICBpZiAobmV3UmVhZHlTdGF0ZSAhPSBtX3JlYWR5U3RhdGUpIHsKKyAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCB0byAiLCAoaW50KW5ld1JlYWR5U3Rh
dGUpOwogICAgICAgICBzZXRSZWFkeVN0YXRlKG5ld1JlYWR5U3RhdGUpOworICAgIH0KIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjdGl2ZVN0YXR1c0No
YW5nZWQoKQpAQCAtMTE3MCw2ICsxMTg3LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCkKICAgICB9KTsK
IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYKKworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3ZjJl
NDc4YzYyNWMyNWE3ZTIwYjMzNjYxYWFiZWE3MDMwN2RiMzU1Li42YjIwOTE5MTI5MTI5NDMxZGRk
OTc5NjA0YzliMmNiMWY2ZmM2ZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjY4OSw2ICsyNjg5LDcgQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkKIHZvaWQgV2Vi
UGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHsKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGlj
YXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIG1fcGFn
ZS0+YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKQEAg
LTI2OTgsNyArMjY5OSw3IEBAIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKICAgICBtX2lzU3VzcGVuZGVkVW5kZXJM
b2NrID0gaXNTdXNwZW5kZWRVbmRlckxvY2s7CiAgICAgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bih0cnVlKTsKIAotICAgIG1fcGFnZS0+bGliV2ViUlRDUHJvdmlkZXIoKS5zZXRBY3RpdmUoZmFs
c2UpOworICAgIG1fcGFnZS0+YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJp
bmdCYWNrZ3JvdW5kKCkKQEAgLTI3MTQsMTIgKzI3MTUsMTMgQEAgdm9pZCBXZWJQYWdlOjphcHBs
aWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoYm9vbCBpc1N1c3BlbmRlZFVuZGVyTG9jaykKIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbCB1c2VySW5mbzpAe0AiaXNTdXNwZW5kZWRVbmRlckxvY2siOiBAKGlzU3VzcGVuZGVk
VW5kZXJMb2NrKX1dOwogCi0gICAgbV9wYWdlLT5saWJXZWJSVENQcm92aWRlcigpLnNldEFjdGl2
ZSh0cnVlKTsKKyAgICBtX3BhZ2UtPmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHsKICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CisgICAgbV9wYWdlLT5hcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOwogfQogCiBzdGF0aWMg
aW5saW5lIHZvaWQgYWRqdXN0VmVsb2NpdHlEYXRhRm9yQm91bmRlZFNjYWxlKGRvdWJsZSYgaG9y
aXpvbnRhbFZlbG9jaXR5LCBkb3VibGUmIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSYgc2NhbGVD
aGFuZ2VSYXRlLCBkb3VibGUgZXhwb3NlZFJlY3RTY2FsZSwgZG91YmxlIG1pbmltdW1TY2FsZSwg
ZG91YmxlIG1heGltdW1TY2FsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>