<?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>227443</bug_id>
          
          <creation_ts>2021-06-28 05:08:57 -0700</creation_ts>
          <short_desc>[Model] [iOS] Add support for displaying &lt;model&gt; in fullscreen</short_desc>
          <delta_ts>2021-06-30 10:10:11 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773028</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-28 05:08:57 -0700</bug_when>
    <thetext>[Model] [iOS] Add support for displaying &lt;model&gt; in fullscreen</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773030</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-28 05:09:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/79859937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773035</commentid>
    <comment_count>2</comment_count>
      <attachid>432385</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-28 05:31:27 -0700</bug_when>
    <thetext>Created attachment 432385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773363</commentid>
    <comment_count>3</comment_count>
      <attachid>432385</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-06-29 03:03:31 -0700</bug_when>
    <thetext>Comment on attachment 432385
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Expose a new enterFullscreen() method on HTMLModelElement allowing to enter a fullscreen AR experience
&gt; +        where the resource may be displayed in the user&apos;s environment.

Why wouldn&apos;t this just be the normal requestFullscreen on the element?

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.idl:35
&gt; +    undefined enterFullscreen();

This should use the normal DOM API, not something new.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773374</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-29 03:45:26 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 432385 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432385&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Expose a new enterFullscreen() method on HTMLModelElement allowing to enter a fullscreen AR experience
&gt; &gt; +        where the resource may be displayed in the user&apos;s environment.
&gt; 
&gt; Why wouldn&apos;t this just be the normal requestFullscreen on the element?
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.idl:35
&gt; &gt; +    undefined enterFullscreen();
&gt; 
&gt; This should use the normal DOM API, not something new.

I think I should clarify the intent of this patch. This is about exposing the fullscreen capabilities of the ASVInlinePreview SPI, and the easiest path forward to me was to expose a method similar to what we have for &lt;video&gt; on iOS and macOS when we want to provide a built-in fullscreen experience, which is different from the media element is displayed fullscreen using the Element.requestFullscreen() API.

While we may be land on using requestFullscreen() as the way to make a &lt;model&gt; element enter the AR fullscreen experience, it may be in the form of additional parameters to that method or a whole new method like what I propose in this patch.

At any rate, what I suggest we do now is to use a new, dedicated method that is just about providing the built-in AR fullscreen experience and think through how it should fit with HTML fullscreen features as we iterate on this experiment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773586</commentid>
    <comment_count>5</comment_count>
      <attachid>432385</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-29 15:29:01 -0700</bug_when>
    <thetext>Comment on attachment 432385
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        where the resource may be displayed in the user&apos;s environment.
&gt;&gt; 
&gt;&gt; Why wouldn&apos;t this just be the normal requestFullscreen on the element?
&gt; 
&gt; I think I should clarify the intent of this patch. This is about exposing the fullscreen capabilities of the ASVInlinePreview SPI, and the easiest path forward to me was to expose a method similar to what we have for &lt;video&gt; on iOS and macOS when we want to provide a built-in fullscreen experience, which is different from the media element is displayed fullscreen using the Element.requestFullscreen() API.
&gt; 
&gt; While we may be land on using requestFullscreen() as the way to make a &lt;model&gt; element enter the AR fullscreen experience, it may be in the form of additional parameters to that method or a whole new method like what I propose in this patch.
&gt; 
&gt; At any rate, what I suggest we do now is to use a new, dedicated method that is just about providing the built-in AR fullscreen experience and think through how it should fit with HTML fullscreen features as we iterate on this experiment.

I&apos;m going to defer to Dean and Sam on this part.

&gt; Source/WebCore/loader/EmptyClients.cpp:1101
&gt; +};

Stray semicolon

&gt; Source/WebCore/loader/EmptyFrameLoaderClient.h:207
&gt; +    void takeModelElementFullscreen(WebCore::GraphicsLayer::PlatformLayerID) const final;

How did this end up on FrameLoaderClient instead of ChromeClient??

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:65
&gt; +    auto *presentingViewController = m_webPageProxy.uiClient().presentingViewController();

