<?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>223781</bug_id>
          
          <creation_ts>2021-03-25 21:53:54 -0700</creation_ts>
          <short_desc>Allow some image overlay content to render in fully transparent image elements</short_desc>
          <delta_ts>2021-03-26 14:23:26 -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>Platform</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744066</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-25 21:53:54 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744173</commentid>
    <comment_count>1</comment_count>
      <attachid>424356</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-26 08:06:31 -0700</bug_when>
    <thetext>Created attachment 424356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744174</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-26 08:06:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/75886351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744269</commentid>
    <comment_count>3</comment_count>
      <attachid>424356</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-03-26 12:14:59 -0700</bug_when>
    <thetext>Comment on attachment 424356
Patch

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

&gt; Source/WebCore/page/ImageOverlayController.cpp:86
&gt; +        if (overlayHostRenderer-&gt;style().opacity() &gt; 0.01)
&gt; +            return nullptr;

This is sneakily hidden, and I almost missed it. Maybe possible to make it obvious that this is all inert in the &quot;normal&quot; case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744278</commentid>
    <comment_count>4</comment_count>
      <attachid>424356</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-26 12:19:28 -0700</bug_when>
    <thetext>Comment on attachment 424356
Patch

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

&gt; Source/WebCore/dom/Document.cpp:2624
&gt;      if (auto* page = this-&gt;page()) {

Can we merge with this block?

&gt; Source/WebCore/page/ImageOverlayController.cpp:54
&gt; +ImageOverlayController::~ImageOverlayController() = default;

Why do we need this destructor?

&gt; Source/WebCore/page/ImageOverlayController.h:46
&gt; +    ImageOverlayController(Page&amp;);

explicit?

&gt; Source/WebCore/page/ImageOverlayController.h:53
&gt; +    void willMoveToPage(PageOverlay&amp;, Page*) override;

final

&gt; Source/WebCore/page/ImageOverlayController.h:54
&gt; +    void didMoveToPage(PageOverlay&amp;, Page*) override { }

final

&gt; Source/WebCore/page/ImageOverlayController.h:55
&gt; +    void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) override;

final</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744281</commentid>
    <comment_count>5</comment_count>
      <attachid>424356</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-26 12:30:47 -0700</bug_when>
    <thetext>Comment on attachment 424356
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:2624
&gt;&gt;      if (auto* page = this-&gt;page()) {
&gt; 
&gt; Can we merge with this block?

Yes — done!

&gt;&gt; Source/WebCore/page/ImageOverlayController.cpp:54
&gt;&gt; +ImageOverlayController::~ImageOverlayController() = default;
&gt; 
&gt; Why do we need this destructor?

Whoops, we don&apos;t! Good catch.

&gt;&gt; Source/WebCore/page/ImageOverlayController.cpp:86
&gt;&gt; +            return nullptr;
&gt; 
&gt; This is sneakily hidden, and I almost missed it. Maybe possible to make it obvious that this is all inert in the &quot;normal&quot; case?

Yeah, that&apos;s a good point. I&apos;m planning to split this bit out into a helper method, with a brief comment:

```
bool ImageOverlayController::shouldUsePageOverlayToPaintSelection(const RenderElement&amp; renderer)
{
    // If the selection is already painted (with nonzero opacity) in the overlay host&apos;s renderer,
    // then we don&apos;t need to fall back to a page overlay to paint the selection.
    return renderer.style().opacity() &lt;= 0.01;
}
```

&gt;&gt; Source/WebCore/page/ImageOverlayController.h:46
&gt;&gt; +    ImageOverlayController(Page&amp;);
&gt; 
&gt; explicit?

👍🏻

&gt;&gt; Source/WebCore/page/ImageOverlayController.h:53
&gt;&gt; +    void willMoveToPage(PageOverlay&amp;, Page*) override;
&gt; 
&gt; final

👍🏻

&gt;&gt; Source/WebCore/page/ImageOverlayController.h:54
&gt;&gt; +    void didMoveToPage(PageOverlay&amp;, Page*) override { }
&gt; 
&gt; final

👍🏻

&gt;&gt; Source/WebCore/page/ImageOverlayController.h:55
&gt;&gt; +    void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) override;
&gt; 
&gt; final

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744286</commentid>
    <comment_count>6</comment_count>
      <attachid>424393</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-03-26 12:53:03 -0700</bug_when>
    <thetext>Created attachment 424393
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744327</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-26 14:23:24 -0700</bug_when>
    <thetext>Committed r275112: &lt;https://commits.webkit.org/r275112&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424393.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424356</attachid>
            <date>2021-03-26 08:06:31 -0700</date>
            <delta_ts>2021-03-26 12:14:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223781-20210326080630.patch</filename>
            <type>text/plain</type>
            <size>29060</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5N2I4Njc3ZDE4NTZk
NDFkYzdkMjlhNmZlZTZhNmVjOTRiNWY4MC4uOTdjNDdkYWU5NWM4MzhkMmExMDM5NWI0NmJhNDA3
MDhmZGY0MjdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAzLTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHNvbWUg
aW1hZ2Ugb3ZlcmxheSBjb250ZW50IHRvIHJlbmRlciBpbiBmdWxseSB0cmFuc3BhcmVudCBpbWFn
ZSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW50cm9kdWNlIGBJbWFnZU92ZXJsYXlDb250cm9sbGVyYCwgYW5kIHVzZSBpdCB0byByZW5k
ZXIgc2VsZWN0aW9ucyBpbiBpbWFnZSBvdmVybGF5IGNvbnRlbnQgd2hlbiB0aGUgaW1hZ2UKKyAg
ICAgICAgb3ZlcmxheSdzIGhvc3QgZWxlbWVudCBpcyBmdWxseSB0cmFuc3BhcmVudC4KKworICAg
ICAgICBUZXN0OiBmYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1p
bi10cmFuc3BhcmVudC1pbWFnZS1vdmVybGF5Lmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndpbGxCZVJl
bW92ZWRGcm9tRnJhbWUpOgorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBgSW1hZ2VP
dmVybGF5Q29udHJvbGxlcmAgdG8gdW5pbnN0YWxsIGl0cyBgUGFnZU92ZXJsYXlgIHdoZW4gdGhl
IGRvY3VtZW50IGlzIGFib3V0IHRvIGJlCisgICAgICAgIGRldGFjaGVkLiBTZWUgYEltYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OmAgYmVsb3cuCisKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvblJl
Y3RHYXRoZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25SZWN0R2F0aGVyZXI6
Ok5vdGlmaWVyOjp+Tm90aWZpZXIpOgorCisgICAgICAgIEhhdmUgYFNlbGVjdGlvblJlY3RHYXRo
ZXJlcmAgbm90aWZ5IHRoZSBpbWFnZSBvdmVybGF5IGNvbnRyb2xsZXIgYXMgd2VsbCwgd2hlbiBz
ZWxlY3Rpb24gcmVjdHMgY2hhbmdlLgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bmVlZHNJbWFnZU92ZXJsYXlDb250cm9s
bGVyRm9yU2VsZWN0aW9uUGFpbnRpbmcgY29uc3QpOgorCisgICAgICAgIEFkZCBhIG5ldyBjbGll
bnQgaG9vayB0aGF0IHJldHVybnMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHVzZSBgSW1hZ2VP
dmVybGF5Q29udHJvbGxlcmAgdG8gcGFpbnQgc2VsZWN0aW9ucy4KKyAgICAgICAgSWYgbm90IChp
LmUuIHdlJ3JlIG9uIGlPUywgd2hlcmUgd2UgdXNlIFVJS2l0IHRvIGRyYXcgc2VsZWN0aW9ucyBp
biB0aGUgVUkgcHJvY2VzcyksIHRoZW4gd2UnbGwgbmV2ZXIgaW5zdGFsbAorICAgICAgICBwYWdl
IG92ZXJsYXlzLCBzaW5jZSBgc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2VgIGlzIGVmZmVjdGl2ZWx5
IGEgbm8tb3AuCisKKyAgICAgICAgKiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OkltYWdlT3Zl
cmxheUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxl
cjo6c2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UpOgorCisgICAgICAgIFdoZW4gc2VsZWN0aW9uIHJl
Y3RzIGNoYW5nZSwgaWYgdGhlIHNlbGVjdGlvbiBpcyBpbnNpZGUgYW4gaW1hZ2Ugb3ZlcmxheSB3
aG9zZSBob3N0IGlzIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQKKyAgICAgICAgKG9yIHZlcnkgY2xv
c2UgdG8gYmVpbmcgY29tcGxldGVseSB0cmFuc3BhcmVudCksIHRoZW4gcmVtZW1iZXIgdGhlIHNl
bGVjdGlvbiByZWN0cyBhbG9uZyB3aXRoIHRoZSByZW5kZXJlcidzCisgICAgICAgIGJhY2tncm91
bmQgY29sb3IsIGFuZCB1c2UgdGhpcyB0byByZW5kZXIgc2VsZWN0aW9uIGhpZ2hsaWdodHMgc2Vw
YXJhdGVseSwgaW4gYSBgUGFnZU92ZXJsYXlgLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXlDb250cm9sbGVyOjpkb2N1bWVudERldGFjaGVkKToKKworICAgICAgICBJZiB0aGUgYERv
Y3VtZW50YCBjb250YWluaW5nIHRoZSBjdXJyZW50IHJlbmRlcmVkIG92ZXJsYXkgc2VsZWN0aW9u
IGlzIGRldGFjaGVkLCBpbW1lZGlhdGVseSB1bmluc3RhbGwgdGhlCisgICAgICAgIGN1cnJlbnQg
YFBhZ2VPdmVybGF5YC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG92ZXJsYXlzIGRvbid0IHBlcnNp
c3QgdGhyb3VnaCBuYXZpZ2F0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlD
b250cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1bmluc3RhbGxQYWdlT3ZlcmxheUlmTmVlZGVkKToK
KworICAgICAgICBIZWxwZXIgbWV0aG9kcyB0byBhZGQgb3IgcmVtb3ZlIHRoZSBgUGFnZU92ZXJs
YXlgIGZyb20gdGhlIGN1cnJlbnQgYFBhZ2VgLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92
ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvUGFnZSk6CisKKyAgICAgICAgVW5pbnN0YWxsIHRo
ZSBjdXJyZW50IHBhZ2Ugb3ZlcmxheSBpZiBuZWVkZWQuCisKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRyYXdSZWN0KToKKworICAgICAgICBVc2UgdGhlIGluZm9y
bWF0aW9uIHN0b3JlZCBpbiBgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6c2VsZWN0aW9uUmVjdHNE
aWRDaGFuZ2VgIHRvIHJlbmRlciBjdXN0b20gc2VsZWN0aW9uCisgICAgICAgIHJlY3RzLgorCisg
ICAgICAgICogcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmg6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisKKyAgICAgICAgQWRkIGFu
IGBJbWFnZU92ZXJsYXlDb250cm9sbGVyYCB0byB0aGUgYFBhZ2VgLgorCisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjppbWFnZU92ZXJsYXlDb250cm9sbGVyKToKKwogMjAyMS0wMy0yNSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBhZGQgYC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7YCBvbiBpbWFnZSBlbGVtZW50cyB3aXRoIGBkcmFnZ2Fi
bGU9dHJ1ZWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNDhkMTQ4ZjY4NTBiMDBlZmI5OGJlZDcwOWI2Nzg2OTI5NWM4
NzA5Ni4uNjdkMzE2ZTk1ZGNhMDNkZWM4NzQ5YTRjZmQxMmYyNzM2ZmIzODk2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBzb21lIGltYWdlIG92ZXJsYXkgY29udGVudCB0
byByZW5kZXIgaW4gZnVsbHkgdHJhbnNwYXJlbnQgaW1hZ2UgZWxlbWVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzc4MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIG5ldyBjaHJv
bWUgY2xpZW50IGhvb2suIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMjEtMDMtMjUgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIDEwLjEzIERFUExPWU1FTlRfVEFSR0VUcyBhbmQgU1lTVEVNX1ZFUlNJ
T05fUFJFRklYcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhNzVhMmYzMzVkZGE1NTczMjg0M2RhYjAwYTYz
MTg5ODRiODQ0YTZjLi40Yzg3ZTA3NDA2NWMyMzAzNGY3ZjdiMjYyOGE0MjY5MTIyYmQxNzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dApAQCAtMTY5Nyw2ICsxNjk3LDcgQEAgcGFnZS9GcmFtZVRyZWUuY3BwCiBw
YWdlL0ZyYW1lVmlldy5jcHAKIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKIHBhZ2Uv
SGlzdG9yeS5jcHAKK3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKIHBhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuY3BwCiBw
YWdlL0xvY2F0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGYzNjg1Zjk1NmI2ZWIwMjYxZjQ5ZDUyMjQ1MWJjZDY5ODg3
M2YwZDUuLmViYzNhZTk2MjllN2RjMTQ2MGI0NzgyOGM1YzFkMTFmMjFhNjMyNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUz
MDcsNiArNTMwNyw3IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0gKi87IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDgyNDM0QjI2MEMzMzA2MDAyMjQ5N0MgLyogSW1h
Z2VPdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ4MjQzNDgyNjBDMzJGMTAwMjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRy
b2xsZXIuaCAqLzsgfTsKIAkJRjQ4QjdENTMyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFj
dGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJlc3VsdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0OEQyQTZD
MjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNo
YWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBNzEyMTU2REMwQTAwQzY3
NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTE2NzI5LDYgKzE2NzMwLDggQEAKIAkJRjQ4MjIzMEUxRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyog
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQYXN0ZWJvYXJkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0ODI0MzQ4MjYwQzMyRjEwMDIyNDk3QyAvKiBJ
bWFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlT3ZlcmxheUNvbnRy
b2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4MjQzNEEyNjBDMzJGMTAw
MjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBEdW1wRWRpdGluZ0hpc3RvcnkuanM7
IHBhdGggPSBTY3JpcHRzL0R1bXBFZGl0aW5nSGlzdG9yeS5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRp
bC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IEVkaXRpbmdIaXN0
b3J5VXRpbC5qczsgcGF0aCA9IFNjcmlwdHMvRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDhCN0Q1MjI1QzM0MUU2MDA5RTc1REQgLyogSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRXh0cmFjdGlvblJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIyNTEsNiArMjIyNTQsOCBAQAogCQkJ
CUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1
MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIw
MDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKKwkJCQlGNDgyNDM0QTI2MEMzMkYxMDAyMjQ5N0Mg
LyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8sCisJCQkJRjQ4MjQzNDgyNjBDMzJGMTAw
MjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLywKIAkJCQkwRjQ3MTBENTFEQjZG
RTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwICovLAogCQkJCTBGNDcxMEQ2
MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlci5oICovLAogCQkJCTBGNDcx
MEQ3MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlci5pZGwgKi8sCkBAIC0z
Mjc2Nyw2ICszMjc3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdl
TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyog
SW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZF
RTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUY0ODI0MzRCMjYw
QzMzMDYwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUI1MUEyRjNGMTdEN0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxp
dHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUz
REUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGUxYzc5OWIyNGVhZTA5NjNiNTAxMGViNGFmOTllMGU5Njc0M2MwMGIuLjMx
NjhiMjFhMzNmYmVhZDU1YzQ2ZDQ1NmI5NDI1ZWVhZDlmN2Y1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMTE4LDYgKzExOCw3IEBACiAjaW5jbHVkZSAiSWRsZUNhbGxiYWNrQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkltYWdlTG9hZGVyLmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludGVyc2Vj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCkBA
IC0yNjEzLDEwICsyNjE0LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tRnJh
bWUoKQogICAgIGlmIChpczxQbHVnaW5Eb2N1bWVudD4oKnRoaXMpKQogICAgICAgICBkb3duY2Fz
dDxQbHVnaW5Eb2N1bWVudD4oKnRoaXMpLmRldGFjaEZyb21QbHVnaW5FbGVtZW50KCk7CiAKKyAg
ICBpZiAocGFnZSgpKSB7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICBpZiAocGFnZSgp
KQogICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLmRvY3VtZW50RGV0YWNo
ZWQoKnRoaXMpOwogI2VuZGlmCisgICAgICAgIHBhZ2UoKS0+aW1hZ2VPdmVybGF5Q29udHJvbGxl
cigpLmRvY3VtZW50RGV0YWNoZWQoKnRoaXMpOworICAgIH0KIAogICAgIGlmIChhdXRvKiBwYWdl
ID0gdGhpcy0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiB2YWxpZGF0aW9uTWVzc2FnZUNs
aWVudCA9IHBhZ2UtPnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NlbGVjdGlvblJlY3RHYXRoZXJlci5jcHAKaW5kZXggZjliNjRjNWM4Yzg5
NmJmMzIyNjMwODcwOWYyNmFhNjY3ZTFlZDk4MC4uMjkyMWQ2NTY0ZjM0ZTVmNTU1YTNiZTcxNjll
NGI5NmYzZWVjZjI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rp
b25SZWN0R2F0aGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9u
UmVjdEdhdGhlcmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgiCiAKQEAgLTcxLDggKzcyLDEyIEBAIFNl
bGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI6Ok5vdGlmaWVyKFNlbGVjdGlvblJlY3RHYXRo
ZXJlciYgZ2F0aGVyZXIpCiAKIFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI6On5Ob3Rp
ZmllcigpCiB7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2dhdGhlcmVyLm1fcmVuZGVyVmlldy52
aWV3KCkuZnJhbWUoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXIoKS5zZWxlY3Rpb25SZWN0c0RpZENoYW5nZShtX2dhdGhlcmVyLm1fcmVjdHMsIG1fZ2F0
aGVyZXIubV9nYXBSZWN0cywgbV9nYXRoZXJlci5pc1RleHRPbmx5KCkpOworICAgIGF1dG8gcGFn
ZSA9IG1fZ2F0aGVyZXIubV9yZW5kZXJWaWV3LnZpZXcoKS5mcmFtZSgpLnBhZ2UoKTsKKyAgICBp
ZiAoIXBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHBhZ2UtPnNlcnZpY2VzT3ZlcmxheUNv
bnRyb2xsZXIoKS5zZWxlY3Rpb25SZWN0c0RpZENoYW5nZShtX2dhdGhlcmVyLm1fcmVjdHMsIG1f
Z2F0aGVyZXIubV9nYXBSZWN0cywgbV9nYXRoZXJlci5pc1RleHRPbmx5KCkpOworICAgIHBhZ2Ut
PmltYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5zZWxlY3Rpb25SZWN0c0RpZENoYW5nZShtX2dhdGhl
cmVyLm1fcmVuZGVyVmlldy5mcmFtZSgpLCBtX2dhdGhlcmVyLm1fcmVjdHMpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcj4gU2VsZWN0aW9uUmVj
dEdhdGhlcmVyOjpjbGVhckFuZENyZWF0ZU5vdGlmaWVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGE5ZjE4MjE5MDA1ODMyYmMyNDg0MmQyNWU1ZTYwNzZiMjZmMGNkMWYuLjkx
OTgyMjllNGVkYTE0MjhlNDVjMGNiY2ZjOGVlNGVmNzZkOTMyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaApAQCAtNTYyLDYgKzU2Miw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU1B
R0VfRVhUUkFDVElPTikKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEltYWdlRXh0cmFjdGlvbihF
bGVtZW50JikgeyB9CiAjZW5kaWYKKyAgICB2aXJ0dWFsIGJvb2wgbmVlZHNJbWFnZU92ZXJsYXlD
b250cm9sbGVyRm9yU2VsZWN0aW9uUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRF
WFRNRU5VKQogICAgIHZpcnR1YWwgdm9pZCBzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEZs
b2F0UmVjdCYmLCBWZWN0b3I8TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoTWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbTo6aW52YWxpZElEKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9J
bWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VPdmVy
bGF5Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI5NmMwNjQyZThkZGI4YTgxODE4NzdjZTY0
ZTRkZTNhYzRkODE0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1h
Z2VPdmVybGF5Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIgor
CisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiR2FwUmVjdHMuaCIKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1
ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNpbXBsZVJhbmdl
LmgiCisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcihQYWdlJiBw
YWdlKQorICAgIDogbV9wYWdlKG1ha2VXZWFrUHRyKHBhZ2UpKQoreworfQorCitJbWFnZU92ZXJs
YXlDb250cm9sbGVyOjp+SW1hZ2VPdmVybGF5Q29udHJvbGxlcigpID0gZGVmYXVsdDsKKwordm9p
ZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCit7CisgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubmVlZHNJbWFnZU92ZXJsYXlDb250cm9s
bGVyRm9yU2VsZWN0aW9uUGFpbnRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZy
YW1lLmVkaXRvcigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBvdmVybGF5SG9zdFJlbmRlcmVyRm9yU2VsZWN0aW9uUGFpbnRpbmcgPSAoWyZd
ICgpIC0+IFJlbmRlckVsZW1lbnQqIHsKKyAgICAgICAgaWYgKHJlY3RzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8gc2VsZWN0ZWRSYW5nZSA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJhbmdlKCk7CisgICAgICAgIGlmICghc2Vs
ZWN0ZWRSYW5nZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICgh
SFRNTEVsZW1lbnQ6OmlzSW5zaWRlSW1hZ2VPdmVybGF5KCpzZWxlY3RlZFJhbmdlKSB8fCBzZWxl
Y3RlZFJhbmdlLT5jb2xsYXBzZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIGF1dG8gb3ZlcmxheUhvc3QgPSBtYWtlUmVmUHRyKHNlbGVjdGVkUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuc2hhZG93SG9zdCgpKTsKKyAgICAgICAgaWYgKCFvdmVybGF5SG9zdCkgewor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gb3ZlcmxheUhvc3RSZW5kZXJlciA9IG92
ZXJsYXlIb3N0LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIW92ZXJsYXlIb3N0UmVuZGVyZXIp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAob3ZlcmxheUhvc3RS
ZW5kZXJlci0+c3R5bGUoKS5vcGFjaXR5KCkgPiAwLjAxKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIG92ZXJsYXlIb3N0UmVuZGVyZXI7CisgICAgfSkoKTsK
KworICAgIGlmICghb3ZlcmxheUhvc3RSZW5kZXJlckZvclNlbGVjdGlvblBhaW50aW5nKSB7Cisg
ICAgICAgIHVuaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fb3ZlcmxheVNlbGVjdGlvblJlY3RzID0gcmVjdHM7CisgICAgbV9zZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IgPSBvdmVybGF5SG9zdFJlbmRlcmVyRm9yU2VsZWN0aW9uUGFp
bnRpbmctPnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpOworICAgIG1fY3VycmVudE92ZXJsYXlE
b2N1bWVudCA9IG1ha2VXZWFrUHRyKG92ZXJsYXlIb3N0UmVuZGVyZXJGb3JTZWxlY3Rpb25QYWlu
dGluZy0+ZG9jdW1lbnQoKSk7CisKKyAgICBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpLnNl
dE5lZWRzRGlzcGxheSgpOworfQorCit2b2lkIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRvY3Vt
ZW50RGV0YWNoZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmICgmZG9jdW1l
bnQgPT0gbV9jdXJyZW50T3ZlcmxheURvY3VtZW50KQorICAgICAgICB1bmluc3RhbGxQYWdlT3Zl
cmxheUlmTmVlZGVkKCk7Cit9CisKK1BhZ2VPdmVybGF5JiBJbWFnZU92ZXJsYXlDb250cm9sbGVy
OjppbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fb3ZlcmxheSkKKyAg
ICAgICAgcmV0dXJuICptX292ZXJsYXk7CisKKyAgICBtX292ZXJsYXkgPSBQYWdlT3ZlcmxheTo6
Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGU6OkRvY3VtZW50KTsKKyAgICBt
X3BhZ2UtPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3ZlcmxheSgqbV9vdmVy
bGF5LCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgcmV0dXJuICptX292
ZXJsYXk7Cit9CisKK3ZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6dW5pbnN0YWxsUGFnZU92
ZXJsYXlJZk5lZWRlZCgpCit7CisgICAgbV9vdmVybGF5U2VsZWN0aW9uUmVjdHMuY2xlYXIoKTsK
KyAgICBtX3NlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
OworICAgIG1fY3VycmVudE92ZXJsYXlEb2N1bWVudCA9IG51bGxwdHI7CisKKyAgICBhdXRvIG92
ZXJsYXlUb1VuaW5zdGFsbCA9IHN0ZDo6ZXhjaGFuZ2UobV9vdmVybGF5LCBudWxscHRyKTsKKyAg
ICBpZiAoIW1fcGFnZSB8fCAhb3ZlcmxheVRvVW5pbnN0YWxsKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3BhZ2UtPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBhZ2VPdmVybGF5
KCpvdmVybGF5VG9Vbmluc3RhbGwsIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsK
K30KKwordm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp3aWxsTW92ZVRvUGFnZShQYWdlT3Zl
cmxheSYsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICB1bmluc3RhbGxQ
YWdlT3ZlcmxheUlmTmVlZGVkKCk7Cit9CisKK3ZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3sKKyAgICBpZiAoJnBhZ2VPdmVybGF5ICE9
IG1fb3ZlcmxheSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKKyAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJlY3QpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKG1fc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKTsKKyAgICBmb3IgKGF1dG8m
IHJlY3QgOiBtX292ZXJsYXlTZWxlY3Rpb25SZWN0cykKKyAgICAgICAgY29udGV4dC5maWxsUmVj
dChyZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2I4MDM3ZDEzNGY2ODIy
YmVlMWZlMjNiNmU0Yzg1ZGVhNjNhYmI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJQYWdl
T3ZlcmxheS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRnJh
bWU7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTGF5b3V0
UmVjdDsKK2NsYXNzIFBhZ2U7CitzdHJ1Y3QgR2FwUmVjdHM7CisKK2NsYXNzIEltYWdlT3Zlcmxh
eUNvbnRyb2xsZXIgZmluYWwgOiBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGllbnQgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEltYWdlT3ZlcmxheUNvbnRyb2xs
ZXIoUGFnZSYpOworICAgIH5JbWFnZU92ZXJsYXlDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIHNl
bGVjdGlvblJlY3RzRGlkQ2hhbmdlKEZyYW1lJiwgY29uc3QgVmVjdG9yPExheW91dFJlY3Q+Jik7
CisgICAgdm9pZCBkb2N1bWVudERldGFjaGVkKGNvbnN0IERvY3VtZW50Jik7CisKK3ByaXZhdGU6
CisgICAgdm9pZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VP
dmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIFBhZ2VPdmVybGF5JiBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOworICAg
IHZvaWQgdW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpOworCisgICAgV2Vha1B0cjxQYWdl
PiBtX3BhZ2U7CisgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBtX292ZXJsYXk7CisgICAgV2Vha1B0
cjxEb2N1bWVudD4gbV9jdXJyZW50T3ZlcmxheURvY3VtZW50OworICAgIFZlY3RvcjxMYXlvdXRS
ZWN0PiBtX292ZXJsYXlTZWxlY3Rpb25SZWN0czsKKyAgICBDb2xvciBtX3NlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciB7IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwNDczYjUyZTBmNDVmOGQyMjAyZjky
MTdhNjU2ZjMzNTViN2NkZWEwLi5hZTZhMjJlZTk4ZGI4MDczZWNhYWZjZTM2OWVlYTUyM2IyNTAw
YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgpAQCAt
MjkwLDYgKzI5MSw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmln
dXJhdGlvbikKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykg
fHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKICAgICAsIG1fc2VydmljZXNP
dmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0
aGlzKSkKICNlbmRpZgorICAgICwgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8
SW1hZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50
RGVsdGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKICAgICAsIG1fcGFn
ZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhp
cykpCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmU4YWQ0YmMzOGYw
OWNlMTNlMWVmODQ4ZGFkZWU5NGQwNjNhNDM4OC4uMDJjZWYyZGFkNTEzNjE5ZDNkOWRlNTcyYjJi
ZTZkMmQwNDJkZDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBjbGFzcyBG
b2N1c0NvbnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBj
bGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7CiBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogY2xhc3MgTGliV2Vi
UlRDUHJvdmlkZXI7CkBAIC00OTYsNiArNDk3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1B
QykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJF
Ul9ERVRFQ1RJT04pKQogICAgIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXImIHNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOyB9
CiAjZW5kaWYKKyAgICBJbWFnZU92ZXJsYXlDb250cm9sbGVyJiBpbWFnZU92ZXJsYXlDb250cm9s
bGVyKCkgeyByZXR1cm4gKm1faW1hZ2VPdmVybGF5Q29udHJvbGxlcjsgfQogCiAjaWYgRU5BQkxF
KFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciYgc2Ny
b2xsTGF0Y2hpbmdDb250cm9sbGVyKCk7CkBAIC0xMTExLDYgKzExMTMsNyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUo
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyPiBtX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI7CiAjZW5kaWYK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VPdmVybGF5Q29udHJvbGxlcj4gbV9pbWFnZU92ZXJs
YXlDb250cm9sbGVyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRl
cj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2VPdmVybGF5Q29udHJvbGxlcj4gbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgKaW5kZXggN2Q2YTVmZDQ4NmJkODY5NTIxNmU5ZGIxZGY4ZGNmM2JjY2E5Mjc2YS4uN2Y2
YjM0MWI3NGYxNWFjYjhiMDEwODI1MTlkMmM1NjJkYmJjMDVmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aApAQCAtNDE4LDYgKzQxOCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdEltYWdlRXh0
cmFjdGlvbihXZWJDb3JlOjpFbGVtZW50JikgZmluYWw7CiAjZW5kaWYKIAorICAgIGJvb2wgbmVl
ZHNJbWFnZU92ZXJsYXlDb250cm9sbGVyRm9yU2VsZWN0aW9uUGFpbnRpbmcoKSBjb25zdCBmaW5h
bAorICAgIHsKKyNpZiBVU0UoVUlLSVRfRURJVElORykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2Vsc2UKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICB9CisKICNpZiBFTkFCTEUo
TUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiAgICAg
dm9pZCBzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KFdlYkNvcmU6OkZsb2F0UmVjdCYmLCBW
ZWN0b3I8V2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+
JiYpIGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVT
KSAmJiBVU0UoVUlDT05URVhUTUVOVSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YTQzM2JhMDdhYmNmMGU1NzgwZTZmYTEz
NjJkMGMyZDU5OGY3NGVkLi41NGQ3OTI4NWU4NDM1MjgyMDc3ZDFkYmFhNmI1ZDIyMjlmNjQ1NzNh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgc29tZSBpbWFnZSBvdmVybGF5IGNv
bnRlbnQgdG8gcmVuZGVyIGluIGZ1bGx5IHRyYW5zcGFyZW50IGltYWdlIGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3QgYW4gZXhp
c3RpbmcgbGF5b3V0IHRlc3Qgc28gdGhhdCBpdCBhY3R1YWxseSBjaGVja3Mgd2hhdCBpdCB3YXMg
aW50ZW5kZWQgdG8gY2hlY2s7IGFkZCBhIG5ldyBsYXlvdXQgdGVzdAorICAgICAgICB0byBjb3Zl
ciB0aGUgY2hhbmdlcyBpbiB0aGlzIGJ1Zy4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdl
LWV4dHJhY3Rpb24vbWFjL3NlbGVjdC13b3JkLWluLWRyYWdnYWJsZS1pbWFnZS1vdmVybGF5Lmh0
bWw6CisKKyAgICAgICAgRHJpdmUtYnkgZml4OiByZW1vdmUgc29tZSBleHRyYW5lb3VzIGltcG9y
dGVkIHNjcmlwdHMgZnJvbSB0aGlzIGxheW91dCB0ZXN0LCBhbmQgYWRkaXRpb25hbGx5IHNpbXBs
aWZ5IHRoZSB0ZXN0CisgICAgICAgIHNvIHRoYXQgaXQgZG9lc24ndCByZWx5IG9uIGV2ZW50IHNl
bmRlciB0byBzZWxlY3QgdGV4dC4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLWV4dHJh
Y3Rpb24vbWFjL3NlbGVjdC13b3JkLWluLXRyYW5zcGFyZW50LWltYWdlLW92ZXJsYXktZXhwZWN0
ZWQtbWlzbWF0Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2UtZXh0
cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNwYXJlbnQtaW1hZ2Utb3ZlcmxheS5odG1s
OiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgbGF5b3V0IHRlc3Qgd2l0aCBhIGZ1bGx5IHRy
YW5zcGFyZW50IGltYWdlIGVsZW1lbnQgdGhhdCBjb3ZlcnMgYSBkaXYgb2YgdGhlIHNhbWUgc2l6
ZSwgd2l0aCBhCisgICAgICAgIGJhY2tncm91bmQgaW1hZ2UgdGhhdCBpcyBpZGVudGljYWwgdG8g
dGhlIGltYWdlIGVsZW1lbnQncyBpbWFnZS4gVGhpcyBlbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2Yg
Y2VydGFpbiB3ZWJzaXRlcworICAgICAgICB0aGF0IHByb21wdGVkIHRoaXMgZmFsbGJhY2sgaW1h
Z2Ugb3ZlcmxheSByZW5kZXJpbmcgY29kZXBhdGggaW4gdGhlIGZpcnN0IHBsYWNlLgorCiAyMDIx
LTAzLTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IERvbid0IGFkZCBgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtgIG9uIGltYWdlIGVsZW1lbnRz
IHdpdGggYGRyYWdnYWJsZT10cnVlYApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tZHJhZ2dhYmxlLWltYWdlLW92
ZXJsYXkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLWV4dHJhY3Rpb24vbWFj
L3NlbGVjdC13b3JkLWluLWRyYWdnYWJsZS1pbWFnZS1vdmVybGF5Lmh0bWwKaW5kZXggZmJhZTNi
OTZhZTBiMTc2ODEyMzNiYTQyZDI4ZmRhZTViYWEyNGVkNi4uODMwMzIzODczZGU3MGY0NzJkZDU4
YzJmNTJhMjllY2E4NWMzYTFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
aW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tZHJhZ2dhYmxlLWltYWdlLW92ZXJs
YXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21h
Yy9zZWxlY3Qtd29yZC1pbi1kcmFnZ2FibGUtaW1hZ2Utb3ZlcmxheS5odG1sCkBAIC0xLDggKzEs
NiBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxzdHlsZT4KIGltZyB7
CiAgICAgcG9zaXRpb246IGFic29sdXRlOwpAQCAtMTUsNyArMTMsOCBAQCBpbWcgewogPGltZyBk
cmFnZ2FibGU9InRydWUiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIj48
L2ltZz4KIDxzY3JpcHQ+CiBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gewotICAgIGlu
dGVybmFscy5pbnN0YWxsSW1hZ2VPdmVybGF5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIp
LCBbCisgICAgY29uc3QgaW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKTsKKyAg
ICBpbnRlcm5hbHMuaW5zdGFsbEltYWdlT3ZlcmxheShpbWFnZSwgWwogICAgICAgICB7CiAgICAg
ICAgICAgICB0ZXh0IDogImhlbGxvIiwKICAgICAgICAgICAgIHRvcExlZnQgOiBuZXcgRE9NUG9p
bnRSZWFkT25seSgwLCAwKSwKQEAgLTI0LDEwICsyMyw4IEBAIGFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCAoKSA9PiB7CiAgICAgICAgICAgICBib3R0b21MZWZ0IDogbmV3IERPTVBvaW50UmVhZE9u
bHkoMCwgMC41KSwKICAgICAgICAgfQogICAgIF0pOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKDUwLCAzMDApOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwotICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKDM1MCwgMzAwKTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisK
KyAgICBnZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihpbnRlcm5hbHMuc2hhZG93Um9v
dChpbWFnZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92ZXJsYXktdGV4dCIpKTsKIH0pOwogPC9z
Y3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFn
ZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10cmFuc3BhcmVudC1pbWFnZS1vdmVybGF5
LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1l
eHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10cmFuc3BhcmVudC1pbWFnZS1vdmVybGF5LWV4
cGVjdGVkLW1pc21hdGNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJjZGFiOTBjZGEwNmNiNGI1YWEwNDQx
YmIyYjkzNDhjNjhmNDYwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2ltYWdlLWV4dHJhY3Rpb24vbWFjL3NlbGVjdC13b3JkLWluLXRyYW5zcGFyZW50LWltYWdl
LW92ZXJsYXktZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Citib2R5LCBodG1sIHsKKyAgICBtYXJn
aW46IDA7Cit9CisKK2RpdiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsK
KyAgICBsZWZ0OiAwOworICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWlnaHQ6IDQwMHB4OworICAg
IGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4v
Li4vcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nKTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFj
dGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNwYXJlbnQtaW1hZ2Utb3ZlcmxheS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQt
aW4tdHJhbnNwYXJlbnQtaW1hZ2Utb3ZlcmxheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmMmQ5MmYyMTFm
ZTkwNzhmODFhMTgzYTFiMDU3OGFlMTRkMjAyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10cmFu
c3BhcmVudC1pbWFnZS1vdmVybGF5Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmJhY2sgeworICAgIGJhY2tncm91bmQtc2l6
ZTogY29udGFpbjsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vcmVzb3VyY2VzL2dy
ZWVuLTQwMHg0MDAucG5nKTsKK30KKworLmZyb250IHsKKyAgICBvcGFjaXR5OiAwOworfQorCiti
b2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7Cit9CisKKy5mcm9udCwgLmJhY2sgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICB3aWR0aDog
NDAwcHg7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgY2xhc3M9ImJhY2siPjwvZGl2PgorPGltZyBjbGFzcz0iZnJvbnQiIHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIj48L2ltZz4KKzxzY3JpcHQ+CithZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgKCkgPT4geworICAgIGxldCBpbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoImltZyIpOworICAgIGludGVybmFscy5pbnN0YWxsSW1hZ2VPdmVybGF5KGltYWdlLCBb
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHQgOiAiaGVsbG8iLAorICAgICAgICAgICAgdG9w
TGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDApLAorICAgICAgICAgICAgdG9wUmlnaHQg
OiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAwKSwKKyAgICAgICAgICAgIGJvdHRvbVJpZ2h0IDog
bmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAgICAgICAgICAgIGJvdHRvbUxlZnQgOiBu
ZXcgRE9NUG9pbnRSZWFkT25seSgwLCAwLjUpLAorICAgICAgICB9CisgICAgXSk7CisKKyAgICBn
ZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFn
ZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92ZXJsYXktdGV4dCIpKTsKK30pOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="444013"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424393</attachid>
            <date>2021-03-26 12:53:03 -0700</date>
            <delta_ts>2021-03-26 14:23:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223781-20210326125302.patch</filename>
            <type>text/plain</type>
            <size>29312</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU0YTcyNjg5YWQxMjQ3