Is this the right one to present on? (I can never remember, we have a bit of a mess around the parent VCs). I thought it had &quot;for full screen presentation&quot; or something like that in its name.

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:91
&gt; +            [preview observeDismissFullscreenWithCompletionHandler:^(CAFenceHandle *dismissFenceHandle, NSDictionary *payload, NSError *error) {

I wonder if we should be using CAFenceHandle in other places where we currently pass fence ports around as MachSendRights.

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:94
&gt; +                        LOG(ModelElement, &quot;Unable to get fence handle when dismissing fullscreen instance: %@&quot;, [error localizedDescription]);

Error message oddly clumps two failure modes together

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:100
&gt; +                    [CATransaction setCompletionBlock:^{

I think that setting a completion block on the implicit transaction is a bad idea (because there&apos;s only one per-transaction per-thread, and you don&apos;t own the transaction), you maybe want an explicit transaction here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773685</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 00:53:40 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; Comment on attachment 432385 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432385&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/EmptyFrameLoaderClient.h:207
&gt; &gt; +    void takeModelElementFullscreen(WebCore::GraphicsLayer::PlatformLayerID) const final;
&gt; 
&gt; How did this end up on FrameLoaderClient instead of ChromeClient??

Ignorance, but now I know what to do. 

&gt; &gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:65
&gt; &gt; +    auto *presentingViewController = m_webPageProxy.uiClient().presentingViewController();
&gt; 
&gt; Is this the right one to present on? (I can never remember, we have a bit of
&gt; a mess around the parent VCs). I thought it had &quot;for full screen
&gt; presentation&quot; or something like that in its name.

So I used that to follow what SystemPreviewControllerCocoa uses. It&apos;s also what VideoFullscreenModelContext::presentingViewController() returns, and looking at UIDelegate.h, this looks like the only UIViewController available.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:94
&gt; &gt; +                        LOG(ModelElement, &quot;Unable to get fence handle when dismissing fullscreen instance: %@&quot;, [error localizedDescription]);
&gt; 
&gt; Error message oddly clumps two failure modes together
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:100
&gt; &gt; +                    [CATransaction setCompletionBlock:^{
&gt; 
&gt; I think that setting a completion block on the implicit transaction is a bad
&gt; idea (because there&apos;s only one per-transaction per-thread, and you don&apos;t own
&gt; the transaction), you maybe want an explicit transaction here?

Will do. Thank for the comments, will file a patch with those modifications shortly. Then hopefully Sam and/or Dean can comment on the IDL side of things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773700</commentid>
    <comment_count>7</comment_count>
      <attachid>432577</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 02:12:58 -0700</bug_when>
    <thetext>Created attachment 432577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773771</commentid>
    <comment_count>8</comment_count>
      <attachid>432577</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-30 09:21:23 -0700</bug_when>
    <thetext>Comment on attachment 432577
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:54
&gt; +    RenderModel* renderer() const;

I don&apos;t particularly like this idiom, where this is implemented in RenderModel.h. That is just really hard to find. Is it needed?

&gt; Source/WebCore/rendering/RenderModel.h:57
&gt; +    return downcast&lt;RenderModel&gt;(HTMLElement::renderer());

What happens if a &lt;model&gt; has a different kind of renderer? like via -webkit-appearance or something like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773773</commentid>
    <comment_count>9</comment_count>
      <attachid>432577</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-06-30 09:24:51 -0700</bug_when>
    <thetext>Comment on attachment 432577
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.idl:35
&gt; +    undefined enterFullscreen();

Why is this needed, rather than using HTML fullscreen API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773775</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 09:27:58 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #9)
&gt; Comment on attachment 432577 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.idl:35
&gt; &gt; +    undefined enterFullscreen();
&gt; 
&gt; Why is this needed, rather than using HTML fullscreen API?

See https://bugs.webkit.org/show_bug.cgi?id=227443#c4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773783</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 09:37:38 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Comment on attachment 432577 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:54
&gt; &gt; +    RenderModel* renderer() const;
&gt; 
&gt; I don&apos;t particularly like this idiom, where this is implemented in
&gt; RenderModel.h. That is just really hard to find. Is it needed?

I thought that was the established idiom, but if not, let&apos;s implement this method inline within HTMLModelElement.h.
 
&gt; &gt; Source/WebCore/rendering/RenderModel.h:57
&gt; &gt; +    return downcast&lt;RenderModel&gt;(HTMLElement::renderer());
&gt; 
&gt; What happens if a &lt;model&gt; has a different kind of renderer? like via
&gt; -webkit-appearance or something like that?

I hadn&apos;t considered this. I suppose we could return nullptr. Can you think of something better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773795</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 09:50:30 -0700</bug_when>
    <thetext>Talking some more with Sam, we can do away with HTMLModelElement::renderer() and simply downcast to the appropriate subclass as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773800</commentid>
    <comment_count>13</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-06-30 10:10:11 -0700</bug_when>
    <thetext>Committed r279420 (239281@main): &lt;https://commits.webkit.org/239281@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432385</attachid>
            <date>2021-06-28 05:31:27 -0700</date>
            <delta_ts>2021-06-30 02:12:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227443-20210628143126.patch</filename>
            <type>text/plain</type>
            <size>37167</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjZTJhYzVkZTMyNjQ1
ZGE3MDE2MTRlMWYwM2YxZGJkN2QzYzJhYy4uNTNhMWY3YmQ1ZTkzNDU2YTljZTI3N2U4NjVkMmYx
MWZmMGI4NzFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIxLTA2LTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gW2lPU10g
QWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc0NDMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc5ODU5OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBlbnRlckZ1bGxzY3JlZW4oKSBtZXRob2Qg
b24gSFRNTE1vZGVsRWxlbWVudCBhbGxvd2luZyB0byBlbnRlciBhIGZ1bGxzY3JlZW4gQVIgZXhw
ZXJpZW5jZQorICAgICAgICB3aGVyZSB0aGUgcmVzb3VyY2UgbWF5IGJlIGRpc3BsYXllZCBpbiB0
aGUgdXNlcidzIGVudmlyb25tZW50LgorCisgICAgICAgIEZyb20gdGhlIFdlYlByb2Nlc3Mgc2lk
ZSwgdGhpcyByZXF1aXJlcyBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRlbnQgbGF5
ZXIgZm9yIHRoZSA8bW9kZWw+IGVsZW1lbnQKKyAgICAgICAgYW5kIHNlbmRpbmcgaXQgaW4gYW4g
SVBDIG1lc3NhZ2UgdG8gdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5pZGw6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp0YWtlTW9kZWxFbGVt
ZW50RnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpjb250ZW50c0xheWVySURGb3JNb2RlbCBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29udGVudHNMYXllcklERm9yTW9kZWwgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6cmVuZGVyZXIgY29uc3QpOgorCiAyMDIxLTA2LTI3ICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CiAKICAgICAgICAgVHJlYXQgaW1hZ2UgZGF0YSB1cmwncyBhcyBub3QgaWRlbnRp
Y2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiNjI2N2M3ZjZlOWNmMDZkZWQwMDAzM2UxZTJhMGRh
OTI2NTE1N2Q3Li5jNDA0ODIzNWI4M2UzYzFiN2Y0OGU3M2Q1MDBlZjJjODg2NzI1NDg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0yOCAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIFtpT1NdIEFkZCBzdXBw
b3J0IGZvciBkaXNwbGF5aW5nIDxtb2RlbD4gaW4gZnVsbHNjcmVlbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NDQzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83OTg1OTkzNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEZWNsYXJlIGFkZGl0aW9uYWwgQVNWSW5saW5lUHJldmlldyBtZXRob2RzIHJl
cXVpcmVkIGZvciBmdWxsc2NyZWVuIHN1cHBvcnQuCisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9T
eXN0ZW1QcmV2aWV3U1BJLmg6CisKIDIwMjEtMDYtMjcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVsXSBbaU9TXSBBZGQgc3VwcG9ydCBmb3IgcmVu
ZGVyaW5nIG1vZGVsIHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3ODQ3OWUyYTFiMjIwM2YwOTVmZWQz
NTg1OTQ5MGFmZGU3YTA4M2NjLi5iOTg0MWNjNjA0MGI2YmU0MDJjYTFiN2RhNDljMmVmZTc4ODAx
MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIxLTA2LTI4ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gW2lPU10gQWRkIHN1cHBv
cnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc0NDMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc5ODU5OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERpc3BsYXlpbmcgYSBtb2RlbCBlbGVtZW50IGluIGZ1bGxzY3JlZW4gcmVxdWly
ZXMgbWFraW5nIHNvbWUgY2FsbHMgb24gdGhlIEFTVklubGluZVByZXZpZXcgb2JqZWN0CisgICAg
ICAgIGNyZWF0ZWQgYnkgYSBXS01vZGVsVmlldy4gV2Ugc2VuZCB0aGUgY29udGVudCBsYXllciBJ
RCB3ZSByZWNlaXZlIHRocm91Z2ggYW4gSVBDIGNhbGwgZnJvbSB0aGUKKyAgICAgICAgV2ViUHJv
Y2VzcyB0byB0aGUgbmV3IE1vZGVsRWxlbWVudENvbnRyb2xsZXIuIFdlIHRoZW4gbG9vayBhdCB0
aGUgcmVtb3RlIGxheWVyIHRyZWUgZm9yIGEgbm9kZQorICAgICAgICBtYXRjaGluZyB0aGF0IElE
IGFuZCBmaW5kIGl0cyByZWxhdGVkIFVJVmlldy4gSWYgd2UgZmluZCBhIFdLTW9kZWxWaWV3LCBh
cyBleHBlY3RlZCwgd2UgY2FuIGNhcnJ5IAorICAgICAgICBvbiBhbmQgY2FsbCAtW0FTVklubGlu
ZVByZXZpZXcgY3JlYXRlRnVsbHNjcmVlbkluc3RhbmNlV2l0aEluaXRpYWxGcmFtZTpwcmV2aWV3
T3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjpdCisgICAgICAgIHRvIGVudGVyIGZ1bGxzY3JlZW4g
dXNpbmcgdGhlIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcm92aWRlZCBieSB0aGUgVUkgY2xp
ZW50LCBhbmQgdGhlbiBvYnNlcnZlCisgICAgICAgIHdoZW4gd2UgZXhpdCBmdWxsc2NyZWVuIHVz
aW5nIC1bQVNWSW5saW5lUHJldmlldyBvYnNlcnZlRGlzbWlzc0Z1bGxzY3JlZW5XaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XQorICAgICAgICB0byBtYWtlIHN1cmUgdGhlIHByZXNlbnRpbmcgdmlldyBj
b250cm9sbGVyIGlzIHJlbW92ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1l
bnRDb250cm9sbGVyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1l
bnRDb250cm9sbGVyOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbik6CisgICAgICAgICogVUlQ
cm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6TW9kZWxFbGVtZW50Q29udHJvbGxlcik6CisgICAg
ICAgICogVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRha2VNb2RlbEVs
ZW1lbnRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAyMS0wNi0yNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggdGhl
IGlPUyBidWlsZCBhZnRlciByZGFyOi8vNzY3ODE4NzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRleCAx
MWVhNTg1YTlmZGQzMGRhYmYzNzEyZWIzODg4OWRkMGNkNTA4NDlhLi43ZmFhYWU5MTkwMmJmZTk1
ODBjMWUxZGIwMWZiMWM4MWNhZGYyMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0
MSwxNyBAQAogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgogCisjaWYgSEFWRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIu
aCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1MTW9kZWxFbGVtZW50
KTsKQEAgLTIxNCw2ICsyMjUsMjYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICBtX3Jl
YWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiB9CiAKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykK
KyAgICBhdXRvIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNDb21wb3NpdGVkKCkgfHwgIXJlbmRl
cmVyLT5sYXllcigpIHx8ICFyZW5kZXJlci0+bGF5ZXIoKS0+YmFja2luZygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvKiBncmFwaGljc0xheWVyID0gcmVuZGVyZXItPmxheWVyKCktPmJh
Y2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpOworICAgIGlmICghZ3JhcGhpY3NMYXllcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gY29udGVudExheWVySWQgPSBncmFwaGljc0xheWVy
LT5jb250ZW50c0xheWVySURGb3JNb2RlbCgpKQorICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkudGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oY29udGVudExheWVySWQpOworI2VuZGlm
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
aW5kZXggNjJjZjYxMTdjMzNmZjY3YjZlZDIxMmY4MmZhY2JkNDU2OGVhODQ5My4uMjljMDY4YjEz
YWQ4M2FlODZmMTA4ODk0ZGZjOTVkY2Q0ZDlhNGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0zOCw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsOworY2xhc3MgUmVu
ZGVyTW9kZWw7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKQEAgLTUwLDYgKzUxLDggQEAgcHVibGljOgogICAg
IHZvaWQgc291cmNlc0NoYW5nZWQoKTsKICAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfQogCisgICAgUmVuZGVyTW9kZWwqIHJlbmRlcmVyKCkg
Y29uc3Q7CisKICAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlUHJveHlXaXRoUmVz
b2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9kZWxFbGVtZW50Pj47CiAgICAgUmVhZHlQ
cm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQcm9taXNlLmdldCgpOyB9CiAKQEAgLTU5
LDYgKzYyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBjb25zdCBTdHJpbmcmIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CiAK
KyAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOworCiBwcml2YXRlOgogICAgIEhUTUxNb2RlbEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmlk
bAppbmRleCBhYzJmYWZlYzRhM2FiNDllNDlmY2NmNDdkMGM5NzQ1Y2RlNWI4MmE0Li5iYjhlMThk
NWM3NmU2YmYxZDM4ODZkN2IyMmY1NTI1ZTEzODg1OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaWRsCkBA
IC0zMSw0ICszMSw2IEBACiAgICAgW1VSTF0gcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBj
dXJyZW50U3JjOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8SFRNTE1vZGVsRWxl
bWVudD4gcmVhZHk7CisKKyAgICB1bmRlZmluZWQgZW50ZXJGdWxsc2NyZWVuKCk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9TeXN0ZW1QcmV2aWV3U1BJLmgKaW5k
ZXggNjFhZTBjMzY3YjMzYzRhZWIwNWZlODA4OTkxYTNkZWJhNDI3ZDk4MC4uYzRjNjg2ZDBlODlh
MTY3NWViMWQxMjBhMmQyNjQ5ODVhNTlkNzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oCkBAIC03OSw2ICs3OSw4IEBACiAtICh2
b2lkKXNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpaGFuZGxlcjsKIC0gKHZvaWQpcHJlcGFyZVByZXZp
ZXdPZkZpbGVBdFVSTDooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWhhbmRsZXI7CiAtICh2b2lkKXVwZGF0ZUZyYW1lOihD
R1JlY3QpbmV3RnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKENBRmVuY2VIYW5kbGUg
KiBfTnVsbGFibGUgZmVuY2VIYW5kbGUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWhhbmRs
ZXI7CistICh2b2lkKWNyZWF0ZUZ1bGxzY3JlZW5JbnN0YW5jZVdpdGhJbml0aWFsRnJhbWU6KENH
UmVjdClpbml0aWFsRnJhbWUgcHJldmlld09wdGlvbnM6KE5TRGljdGlvbmFyeSAqKXByZXZpZXdP
cHRpb25zIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVZpZXdDb250cm9sbGVyICpyZW1v
dGVWaWV3Q29udHJvbGxlciwgQ0FGZW5jZUhhbmRsZSAqIF9OdWxsYWJsZSBmZW5jZUhhbmRsZSwg
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpaGFuZGxlcjsKKy0gKHZvaWQpb2JzZXJ2ZURpc21p
c3NGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShDQUZlbmNlSGFuZGxl
ICogX051bGxhYmxlIGZlbmNlSGFuZGxlLCBOU0RpY3Rpb25hcnkgKiBfTm9ubnVsbCBwYXlsb2Fk
LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSloYW5kbGVyOwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggMmVjOTkyOGQ0OTRjMTY0MmMwZTIxNTYx
YWJlNGMzNWUzZDJmYmRmYi4uODU3Zjc2YjllN2E1NDUxNWRlODY4NDE5M2JiOWZhZWU1ZDFhOWVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTEwOTUsNiArMTA5
NSwxMiBAQCBib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Omhhc0ZyYW1lU3BlY2lmaWNTdG9y
YWdlQWNjZXNzKCkKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKSBjb25zdAoreworfTsKKyNlbmRpZgor
CiBpbmxpbmUgRW1wdHlGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpFbXB0eUZyYW1lTmV0d29ya2lu
Z0NvbnRleHQoKQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dCB7IG51bGxwdHIgfQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
NjlhMTEzMjM4YTBhOGM2YTZmZTViMDM2ZGYwN2Y0ODM5Zjc5YWQ3MC4uZTE0MmRkNjgwOTc3MmUw
ODBkNWI3NTljYWIyNWY3NzY0NzQ0NzQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yMDIsNiArMjAyLDEwIEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIGhhc0ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWw7CiAjZW5kaWYKKworI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQorICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKSBjb25zdCBmaW5hbDsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCAzZWI1Y2VlNjQyNmM0NGRjMTc0MjIyMTVmYWFiMTU2OTMxZGIyZDlkLi4z
YTBkNDVhOWJjNTc2ZmFiNWZmMzQzNGQ0OWY5OTllYjQ2MjJlNTdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNDgsNiArNDgsMTAgQEAKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShDT0NPQSkKICNpZmRlZiBfX09CSkNfXyAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgpAQCAtMTAxLDYgKzEwNSwxMCBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQorY2xhc3MgSFRNTE1vZGVsRWxlbWVudDsKKyNlbmRpZgorCiBlbnVtIGNsYXNzIExvY2tC
YWNrRm9yd2FyZExpc3QgOiBib29sOwogZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGU7CiBl
bnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMgOiBib29sOwpAQCAtMzg2LDYgKzM5NCwxMCBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxX
ZWJCcm93c2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpIGNvbnN0IHsgfQorI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggN2M3ZDRmY2M5ZWQyMjMwZDg3MDk1ZTY3
NGU1OWMyZDE3NTg1ZDA2YS4uM2IzYzExOGJmZDQ2YzViODQwNWVhN2I4MTEzYWY1OWI5NjY3MWJl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXIuaApAQCAtNTI0LDYgKzUyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciosIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
KSB7IH0KICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJikgeyB9CisgICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVySUQgY29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAjZW5k
aWYKICAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA5ZTUxMDI1MDI2ODE5MTkyMGExMDY1NWFiNjI5
ZDZhZmFmYTIxNDA4Li40YjYxZWI2NjFhM2RjMGQ2MGE1MDg0NzExODcwMDFlMzVhMWU5ZmI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTEyOTksNiArMTI5OSwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0Q29udGVudHNUb01vZGVsKFJlZlB0cjxNb2RlbD4mJiBtb2RlbCkKIAogICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RzQ2hhbmdlZCB8IE9wYWNpdHlDaGFuZ2Vk
KTsKIH0KKworR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIEdyYXBoaWNzTGF5ZXJDQTo6
Y29udGVudHNMYXllcklERm9yTW9kZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRlbnRz
TGF5ZXJQdXJwb3NlID09IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCA/IG1fY29udGVudHNM
YXllci0+bGF5ZXJJRCgpIDogMDsKK30KKwogI2VuZGlmCiAKIHZvaWQgR3JhcGhpY3NMYXllckNB
OjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
LCBDb250ZW50c0xheWVyUHVycG9zZSBwdXJwb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAppbmRleCBlY2FiMTdmZmE2
OWE5NzY0YTE0OTUyZGQ1MjFjY2M5OGY5MmYwNWQ2Li41ZTYxYzYwYmVhYzJjYzk4ODM2YzQ5ZGJm
YzJiYjZjMjJmNWFjNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTUzLDYgKzE1Myw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENv
bG9yJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDb250ZW50c1RvTW9kZWwoUmVmUHRyPE1vZGVsPiYmKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVySUQgY29udGVudHNMYXllcklERm9yTW9k
ZWwoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXll
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29u
dGVudHNMYXllclB1cnBvc2U6Ok5vbmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1v
ZGVsLmgKaW5kZXggOTQxOTcxOWMwMjcwYmY0NzNhZjVhZDM2YzNmMjFkMTUxNTNhOWE0Ny4uMzg1
YjE4ZmZmZjA1Mjk4OTRkYTY4MDI5MmJjZjVmMDQ4NmJlOGE0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1vZGVsLmgKQEAgLTI3LDEyICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCiAKKyNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyUmVwbGFjZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MTW9k
ZWxFbGVtZW50OwotCiBjbGFzcyBSZW5kZXJNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJSZXBs
YWNlZCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSZW5kZXJNb2RlbCk7CiBwdWJsaWM6
CkBAIC00MSwxNyArNDAsMjMgQEAgcHVibGljOgogCiAgICAgSFRNTE1vZGVsRWxlbWVudCYgbW9k
ZWxFbGVtZW50KCkgY29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgZmluYWw7
CisKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAgICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJSZW5kZXJNb2RlbCI7
IH0KICAgICBib29sIGlzUmVuZGVyTW9kZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUZyb21FbGVtZW50KCkgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZSgpOwogfTsKIAoraW5saW5l
IFJlbmRlck1vZGVsKiBIVE1MTW9kZWxFbGVtZW50OjpyZW5kZXJlcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGRvd25jYXN0PFJlbmRlck1vZGVsPihIVE1MRWxlbWVudDo6cmVuZGVyZXIoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlck1vZGVsLCBpc1JlbmRlck1vZGVsKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5
MmUxNDdiOGYzYjA0YTdjY2U3NmFkZTgxYjg1NjZmYTk0N2ZhNGU4Li45YmVhYjRlMjMzZjNlN2Vj
NzEyM2IyZjI5MDhjYjlkNDRhYmM0YTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTI5OSw2ICsyOTksNyBA
QCBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAogVUlQcm9j
ZXNzL0xlZ2FjeUdsb2JhbFNldHRpbmdzLmNwcAogVUlQcm9jZXNzL01lZGlhS2V5U3lzdGVtUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiBVSVByb2Nlc3MvTWVkaWFLZXlTeXN0ZW1Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAorVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xs
ZXIuY3BwCiBVSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzQXNz
ZXJ0aW9uLmNwcAogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggNzU5NTE5MWZjY2ExNzIyZGMzYzQzOTIzYmViYzU0YzMxYmUwMjBmYi4uOTQ2
MTNlMDczNTM1YWU2MjNhYmU2OGViNGM5NjliNDJkYWI1YTM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMzk5LDYgKzM5OSw3IEBAIFVJUHJvY2Vzcy9Db2NvYS9JY29uTG9hZGluZ0RlbGVn
YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Lm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFVdGlsaXRpZXMubW0KIFVJUHJvY2Vzcy9Db2NvYS9N
ZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KK1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRD
b250cm9sbGVyQ29jb2EubW0KIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KIFVJ
UHJvY2Vzcy9Db2NvYS9QYWdlQ2xpZW50SW1wbENvY29hLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGxh
dGZvcm1YUlN5c3RlbS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmYTU2
NTY3OWU1ODdhNDEwNDljOTcwYWY3YTE3NTg0Yjg2MTdhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2Eu
bW0KQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIk1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQorCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2lt
cG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgorI2ltcG9ydCAiUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlVmlld3MuaCIKKyNpbXBv
cnQgIldLTW9kZWxWaWV3LmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgorI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfSU9TKQorI2ltcG9ydCA8cGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oPgorI2VuZGlm
CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktf
Q0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQordm9pZCBNb2RlbEVsZW1l
bnRDb250cm9sbGVyOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpCit7CisgICAgaWYgKCFpczxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PihtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJl
YSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogbm9kZSA9IGRvd25jYXN0PFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCptX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgp
KS5yZW1vdGVMYXllclRyZWVIb3N0KCkubm9kZUZvcklEKGNvbnRlbnRMYXllcklkKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gKnZpZXcgPSBub2RlLT51aVZp
ZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghW3ZpZXcg
aXNLaW5kT2ZDbGFzczpbV0tNb2RlbFZpZXcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gbV93ZWJQYWdlUHJveHkudWlDbGll
bnQoKS5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKKyAgICBpZiAoIXByZXNlbnRpbmdWaWV3
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tNb2RlbFZpZXcgKm1vZGVsVmll
dyA9IChXS01vZGVsVmlldyAqKXZpZXc7CisgICAgQ0dSZWN0IGluaXRpYWxGcmFtZSA9IFttb2Rl
bFZpZXcgY29udmVydFJlY3Q6bW9kZWxWaWV3LmZyYW1lIHRvVmlldzpuaWxdOworCisgICAgQVNW
SW5saW5lUHJldmlldyAqcHJldmlldyA9IFttb2RlbFZpZXcgcHJldmlld107CisgICAgTlNEaWN0
aW9uYXJ5ICpwcmV2aWV3T3B0aW9ucyA9IEB7QCJXZWJLaXQiOiBAIk1vZGVsIGVsZW1lbnQgZnVs
bHNjcmVlbiJ9OworICAgIFtwcmV2aWV3IGNyZWF0ZUZ1bGxzY3JlZW5JbnN0YW5jZVdpdGhJbml0
aWFsRnJhbWU6aW5pdGlhbEZyYW1lIHByZXZpZXdPcHRpb25zOnByZXZpZXdPcHRpb25zIGNvbXBs
ZXRpb25IYW5kbGVyOl4oVUlWaWV3Q29udHJvbGxlciAqcmVtb3RlVmlld0NvbnRyb2xsZXIsIENB
RmVuY2VIYW5kbGUgKmZlbmNlSGFuZGxlLCBOU0Vycm9yICplcnJvcikgeworCisgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVh
dGUgZnVsbHNjcmVlbiBpbnN0YW5jZTogJUAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25d
KTsKKyAgICAgICAgICAgIFtmZW5jZUhhbmRsZSBpbnZhbGlkYXRlXTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICByZW1vdGVWaWV3Q29udHJvbGxlci5tb2RhbFBy
ZXNlbnRhdGlvblN0eWxlID0gVUlNb2RhbFByZXNlbnRhdGlvbk92ZXJGdWxsU2NyZWVuOworICAg
ICAgICAgICAgcmVtb3RlVmlld0NvbnRyb2xsZXIudmlldy5iYWNrZ3JvdW5kQ29sb3IgPSBVSUNv
bG9yLmNsZWFyQ29sb3I7CisKKyAgICAgICAgICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIg
cHJlc2VudFZpZXdDb250cm9sbGVyOnJlbW90ZVZpZXdDb250cm9sbGVyIGFuaW1hdGVkOk5PIGNv
bXBsZXRpb246Xih2b2lkKSB7CisgICAgICAgICAgICAgICAgW3ZpZXcubGF5ZXIuc3VwZXJsYXll
ci5jb250ZXh0IGFkZEZlbmNlOmZlbmNlSGFuZGxlXTsKKyAgICAgICAgICAgICAgICBbZmVuY2VI
YW5kbGUgaW52YWxpZGF0ZV07CisgICAgICAgICAgICB9XTsKKworICAgICAgICAgICAgW3ByZXZp
ZXcgb2JzZXJ2ZURpc21pc3NGdWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oQ0FGZW5j
ZUhhbmRsZSAqZGlzbWlzc0ZlbmNlSGFuZGxlLCBOU0RpY3Rpb25hcnkgKnBheWxvYWQsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFkaXNt
aXNzRmVuY2VIYW5kbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPRyhNb2RlbEVsZW1l
bnQsICJVbmFibGUgdG8gZ2V0IGZlbmNlIGhhbmRsZSB3aGVuIGRpc21pc3NpbmcgZnVsbHNjcmVl
biBpbnN0YW5jZTogJUAiLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtkaXNtaXNzRmVuY2VIYW5kbGUgaW52YWxpZGF0ZV07CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICBbdmlldy5sYXllci5zdXBlcmxheWVyLmNvbnRleHQgYWRkRmVuY2U6ZGlz
bWlzc0ZlbmNlSGFuZGxlXTsKKyAgICAgICAgICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0
Q29tcGxldGlvbkJsb2NrOl57CisgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3RlVmlld0Nv
bnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbjpuaWxd
OworICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICAgICAgW2Rpc21pc3NG
ZW5jZUhhbmRsZSBpbnZhbGlkYXRlXTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH1dOworICAgICAgICB9KTsKKyAgICB9XTsKK30KKyNlbmRpZgorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZGY2ZGM3NjEyM2ZjZTA1Njg5YjNmNzU0MTk4ODgwZDJlNWMyNzM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2RlbEVsZW1lbnRDb250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkKKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6TW9kZWxFbGVtZW50Q29udHJvbGxlcihX
ZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKKyAgICA6IG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQ
cm94eSkKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01vZGVsRWxlbWVudENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTEzYjJjNDhmNzFhM2NhNDg0
ZGU4NjllYWE4YzU0N2Q2NGE0ZThkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorCisjaW5j
bHVkZSA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworI2lmIEhBVkUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQorT0JKQ19DTEFTUyBBU1ZJbmxpbmVQcmV2aWV3OworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIE1vZGVsRWxlbWVu
dENvbnRyb2xsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9kZWxFbGVtZW50Q29udHJvbGxl
cj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IE1vZGVsRWxlbWVudENvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CisKKyAgICBXZWJQYWdlUHJv
eHkmIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2VQcm94eTsgfQorCisjaWYgSEFWRShBUktJVF9J
TkxJTkVfUFJFVklFV19JT1MpCisgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpOwor
I2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBiMWM2MjdlZjAzN2FkNDM4ZGJlYWU2NDVhZmI3OGI5MDFkNDFiYzcwLi4zNWQ2NmMzN2M1
MTlkZDZjOWJiOTFjNTczZjYyMWY1ZjkzZWVkMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMjMsNiArMTAyMywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAgICAgbV9zeXN0ZW1QcmV2aWV3Q29udHJv
bGxlciA9IG1ha2VVbmlxdWU8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+KCp0aGlzKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgQVNTRVJUKCFtX21vZGVsRWxlbWVu
dENvbnRyb2xsZXIpOworICAgIG1fbW9kZWxFbGVtZW50Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8
TW9kZWxFbGVtZW50Q29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogICAgIEFTU0VSVCghbV9jcmVkZW50aWFsc01lc3Nlbmdlcik7CiAgICAgbV9jcmVk
ZW50aWFsc01lc3NlbmdlciA9IG1ha2VVbmlxdWU8V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk+KCp0aGlzKTsKQEAgLTc3NzUsNiArNzc4MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFzb24pCiAgICAgbV9zeXN0
ZW1QcmV2aWV3Q29udHJvbGxlciA9IG51bGxwdHI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKQorICAgIG1fbW9kZWxFbGVtZW50Q29udHJvbGxlciA9IG51bGxwdHI7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgbV9jcmVkZW50aWFsc01lc3NlbmdlciA9
IG51bGxwdHI7CiAjZW5kaWYKQEAgLTEwNjgzLDYgKzEwNjkyLDE1IEBAIFdlYkNvcmU6OkNhcHR1
cmVTb3VyY2VPckVycm9yIFdlYlBhZ2VQcm94eTo6Y3JlYXRlUmVhbHRpbWVNZWRpYVNvdXJjZUZv
clNwZWVjaFJlCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKQoreworI2lmIEhBVkUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfSU9TKQorICAgIG1vZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+dGFrZU1v
ZGVsRWxlbWVudEZ1bGxzY3JlZW4oY29udGVudExheWVySWQpOworI2VuZGlmCit9CisjZW5kaWYK
KwogI2lmICFQTEFURk9STShDT0NPQSkKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFdl
YlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGVjNWQwY2YwNWUzYjQzNTQ3YWY1OTNkZDY1MzdjMDM3ODE3ZTZhOWUuLjU5YjNj
OTJjOGEwNjVhODFlNDg5MjI1NDYzMzYwNzVhOTlhZGUxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODksNiArMTg5LDEwIEBAIGludGVyZmFjZSBJRDNEMTFE
ZXZpY2UxOwogI2luY2x1ZGUgIlBsYXRmb3JtWFJTeXN0ZW0uaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpCisjaW5jbHVkZSAiTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIgor
I2VuZGlmCisKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIENvbnRl
bnRXb3JsZDsKQEAgLTU2OSw2ICs1NzMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc3lzdGVtUHJl
dmlld0FjdGlvblRyaWdnZXJlZChjb25zdCBXZWJDb3JlOjpTeXN0ZW1QcmV2aWV3SW5mbyYsIGNv
bnN0IFN0cmluZyYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBN
b2RlbEVsZW1lbnRDb250cm9sbGVyKiBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCkgeyByZXR1cm4g
bV9tb2RlbEVsZW1lbnRDb250cm9sbGVyLmdldCgpOyB9CisgICAgdm9pZCB0YWtlTW9kZWxFbGVt
ZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29u
dGVudExheWVySWQpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBB
UEk6OkNvbnRleHRNZW51Q2xpZW50JiBjb250ZXh0TWVudUNsaWVudCgpIHsgcmV0dXJuICptX2Nv
bnRleHRNZW51Q2xpZW50OyB9CiAgICAgdm9pZCBzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4mJik7CkBAIC0yNTk3LDYgKzI2MDYsMTAg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3lzdGVtUHJldmlld0NvbnRyb2xsZXI+
IG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9F
TEVNRU5UKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2RlbEVsZW1lbnRDb250cm9sbGVyPiBtX21v
ZGVsRWxlbWVudENvbnRyb2xsZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5PiBtX2Ny
ZWRlbnRpYWxzTWVzc2VuZ2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWIzMjQ4MTFlMTY4NjJkNGVhYjFlOGM2
ZWZkMDE4M2Y5YzY0YjhkZC4uNGZiYWNhZTY5MGMxZDQ3NmZlNTZjYjYyYzJkMzhjYzhmMjZlOWI1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTkyLDQgKzU5Miw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIENoYW5nZVVuaXZlcnNhbEFjY2Vzc1pvb21Gb2N1cyhXZWJDb3Jl
OjpJbnRSZWN0IHZpZXdSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdCkKICNlbmRpZgor
CisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCisgICAgVGFrZU1vZGVsRWxlbWVudEZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGVudExheWVySUQpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNlNDU1MDdjZDIzNDUwYzdl
ZTgxOGExNjFkZGFmMjQwODM4NzE3ZjAuLjc0OGRhZWU3NDkyNzdlZTkzMzFjYTA5OTg3MGZjYjcx
NWIzMjFjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTMyMSw2ICsxMzIxLDcgQEAKIAkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgz
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QkU5NjlDQzFFNTRFMDU0MDA4Qjc0ODMgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCAqLzsgfTsKIAkJNkVFODQ5QzgxMzY4
RDkzOTAwMzhENDgxIC8qIFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVFODQ5QzYxMzY4RDkyRDAwMzhENDgxIC8q
IFdLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcxMTcyNUE5MjI4RDU2NDMwMDAxODUxNCAvKiBXZWJzaXRlTGVn
YWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8qIFdlYnNp
dGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi87IH07CisJCTcxMzdCQTgw
MjVGMTU0MjAwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM3QkE3RjI1RjE1NDBDMDA5MTRF
RTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlci5oICovOyB9OwogCQk3MUE2NzZBNjIyQzYyMzI1
MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE2NzZBNDIyQzYyMzE4MDA3RDYy
OTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCTcxQkFBNzMz
MjVGRkQwOTgwMEQ3Q0Q1RCAvKiBXS01vZGVsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCQUE3MzEyNUZGQ0NCQTAwRDdDRDVEIC8qIFdLTW9k
ZWxWaWV3LmggKi87IH07CiAJCTcxRkI4MTBCMjI2MDYyN0UwMDMyMzY3NyAvKiBXZWJzaXRlU2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFGQjgxMEEyMjYwNjI3QTAwMzIzNjc3IC8qIFdlYnNp
dGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5LmggKi87IH07CkBAIC00NTc5LDYg
KzQ1ODAsOSBAQAogCQk2RDhBOTFBNTExRjBFRkQxMDBERDAxRkUgLyogY29tLmFwcGxlLldlYlBy
b2Nlc3Muc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW47IHBhdGggPSBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUU4NDlDNjEzNjhEOTJEMDAzOEQ0ODEgLyogV0tJ
bnNwZWN0b3JQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdL
SW5zcGVjdG9yUHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLSW5zcGVjdG9yUHJpdmF0ZU1hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTE3MjVBODIyOEQ1NjNBMDAwMTg1MTQg
LyogV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZUxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91
Y2hQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzEzN0JBN0QyNUYxNTNF
OTAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE1vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzEzN0JBN0UyNUYxNTQwQjAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxF
bGVtZW50Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxMzdC
QTdGMjVGMTU0MEMwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVsRWxlbWVudENvbnRyb2xsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNjc2QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91
Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS1RvdWNo
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFBNjc2QTUyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVG91Y2hBY3Rp
b25HZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS1RvdWNoQWN0aW9uR2VzdHVyZVJl
Y29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQkFBNzMxMjVGRkND
QkEwMEQ3Q0Q1RCAvKiBXS01vZGVsVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS01vZGVsVmlldy5oOyBwYXRoID0gaW9zL1dLTW9kZWxWaWV3Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MDQ4LDYgKzcwNTIsNyBAQAogCQkJCTkzNDI1ODhGMjU1NURD
QTUwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJNDExMjg2
RUYyMUM4QTkwQzAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLmggKi8sCiAJCQkJNDExMjg2RjAy
MUM4QTkwRDAwM0E4NTUwIC8qIE1lZGlhVXRpbGl0aWVzLm1tICovLAorCQkJCTcxMzdCQTdEMjVG
MTUzRTkwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0gKi8sCiAJCQkJ
MUFCQzNERjQxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5oICovLAogCQkJCTFB
QkMzREYzMTg5OUU0MzcwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gKi8sCiAJCQkJNUM2
Q0U2RDMxRjU5RUEzNTAwMDdDNkNCIC8qIFBhZ2VDbGllbnRJbXBsQ29jb2EuaCAqLywKQEAgLTk5
OTYsNiArMTAwMDEsOCBAQAogCQkJCTlBQ0MwN0IyMjVDODE1RjMwMERDNjM4NiAvKiBNZWRpYUtl
eVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggKi8sCiAJCQkJOUFDQzA3QjQy
NUM4MTYwQjAwREM2Mzg2IC8qIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5o
ICovLAogCQkJCTkzNDI1ODk4MjU1QjUzNEIwMDU5RUVERCAvKiBNZWRpYVBlcm1pc3Npb25VdGls
aXRpZXMuaCAqLywKKwkJCQk3MTM3QkE3RTI1RjE1NDBCMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50
Q29udHJvbGxlci5jcHAgKi8sCisJCQkJNzEzN0JBN0YyNUYxNTQwQzAwOTE0RUUzIC8qIE1vZGVs
RWxlbWVudENvbnRyb2xsZXIuaCAqLywKIAkJCQlCQzZFREFBNTExMTI3MUM2MDBFNzY3OEIgLyog
UGFnZUNsaWVudC5oICovLAogCQkJCTFBQzc1Mzc5MTgzQTlGREEwMDcyQ0IxNSAvKiBQYWdlTG9h
ZFN0YXRlLmNwcCAqLywKIAkJCQkxQUM3NTM3QTE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRT
dGF0ZS5oICovLApAQCAtMTIwOTQsNiArMTIxMDEsNyBAQAogCQkJCTU3RENFREM3MjE0RjE4MzAw
MDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RD
RURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MTM3QkE4MDI1RjE1NDIwMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8q
IE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8q
IE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0
Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNmM5MDRjOTg2MmRjZTkzOTI3M2UyNTA2
M2YxYWM4M2NlNjU1OGNkMC4uZmZhZjE2ZGNkNzI1OGM5ZWQ0MzZjMmYxODcyN2U5M2EwNmQzODRk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTcxLDYgKzE5NzEsMTcg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6aXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93
c2VyKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5pc1BhcmVudFByb2Nlc3NBV2Vi
QnJvd3NlcigpOwogfQogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpIGNvbnN0Cit7CisgICAgYXV0
byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIHdlYlBhZ2UtPnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKGNvbnRl
bnRMYXllcklkKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVm
IFBSRUZJWF9QQVJBTUVURVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFhM2E4
NjAxNzU3MjY1NDEzODUyYTRiOWU4OTU2NGJiNGQxYTNmM2IuLjM4ZTIyNDg2YjFkNzc4NGIwOTkw
NDNiZmVmZDk1ZWY1MzBlZTAxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0y
OTUsNiArMjk1LDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKCkgY29uc3QgZmluYWw7CisKKyNpZiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKKyAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkgY29uc3QgZmluYWw7Cisj
ZW5kaWYKKwogfTsKIAogLy8gQXMgbG9uZyBhcyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IGV4aXN0
cyBpbiBXZWJDb3JlLCB0aGlzIGNhbiByZXR1cm4gbnVsbHB0ci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNGU1YjFlNDVmZTI1N2MzMDEyYmEz
MzhmMDVlMDM2ODVhZGE5YTAyZS4uYzU4OWE2YzI5ZDZhYmUwZWEzYzZiMDczYjNmNjMxMTY2ODk4
M2IxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTc2NjksNiArNzY2OSwxMyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZUNvbnRleHRNZW51VHJh
bnNsYXRpb24oY29uc3QgVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8mIGluZgogewogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbihp
bmZvKSk7CiB9CisjZW5kaWYKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQordm9pZCBXZWJQ
YWdlOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpUYWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihjb250ZW50TGF5ZXJJZCkpOwor
fQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDQ0YzZhYzI5YjQ5NzM4MTMwNzc0NWQ1OWRhM2M3MWI5NDg2MjVhYTMuLjY2ZTJhZWUz
NjJiMTIwODY1ZjRjZmU3NDYwYjk1NGRmZGE4NDgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NjEsNiArMTQ2MSwxMCBAQCBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1YUlN5c3RlbVByb3h5JiB4clN5c3RlbVByb3h5KCk7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3Jl
ZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklk
KTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRIYW5kbGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNl
VXBFdmVudCgpOwogICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432577</attachid>
            <date>2021-06-30 02:12:58 -0700</date>
            <delta_ts>2021-06-30 09:21:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227443-20210630111257.patch</filename>
            <type>text/plain</type>
            <size>37738</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ2ODE3NGNlZDI2ZTNi
ODYzMGM4ZGJhMjY3ODVjNTZkZmQ0YjBiOS4uMWRlYzAzZjEwYjg2NWQ2YmQ2NTM2N2ViYmMzZDBk
M2JjZmU5MGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA2LTMwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gW2lPU10g
QWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc0NDMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzc5ODU5OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIG5ldyBlbnRlckZ1bGxzY3JlZW4oKSBtZXRob2Qg
b24gSFRNTE1vZGVsRWxlbWVudCBhbGxvd2luZyB0byBlbnRlciBhIGZ1bGxzY3JlZW4gQVIgZXhw
ZXJpZW5jZQorICAgICAgICB3aGVyZSB0aGUgcmVzb3VyY2UgbWF5IGJlIGRpc3BsYXllZCBpbiB0
aGUgdXNlcidzIGVudmlyb25tZW50LiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgZXhpc3RpbmcKKyAg
ICAgICAgRWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpIG1ldGhvZCBzaW5jZSB0aGUgZXhwZXJp
ZW5jZSBpcyBwcm92aWRlZCBieSB0aGUgcGxhdGZvcm0gYW5kIHdlJ3JlIG5vdAorICAgICAgICBw
cmVzZW50aW5nIHRoZSBpbmxpbmUgPG1vZGVsPiBlbGVtZW50IGluIGEgZnVsbHNjcmVlbiB3aW5k
b3cuCisKKyAgICAgICAgRnJvbSB0aGUgV2ViUHJvY2VzcyBzaWRlLCB0aGlzIHJlcXVpcmVzIG9i
dGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGVudCBsYXllciBmb3IgdGhlIDxtb2RlbD4g
ZWxlbWVudAorICAgICAgICBhbmQgc2VuZGluZyBpdCBpbiBhbiBJUEMgbWVzc2FnZSB0byB0aGUg
VUlQcm9jZXNzLgorCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZW50ZXJGdWxs
c2NyZWVuKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVtcHR5Q2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbiBjb25zdCk6Cisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpjb250ZW50c0xheWVySURG
b3JNb2RlbCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29udGVudHNM
YXllcklERm9yTW9kZWwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNb2RlbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6cmVuZGVyZXIgY29uc3QpOgorCiAyMDIx
LTA2LTI5ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50
IGZvcm1bbWV0aG9kPWRpYWxvZ10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGVmN2JiNzAwNzFmYTY5
ODMwZDllY2JlNTk3MzQ3NzlhOGMxM2E3ZTEuLjE3MmZkNWU3NTQzMDk2MmQxOWU0ZmEzM2M0OGUw
NGZhMTRiMDcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2
LTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2Rl
bF0gW2lPU10gQWRkIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgPG1vZGVsPiBpbiBmdWxsc2NyZWVu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc0NDMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5ODU5OTM3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY2xhcmUgYWRkaXRpb25hbCBBU1ZJbmxpbmVQ
cmV2aWV3IG1ldGhvZHMgcmVxdWlyZWQgZm9yIGZ1bGxzY3JlZW4gc3VwcG9ydC4KKworICAgICAg
ICAqIHBhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEkuaDoKKwogMjAyMS0wNi0yOCAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbTW9kZWxdIFtpT1NdIEFk
ZCBzdXBwb3J0IGZvciBtYW5pcHVsYXRpbmcgPG1vZGVsPiBpbmxpbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjE4
YzBiZTIyNWU4M2U0NmZmZmIwOTE0YzJhZGY2ZDg5YTVjMTA1Zi4uZDU4Zjg3NjNiYjE3YzRkMTlj
MDlhNGRjYTEzNDhiZGMyMmVjYjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAyMS0w
Ni0zMCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9k
ZWxdIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIDxtb2RlbD4gaW4gZnVsbHNjcmVl
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NDQz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTg1OTkzNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNwbGF5aW5nIGEgbW9kZWwgZWxlbWVudCBp
biBmdWxsc2NyZWVuIHJlcXVpcmVzIG1ha2luZyBzb21lIGNhbGxzIG9uIHRoZSBBU1ZJbmxpbmVQ
cmV2aWV3IG9iamVjdAorICAgICAgICBjcmVhdGVkIGJ5IGEgV0tNb2RlbFZpZXcuIFdlIHNlbmQg
dGhlIGNvbnRlbnQgbGF5ZXIgSUQgd2UgcmVjZWl2ZSB0aHJvdWdoIGFuIElQQyBjYWxsIGZyb20g
dGhlCisgICAgICAgIFdlYlByb2Nlc3MgdG8gdGhlIG5ldyBNb2RlbEVsZW1lbnRDb250cm9sbGVy
LiBXZSB0aGVuIGxvb2sgYXQgdGhlIHJlbW90ZSBsYXllciB0cmVlIGZvciBhIG5vZGUKKyAgICAg
ICAgbWF0Y2hpbmcgdGhhdCBJRCBhbmQgZmluZCBpdHMgcmVsYXRlZCBVSVZpZXcuIElmIHdlIGZp
bmQgYSBXS01vZGVsVmlldywgYXMgZXhwZWN0ZWQsIHdlIGNhbiBjYXJyeSAKKyAgICAgICAgb24g
YW5kIGNhbGwgLVtBU1ZJbmxpbmVQcmV2aWV3IGNyZWF0ZUZ1bGxzY3JlZW5JbnN0YW5jZVdpdGhJ
bml0aWFsRnJhbWU6cHJldmlld09wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6XQorICAgICAgICB0
byBlbnRlciBmdWxsc2NyZWVuIHVzaW5nIHRoZSBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJv
dmlkZWQgYnkgdGhlIFVJIGNsaWVudCwgYW5kIHRoZW4gb2JzZXJ2ZQorICAgICAgICB3aGVuIHdl
IGV4aXQgZnVsbHNjcmVlbiB1c2luZyAtW0FTVklubGluZVByZXZpZXcgb2JzZXJ2ZURpc21pc3NG
dWxsc2NyZWVuV2l0aENvbXBsZXRpb25IYW5kbGVyOl0KKyAgICAgICAgdG8gbWFrZSBzdXJlIHRo
ZSBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxlciBpcyByZW1vdmVkLgorCisgICAgICAgICogU291
cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1vZGVsLmguCisgICAgICAg
IChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oLgorICAgICAgICAoV2Vi
S2l0OjpNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpwYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRBdHRh
Y2hUb1J1bm5pbmdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNl
dFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0YWtlTW9kZWxFbGVtZW50
RnVsbHNjcmVlbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVD
bGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKIDIwMjEtMDYtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW01vZGVsXSBbaU9TXSBBZGQgc3VwcG9ydCBmb3IgbWFuaXB1bGF0aW5n
IDxtb2RlbD4gaW5saW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMTFlYTU4NWE5ZmRkMzBkYWJm
MzcxMmViMzg4ODlkZDBjZDUwODQ5YS4uYzRlNDkyOWQwZWI3ZGE3MWQ4ZjZlOTNjOWExZmVhZjJh
Y2UyNmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtNDEsNiArNDEsMTcgQEAKICNpbmNsdWRl
IDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAorI2lmIEhB
VkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDQS5oIgorI2luY2x1ZGUgIlBh
Z2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFj
a2luZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEhUTUxNb2RlbEVsZW1lbnQpOwpAQCAtMjE0LDYgKzIyNSwyNiBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsK
IH0KIAordm9pZCBIVE1MTW9kZWxFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQoreworI2lmIEhB
VkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQorICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgp
LnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJl
ci0+aXNDb21wb3NpdGVkKCkgfHwgIXJlbmRlcmVyLT5sYXllcigpIHx8ICFyZW5kZXJlci0+bGF5
ZXIoKS0+YmFja2luZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBncmFwaGljc0xh
eWVyID0gcmVuZGVyZXItPmxheWVyKCktPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpOworICAg
IGlmICghZ3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gY29u
dGVudExheWVySWQgPSBncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVySURGb3JNb2RlbCgpKQor
ICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS50YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVl
bihjb250ZW50TGF5ZXJJZCk7CisjZW5kaWYKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1P
REVMX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCA2MmNmNjExN2MzM2ZmNjdiNmVkMjEyZjgy
ZmFjYmQ0NTY4ZWE4NDkzLi4yOWMwNjhiMTNhZDgzYWU4NmYxMDg4OTRkZmM5NWRjZDRkOWE0ZDFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9kZWw7CitjbGFzcyBSZW5kZXJNb2RlbDsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
SURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIApAQCAt
NTAsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNv
bnN0IFVSTCYgY3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAg
ICBSZW5kZXJNb2RlbCogcmVuZGVyZXIoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlYWR5UHJvbWlz
ZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNlPEhUTUxN
b2RlbEVsZW1lbnQ+PjsKICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFk
eVByb21pc2UuZ2V0KCk7IH0KIApAQCAtNTksNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKIAorICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CisK
IHByaXZhdGU6CiAgICAgSFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaWRsCmluZGV4IGFjMmZhZmVjNGEzYWI0OWU0OWZjY2Y0
N2QwYzk3NDVjZGU1YjgyYTQuLmJiOGUxOGQ1Yzc2ZTZiZjFkMzg4NmQ3YjIyZjU1MjVlMTM4ODU5
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5pZGwKQEAgLTMxLDQgKzMxLDYgQEAKICAgICBbVVJMXSByZWFk
b25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGN1cnJlbnRTcmM7CiAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgUHJvbWlzZTxIVE1MTW9kZWxFbGVtZW50PiByZWFkeTsKKworICAgIHVuZGVmaW5lZCBl
bnRlckZ1bGxzY3JlZW4oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
aW9zL1N5c3RlbVByZXZpZXdTUEkuaAppbmRleCBlMDJkM2ZjOGM4Yjk1MjIwOTcyNWNlMzQ1ZjM1
MGQ1ZmJhMzRkOTk3Li5mNzhlYWQ5N2E2MjY3OTk2ZDllZjA4ZGY2ZTFkODBiZjZkMGMxZTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9TeXN0ZW1QcmV2aWV3U1BJ
LmgKQEAgLTgzLDYgKzgzLDggQEAKIC0gKHZvaWQpc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSloYW5k
bGVyOwogLSAodm9pZClwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOihOU1VSTCAqKXVybCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpaGFuZGxl
cjsKIC0gKHZvaWQpdXBkYXRlRnJhbWU6KENHUmVjdCluZXdGcmFtZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoQ0FGZW5jZUhhbmRsZSAqIF9OdWxsYWJsZSBmZW5jZUhhbmRsZSwgTlNFcnJv
ciAqIF9OdWxsYWJsZSBlcnJvcikpaGFuZGxlcjsKKy0gKHZvaWQpY3JlYXRlRnVsbHNjcmVlbklu
c3RhbmNlV2l0aEluaXRpYWxGcmFtZTooQ0dSZWN0KWluaXRpYWxGcmFtZSBwcmV2aWV3T3B0aW9u
czooTlNEaWN0aW9uYXJ5ICopcHJldmlld09wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFVJVmlld0NvbnRyb2xsZXIgKnJlbW90ZVZpZXdDb250cm9sbGVyLCBDQUZlbmNlSGFuZGxl
ICogX051bGxhYmxlIGZlbmNlSGFuZGxlLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSloYW5k
bGVyOworLSAodm9pZClvYnNlcnZlRGlzbWlzc0Z1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKENBRmVuY2VIYW5kbGUgKiBfTnVsbGFibGUgZmVuY2VIYW5kbGUsIE5TRGlj
dGlvbmFyeSAqIF9Ob25udWxsIHBheWxvYWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWhh
bmRsZXI7CiAtICh2b2lkKXRvdWNoZXNCZWdhbjooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMg
d2l0aEV2ZW50OihudWxsYWJsZSBVSUV2ZW50ICopZXZlbnQ7CiAtICh2b2lkKXRvdWNoZXNNb3Zl
ZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihudWxsYWJsZSBVSUV2ZW50
ICopZXZlbnQ7CiAtICh2b2lkKXRvdWNoZXNFbmRlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNo
ZXMgd2l0aEV2ZW50OihudWxsYWJsZSBVSUV2ZW50ICopZXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDJlYzk5MjhkNDk0YzE2NDJjMGUyMTU2MWFiZTRjMzVl
M2QyZmJkZmIuLjg0NDgzZTE5NGRjZDdmNmE0NzM5NDYzZWMyOWQ0ZDQ0MmQ3NGYzMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC01NzgsNiArNTc4LDEyIEBAIHZv
aWQgRW1wdHlDaHJvbWVDbGllbnQ6OnNob3dTaGFyZVNoZWV0KFNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwmLCBDb21wbGV0aW9uSGFuZGxlCiB7CiB9CiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkK
K3ZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkgY29uc3QKK3sKK30KKyNlbmRpZgor
CiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAppbmRleCA2YzcwODllMTgxZDBhODcyYzQ5NmJmZmUxZjUxMjQ3Y2FmMjIzMjRlLi4xZmNkOTZk
OGU0MjhhODFjMTE5NWE0MjY4NmNjYjgxYWVkNWFkZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCkBAIC0yMTYsNiArMjE2LDEwIEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50
IDogcHVibGljIENocm9tZUNsaWVudCB7CiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJv
bHMoY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4mLCBGcmFtZSYpIGZpbmFsIHsgfQogICAg
IGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkgY29uc3Qg
ZmluYWw7CisjZW5kaWYKKwogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyByZXR1cm4gbnVsbHB0
cjsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggYjU1NzdlZDljYjA4
OWE3YjI1YzI4ZmE1Zjk5NGUwYzMzYTcwOTU4My4uMjQ4NzQwY2YwY2IzMzhjY2M4MzJhMzAzYjBh
ZGZkMTdmNTRjOTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC01OTYsNiAr
NTk2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGV4dEF1dG9zaXppbmdVc2VzSWRl
bXBvdGVudE1vZGVDaGFuZ2VkKCkgeyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVN
RU5UKQorICAgIHZpcnR1YWwgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpIGNvbnN0IHsgfQorI2VuZGlmCisKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4
IDdjN2Q0ZmNjOWVkMjIzMGQ4NzA5NWU2NzRlNTljMmQxNzU4NWQwNmEuLjNiM2MxMThiZmQ0NmM1
Yjg0MDVlYTdiODExM2FmNTliOTY2NzFiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTUyNCw2ICs1MjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5
ZXIqLCBDb250ZW50c0xheWVyUHVycG9zZSkgeyB9CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQp
CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9kZWw+JiYpIHsg
fQorICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllcklEIGNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHVzZXNDb250ZW50
c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggOWU1
MTAyNTAyNjgxOTE5MjBhMTA2NTVhYjYyOWQ2YWZhZmEyMTQwOC4uNGI2MWViNjYxYTNkYzBkNjBh
NTA4NDcxMTg3MDAxZTM1YTFlOWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xMjk5LDYgKzEyOTks
MTIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9Nb2RlbChSZWZQdHI8TW9k
ZWw+JiYgbW9kZWwpCiAKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQ29udGVudHNSZWN0
c0NoYW5nZWQgfCBPcGFjaXR5Q2hhbmdlZCk7CiB9CisKK0dyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCBHcmFwaGljc0xheWVyQ0E6OmNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jb250ZW50c0xheWVyUHVycG9zZSA9PSBDb250ZW50c0xheWVyUHVy
cG9zZTo6TW9kZWwgPyBtX2NvbnRlbnRzTGF5ZXItPmxheWVySUQoKSA6IDA7Cit9CisKICNlbmRp
ZgogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKaW5kZXggZWNhYjE3ZmZhNjlhOTc2NGExNDk1MmRkNTIxY2NjOThmOTJmMDVkNi4u
NWU2MWM2MGJlYWMyY2M5ODgzNmM0OWRiZmMyYmI2YzIyZjVhYzc4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAg
LTE1Myw2ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250
ZW50c1RvU29saWRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNT0RF
TF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb01vZGVsKFJl
ZlB0cjxNb2RlbD4mJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1MYXll
cklEIGNvbnRlbnRzTGF5ZXJJREZvck1vZGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
ICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJQdXJwb3NlOjpOb25lOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCmluZGV4IDk0MTk3MTljMDI3MGJmNDczYWY1
YWQzNmMzZjIxZDE1MTUzYTlhNDcuLjM4NWIxOGZmZmYwNTI5ODk0ZGE2ODAyOTJiY2Y1ZjA0ODZi
ZThhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNb2RlbC5oCkBAIC0yNywxMiAr
MjcsMTEgQEAKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogCisjaW5jbHVkZSAiSFRNTE1v
ZGVsRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclJlcGxhY2VkLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSFRNTE1vZGVsRWxlbWVudDsKLQogY2xhc3MgUmVuZGVyTW9kZWwg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyUmVwbGFjZWQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoUmVuZGVyTW9kZWwpOwogcHVibGljOgpAQCAtNDEsMTcgKzQwLDIzIEBAIHB1YmxpYzoKIAog
ICAgIEhUTUxNb2RlbEVsZW1lbnQmIG1vZGVsRWxlbWVudCgpIGNvbnN0OwogCisgICAgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiUmVuZGVyTW9kZWwiOyB9CiAgICAgYm9vbCBpc1JlbmRlck1vZGVsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIGZpbmFsOwogCiAgICAgdm9p
ZCB1cGRhdGUoKTsKIH07CiAKK2lubGluZSBSZW5kZXJNb2RlbCogSFRNTE1vZGVsRWxlbWVudDo6
cmVuZGVyZXIoKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJNb2RlbD4oSFRN
TEVsZW1lbnQ6OnJlbmRlcmVyKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJNb2RlbCwgaXNSZW5kZXJN
b2RlbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKaW5kZXggYTg2NGE0NGM4NTg3OWE1ZDJkNDQ2ZWRhODFlMGFlMTRm
NmVlOTc2My4uZDQ4OGEzZDk2NmVjNjQxZDhkY2Y2NTJmYTM3YjJiNDlkOWNkNDVkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CkBAIC0yOTcsNiArMjk3LDcgQEAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RQcm94eS5jcHAKIFVJUHJvY2Vzcy9MZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAKIFVJ
UHJvY2Vzcy9NZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAog
VUlQcm9jZXNzL01lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAKK1VJUHJv
Y2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmNwcAogVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUu
Y3BwCiBVSVByb2Nlc3MvUHJvY2Vzc0Fzc2VydGlvbi5jcHAKIFVJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDNiZTQ1OWRhNTg3YmZmODYxZjg0
NDE5OTcyZGQxMTEwMDA5M2Y0NzMuLmM5MzljMTE0ZmQ5ZGFiNzdhM2MyZmYwMDVjZmM2Njk2Njdk
Yzk1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTM5OSw2ICszOTksNyBAQCBVSVByb2Nl
c3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbQogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5tbQogVUlQcm9jZXNzL0NvY29hL01lZGlhVXRpbGl0
aWVzLm1tCiBVSVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCitVSVBy
b2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCiBVSVByb2Nlc3MvQ29jb2EvUGFnZUNsaWVudEltcGxDb2Nv
YS5tbQogVUlQcm9jZXNzL0NvY29hL1BsYXRmb3JtWFJTeXN0ZW0ubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zOWIzNjMwMTg1MjMwYTM0MWY1NzUzZWNiNTNiMDljODBlY2E3
YThkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9k
ZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2RlbEVsZW1lbnRDb250cm9sbGVyLmgi
CisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKworI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUhvc3QuaCIKKyNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVZpZXdzLmgiCisjaW1wb3J0ICJXS01vZGVsVmlldy5oIgorI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKyNp
ZiBIQVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKKyNpbXBvcnQgPHBhbC9zcGkvaW9zL1N5
c3RlbVByZXZpZXdTUEkuaD4KKyNlbmRpZgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUkso
QXNzZXRWaWV3ZXIpOworU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2
aWV3KTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBIQVZFKEFSS0lUX0lOTElORV9QUkVW
SUVXX0lPUykKK3ZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6dGFrZU1vZGVsRWxlbWVudEZ1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRM
YXllcklkKQoreworICAgIGlmICghaXM8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4o
bV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8qIG5vZGUgPSBkb3duY2FzdDxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqbV93
ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkucmVtb3RlTGF5ZXJUcmVlSG9zdCgpLm5vZGVGb3JJ
RChjb250ZW50TGF5ZXJJZCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvICp2aWV3ID0gbm9kZS0+dWlWaWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIVt2aWV3IGlzS2luZE9mQ2xhc3M6W1dLTW9kZWxWaWV3IGNsYXNz
XV0pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gKnByZXNlbnRpbmdWaWV3Q29udHJvbGxl
ciA9IG1fd2ViUGFnZVByb3h5LnVpQ2xpZW50KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7
CisgICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLTW9kZWxWaWV3ICptb2RlbFZpZXcgPSAoV0tNb2RlbFZpZXcgKil2aWV3OworICAgIENH
UmVjdCBpbml0aWFsRnJhbWUgPSBbbW9kZWxWaWV3IGNvbnZlcnRSZWN0Om1vZGVsVmlldy5mcmFt
ZSB0b1ZpZXc6bmlsXTsKKworICAgIEFTVklubGluZVByZXZpZXcgKnByZXZpZXcgPSBbbW9kZWxW
aWV3IHByZXZpZXddOworICAgIE5TRGljdGlvbmFyeSAqcHJldmlld09wdGlvbnMgPSBAe0AiV2Vi
S2l0IjogQCJNb2RlbCBlbGVtZW50IGZ1bGxzY3JlZW4ifTsKKyAgICBbcHJldmlldyBjcmVhdGVG
dWxsc2NyZWVuSW5zdGFuY2VXaXRoSW5pdGlhbEZyYW1lOmluaXRpYWxGcmFtZSBwcmV2aWV3T3B0
aW9uczpwcmV2aWV3T3B0aW9ucyBjb21wbGV0aW9uSGFuZGxlcjpeKFVJVmlld0NvbnRyb2xsZXIg
KnJlbW90ZVZpZXdDb250cm9sbGVyLCBDQUZlbmNlSGFuZGxlICpmZW5jZUhhbmRsZSwgTlNFcnJv
ciAqY3JlYXRpb25FcnJvcikgeworICAgICAgICBpZiAoY3JlYXRpb25FcnJvcikgeworICAgICAg
ICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgZnVsbHNjcmVlbiBpbnN0
YW5jZTogJUAiLCBbY3JlYXRpb25FcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAgICAg
ICAgICAgW2ZlbmNlSGFuZGxlIGludmFsaWRhdGVdOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKKyAgICAgICAgICAgIHJlbW90ZVZpZXdDb250cm9sbGVyLm1vZGFsUHJlc2VudGF0aW9u
U3R5bGUgPSBVSU1vZGFsUHJlc2VudGF0aW9uT3ZlckZ1bGxTY3JlZW47CisgICAgICAgICAgICBy
ZW1vdGVWaWV3Q29udHJvbGxlci52aWV3LmJhY2tncm91bmRDb2xvciA9IFVJQ29sb3IuY2xlYXJD
b2xvcjsKKworICAgICAgICAgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmll
d0NvbnRyb2xsZXI6cmVtb3RlVmlld0NvbnRyb2xsZXIgYW5pbWF0ZWQ6Tk8gY29tcGxldGlvbjpe
KHZvaWQpIHsKKyAgICAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgICAg
ICAgICAgICAgW3ZpZXcubGF5ZXIuc3VwZXJsYXllci5jb250ZXh0IGFkZEZlbmNlOmZlbmNlSGFu
ZGxlXTsKKyAgICAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOworICAgICAgICAg
ICAgICAgIFtmZW5jZUhhbmRsZSBpbnZhbGlkYXRlXTsKKyAgICAgICAgICAgIH1dOworCisgICAg
ICAgICAgICBbcHJldmlldyBvYnNlcnZlRGlzbWlzc0Z1bGxzY3JlZW5XaXRoQ29tcGxldGlvbkhh
bmRsZXI6XihDQUZlbmNlSGFuZGxlICpkaXNtaXNzRmVuY2VIYW5kbGUsIE5TRGljdGlvbmFyeSAq
cGF5bG9hZCwgTlNFcnJvciAqZGlzbWlzc0Vycm9yKSB7CisgICAgICAgICAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRpc21pc3NFcnJvciB8fCAhZGlzbWlzc0ZlbmNlSGFuZGxlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGdldCBmZW5jZSBoYW5k
bGUgd2hlbiBkaXNtaXNzaW5nIGZ1bGxzY3JlZW4gaW5zdGFuY2U6ICVAIiwgW2Rpc21pc3NFcnJv
ciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc21p
c3NGZW5jZUhhbmRsZSBpbnZhbGlkYXRlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKKyAgICAgICAgICAgICAgICAgICAgW3ZpZXcubGF5ZXIuc3VwZXJsYXll
ci5jb250ZXh0IGFkZEZlbmNlOmRpc21pc3NGZW5jZUhhbmRsZV07CisgICAgICAgICAgICAgICAg
ICAgIFtDQVRyYW5zYWN0aW9uIHNldENvbXBsZXRpb25CbG9jazpeeworICAgICAgICAgICAgICAg
ICAgICAgICAgW3JlbW90ZVZpZXdDb250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1h
dGVkOk5PIGNvbXBsZXRpb246bmlsXTsKKyAgICAgICAgICAgICAgICAgICAgfV07CisgICAgICAg
ICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CisgICAgICAgICAgICAgICAgICAg
IFtkaXNtaXNzRmVuY2VIYW5kbGUgaW52YWxpZGF0ZV07CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9XTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisjZW5kaWYKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJv
bGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RmNmRjNzYxMjNmY2UwNTY4OWIzZjc1NDE5ODg4MGQyZTVj
MjczNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxl
bWVudENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIgorCisjaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpCisKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK01vZGVsRWxlbWVudENvbnRyb2xsZXI6Ok1vZGVsRWxlbWVudENv
bnRyb2xsZXIoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCisgICAgOiBtX3dlYlBhZ2VQcm94
eSh3ZWJQYWdlUHJveHkpCit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzExM2IyYzQ4
ZjcxYTNjYTQ4NGRlODY5ZWFhOGM1NDdkNjRhNGU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVO
VCkKKworI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKKyNpZiBIQVZFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKK09CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCitjbGFzcyBN
b2RlbEVsZW1lbnRDb250cm9sbGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vZGVsRWxlbWVu
dENvbnRyb2xsZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBNb2RlbEVsZW1lbnRDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYpOworCisgICAg
V2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHk7IH0KKworI2lmIEhB
VkUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQorICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRM
YXllcklkKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdl
UHJveHk7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYThjZDllZjgwZjNiZGJhNmQyNzk4NmNkOWM1Mjg4MDQ2ODZhNjVkYi4u
OTdlN2JlMjU4YWQ1Yjg5ZTBkOTI4YmVmNmViZWFjZDAwNDY1NTJmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDIzLDYgKzEwMjMsMTEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogICAgIG1fc3lzdGVtUHJl
dmlld0NvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFN5c3RlbVByZXZpZXdDb250cm9sbGVyPigqdGhp
cyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIEFTU0VSVCghbV9t
b2RlbEVsZW1lbnRDb250cm9sbGVyKTsKKyAgICBtX21vZGVsRWxlbWVudENvbnRyb2xsZXIgPSBt
YWtlVW5pcXVlPE1vZGVsRWxlbWVudENvbnRyb2xsZXI+KCp0aGlzKTsKKyNlbmRpZgorCiAjaWYg
RU5BQkxFKFdFQl9BVVRITikKICAgICBBU1NFUlQoIW1fY3JlZGVudGlhbHNNZXNzZW5nZXIpOwog
ICAgIG1fY3JlZGVudGlhbHNNZXNzZW5nZXIgPSBtYWtlVW5pcXVlPFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5PigqdGhpcyk7CkBAIC03NzcxLDYgKzc3NzYsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQog
ICAgIG1fc3lzdGVtUHJldmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICBtX21vZGVsRWxlbWVudENvbnRyb2xsZXIgPSBudWxs
cHRyOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIG1fY3JlZGVudGlhbHNN
ZXNzZW5nZXIgPSBudWxscHRyOwogI2VuZGlmCkBAIC0xMDY3OSw2ICsxMDY4OCwxNSBAQCBXZWJD
b3JlOjpDYXB0dXJlU291cmNlT3JFcnJvciBXZWJQYWdlUHJveHk6OmNyZWF0ZVJlYWx0aW1lTWVk
aWFTb3VyY2VGb3JTcGVlY2hSZQogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5U
KQordm9pZCBXZWJQYWdlUHJveHk6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkKK3sKKyNpZiBI
QVZFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKKyAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVy
KCktPnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKGNvbnRlbnRMYXllcklkKTsKKyNlbmRpZgor
fQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVu
c2lvbnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAppbmRleCBlYzVkMGNmMDVlM2I0MzU0N2FmNTkzZGQ2NTM3YzAzNzgxN2U2
YTllLi41OWIzYzkyYzhhMDY1YTgxZTQ4OTIyNTQ2MzM2MDc1YTk5YWRlMTdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTg5LDYgKzE4OSwxMCBAQCBpbnRlcmZh
Y2UgSUQzRDExRGV2aWNlMTsKICNpbmNsdWRlICJQbGF0Zm9ybVhSU3lzdGVtLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorI2luY2x1ZGUgIk1vZGVsRWxlbWVudENvbnRy
b2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBj
bGFzcyBDb250ZW50V29ybGQ7CkBAIC01NjksNiArNTczLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQoY29uc3QgV2ViQ29yZTo6U3lzdGVtUHJldmll
d0luZm8mLCBjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKE1PREVMX0VMRU1F
TlQpCisgICAgTW9kZWxFbGVtZW50Q29udHJvbGxlciogbW9kZWxFbGVtZW50Q29udHJvbGxlcigp
IHsgcmV0dXJuIG1fbW9kZWxFbGVtZW50Q29udHJvbGxlci5nZXQoKTsgfQorICAgIHZvaWQgdGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGNvbnRlbnRMYXllcklkKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgQVBJOjpDb250ZXh0TWVudUNsaWVudCYgY29udGV4dE1lbnVDbGllbnQoKSB7IHJl
dHVybiAqbV9jb250ZXh0TWVudUNsaWVudDsgfQogICAgIHZvaWQgc2V0Q29udGV4dE1lbnVDbGll
bnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGllbnQ+JiYpOwpAQCAtMjU5Nyw2
ICsyNjA2LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5c3RlbVByZXZpZXdD
b250cm9sbGVyPiBtX3N5c3RlbVByZXZpZXdDb250cm9sbGVyOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTU9ERUxfRUxFTUVOVCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kZWxFbGVtZW50Q29udHJv
bGxlcj4gbV9tb2RlbEVsZW1lbnRDb250cm9sbGVyOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQ
cm94eT4gbV9jcmVkZW50aWFsc01lc3NlbmdlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFiMzI0ODExZTE2ODYy
ZDRlYWIxZThjNmVmZDAxODNmOWM2NGI4ZGQuLjRmYmFjYWU2OTBjMWQ0NzZmZTU2Y2I2MmMyZDM4
Y2M4ZjI2ZTliNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTU5Miw0ICs1OTIsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBDaGFuZ2VVbml2ZXJzYWxBY2Nlc3Nab29tRm9j
dXMoV2ViQ29yZTo6SW50UmVjdCB2aWV3UmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3Qp
CiAjZW5kaWYKKworI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQorICAgIFRha2VNb2RlbEVsZW1l
bnRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRlbnRMYXllcklEKQorI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MzM2M2I5
YzllNzExY2RhYjhiN2NhZThkYjNkMTEwNDNjNTU2OWU2Li41N2YwOTMzZTRkZmJkNmYxZmViNWRh
ZjhhNDNjNDk4YjJlMGU5MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjIsNiArMTMyMiw3IEBACiAJCTZFRTg0OUM4MTM2OEQ5
MzkwMDM4RDQ4MSAvKiBXS0luc3BlY3RvclByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFRTg0OUM2MTM2OEQ5MkQwMDM4RDQ4MSAvKiBX
S0luc3BlY3RvclByaXZhdGVNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MTE3MjVBOTIyOEQ1NjQzMDAwMTg1MTQgLyogV2Vic2l0ZUxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTcyNUE4MjI4RDU2M0EwMDAxODUxNCAvKiBXZWJzaXRl
TGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeS5oICovOyB9OwogCQk3MTM0QTNEQTI2
MDNCOTI1MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzRBM0Q5MjYw
M0I4MEUwMDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICov
OyB9OworCQk3MTM3QkE4MDI1RjE1NDIwMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzN0JB
N0YyNUYxNTQwQzAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCAqLzsgfTsKIAkJ
NzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNjc2
QTQyMkM2MjMxODAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oICov
OyB9OwogCQk3MUJBQTczMzI1RkZEMDk4MDBEN0NENUQgLyogV0tNb2RlbFZpZXcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQkFBNzMxMjVGRkNDQkEw
MEQ3Q0Q1RCAvKiBXS01vZGVsVmlldy5oICovOyB9OwogCQk3MUZCODEwQjIyNjA2MjdFMDAzMjM2
NzcgLyogV2Vic2l0ZVNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3kuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI4MTBBMjI2MDYyN0Ew
MDMyMzY3NyAvKiBXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeS5oICov
OyB9OwpAQCAtNDU3Myw2ICs0NTc0LDkgQEAKIAkJNzExNzI1QTgyMjhENTYzQTAwMDE4NTE0IC8q
IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNo
UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxMzRBM0Q4MjYwM0I4MEUw
MDYyNEJEMyAvKiBXS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLTW9kZWxJbnRlcmFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLTW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNv
Z25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTM0QTNEOTI2MDNCODBF
MDA2MjRCRDMgLyogV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29n
bml6ZXIuaDsgcGF0aCA9IGlvcy9XS01vZGVsSW50ZXJhY3Rpb25HZXN0dXJlUmVjb2duaXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTM3QkE3RDI1RjE1M0U5MDA5MTRFRTMg
LyogTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MTM3QkE3RTI1RjE1NDBCMDA5MTRFRTMgLyogTW9kZWxFbGVtZW50Q29udHJvbGxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RlbEVsZW1lbnRDb250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzEzN0JBN0YyNUYxNTQw
QzAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MUE2NzZBNDIyQzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdl
c3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLVG91
Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0
dXJlUmVjb2duaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE2NzZBNTIy
QzYyMzE4MDA3RDYyOTUgLyogV0tUb3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tUb3VjaEFjdGlvbkdlc3R1cmVS
ZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFCQUE3MzEyNUZGQ0NCQTAwRDdDRDVE
IC8qIFdLTW9kZWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW9k
ZWxWaWV3Lmg7IHBhdGggPSBpb3MvV0tNb2RlbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTcwNDIsNiArNzA0Niw3IEBACiAJCQkJOTM0MjU4OEYyNTU1RENBNTAwNTlFRURE
IC8qIE1lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSAqLywKIAkJCQk0MTEyODZFRjIxQzhBOTBD
MDAzQTg1NTAgLyogTWVkaWFVdGlsaXRpZXMuaCAqLywKIAkJCQk0MTEyODZGMDIxQzhBOTBEMDAz
QTg1NTAgLyogTWVkaWFVdGlsaXRpZXMubW0gKi8sCisJCQkJNzEzN0JBN0QyNUYxNTNFOTAwOTE0
RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbSAqLywKIAkJCQkxQUJDM0RGNDE4
OTlFNDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggKi8sCiAJCQkJMUFCQzNERjMxODk5
RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSAqLywKIAkJCQk1QzZDRTZEMzFGNTlF
QTM1MDAwN0M2Q0IgLyogUGFnZUNsaWVudEltcGxDb2NvYS5oICovLApAQCAtOTk4Myw2ICs5OTg4
LDggQEAKIAkJCQk5QUNDMDdCMjI1QzgxNUYzMDBEQzYzODYgLyogTWVkaWFLZXlTeXN0ZW1QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oICovLAogCQkJCTlBQ0MwN0I0MjVDODE2MEIwMERD
NjM4NiAvKiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCAqLywKIAkJCQk5
MzQyNTg5ODI1NUI1MzRCMDA1OUVFREQgLyogTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLmggKi8s
CisJCQkJNzEzN0JBN0UyNUYxNTQwQjAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIu
Y3BwICovLAorCQkJCTcxMzdCQTdGMjVGMTU0MEMwMDkxNEVFMyAvKiBNb2RlbEVsZW1lbnRDb250
cm9sbGVyLmggKi8sCiAJCQkJQkM2RURBQTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQu
aCAqLywKIAkJCQkxQUM3NTM3OTE4M0E5RkRBMDA3MkNCMTUgLyogUGFnZUxvYWRTdGF0ZS5jcHAg
Ki8sCiAJCQkJMUFDNzUzN0ExODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCAqLywK
QEAgLTEyMDgxLDYgKzEyMDg4LDcgQEAKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyog
TW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0
QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3Qjgy
NjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzEzN0JBODAyNUYxNTQyMDAwOTE0RUUzIC8qIE1vZGVsRWxlbWVudENvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJH
ZXN0dXJlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlD
MyAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggMDQ1NTdhODVmYzg3YzY3NDUxZTcwYWUxN2Y5ZjUwYzBmZmZjYzUzZi4uOTJm
ZGY3OWYwM2M0ZTEyODA2NTRkZmIwMDQ3NmRkY2IzMGFlN2U2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKQEAgLTE1MTUsNCArMTUxNSwxMSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSGFu
ZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3VzZVVwRXZlbnQoKQogICAgIG1fcGFnZS5kaWRIYW5k
bGVPclByZXZlbnRNb3VzZURvd25Pck1vdXNlVXBFdmVudCgpOwogfQogCisjaWYgRU5BQkxFKE1P
REVMX0VMRU1FTlQpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZU1vZGVsRWxlbWVudEZ1bGxz
Y3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXll
cklkKSBjb25zdAoreworICAgIG1fcGFnZS50YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihjb250
ZW50TGF5ZXJJZCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKaW5kZXggODM1YmZkMGNjNDhlMzQzZjFmYjM0OWNjOWVlNDRhZmM0YjE5MTI4Mi4u
MjBlNjlhNTE3OTc1NjJkZWFlY2JjNDcxOGIzZDYwNDRjYWM4NGFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaApAQCAtNDUyLDYgKzQ1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZW51bWVyYXRlSW1t
ZXJzaXZlWFJEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUGxhdGZvcm1YUjo6
SW5zdGFuY2U6OkRldmljZUxpc3QmKT4mJikgZmluYWw7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQorICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKSBjb25zdCBm
aW5hbDsKKyNlbmRpZgorCiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9y
aXpvbnRhbFNjcm9sbGJhciB7IGZhbHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFp
bkZyYW1lSGFzVmVydGljYWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRlNWIxZTQ1ZmUyNTdjMzAxMmJh
MzM4ZjA1ZTAzNjg1YWRhOWEwMmUuLmM1ODlhNmMyOWQ2YWJlMGVhM2M2YjA3M2IzZjYzMTE2Njg5
ODNiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03NjY5LDYgKzc2NjksMTMgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVDb250ZXh0TWVudVRy
YW5zbGF0aW9uKGNvbnN0IFRyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvJiBpbmYKIHsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24o
aW5mbykpOwogfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKK3ZvaWQgV2Vi
UGFnZTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKQoreworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6VGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oY29udGVudExheWVySWQpKTsK
K30KIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA0NGM2YWMyOWI0OTczODEzMDc3NDVkNTlkYTNjNzFiOTQ4NjI1YWEzLi42NmUyYWVl
MzYyYjEyMDg2NWY0Y2ZlNzQ2MGI5NTRkZmRhODQ4MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDYxLDYgKzE0NjEsMTAgQEAgcHVibGljOgog
ICAgIFBsYXRmb3JtWFJTeXN0ZW1Qcm94eSYgeHJTeXN0ZW1Qcm94eSgpOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKKyAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2Ny
ZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJ
ZCk7CisjZW5kaWYKKwogICAgIHZvaWQgZGlkSGFuZGxlT3JQcmV2ZW50TW91c2VEb3duT3JNb3Vz
ZVVwRXZlbnQoKTsKICAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZygp
OwogCg==
</data>
<flag name="review"
          id="454591"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="454598"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>