MDY3ZDE3NTc0YmI0NmE0ZWY5MDk2N2IwOS4uZTFhNDA4MGExN2JkYzM1MmU4MjkyNGQzY2QyMWIy
MzlhNmExMjA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIxLTAzLTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHNvbWUg
aW1hZ2Ugb3ZlcmxheSBjb250ZW50IHRvIHJlbmRlciBpbiBmdWxseSB0cmFuc3BhcmVudCBpbWFn
ZSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzNzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTg4NjM1MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEludHJvZHVjZSBgSW1hZ2VPdmVybGF5
Q29udHJvbGxlcmAsIGFuZCB1c2UgaXQgdG8gcmVuZGVyIHNlbGVjdGlvbnMgaW4gaW1hZ2Ugb3Zl
cmxheSBjb250ZW50IHdoZW4gdGhlIGltYWdlCisgICAgICAgIG92ZXJsYXkncyBob3N0IGVsZW1l
bnQgaXMgZnVsbHkgdHJhbnNwYXJlbnQuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvaW1h
Z2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNwYXJlbnQtaW1hZ2Utb3Zlcmxh
eS5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cgYEltYWdlT3ZlcmxheUNvbnRyb2xsZXJgIHRvIHVuaW5z
dGFsbCBpdHMgYFBhZ2VPdmVybGF5YCB3aGVuIHRoZSBkb2N1bWVudCBpcyBhYm91dCB0byBiZQor
ICAgICAgICBkZXRhY2hlZC4gU2VlIGBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpgIGJlbG93Lgor
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uUmVjdEdhdGhlcmVyOjpOb3RpZmllcjo6fk5vdGlmaWVyKToKKwor
ICAgICAgICBIYXZlIGBTZWxlY3Rpb25SZWN0R2F0aGVyZXJgIG5vdGlmeSB0aGUgaW1hZ2Ugb3Zl
cmxheSBjb250cm9sbGVyIGFzIHdlbGwsIHdoZW4gc2VsZWN0aW9uIHJlY3RzIGNoYW5nZS4KKwor
ICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6Om5lZWRzSW1hZ2VPdmVybGF5Q29udHJvbGxlckZvclNlbGVjdGlvblBhaW50aW5nIGNv
bnN0KToKKworICAgICAgICBBZGQgYSBuZXcgY2xpZW50IGhvb2sgdGhhdCByZXR1cm5zIHdoZXRo
ZXIgb3Igbm90IHdlIHNob3VsZCB1c2UgYEltYWdlT3ZlcmxheUNvbnRyb2xsZXJgIHRvIHBhaW50
IHNlbGVjdGlvbnMuCisgICAgICAgIElmIG5vdCAoaS5lLiB3ZSdyZSBvbiBpT1MsIHdoZXJlIHdl
IHVzZSBVSUtpdCB0byBkcmF3IHNlbGVjdGlvbnMgaW4gdGhlIFVJIHByb2Nlc3MpLCB0aGVuIHdl
J2xsIG5ldmVyIGluc3RhbGwKKyAgICAgICAgcGFnZSBvdmVybGF5cywgc2luY2UgYHNlbGVjdGlv
blJlY3RzRGlkQ2hhbmdlYCBpcyBlZmZlY3RpdmVseSBhIG5vLW9wLgorCisgICAgICAgICogcGFn
ZS9JbWFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZU92ZXJsYXlDb250cm9sbGVyOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdl
KToKKworICAgICAgICBXaGVuIHNlbGVjdGlvbiByZWN0cyBjaGFuZ2UsIGlmIHRoZSBzZWxlY3Rp
b24gaXMgaW5zaWRlIGFuIGltYWdlIG92ZXJsYXkgd2hvc2UgaG9zdCBpcyBjb21wbGV0ZWx5IHRy
YW5zcGFyZW50CisgICAgICAgIChvciB2ZXJ5IGNsb3NlIHRvIGJlaW5nIGNvbXBsZXRlbHkgdHJh
bnNwYXJlbnQpLCB0aGVuIHJlbWVtYmVyIHRoZSBzZWxlY3Rpb24gcmVjdHMgYWxvbmcgd2l0aCB0
aGUgcmVuZGVyZXIncworICAgICAgICBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgdXNlIHRoaXMgdG8g
cmVuZGVyIHNlbGVjdGlvbiBoaWdobGlnaHRzIHNlcGFyYXRlbHksIGluIGEgYFBhZ2VPdmVybGF5
YC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6ZG9jdW1lbnRE
ZXRhY2hlZCk6CisKKyAgICAgICAgSWYgdGhlIGBEb2N1bWVudGAgY29udGFpbmluZyB0aGUgY3Vy
cmVudCByZW5kZXJlZCBvdmVybGF5IHNlbGVjdGlvbiBpcyBkZXRhY2hlZCwgaW1tZWRpYXRlbHkg
dW5pbnN0YWxsIHRoZQorICAgICAgICBjdXJyZW50IGBQYWdlT3ZlcmxheWAuIFRoaXMgZW5zdXJl
cyB0aGF0IHRoZSBvdmVybGF5cyBkb24ndCBwZXJzaXN0IHRocm91Z2ggbmF2aWdhdGlvbi4KKwor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5zdGFsbFBhZ2VPdmVy
bGF5SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6
dW5pbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMg
dG8gYWRkIG9yIHJlbW92ZSB0aGUgYFBhZ2VPdmVybGF5YCBmcm9tIHRoZSBjdXJyZW50IGBQYWdl
YC4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6d2lsbE1vdmVU
b1BhZ2UpOgorCisgICAgICAgIFVuaW5zdGFsbCB0aGUgY3VycmVudCBwYWdlIG92ZXJsYXkgaWYg
bmVlZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpkcmF3
UmVjdCk6CisKKyAgICAgICAgVXNlIHRoZSBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gYEltYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OnNlbGVjdGlvblJlY3RzRGlkQ2hhbmdlYCB0byByZW5kZXIgY3VzdG9t
IHNlbGVjdGlvbgorICAgICAgICByZWN0cy4KKworICAgICAgICAqIHBhZ2UvSW1hZ2VPdmVybGF5
Q29udHJvbGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorCisgICAgICAgIEFkZCBhbiBgSW1hZ2VPdmVybGF5Q29udHJvbGxlcmAg
dG8gdGhlIGBQYWdlYC4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW1hZ2VPdmVybGF5Q29u
dHJvbGxlcik6CisKIDIwMjEtMDMtMjYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkb3B0IEFWS2l0IFNQSSBmb3IgaGlkaW5nIHRvdWNoIGJhciBzZWVraW5n
IGNvbnRyb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA4ZDFjYzFhMzI3ZjIxNzNiNjAwYzU4MTk1MGE4ZDg1ZTZk
MjkyMDguLmNkYmIxM2JiNjhiMzc4ZjZhY2RmNTY4M2RhOWVkZjJlZjhjYjM0YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDMtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgc29tZSBpbWFnZSBvdmVybGF5IGNvbnRlbnQg
dG8gcmVuZGVyIGluIGZ1bGx5IHRyYW5zcGFyZW50IGltYWdlIGVsZW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM3ODEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzc1ODg2MzUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24u
CisKKyAgICAgICAgSW1wbGVtZW50IGEgbmV3IGNocm9tZSBjbGllbnQgaG9vay4gU2VlIFdlYkNv
cmUgQ2hhbmdlTG9nIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwogMjAyMS0wMy0yNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHdlYnJ0YyBHUFUgUHJv
Y2VzcyBmZWF0dXJlIGZsYWcgZm9yIHZpZGVvIGNhcHR1cmUgb24gTWFjT1MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggYTc1YTJmMzM1ZGRhNTU3MzI4NDNkYWIwMGE2MzE4OTg0Yjg0NGE2Yy4uNGM4N2UwNzQw
NjVjMjMwMzRmN2Y3YjI2MjhhNDI2OTEyMmJkMTcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2OTcs
NiArMTY5Nyw3IEBAIHBhZ2UvRnJhbWVUcmVlLmNwcAogcGFnZS9GcmFtZVZpZXcuY3BwCiBwYWdl
L0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCiBwYWdlL0hpc3RvcnkuY3BwCitwYWdlL0ltYWdl
T3ZlcmxheUNvbnRyb2xsZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcAogcGFnZS9Mb2NhdGlvbi5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
MzY4NWY5NTZiNmViMDI2MWY0OWQ1MjI0NTFiY2Q2OTg4NzNmMGQ1Li5lYmMzYWU5NjI5ZTdkYzE0
NjBiNDc4MjhjNWMxZDExZjIxYTYzMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzA3LDYgKzUzMDcsNyBAQAogCQlGNDgy
MjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBFMUUzODY5
QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlGNDgy
MjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMEYxRTM4NjlC
ODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZD
NzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0
ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRjQ4MjQzNEIyNjBDMzMwNjAwMjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODI0MzQ4MjYw
QzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmggKi87IH07CiAJCUY0OEI3
RDUzMjVDMzQxRTYwMDlFNzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEI3RDUyMjVDMzQxRTYwMDlF
NzVERCAvKiBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkE2QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9u
dFNoYWRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDhEMkE3RTIxNTcxODI2MDBDNjc1
MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0OEQyQTcxMjE1NkRDMEEwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjcy
OSw2ICsxNjczMCw4IEBACiAJCUY0ODIyMzBFMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQ4MjIzMEYxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgyMjMxMjFFMzg2RTI0
MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0ODI0MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3
RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRp
dGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUx
RERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3Jp
cHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ4QjdENTIyNUMzNDFFNjAwOUU3NUREIC8qIEltYWdlRXh0cmFjdGlvblJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZUV4dHJhY3Rpb25SZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIyMjUxLDYgKzIyMjU0LDggQEAKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2
MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhp
c3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwg
Ki8sCisJCQkJRjQ4MjQzNEEyNjBDMzJGMTAwMjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuY3BwICovLAorCQkJCUY0ODI0MzQ4MjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlD
b250cm9sbGVyLmggKi8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQkwRjQ3MTBENjFEQjZGRTIyMDAyRENFQzMgLyogSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIuaCAqLywKIAkJCQkwRjQ3MTBENzFEQjZGRTIyMDAyRENFQzMgLyog
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsICovLApAQCAtMzI3NjcsNiArMzI3NzIsNyBAQAogCQkJ
CTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDgyNDM0QjI2MEMzMzA2MDAyMjQ5N0MgLyogSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzIyODNGMEUyMzBCMjY4QzAw
RjVEODI4IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTFB
MkYzRjE3RDdEM0FFMDA3MjUxN0EgLyogSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDkyOTFFNEIxMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlMWM3OTliMjRl
YWUwOTYzYjUwMTBlYjRhZjk5ZTBlOTY3NDNjMDBiLi4yMTgwMmQyZWY2MDRkN2IxZDA1NjUxZmQ2
YjAyNTZhNDk4MWMxZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExOCw2ICsxMTgs
NyBAQAogI2luY2x1ZGUgIklkbGVDYWxsYmFja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgorI2lu
Y2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRlcnNlY3Rpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgpAQCAtMjYxMywxMiArMjYxNCwxMSBAQCB2
b2lkIERvY3VtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKICAgICBpZiAoaXM8UGx1Z2lu
RG9jdW1lbnQ+KCp0aGlzKSkKICAgICAgICAgZG93bmNhc3Q8UGx1Z2luRG9jdW1lbnQ+KCp0aGlz
KS5kZXRhY2hGcm9tUGx1Z2luRWxlbWVudCgpOwogCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlz
LT5wYWdlKCkpIHsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIGlmIChwYWdlKCkpCi0g
ICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCkuZG9jdW1lbnREZXRhY2hlZCgq
dGhpcyk7CisgICAgICAgIHBhZ2UtPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLmRvY3VtZW50RGV0
YWNoZWQoKnRoaXMpOwogI2VuZGlmCi0KLSAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2Uo
KSkgeworICAgICAgICBwYWdlLT5pbWFnZU92ZXJsYXlDb250cm9sbGVyKCkuZG9jdW1lbnREZXRh
Y2hlZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdXRvKiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVudCA9
IHBhZ2UtPnZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KCkpCiAgICAgICAgICAgICB2YWxpZGF0aW9u
TWVzc2FnZUNsaWVudC0+ZG9jdW1lbnREZXRhY2hlZCgqdGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25SZWN0R2F0aGVyZXIuY3BwCmluZGV4IGY5YjY0
YzVjOGM4OTZiZjMyMjYzMDg3MDlmMjZhYTY2N2UxZWQ5ODAuLjI5MjFkNjU2NGYzNGU1ZjU1NWEz
YmU3MTY5ZTRiOTZmM2VlY2YyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uUmVjdEdhdGhlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nl
bGVjdGlvblJlY3RHYXRoZXJlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFZGl0
b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIgogCkBAIC03MSw4ICs3Miwx
MiBAQCBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVyOjpOb3RpZmllcihTZWxlY3Rpb25S
ZWN0R2F0aGVyZXImIGdhdGhlcmVyKQogCiBTZWxlY3Rpb25SZWN0R2F0aGVyZXI6Ok5vdGlmaWVy
Ojp+Tm90aWZpZXIoKQogewotICAgIGlmIChhdXRvKiBwYWdlID0gbV9nYXRoZXJlci5tX3JlbmRl
clZpZXcudmlldygpLmZyYW1lKCkucGFnZSgpKQotICAgICAgICBwYWdlLT5zZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyKCkuc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UobV9nYXRoZXJlci5tX3JlY3Rz
LCBtX2dhdGhlcmVyLm1fZ2FwUmVjdHMsIG1fZ2F0aGVyZXIuaXNUZXh0T25seSgpKTsKKyAgICBh
dXRvIHBhZ2UgPSBtX2dhdGhlcmVyLm1fcmVuZGVyVmlldy52aWV3KCkuZnJhbWUoKS5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdlLT5zZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyKCkuc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2UobV9nYXRoZXJlci5tX3Jl
Y3RzLCBtX2dhdGhlcmVyLm1fZ2FwUmVjdHMsIG1fZ2F0aGVyZXIuaXNUZXh0T25seSgpKTsKKyAg
ICBwYWdlLT5pbWFnZU92ZXJsYXlDb250cm9sbGVyKCkuc2VsZWN0aW9uUmVjdHNEaWRDaGFuZ2Uo
bV9nYXRoZXJlci5tX3JlbmRlclZpZXcuZnJhbWUoKSwgbV9nYXRoZXJlci5tX3JlY3RzKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFNlbGVjdGlvblJlY3RHYXRoZXJlcjo6Tm90aWZpZXI+IFNlbGVj
dGlvblJlY3RHYXRoZXJlcjo6Y2xlYXJBbmRDcmVhdGVOb3RpZmllcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAppbmRleCBhOWYxODIxOTAwNTgzMmJjMjQ4NDJkMjVlNWU2MDc2YjI2ZjBj
ZDFmLi45MTk4MjI5ZTRlZGExNDI4ZTQ1YzBjYmNmYzhlZTRlZjc2ZDkzMjFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTU2Miw2ICs1NjIsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKElNQUdFX0VYVFJBQ1RJT04pCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJbWFnZUV4dHJh
Y3Rpb24oRWxlbWVudCYpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCBib29sIG5lZWRzSW1hZ2VP
dmVybGF5Q29udHJvbGxlckZvclNlbGVjdGlvblBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0Uo
VUlDT05URVhUTUVOVSkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhQ29udHJvbHNDb250ZXh0
TWVudShGbG9hdFJlY3QmJiwgVmVjdG9yPE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbTo6SUQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKE1lZGlhQ29udHJvbHND
b250ZXh0TWVudUl0ZW06OmludmFsaWRJRCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNDM2OTk1ZjJkMzE0NTc2Mzg1
YTFiOWE2M2RlODFlZTUwN2M4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkdhcFJlY3RzLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUg
IlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJS
ZW5kZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTaW1w
bGVSYW5nZS5oIgorI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0ltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OkltYWdlT3ZlcmxheUNvbnRyb2xsZXIo
UGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShtYWtlV2Vha1B0cihwYWdlKSkKK3sKK30KKwordm9p
ZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpzZWxlY3Rpb25SZWN0c0RpZENoYW5nZShGcmFtZSYg
ZnJhbWUsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpCit7CisgICAgaWYgKCFtX3Bh
Z2UgfHwgIW1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubmVlZHNJbWFnZU92ZXJsYXlDb250cm9s
bGVyRm9yU2VsZWN0aW9uUGFpbnRpbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGZy
YW1lLmVkaXRvcigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBvdmVybGF5SG9zdFJlbmRlcmVyID0gKFsmXSAoKSAtPiBSZW5kZXJFbGVtZW50
KiB7CisgICAgICAgIGlmIChyZWN0cy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5yYW5nZSgpOworICAgICAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBpZiAoIUhUTUxFbGVtZW50Ojppc0luc2lk
ZUltYWdlT3ZlcmxheSgqc2VsZWN0ZWRSYW5nZSkgfHwgc2VsZWN0ZWRSYW5nZS0+Y29sbGFwc2Vk
KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvIG92ZXJsYXlI
b3N0ID0gbWFrZVJlZlB0cihzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLnNoYWRvd0hv
c3QoKSk7CisgICAgICAgIGlmICghb3ZlcmxheUhvc3QpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gb3ZlcmxheUhvc3QtPnJlbmRlcmVyKCk7CisgICAgfSkoKTsKKworICAg
IGlmICghb3ZlcmxheUhvc3RSZW5kZXJlciB8fCAhc2hvdWxkVXNlUGFnZU92ZXJsYXlUb1BhaW50
U2VsZWN0aW9uKCpvdmVybGF5SG9zdFJlbmRlcmVyKSkgeworICAgICAgICB1bmluc3RhbGxQYWdl
T3ZlcmxheUlmTmVlZGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX292ZXJs
YXlTZWxlY3Rpb25SZWN0cyA9IHJlY3RzOworICAgIG1fc2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
ID0gb3ZlcmxheUhvc3RSZW5kZXJlci0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CisgICAg
bV9jdXJyZW50T3ZlcmxheURvY3VtZW50ID0gbWFrZVdlYWtQdHIob3ZlcmxheUhvc3RSZW5kZXJl
ci0+ZG9jdW1lbnQoKSk7CisKKyAgICBpbnN0YWxsUGFnZU92ZXJsYXlJZk5lZWRlZCgpLnNldE5l
ZWRzRGlzcGxheSgpOworfQorCitib29sIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnNob3VsZFVz
ZVBhZ2VPdmVybGF5VG9QYWludFNlbGVjdGlvbihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
cikKK3sKKyAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIGFscmVhZHkgcGFpbnRlZCAod2l0aCBu
b256ZXJvIG9wYWNpdHkpIGluIHRoZSBvdmVybGF5IGhvc3QncyByZW5kZXJlciwKKyAgICAvLyB0
aGVuIHdlIGRvbid0IG5lZWQgdG8gZmFsbCBiYWNrIHRvIGEgcGFnZSBvdmVybGF5IHRvIHBhaW50
IHRoZSBzZWxlY3Rpb24uCisgICAgcmV0dXJuIHJlbmRlcmVyLnN0eWxlKCkub3BhY2l0eSgpIDw9
IDAuMDE7Cit9CisKK3ZvaWQgSW1hZ2VPdmVybGF5Q29udHJvbGxlcjo6ZG9jdW1lbnREZXRhY2hl
ZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKCZkb2N1bWVudCA9PSBtX2N1
cnJlbnRPdmVybGF5RG9jdW1lbnQpCisgICAgICAgIHVuaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVk
ZWQoKTsKK30KKworUGFnZU92ZXJsYXkmIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6Omluc3RhbGxQ
YWdlT3ZlcmxheUlmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9vdmVybGF5KQorICAgICAgICByZXR1
cm4gKm1fb3ZlcmxheTsKKworICAgIG1fb3ZlcmxheSA9IFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRo
aXMsIFBhZ2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpOworICAgIG1fcGFnZS0+cGFn
ZU92ZXJsYXlDb250cm9sbGVyKCkuaW5zdGFsbFBhZ2VPdmVybGF5KCptX292ZXJsYXksIFBhZ2VP
dmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKKyAgICByZXR1cm4gKm1fb3ZlcmxheTsKK30K
Kwordm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjp1bmluc3RhbGxQYWdlT3ZlcmxheUlmTmVl
ZGVkKCkKK3sKKyAgICBtX292ZXJsYXlTZWxlY3Rpb25SZWN0cy5jbGVhcigpOworICAgIG1fc2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50QmxhY2s7CisgICAgbV9j
dXJyZW50T3ZlcmxheURvY3VtZW50ID0gbnVsbHB0cjsKKworICAgIGF1dG8gb3ZlcmxheVRvVW5p
bnN0YWxsID0gc3RkOjpleGNoYW5nZShtX292ZXJsYXksIG51bGxwdHIpOworICAgIGlmICghbV9w
YWdlIHx8ICFvdmVybGF5VG9Vbmluc3RhbGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFn
ZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkudW5pbnN0YWxsUGFnZU92ZXJsYXkoKm92ZXJsYXlU
b1VuaW5zdGFsbCwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOworfQorCit2b2lk
IEltYWdlT3ZlcmxheUNvbnRyb2xsZXI6OndpbGxNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFn
ZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHVuaW5zdGFsbFBhZ2VPdmVybGF5
SWZOZWVkZWQoKTsKK30KKwordm9pZCBJbWFnZU92ZXJsYXlDb250cm9sbGVyOjpkcmF3UmVjdChQ
YWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIGlmICgmcGFnZU92ZXJsYXkgIT0gbV9vdmVybGF5
KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwor
ICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IobV9zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IpOworICAgIGZvciAoYXV0byYgcmVjdCA6IG1f
b3ZlcmxheVNlbGVjdGlvblJlY3RzKQorICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHJlY3QpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NzY0OGJmNjEwYzY0MWRkZjJkODBiNWZi
N2U4OGE2YzhmNGRmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5Lmgi
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNz
IEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBMYXlvdXRSZWN0OworY2xh
c3MgUGFnZTsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CitzdHJ1Y3QgR2FwUmVjdHM7CisKK2NsYXNz
IEltYWdlT3ZlcmxheUNvbnRyb2xsZXIgZmluYWwgOiBwcml2YXRlIFBhZ2VPdmVybGF5OjpDbGll
bnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IEltYWdlT3ZlcmxheUNvbnRyb2xsZXIoUGFnZSYpOworCisgICAgdm9pZCBzZWxlY3Rpb25SZWN0
c0RpZENoYW5nZShGcmFtZSYsIGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYpOworICAgIHZvaWQg
ZG9jdW1lbnREZXRhY2hlZChjb25zdCBEb2N1bWVudCYpOworCitwcml2YXRlOgorICAgIHZvaWQg
d2lsbE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgZmluYWw7CisgICAgdm9pZCBkaWRN
b3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIGZpbmFsIHsgfQorICAgIHZvaWQgZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpIGZpbmFsOworICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIHNob3Vs
ZFVzZVBhZ2VPdmVybGF5VG9QYWludFNlbGVjdGlvbihjb25zdCBSZW5kZXJFbGVtZW50Jik7CisK
KyAgICBQYWdlT3ZlcmxheSYgaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVkZWQoKTsKKyAgICB2b2lk
IHVuaW5zdGFsbFBhZ2VPdmVybGF5SWZOZWVkZWQoKTsKKworICAgIFdlYWtQdHI8UGFnZT4gbV9w
YWdlOworICAgIFJlZlB0cjxQYWdlT3ZlcmxheT4gbV9vdmVybGF5OworICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IG1fY3VycmVudE92ZXJsYXlEb2N1bWVudDsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4g
bV9vdmVybGF5U2VsZWN0aW9uUmVjdHM7CisgICAgQ29sb3IgbV9zZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IgeyBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMDQ3M2I1MmUwZjQ1ZjhkMjIwMmY5MjE3YTY1
NmYzMzU1YjdjZGVhMC4uYWU2YTIyZWU5OGRiODA3M2VjYWFmY2UzNjllZWE1MjNiMjUwMGJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKQEAgLTI5MCw2
ICsyOTEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVO
QUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCiAgICAgLCBtX3NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyPigqdGhpcykp
CiAjZW5kaWYKKyAgICAsIG1faW1hZ2VPdmVybGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPEltYWdl
T3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICAgICAsIG1fcmVjZW50V2hlZWxFdmVudERlbHRh
RmlsdGVyKFdoZWVsRXZlbnREZWx0YUZpbHRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3BhZ2VPdmVy
bGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDZlOGFkNGJjMzhmMDljZTEz
ZTFlZjg0OGRhZGVlOTRkMDYzYTQzODguLjAyY2VmMmRhZDUxMzYxOWQzZDlkZTU3MmIyYmU2ZDJk
MDQyZGQ2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xhc3MgRm9jdXND
b250cm9sbGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3Mg
SGlzdG9yeUl0ZW07CitjbGFzcyBJbWFnZU92ZXJsYXlDb250cm9sbGVyOwogY2xhc3MgSW5zcGVj
dG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIExpYldlYlJUQ1By
b3ZpZGVyOwpAQCAtNDk2LDYgKzQ5Nyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpICYm
IChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVU
RUNUSU9OKSkKICAgICBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyJiBzZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyKCkgeyByZXR1cm4gKm1fc2VydmljZXNPdmVybGF5Q29udHJvbGxlcjsgfQogI2Vu
ZGlmCisgICAgSW1hZ2VPdmVybGF5Q29udHJvbGxlciYgaW1hZ2VPdmVybGF5Q29udHJvbGxlcigp
IHsgcmV0dXJuICptX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXI7IH0KIAogI2lmIEVOQUJMRShXSEVF
TF9FVkVOVF9MQVRDSElORykKICAgICBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXImIHNjcm9sbExh
dGNoaW5nQ29udHJvbGxlcigpOwpAQCAtMTExMSw2ICsxMTEzLDcgQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwgRU5BQkxFKFRFTEVQ
SE9ORV9OVU1CRVJfREVURUNUSU9OKSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcj4gbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOwogI2VuZGlmCisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlT3ZlcmxheUNvbnRyb2xsZXI+IG1faW1hZ2VPdmVybGF5Q29u
dHJvbGxlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IG1f
cmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlT3Zl
cmxheUNvbnRyb2xsZXI+IG1fcGFnZU92ZXJsYXlDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CmluZGV4IDdkNmE1ZmQ0ODZiZDg2OTUyMTZlOWRiMWRmOGRjZjNiY2NhOTI3NmEuLjdmNmIzNDFi
NzRmMTVhY2I4YjAxMDgyNTE5ZDJjNTYyZGJiYzA1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAg
LTQxOCw2ICs0MTgsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlcXVlc3RJbWFnZUV4dHJhY3Rp
b24oV2ViQ29yZTo6RWxlbWVudCYpIGZpbmFsOwogI2VuZGlmCiAKKyAgICBib29sIG5lZWRzSW1h
Z2VPdmVybGF5Q29udHJvbGxlckZvclNlbGVjdGlvblBhaW50aW5nKCkgY29uc3QgZmluYWwKKyAg
ICB7CisjaWYgVVNFKFVJS0lUX0VESVRJTkcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbHNl
CisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgfQorCiAjaWYgRU5BQkxFKE1FRElB
X0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogICAgIHZvaWQg
c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShXZWJDb3JlOjpGbG9hdFJlY3QmJiwgVmVjdG9y
PFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbTo6SUQpPiYmKSBm
aW5hbDsKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYg
VVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWM0NjY1Y2Q3ZWUzOTVkMjg2OWY3NDM3ZTI0NDcy
MzUyOGJmZjgyZS4uNDlkMzkzMzI4MGU2MzMwMzVjYjkyNmFlOGRjNjVhZTg2Y2IzMzE3NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTAzLTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHNvbWUgaW1hZ2Ugb3ZlcmxheSBjb250ZW50
IHRvIHJlbmRlciBpbiBmdWxseSB0cmFuc3BhcmVudCBpbWFnZSBlbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNzgxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83NTg4NjM1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9u
LgorCisgICAgICAgIEFkanVzdCBhbiBleGlzdGluZyBsYXlvdXQgdGVzdCBzbyB0aGF0IGl0IGFj
dHVhbGx5IGNoZWNrcyB3aGF0IGl0IHdhcyBpbnRlbmRlZCB0byBjaGVjazsgYWRkIGEgbmV3IGxh
eW91dCB0ZXN0CisgICAgICAgIHRvIGNvdmVyIHRoZSBjaGFuZ2VzIGluIHRoaXMgYnVnLgorCisg
ICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4t
ZHJhZ2dhYmxlLWltYWdlLW92ZXJsYXkuaHRtbDoKKworICAgICAgICBEcml2ZS1ieSBmaXg6IHJl
bW92ZSBzb21lIGV4dHJhbmVvdXMgaW1wb3J0ZWQgc2NyaXB0cyBmcm9tIHRoaXMgbGF5b3V0IHRl
c3QsIGFuZCBhZGRpdGlvbmFsbHkgc2ltcGxpZnkgdGhlIHRlc3QKKyAgICAgICAgc28gdGhhdCBp
dCBkb2Vzbid0IHJlbHkgb24gZXZlbnQgc2VuZGVyIHRvIHNlbGVjdCB0ZXh0LgorCisgICAgICAg
ICogZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNw
YXJlbnQtaW1hZ2Utb3ZlcmxheS1leHBlY3RlZC1taXNtYXRjaC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10cmFu
c3BhcmVudC1pbWFnZS1vdmVybGF5Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyBs
YXlvdXQgdGVzdCB3aXRoIGEgZnVsbHkgdHJhbnNwYXJlbnQgaW1hZ2UgZWxlbWVudCB0aGF0IGNv
dmVycyBhIGRpdiBvZiB0aGUgc2FtZSBzaXplLCB3aXRoIGEKKyAgICAgICAgYmFja2dyb3VuZCBp
bWFnZSB0aGF0IGlzIGlkZW50aWNhbCB0byB0aGUgaW1hZ2UgZWxlbWVudCdzIGltYWdlLiBUaGlz
IGVtdWxhdGVzIHRoZSBiZWhhdmlvciBvZiBjZXJ0YWluIHdlYnNpdGVzCisgICAgICAgIHRoYXQg
cHJvbXB0ZWQgdGhpcyBmYWxsYmFjayBpbWFnZSBvdmVybGF5IHJlbmRlcmluZyBjb2RlcGF0aCBp
biB0aGUgZmlyc3QgcGxhY2UuCisKIDIwMjEtMDMtMjYgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFy
ICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdv
cmQtaW4tZHJhZ2dhYmxlLWltYWdlLW92ZXJsYXkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1h
Z2VzL2ltYWdlLWV4dHJhY3Rpb24vbWFjL3NlbGVjdC13b3JkLWluLWRyYWdnYWJsZS1pbWFnZS1v
dmVybGF5Lmh0bWwKaW5kZXggZmJhZTNiOTZhZTBiMTc2ODEyMzNiYTQyZDI4ZmRhZTViYWEyNGVk
Ni4uODMwMzIzODczZGU3MGY0NzJkZDU4YzJmNTJhMjllY2E4NWMzYTFjMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQt
aW4tZHJhZ2dhYmxlLWltYWdlLW92ZXJsYXkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi1kcmFnZ2FibGUtaW1hZ2Ut
b3ZlcmxheS5odG1sCkBAIC0xLDggKzEsNiBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KIDxzdHlsZT4KIGltZyB7CiAgICAgcG9zaXRpb246IGFic29sdXRlOwpAQCAtMTUs
NyArMTMsOCBAQCBpbWcgewogPGltZyBkcmFnZ2FibGU9InRydWUiIHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2dyZWVuLTQwMHg0MDAucG5nIj48L2ltZz4KIDxzY3JpcHQ+CiBhZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgKCkgPT4gewotICAgIGludGVybmFscy5pbnN0YWxsSW1hZ2VPdmVybGF5KGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpLCBbCisgICAgY29uc3QgaW1hZ2UgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJpbWciKTsKKyAgICBpbnRlcm5hbHMuaW5zdGFsbEltYWdlT3ZlcmxheShp
bWFnZSwgWwogICAgICAgICB7CiAgICAgICAgICAgICB0ZXh0IDogImhlbGxvIiwKICAgICAgICAg
ICAgIHRvcExlZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLCAwKSwKQEAgLTI0LDEwICsyMyw4
IEBAIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7CiAgICAgICAgICAgICBib3R0b21M
ZWZ0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMCwgMC41KSwKICAgICAgICAgfQogICAgIF0pOwot
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCAzMDApOwotICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDM1MCwgMzAwKTsKLSAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGls
ZHJlbihpbnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92
ZXJsYXktdGV4dCIpKTsKIH0pOwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10
cmFuc3BhcmVudC1pbWFnZS1vdmVybGF5LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9uL21hYy9zZWxlY3Qtd29yZC1pbi10cmFu
c3BhcmVudC1pbWFnZS1vdmVybGF5LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmJjZGFiOTBjZGEwNmNiNGI1YWEwNDQxYmIyYjkzNDhjNjhmNDYwNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLWV4dHJhY3Rpb24vbWFjL3NlbGVjdC13
b3JkLWluLXRyYW5zcGFyZW50LWltYWdlLW92ZXJsYXktZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbApA
QCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
Citib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7Cit9CisKK2RpdiB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIHdpZHRoOiA0MDBweDsK
KyAgICBoZWlnaHQ6IDQwMHB4OworICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKKyAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nKTsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvaW1hZ2UtZXh0cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNwYXJl
bnQtaW1hZ2Utb3ZlcmxheS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZXh0
cmFjdGlvbi9tYWMvc2VsZWN0LXdvcmQtaW4tdHJhbnNwYXJlbnQtaW1hZ2Utb3ZlcmxheS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhmMmQ5MmYyMTFmZTkwNzhmODFhMTgzYTFiMDU3OGFlMTRkMjAyOTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1leHRyYWN0aW9u
L21hYy9zZWxlY3Qtd29yZC1pbi10cmFuc3BhcmVudC1pbWFnZS1vdmVybGF5Lmh0bWwKQEAgLTAs
MCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmJh
Y2sgeworICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsKKyAgICBiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nKTsKK30KKworLmZyb250IHsK
KyAgICBvcGFjaXR5OiAwOworfQorCitib2R5LCBodG1sIHsKKyAgICBtYXJnaW46IDA7Cit9CisK
Ky5mcm9udCwgLmJhY2sgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7Cisg
ICAgbGVmdDogMDsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImJhY2siPjwvZGl2PgorPGltZyBj
bGFzcz0iZnJvbnQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL2dyZWVuLTQwMHg0MDAucG5nIj48L2lt
Zz4KKzxzY3JpcHQ+CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4geworICAgIGxldCBp
bWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworICAgIGludGVybmFscy5pbnN0
YWxsSW1hZ2VPdmVybGF5KGltYWdlLCBbCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHQgOiAi
aGVsbG8iLAorICAgICAgICAgICAgdG9wTGVmdCA6IG5ldyBET01Qb2ludFJlYWRPbmx5KDAsIDAp
LAorICAgICAgICAgICAgdG9wUmlnaHQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgxLCAwKSwKKyAg
ICAgICAgICAgIGJvdHRvbVJpZ2h0IDogbmV3IERPTVBvaW50UmVhZE9ubHkoMSwgMC41KSwKKyAg
ICAgICAgICAgIGJvdHRvbUxlZnQgOiBuZXcgRE9NUG9pbnRSZWFkT25seSgwLCAwLjUpLAorICAg
ICAgICB9CisgICAgXSk7CisKKyAgICBnZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbihp
bnRlcm5hbHMuc2hhZG93Um9vdChpbWFnZSkucXVlcnlTZWxlY3RvcigiLmltYWdlLW92ZXJsYXkt
dGV4dCIpKTsKK30pOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>