<?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>211660</bug_id>
          
          <creation_ts>2020-05-08 21:09:35 -0700</creation_ts>
          <short_desc>Adapt LocalCurrentGraphicsContext for iOS</short_desc>
          <delta_ts>2020-05-09 16:11:17 -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>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211160</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>208891</dependson>
    
    <dependson>210814</dependson>
    
    <dependson>211274</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650874</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-08 21:09:35 -0700</bug_when>
    <thetext>Adapt LocalCurrentGraphicsContext for iOS.

The original motivation was a small clean up in UIProcess/Cocoa/WebPageProxyCocoa.mm, but this resulted in a really nice cleanup in WebProcess/WebCoreSupport/mac/WebDragClientMac.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650875</commentid>
    <comment_count>1</comment_count>
      <attachid>398915</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-08 21:14:38 -0700</bug_when>
    <thetext>Created attachment 398915
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650876</commentid>
    <comment_count>2</comment_count>
      <attachid>398916</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-08 21:16:54 -0700</bug_when>
    <thetext>Created attachment 398916
Interesting changes to WebCore/platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650915</commentid>
    <comment_count>3</comment_count>
      <attachid>398915</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-09 07:28:59 -0700</bug_when>
    <thetext>Comment on attachment 398915
Patch v1

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

&gt; Source/WebCore/platform/cocoa/LocalCurrentGraphicsContext.h:60
&gt; +class ContextContainer {
&gt; +    WTF_MAKE_NONCOPYABLE(ContextContainer);
&gt; +public:
&gt; +    ContextContainer(GraphicsContext&amp; graphicsContext)
&gt; +        : m_graphicsContext(graphicsContext.platformContext())
&gt; +    {
&gt; +    }
&gt; +
&gt; +    CGContextRef context() { return m_graphicsContext; }
&gt; +private:
&gt; +    PlatformGraphicsContext* m_graphicsContext;
&gt; +};

This class is not new, but it seems pointless. Should be removed. The two places that use it should just be calling the platformContext function. Also, the use of both CGContextRef and PlatformGraphicsContext* in the implementation of the class is puzzling.

&gt; Source/WebCore/platform/ios/LocalCurrentGraphicsContextIOS.mm:58
&gt; +CGContextRef LocalCurrentGraphicsContext::cgContext()
&gt; +{
&gt; +    return m_savedGraphicsContext.platformContext();
&gt; +}

Should be inlined in the header. And not have separate versions for macOS and iOS.

&gt; Source/WebCore/platform/mac/LocalCurrentGraphicsContextMac.mm:60
&gt; +CGContextRef LocalCurrentGraphicsContext::cgContext()
&gt; +{
&gt; +    return m_savedGraphicsContext.platformContext();
&gt; +}

Should be inlined in the header. And not have separate versions for macOS and iOS.

&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:56
&gt; +using PlatformDragImage = NSImage *;

Not a big fan of the word &quot;Platform&quot; in the class name here, but I don’t have a better idea.

&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:60
&gt;  #import &quot;UIKitSPI.h&quot;
&gt; +
&gt; +using PlatformDragImage = CGImageRef;

Not a big fan of combining the &quot;using&quot; and the include like this. I would do the include in a separate paragraph above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650958</commentid>
    <comment_count>4</comment_count>
      <attachid>398915</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-09 13:31:11 -0700</bug_when>
    <thetext>Comment on attachment 398915
Patch v1

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

&gt;&gt; Source/WebCore/platform/cocoa/LocalCurrentGraphicsContext.h:60
&gt;&gt; +};
&gt; 
&gt; This class is not new, but it seems pointless. Should be removed. The two places that use it should just be calling the platformContext function. Also, the use of both CGContextRef and PlatformGraphicsContext* in the implementation of the class is puzzling.

Will do in a separate patch.

&gt;&gt; Source/WebCore/platform/ios/LocalCurrentGraphicsContextIOS.mm:58
&gt;&gt; +}
&gt; 
&gt; Should be inlined in the header. And not have separate versions for macOS and iOS.

Will fix.

&gt;&gt; Source/WebCore/platform/mac/LocalCurrentGraphicsContextMac.mm:60
&gt;&gt; +}
&gt; 
&gt; Should be inlined in the header. And not have separate versions for macOS and iOS.

Will fix.

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:56
&gt;&gt; +using PlatformDragImage = NSImage *;
&gt; 
&gt; Not a big fan of the word &quot;Platform&quot; in the class name here, but I don’t have a better idea.

How about just &quot;DragImage&quot;?  I guess we need to be careful about defining this in unified sources, but it&apos;s probably fine for now.

We could have reused CocoaImage if the iOS code has used UIImage instead of CGImageRef.  Not sure it&apos;s worth a FIXME, though.

&gt;&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:60
&gt;&gt; +using PlatformDragImage = CGImageRef;
&gt; 
&gt; Not a big fan of combining the &quot;using&quot; and the include like this. I would do the include in a separate paragraph above.

Will separate before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650962</commentid>
    <comment_count>5</comment_count>
      <attachid>398915</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-09 14:01:34 -0700</bug_when>
    <thetext>Comment on attachment 398915
Patch v1

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

&gt;&gt;&gt; Source/WebCore/platform/cocoa/LocalCurrentGraphicsContext.h:60
&gt;&gt;&gt; +};
&gt;&gt; 
&gt;&gt; This class is not new, but it seems pointless. Should be removed. The two places that use it should just be calling the platformContext function. Also, the use of both CGContextRef and PlatformGraphicsContext* in the implementation of the class is puzzling.
&gt; 
&gt; Will do in a separate patch.

(Will change PlatformGraphicsContext* to CGContextRef in this patch, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650963</commentid>
    <comment_count>6</comment_count>
      <attachid>398940</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-09 14:02:58 -0700</bug_when>
    <thetext>Created attachment 398940
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650965</commentid>
    <comment_count>7</comment_count>
      <attachid>398941</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-09 14:33:04 -0700</bug_when>
    <thetext>Created attachment 398941
Patch for landing v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650966</commentid>
    <comment_count>8</comment_count>
      <attachid>398940</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-09 14:33:32 -0700</bug_when>
    <thetext>Comment on attachment 398940
Patch for landing

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

&gt; Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:57
&gt; -#if PLATFORM(IOS_FAMILY)
&gt; +#if USE(APPKIT)
&gt;  #import &quot;UIKitSPI.h&quot;
&gt;  #endif

That&apos;s...not correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650977</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-09 16:10:45 -0700</bug_when>
    <thetext>Committed r261442: &lt;https://trac.webkit.org/changeset/261442&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398941.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650978</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-09 16:11:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63057667&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398915</attachid>
            <date>2020-05-08 21:14:38 -0700</date>
            <delta_ts>2020-05-09 14:02:54 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-211660-20200508211814.patch</filename>
            <type>text/plain</type>
            <size>33150</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIzNThkZjVhMmRmZWY3
NjliMzI2MmJhYWQ3NmFjMjg0YmY2NjE5Zi4uOWY4ZDA2NzcyMWNhYTA0MGYzNDcxMDE4OGQ3Njk4
MjFjYjU1NGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA1LTA0ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIFVwZGF0
ZSBidWlsZCBmaWxlcyBmb3I6CisgICAgICAgICAgLSBSZW5hbWUgb2YgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tIHRvCisgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHRNYWMubW0uCisgICAgICAgICAgLSBNb3ZlIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dC5oIGZyb20gcGxhdGZvcm0vbWFjIHRvCisgICAgICAgICAgICBwbGF0Zm9ybS9jb2NvYS4KKyAg
ICAgICAgICAtIEFkZGl0aW9uIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbS4K
KworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5oLgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6Q29u
dGV4dENvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0Q29udGFpbmVyOjpjb250
ZXh0KToKKyAgICAgICAgLSBNYWtlIHRoaXMgd29yayBmb3IgaU9TIGJ5IHVzaW5nIFBMQVRGT1JN
KENPQ09BKSBmb3IgdGhlIG91dGVyCisgICAgICAgICAgZ3VhcmQgYW5kIFVTRShBUFBLSVQpIGZv
ciB0aGUgTWFjLXNwZWNpZmljIGJpdHMuCisgICAgICAgIC0gVXNlIFJldGFpblB0cjw+IGZvciBO
U0dyYXBoaWNzQ29udGV4dCB0byBjbGVhbiB1cCBjb2RlIGluCisgICAgICAgICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL0xvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbS4KKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6
fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6CisgICAgICAgIC0gSW1wbGVtZW50IGJh
c2VkIG9uIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbS4gIFVzZQorICAgICAgICAg
IFVJR3JhcGhpY3N7R2V0Q3VycmVudCxQb3AsUHVzaH1Db250ZXh0KCkgZnVuY3Rpb25zIGFkZGVk
IHRvCisgICAgICAgICAgVUlLaXRTb2Z0TGluay5oLgorCisgICAgICAgICogcGxhdGZvcm0vbWFj
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0uCisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dCk6CisgICAgICAgIC0gVXNlIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQgaW5z
dGVhZCBvZiBncmFwaGljc0NvbnRleHQgaW4gdGhlCisgICAgICAgICAgYm9keSBvZiB0aGUgY29u
c3RydWN0b3IuCisgICAgICAgIC0gUmVtb3ZlIHNldC10by1uaWwvcmV0YWluIG9mIG1fc2F2ZWRO
U0dyYXBoaWNzQ29udGV4dCBzaW5jZQorICAgICAgICAgIHRoYXQgaXMgaGFuZGxlZCBieSBSZXRh
aW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAtIFJlbW92ZSByZWxl
YXNlIG9mIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCBzaW5jZSB0aGF0IGlzCisgICAgICAgICAg
aGFuZGxlZCBieSBSZXRhaW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6CisgICAgICAgIC0gSW5saW5lIGxvY2FsIHZh
cmlhYmxlLgorCiAyMDIwLTA1LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CiAKICAgICAgICAgWE1MIGV4dGVybmFsIGVudGl0eSByZXNvdXJjZXMgc2hvdWxkIG9ubHkgYmUg
bG9hZGVkIGZyb20gWE1MIE1JTUUgdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDgwNWYxYjli
M2RlMTBiYmFiYjA0ODNiMjVkYmQzNTgyYzZkMjBmYzYuLjEzNDFkMjUwNzJhOWNmM2I4Y2E5YWQz
NGExMTc1ZDk3ZDVkMmQzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIwLTA1LTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRhcHQgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBh
bC9pb3MvVUlLaXRTb2Z0TGluay5tbToKKyAgICAgICAgLSBBZGQgc29mdCBsaW5raW5nIG9mIFVJ
R3JhcGhpY3N7R2V0Q3VycmVudCxQb3AsUHVzaH1Db250ZXh0KCkKKyAgICAgICAgICBmdW5jdGlv
bnMuCisKIDIwMjAtMDUtMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gQ2xvc2UgY29ubmVjdGlvbnMgdG8gTGF1bmNoIFNlcnZpY2VzIGFm
dGVyIHJldm9raW5nIGV4dGVuc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5N2NmMGUxODk5Y2VmN2FiYWRlZjc2
NzI1NWExMTI3ZGY1OGUxZmY1Li45N2Y1MTAwNTBmMjViNjkzOGJjNzZmMDdhNTdiNTI1ODM0ZjM1
MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTA0ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMTY2MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVy
dFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgIC0gVXNlIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBmb3IgYm90aCBpT1MgYW5kIE1hYyBjb2RlCisgICAgICAgICAgcGF0aHMuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tOgorICAgICAgICAtIFN3aXRjaCBmcm9tIFBMQVRGT1JNKE1BQykgYW5kIFBMQVRGT1JNKElP
U19GQU1JWSkgdG8KKyAgICAgICAgICBVU0UoQVBQS0lUKSB0byBzZXBhcmF0ZSBwbGF0Zm9ybSBj
b2RlLgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6IERlbGV0ZS4KKyAgICAgICAgKFdlYktp
dDo6Y29udmVydENHSW1hZ2VUb0JpdG1hcCk6IERlbGV0ZS4KKyAgICAgICAgLSBDb21iaW5lIE1h
Yy1zcGVjaWZpYyBjb252ZXJ0SW1hZ2VUb0JpdG1hcCgpIGFuZCBpT1Mtc3BlY2lmaWMKKyAgICAg
ICAgICBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKCkgaW50byBhIHNpbmdsZSBtZXRob2QgdXNpbmcK
KyAgICAgICAgICBQbGF0Zm9ybURyYWdJbWFnZSB0eXBlIGFuZCBzcGVjaWFsLWNhc2luZyBvbmUg
bGluZSBvZiBjb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKToK
KyAgICAgICAgLSBDb21iaW5lIGlPUyBhbmQgTWFjIG1ldGhvZHMgaW50byBhIHNpbmdlIG1ldGhv
ZC4KKwogMjAyMC0wNS0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9tIGZyb20gc3ZuLndlYmtpdC5vcmcg
cmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRT
b2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCmlu
ZGV4IDNhMzdlZjU4Yzg1ZDJiZWY1MTMyNGNjYjg5OTAwMDU0ZDA4Zjk2ZWMuLjBhZGMxOTIyOTBk
NWZmMWVjOWUxMGI2ZTY1YTAxNjE0OTk2MGVlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2lvcy9VSUtpdFNvZnRMaW5rLmgKQEAgLTY3LDUgKzY3LDggQEAgU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNHcmF5c2NhbGVFbmFibGVk
LCBCT08KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNl
TW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24sIHZvaWQs
IChVSUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zIG4sIGlkIGFyZ3VtZW50KSwgKG4sIGFyZ3Vt
ZW50KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJR3JhcGhp
Y3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCksICgpKQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGljc1BvcENvbnRleHQsIHZv
aWQsICh2b2lkKSwgKCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0
LCBVSUdyYXBoaWNzUHVzaENvbnRleHQsIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCksIChj
b250ZXh0KSkKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lv
cy9VSUtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0
TGluay5tbQppbmRleCA5ZDk2ZDU5ZTMxZTEzMmY2ZjEzMzY3Mzk2OGFjOGNiNGU1MmZlNWI4Li45
OWM4NTA2NmQ2MWE0NjIwYzgwMzZhNWViNzgzZGMwYzRjNjUxOGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KQEAgLTY3LDUgKzY3LDggQEAgU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNHcmF5
c2NhbGVFbmFibGVkLCBCT08KIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlL
aXQsIFVJQWNjZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAo
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgVUlLaXQs
IFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSwg
UEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJ
QWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24sIHZvaWQsIChVSUFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25zIG4sIGlkIGFyZ3VtZW50KSwgKG4sIGFyZ3VtZW50KSkKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwg
Q0dDb250ZXh0UmVmLCAodm9pZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBVSUtpdCwgVUlHcmFwaGljc1BvcENvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBoaWNzUHVzaENvbnRl
eHQsIHZvaWQsIChDR0NvbnRleHRSZWYgY29udGV4dCksIChjb250ZXh0KSkKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGU0OGQ1NmI2MjVkOGQ2OWFlYTIyMTllZjEzNzE0
ZTU2N2JjZWRhMmUuLmZmNTE4OTM1ODFmMDRiYzQzY2Y4NTY3YzI4ZGM5Y2Q1NjFlYzRjMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zNjIsNyArMzYyLDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCiAgICAgcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9LZXlFdmVudE1hYy5t
bQotICAgIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KKyAgICBw
bGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tCiAgICAgcGxhdGZv
cm0vbWFjL0xvZ2dpbmdNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGlu
ay5jcHAKICAgICBwbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFpbHMubW0KQEAgLTUxNiw2
ICs1MTYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
IAogICAgIHBsYXRmb3JtL2NmL1J1bkxvb3BPYnNlcnZlci5oCiAKKyAgICBwbGF0Zm9ybS9jb2Nv
YS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKICAgICBwbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVZp
ZXcuaAogICAgIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oCkBAIC01
NzUsNyArNTc2LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAKICAgICBwbGF0Zm9ybS9tYWMvRHluYW1pY0xpbmtlckludGVycG9zaW5nLmgKICAgICBw
bGF0Zm9ybS9tYWMvTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaAotICAgIHBsYXRmb3JtL21hYy9M
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL21hYy9Mb2NhbERlZmF1
bHRTeXN0ZW1BcHBlYXJhbmNlLmgKICAgICBwbGF0Zm9ybS9tYWMvTlNTY3JvbGxlckltcERldGFp
bHMuaAogICAgIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDcxYmFiMzg2NmExNzlhNjk1Yzc2OTI1MjU4NGY3N2MyYmNiNjQ2MDYuLjYy
M2UyODM3YWUxMTRiNTQwMmMxNjc0YjU4NzcwNjE0MzI4M2I3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtNDA0LDYgKzQwNCw3IEBAIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZC5t
bQogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVHcmlkVGlsZS5tbQogcGxhdGZvcm0vaW9zL0xlZ2Fj
eVRpbGVMYXllci5tbQogcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVMYXllclBvb2wubW0KK3BsYXRm
b3JtL2lvcy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRJT1MubW0KIHBsYXRmb3JtL2lvcy9M
b2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0KIHBsYXRmb3JtL2lvcy9Mb2NhbGl6ZWREZXZp
Y2VNb2RlbC5tbQogcGxhdGZvcm0vaW9zL0xvd1Bvd2VyTW9kZU5vdGlmaWVySU9TLm1tCkBAIC00
NDksNyArNDUwLDcgQEAgcGxhdGZvcm0vbWFjL0JsYWNrbGlzdFVwZGF0ZXIubW0KIHBsYXRmb3Jt
L21hYy9DdXJzb3JNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIEBu
by11bmlmeQotcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQorcGxh
dGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbQogcGxhdGZvcm0vbWFj
L0xvY2FsRGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0KIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFj
Lm1tCiBwbGF0Zm9ybS9tYWMvTWVkaWFSZW1vdGVTb2Z0TGluay5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNDMxNjdmZmM0
MWJjN2IzODE2OTZjNWQ2ZTY2MWUwZGZhMDVmZTE5Li4wMzVjNTQ0ZmVjYmU2NGRlOTM0ODYyMzcw
MDM0YzliYWRlODE1ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NDIzLDcgKzU0MjMsNyBAQAogCQkwNjZDNzcyRTBBQjYw
M0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDY2Qzc3MkYwQUI2MDNGRDAwMjM4Q0M0IC8qIFJl
bmRlckZpbGVVcGxvYWRDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNkU4MUVFQjBBQjVEQTk3
MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3
IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDMzNEQwMTQ1OUZGQUMwMDhEOEQ0NSAv
KiBUcmFja0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRy
YWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAzMzREMTE0NTlG
RkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUcmFja0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDMzNEQy
MTQ1OUZGQUMwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBUcmFja0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3NjYsNiAr
Nzc2Niw3IEBACiAJCTQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlP
Uy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUlPUy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEM5OTE5RDBGM0QyMTBFMDA1ODY2NzAg
LyogVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhlbWVJT1Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRDOTkxOUUwRjNEMjEwRTAwNTg2Njcw
IC8qIFRoZW1lSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VGhlbWVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0Q0EyODQzMjQ1RkNB
NTAwMEM5NEM3RiAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHRJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RDhEQTk4MTM5NTQ1QkUw
MDMzN0I3NSAvKiBTVkdNUGF0aEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNW
R01QYXRoRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RDhEQTlB
MTM5NTQ1Q0QwMDMzN0I3NSAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NERBQjVBRjE1QTYyMzU4MDA5N0MxRTQgLyogRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMDgyMSw4ICsyMDgyMiw3IEBACiAJCQkJRTFCQTY2RjAxNzQyQkQ4NjAwQzIwMjUxIC8qIER5
bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2QUFC
NCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyog
TGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCAqLywKLQkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCi0JCQkJMDZFODFFRUIwQUI1
REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKKwkJCQkw
NkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFj
Lm1tICovLAogCQkJCTQ0NTc3NUU0MjA0NzJGNzMwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0
ZW1BcHBlYXJhbmNlLmggKi8sCiAJCQkJNDQ1Nzc1RTkyMDQ3MzAzQjAwOERDRTVEIC8qIExvY2Fs
RGVmYXVsdFN5c3RlbUFwcGVhcmFuY2UubW0gKi8sCiAJCQkJMTQwMjY0NUQwQUZEQzE5QjAwNTkx
OUUyIC8qIExvZ2dpbmdNYWMubW0gKi8sCkBAIC0yMzI4Myw2ICsyMzI4Myw3IEBACiAJCQkJRTRC
NjVBNUQxMzJGQURCNjAwNzBFN0JFIC8qIExlZ2FjeVRpbGVMYXllci5tbSAqLywKIAkJCQlFNEUz
OUFGQTEzMzBFRkE4MDAzQUIyNzQgLyogTGVnYWN5VGlsZUxheWVyUG9vbC5oICovLAogCQkJCUU0
RTM5QUZDMTMzMEVGQzUwMDNBQjI3NCAvKiBMZWdhY3lUaWxlTGF5ZXJQb29sLm1tICovLAorCQkJ
CTQ0Q0EyODQzMjQ1RkNBNTAwMEM5NEM3RiAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRJ
T1MubW0gKi8sCiAJCQkJMUM0M0RFNjgyMkFCNEI4QTAwMTUyN0Q5IC8qIExvY2FsQ3VycmVudFRy
YWl0Q29sbGVjdGlvbi5oICovLAogCQkJCTFDNDNERTZBMjJBQjRCOEEwMDE1MjdEOSAvKiBMb2Nh
bEN1cnJlbnRUcmFpdENvbGxlY3Rpb24ubW0gKi8sCiAJCQkJRTM1QjkwN0MyM0Y2MDY3NzAwMDAx
MUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLmggKi8sCkBAIC0yMzQ0NCw2ICsyMzQ0NSw3IEBA
CiAJCQkJN0EwOUNFRjAxRjAxRDFGNzAwRTkzQkRCIC8qIEZpbGVNb25pdG9yQ29jb2EubW0gKi8s
CiAJCQkJQTVDOTc0Q0YxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2ZW50Q29jb2EuaCAqLywKIAkJ
CQlBNUM5NzREMDExNDg1RkYxMDA2NkYyQUIgLyogS2V5RXZlbnRDb2NvYS5tbSAqLywKKwkJCQkw
NkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmgg
Ki8sCiAJCQkJMUE0ODMyQjIxQTk1M0JBNjAwOEI0REZFIC8qIExvY2FsaXplZFN0cmluZ3NDb2Nv
YS5tbSAqLywKIAkJCQlDNTNEMzkzMzFDOTc4OTJEMDA3RjNBRTkgLyogTUlNRVR5cGVSZWdpc3Ry
eUNvY29hLm1tICovLAogCQkJCUExOUQ5MzQ5MUFBMTFCMUUwMEI0NkMyNCAvKiBOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41Nzk1Nzk5YjJkYzBkZGEyZDczNmVlZGY2MjZmYzc5ODU5YzI3MTE4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIw
IEFwcGxlIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisj
aWYgVVNFKEFQUEtJVCkKK09CSkNfQ0xBU1MgTlNHcmFwaGljc0NvbnRleHQ7CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNsYXNzIGF1dG9tYXRpY2FsbHkgc2F2ZXMg
YW5kIHJlc3RvcmVzIHRoZSBjdXJyZW50IE5TR3JhcGhpY3NDb250ZXh0IGZvcgorLy8gZnVuY3Rp
b25zIHdoaWNoIGNhbGwgb3V0IGludG8gQXBwS2l0IGFuZCByZWx5IG9uIHRoZSBjdXJyZW50Q29u
dGV4dCBiZWluZyBzZXQKK2NsYXNzIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KTsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhp
Y3NDb250ZXh0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgfkxvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQoKTsKK3ByaXZhdGU6CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OworI2lmIFVTRShBUFBLSVQpCisg
ICAgUmV0YWluUHRyPE5TR3JhcGhpY3NDb250ZXh0PiBtX3NhdmVkTlNHcmFwaGljc0NvbnRleHQ7
CisjZW5kaWYKKyAgICBib29sIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0IHsgZmFsc2UgfTsKK307
CisKK2NsYXNzIENvbnRleHRDb250YWluZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENv
bnRleHRDb250YWluZXIpOworcHVibGljOgorICAgIENvbnRleHRDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3Jh
cGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKQorICAgIHsKKyAgICB9CisKKyAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCgpIHsgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0OyB9Citwcml2YXRl
OgorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBtX2dyYXBoaWNzQ29udGV4dDsKK307CisK
K30KKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRJT1MubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWU1NzhhZmNmZDdjMGNlOTFiZGQ1YjViNDk4N2ZlMjg3MWY0MTU5ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Mb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHRJT1MubW0KQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIwIEFwcGxlIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisK
KyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgIDogbV9zYXZlZEdyYXBo
aWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCit7CisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4
dC5zYXZlKCk7CisKKyAgICBpZiAoIW1fc2F2ZWRHcmFwaGljc0NvbnRleHQuaGFzUGxhdGZvcm1D
b250ZXh0KCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgaXMgbm90IHNldHRpbmcgdGhlIGdsb2JhbCBjb250ZXh0IGJlY2F1c2UgdGhlIHByb3Zp
ZGVkIEdyYXBoaWNzQ29udGV4dCBkb2VzIG5vdCBoYXZlIGEgcGxhdGZvcm0gY29udGV4dCAobGlr
ZWx5IGRpc3BsYXkgbGlzdCByZWNvcmRpbmcpIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gdGhpcy0+Y2dDb250ZXh0KCk7CisgICAgaWYg
KGNnQ29udGV4dCA9PSBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgVUlHcmFwaGljc1B1c2hDb250ZXh0KGNnQ29udGV4dCk7CisgICAgbV9kaWRT
ZXRHcmFwaGljc0NvbnRleHQgPSB0cnVlOworfQorCitMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKQoreworICAgIGlmIChtX2RpZFNldEdy
YXBoaWNzQ29udGV4dCkKKyAgICAgICAgVUlHcmFwaGljc1BvcENvbnRleHQoKTsKKworICAgIG1f
c2F2ZWRHcmFwaGljc0NvbnRleHQucmVzdG9yZSgpOworfQorCitDR0NvbnRleHRSZWYgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0OjpjZ0NvbnRleHQoKQoreworICAgIHJldHVybiBtX3NhdmVk
R3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworfQorCit9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMGViZDRlMmE4ZjVmNjNmZGEyMTE0NzcyZmU5MWE2NDZiMzBiMWMzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaAorKysgL2Rldi9udWxs
CkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotCi0jaWYgVVNFKEFQUEtJVCkKLQotT0JKQ19DTEFTUyBOU0dyYXBo
aWNzQ29udGV4dDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBUaGlzIGNsYXNzIGF1dG9t
YXRpY2FsbHkgc2F2ZXMgYW5kIHJlc3RvcmVzIHRoZSBjdXJyZW50IE5TR3JhcGhpY3NDb250ZXh0
IGZvcgotLy8gZnVuY3Rpb25zIHdoaWNoIGNhbGwgb3V0IGludG8gQXBwS2l0IGFuZCByZWx5IG9u
IHRoZSBjdXJyZW50Q29udGV4dCBiZWluZyBzZXQKLWNsYXNzIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0KTsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgfkxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCgpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQoKTsKLXBy
aXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OwotICAg
IE5TR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkTlNHcmFwaGljc0NvbnRleHQ7Ci0gICAgYm9vbCBt
X2RpZFNldEdyYXBoaWNzQ29udGV4dDsKLX07Ci0KLWNsYXNzIENvbnRleHRDb250YWluZXIgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRleHRDb250YWluZXIpOwotcHVibGljOgotICAg
IENvbnRleHRDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCi0gICAg
ICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCgpIHsgcmV0dXJuIG1f
Z3JhcGhpY3NDb250ZXh0OyB9Ci1wcml2YXRlOgotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
KiBtX2dyYXBoaWNzQ29udGV4dDsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBUFBLSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI0NDUzNThh
Nzk1NmQ4OTkwYmE4MTdlOTQ4NTZjZmFhM2QwZjUxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCi0KLSNpZiBVU0UoQVBQS0lU
KQotCi0jaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKLSAgICA6IG1fc2F2
ZWRHcmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQotICAgICwgbV9kaWRTZXRHcmFwaGlj
c0NvbnRleHQoZmFsc2UpCi17Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLQotICAgIGlm
ICghZ3JhcGhpY3NDb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpKSB7Ci0gICAgICAgIFdURkxv
Z0Fsd2F5cygiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGlzIG5vdCBzZXR0aW5nIHRoZSBn
bG9iYWwgY29udGV4dCBiZWNhdXNlIHRoZSBwcm92aWRlZCBHcmFwaGljc0NvbnRleHQgZG9lcyBu
b3QgaGF2ZSBhIHBsYXRmb3JtIGNvbnRleHQgKGxpa2VseSBkaXNwbGF5IGxpc3QgcmVjb3JkaW5n
KSIpOwotICAgICAgICBtX3NhdmVkTlNHcmFwaGljc0NvbnRleHQgPSBuaWw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gdGhpcy0+Y2dDb250
ZXh0KCk7Ci0gICAgaWYgKGNnQ29udGV4dCA9PSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRD
b250ZXh0XSBDR0NvbnRleHRdKSB7Ci0gICAgICAgIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCA9
IG5pbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fc2F2ZWROU0dyYXBoaWNzQ29u
dGV4dCA9IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIHJldGFpbl07Ci0gICAg
TlNHcmFwaGljc0NvbnRleHQqIG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0V2l0aENHQ29udGV4dDpjZ0NvbnRleHQgZmxpcHBlZDpZRVNdOwotICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuZXdDb250ZXh0XTsKLSAgICBtX2RpZFNl
dEdyYXBoaWNzQ29udGV4dCA9IHRydWU7Ci19Ci0KLUxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgpCi17Ci0gICAgaWYgKG1fZGlkU2V0R3Jh
cGhpY3NDb250ZXh0KSB7Ci0gICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29u
dGV4dDptX3NhdmVkTlNHcmFwaGljc0NvbnRleHRdOwotICAgICAgICBbbV9zYXZlZE5TR3JhcGhp
Y3NDb250ZXh0IHJlbGVhc2VdOwotICAgIH0KLQotICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwotfQotCi1DR0NvbnRleHRSZWYgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
OjpjZ0NvbnRleHQoKQotewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBtX3NhdmVkR3Jh
cGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIHJldHVybiBjZ0NvbnRleHQ7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZjkzNDMyYjZmZTI5MzlmMzdkMDNhNzYyMTE2ZGYwZmJmZjkyNmFhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dE1hYy5tbQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjAgQXBwbGUgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgorCisjaWYgVVNFKEFQUEtJVCkKKworI2ltcG9ydCA8
QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVkR3JhcGhpY3NDb250
ZXh0KGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnNhdmUo
KTsKKworICAgIGlmICghbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBp
cyBub3Qgc2V0dGluZyB0aGUgZ2xvYmFsIGNvbnRleHQgYmVjYXVzZSB0aGUgcHJvdmlkZWQgR3Jh
cGhpY3NDb250ZXh0IGRvZXMgbm90IGhhdmUgYSBwbGF0Zm9ybSBjb250ZXh0IChsaWtlbHkgZGlz
cGxheSBsaXN0IHJlY29yZGluZykiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENH
Q29udGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKKyAgICBpZiAoY2dDb250
ZXh0ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIENHQ29udGV4dF0pCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCA9IFtOU0dyYXBo
aWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CisgICAgTlNHcmFwaGljc0NvbnRleHQqIG5ld0Nv
bnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aENHQ29udGV4dDpj
Z0NvbnRleHQgZmxpcHBlZDpZRVNdOworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50
Q29udGV4dDpuZXdDb250ZXh0XTsKKyAgICBtX2RpZFNldEdyYXBoaWNzQ29udGV4dCA9IHRydWU7
Cit9CisKK0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCgpCit7CisgICAgaWYgKG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KQorICAgICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bV9zYXZlZE5TR3JhcGhpY3NDb250
ZXh0LmdldCgpXTsKKworICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQucmVzdG9yZSgpOworfQor
CitDR0NvbnRleHRSZWYgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpjZ0NvbnRleHQoKQor
eworICAgIHJldHVybiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwor
fQorCit9CisKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBiMjZlZGQ5ZjBhNTAzZjY1
ZTY0Y2RkY2Y3N2Q1NjU5ZWQ5YTc0MjgxLi4yMzM3NGEyZDFjYzI1ZmM1MDJmYzI5MGNhYTM5MWFh
MGJiNmRjZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQpAQCAtMzg1LDE0ICszODUsMTMgQEAgc3RhdGljIFJlZlB0cjxXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcD4gY29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcChDb2NvYUlt
YWdlICoKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGlj
c0NvbnRleHQpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgVUlHcmFwaGljc1B1c2hD
b250ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwogICAgIFtpbWFnZSBk
cmF3SW5SZWN0OkNHUmVjdE1ha2UoMCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFw
LT5zaXplKCkuaGVpZ2h0KCkpXTsKLSAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOwogI2VsaWYg
VVNFKEFQUEtJVCkKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0
KCpncmFwaGljc0NvbnRleHQpOwogICAgIFtpbWFnZSBkcmF3SW5SZWN0Ok5TTWFrZVJlY3QoMCwg
MCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwgYml0bWFwLT5zaXplKCkuaGVpZ2h0KCkpIGZyb21S
ZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5TQ29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVy
IGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6WUVTIGhpbnRzOm5pbF07CiAjZW5kaWYKKwogICAg
IHJldHVybiBiaXRtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAz
MGM2ZmZlMjNmMWU0OWYxNWY2NjgzOGI2ODQxYjU2NjJjN2VlZjE1Li5kNjJjNmIzZTljMzlkOTk3
NWZjNDgyMTcwNDU1Njg1ZjRmNzc2OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFy
Y2hpdmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgpAQCAtNTEsMTYgKzUyLDE4IEBA
CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvTlNVUkxF
eHRyYXMuaD4KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgVVNFKEFQUEtJVCkKK3Vz
aW5nIFBsYXRmb3JtRHJhZ0ltYWdlID0gTlNJbWFnZSAqOworI2Vsc2UKICNpbXBvcnQgIlVJS2l0
U1BJLmgiCisKK3VzaW5nIFBsYXRmb3JtRHJhZ0ltYWdlID0gQ0dJbWFnZVJlZjsKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgUExB
VEZPUk0oTUFDKQotCi1zdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdl
VG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFt
ZSkKK3N0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRt
YXAoUGxhdGZvcm1EcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBm
cmFtZSkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmln
dXJhdGlvbjsKICAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNl
ID0gc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwpAQCAtNzIsMjcg
Kzc1LDI2IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0Jp
dG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6CiAgICAgaWYgKCFncmFwaGljc0NvbnRl
eHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPE5TR3JhcGhpY3ND
b250ZXh0PiBzYXZlZENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
OwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbTlNHcmFw
aGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNz
Q29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Z3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSBmbGlwcGVkOllFU11dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAor
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNzQ29u
dGV4dCk7CisjaWYgVVNFKEFQUEtJVCkKICAgICBbaW1hZ2UgZHJhd0luUmVjdDpOU01ha2VSZWN0
KDAsIDAsIGJpdG1hcC0+c2l6ZSgpLndpZHRoKCksIGJpdG1hcC0+c2l6ZSgpLmhlaWdodCgpKSBm
cm9tUmVjdDpOU1plcm9SZWN0IG9wZXJhdGlvbjpOU0NvbXBvc2l0aW5nT3BlcmF0aW9uU291cmNl
T3ZlciBmcmFjdGlvbjoxIHJlc3BlY3RGbGlwcGVkOllFUyBoaW50czpuaWxdOwotCi0gICAgW05T
R3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OnNhdmVkQ29udGV4dC5nZXQoKV07Cisj
ZWxzZQorICAgIENHQ29udGV4dERyYXdJbWFnZShncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSksIGlt
YWdlKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBXZWJEcmFnQ2xp
ZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKCkKLXsKLX0KLQogdm9pZCBXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJiBmcmFtZSkK
IHsKICAgICBhdXRvJiBpbWFnZSA9IGRyYWdJdGVtLmltYWdlOworCisjaWYgVVNFKEFQUEtJVCkK
ICAgICBJbnRTaXplIGJpdG1hcFNpemUoW2ltYWdlLmdldCgpIHNpemVdKTsKLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0SW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQo
KS5nZXQoKSwgYml0bWFwU2l6ZSwgZnJhbWUpOworI2Vsc2UKKyAgICBJbnRTaXplIGJpdG1hcFNp
emUoQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKS5nZXQoKSkpOworI2VuZGlmCisgICAgYXV0byBiaXRtYXAgPSBjb252ZXJ0RHJh
Z0ltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCkuZ2V0KCksIGJpdG1hcFNpemUsIGZyYW1lKTsKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKCFiaXRtYXAgfHwgIWJp
dG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw2ICsx
MDMsMTUgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0s
IERhdGFUcmFuc2ZlciYsIEZyYW1lJiBmcmFtZSkKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRyYWdJdGVtLCBoYW5kbGUpKTsKIH0KIAordm9pZCBX
ZWJEcmFnQ2xpZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKCkKK3sKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIG1fcGFnZS0+ZGlkQ29uY2x1ZGVFZGl0RHJhZygpOworI2VuZGlmCit9CisK
KyNpZiBVU0UoQVBQS0lUKQorCiBzdGF0aWMgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJl
bmRlcmVyKCk7CkBAIC0xNzEsNDEgKzE4Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldFByb21pc2VkRGF0YUZv
ckltYWdlKHBhc3RlYm9hcmROYW1lLCBpbWFnZUhhbmRsZSwgaW1hZ2VTaXplLCBmaWxlbmFtZSwg
ZXh0ZW5zaW9uLCB0aXRsZSwgU3RyaW5nKFtbcmVzcG9uc2UgVVJMXSBhYnNvbHV0ZVN0cmluZ10p
LCBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCksIGFyY2hpdmVIYW5kbGUsIGFyY2hpdmVTaXpl
KSk7CiB9CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotCi1zdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydENHSW1hZ2VUb0Jp
dG1hcChDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUp
Ci17Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRp
b247Ci0gICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNj
cmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLSAgICBhdXRvIGJpdG1h
cCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3Vy
YXRpb24pOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
LSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBVSUdyYXBoaWNzUHVzaENvbnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSwgaW1h
Z2UpOwotICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7Ci0gICAgcmV0dXJuIGJpdG1hcDsKLX0K
LQotdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFU
cmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUpCi17Ci0gICAgYXV0byYgaW1hZ2Ug
PSBkcmFnSXRlbS5pbWFnZTsKLQotICAgIEludFNpemUgYml0bWFwU2l6ZShDR0ltYWdlR2V0V2lk
dGgoaW1hZ2UuZ2V0KCkuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpLmdldCgp
KSk7Ci0gICAgYXV0byBiaXRtYXAgPSBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKGltYWdlLmdldCgp
LmdldCgpLCBiaXRtYXBTaXplLCBmcmFtZSk7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aGFuZGxlOwotICAgIGlmICghYml0bWFwIHx8ICFiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BhZ2UtPndpbGxTdGFydERyYWcoKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRyYWdJdGVtLCBo
YW5kbGUpKTsKLX0KKyNlbHNlCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7CkBAIC0yMTMs
MTIgKzE5MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcCgpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KIAotdm9pZCBXZWJEcmFnQ2xpZW50Ojpk
aWRDb25jbHVkZUVkaXREcmFnKCkKLXsKLSAgICBtX3BhZ2UtPmRpZENvbmNsdWRlRWRpdERyYWco
KTsKLX0KLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisjZW5kaWYgLy8gVVNFKEFQ
UEtJVCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398916</attachid>
            <date>2020-05-08 21:16:54 -0700</date>
            <delta_ts>2020-05-09 14:02:56 -0700</delta_ts>
            <desc>Interesting changes to WebCore/platform</desc>
            <filename>bug-211660-interesting-changes.diff</filename>
            <type>text/plain</type>
            <size>6260</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApyZW5h
bWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMDBlYmQ0ZTJhOGYuLjU3OTU3OTliMmRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjIsOSArMjIsMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotI2lmIFVTRShBUFBLSVQpCisjaWYgUExBVEZP
Uk0oQ09DT0EpCiAKKyNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0dyYXBoaWNzQ29udGV4
dDsKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDggKzQwLDEwIEBAIHB1
YmxpYzoKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0KCk7CiBwcml2YXRlOgogICAgIEdyYXBo
aWNzQ29udGV4dCYgbV9zYXZlZEdyYXBoaWNzQ29udGV4dDsKLSAgICBOU0dyYXBoaWNzQ29udGV4
dCogbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0OwotICAgIGJvb2wgbV9kaWRTZXRHcmFwaGljc0Nv
bnRleHQ7CisjaWYgVVNFKEFQUEtJVCkKKyAgICBSZXRhaW5QdHI8TlNHcmFwaGljc0NvbnRleHQ+
IG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dDsKKyNlbmRpZgorICAgIGJvb2wgbV9kaWRTZXRHcmFw
aGljc0NvbnRleHQgeyBmYWxzZSB9OwogfTsKIAogY2xhc3MgQ29udGV4dENvbnRhaW5lciB7CkBA
IC01Nyw0ICs2MSw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8vIFVTRShBUFBLSVQpCisj
ZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWU1NzhhZmNmZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0SU9TLm1tCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAyMCBBcHBsZSBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0LmgiCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICA6IG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQoZ3JhcGhpY3NDb250ZXh0KQoreworICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQuc2F2ZSgp
OworCisgICAgaWYgKCFtX3NhdmVkR3JhcGhpY3NDb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGlz
IG5vdCBzZXR0aW5nIHRoZSBnbG9iYWwgY29udGV4dCBiZWNhdXNlIHRoZSBwcm92aWRlZCBHcmFw
aGljc0NvbnRleHQgZG9lcyBub3QgaGF2ZSBhIHBsYXRmb3JtIGNvbnRleHQgKGxpa2VseSBkaXNw
bGF5IGxpc3QgcmVjb3JkaW5nKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IHRoaXMtPmNnQ29udGV4dCgpOworICAgIGlmIChjZ0NvbnRl
eHQgPT0gVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFVJR3JhcGhpY3NQdXNoQ29udGV4dChjZ0NvbnRleHQpOworICAgIG1fZGlkU2V0R3JhcGhp
Y3NDb250ZXh0ID0gdHJ1ZTsKK30KKworTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Ojp+TG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKK3sKKyAgICBpZiAobV9kaWRTZXRHcmFwaGljc0Nv
bnRleHQpCisgICAgICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CisKKyAgICBtX3NhdmVkR3Jh
cGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKK30KKworQ0dDb250ZXh0UmVmIExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dDo6Y2dDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9zYXZlZEdyYXBoaWNz
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKK30KKworfQorCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tCnNpbWlsYXJpdHkgaW5kZXggNzglCnJl
bmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQubW0KcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0KaW5kZXggNzI0NDUzNThhNzkuLjBmOTM0MzJiNmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxl
IEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsMjMgKzI4LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiAgICAgOiBtX3Nh
dmVkR3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dCkKLSAgICAsIG1fZGlkU2V0R3JhcGhp
Y3NDb250ZXh0KGZhbHNlKQogewotICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CisgICAgbV9z
YXZlZEdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC5o
YXNQbGF0Zm9ybUNvbnRleHQoKSkgeworICAgIGlmICghbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5o
YXNQbGF0Zm9ybUNvbnRleHQoKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkxvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBpcyBub3Qgc2V0dGluZyB0aGUgZ2xvYmFsIGNvbnRleHQgYmVjYXVz
ZSB0aGUgcHJvdmlkZWQgR3JhcGhpY3NDb250ZXh0IGRvZXMgbm90IGhhdmUgYSBwbGF0Zm9ybSBj
b250ZXh0IChsaWtlbHkgZGlzcGxheSBsaXN0IHJlY29yZGluZykiKTsKLSAgICAgICAgbV9zYXZl
ZE5TR3JhcGhpY3NDb250ZXh0ID0gbmlsOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHRoaXMtPmNnQ29udGV4dCgpOwotICAgIGlmIChjZ0Nv
bnRleHQgPT0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gQ0dDb250ZXh0XSkg
ewotICAgICAgICBtX3NhdmVkTlNHcmFwaGljc0NvbnRleHQgPSBuaWw7CisgICAgaWYgKGNnQ29u
dGV4dCA9PSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBDR0NvbnRleHRdKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0ID0g
W1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gcmV0YWluXTsKKyAgICBtX3NhdmVk
TlNHcmFwaGljc0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwog
ICAgIE5TR3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdy
YXBoaWNzQ29udGV4dFdpdGhDR0NvbnRleHQ6Y2dDb250ZXh0IGZsaXBwZWQ6WUVTXTsKICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bmV3Q29udGV4dF07CiAgICAgbV9k
aWRTZXRHcmFwaGljc0NvbnRleHQgPSB0cnVlOwpAQCAtNTIsMTggKzQ4LDE1IEBAIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpCiAKIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCgpCiB7Ci0gICAgaWYgKG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0
KSB7Ci0gICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDptX3NhdmVk
TlNHcmFwaGljc0NvbnRleHRdOwotICAgICAgICBbbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0IHJl
bGVhc2VdOwotICAgIH0KKyAgICBpZiAobV9kaWRTZXRHcmFwaGljc0NvbnRleHQpCisgICAgICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDptX3NhdmVkTlNHcmFwaGljc0Nv
bnRleHQuZ2V0KCldOwogCiAgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiB9
CiAKIENHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCgp
CiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgcmV0dXJuIGNnQ29udGV4dDsKKyAgICByZXR1cm4gbV9z
YXZlZEdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398940</attachid>
            <date>2020-05-09 14:02:58 -0700</date>
            <delta_ts>2020-05-09 14:33:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211660-20200509140638.patch</filename>
            <type>text/plain</type>
            <size>32920</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE3MTIwOGYyMTM4Njg1
ZjhkM2JhNTBlYjdiYmM2YjM4ZDEwNzI2MS4uODcwN2RjNGIzM2JkMzY3MmRjZjgwYzA5OGYyNjRm
NjQ1YWEyZmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIFVwZGF0ZSBi
dWlsZCBmaWxlcyBmb3I6CisgICAgICAgICAgLSBSZW5hbWUgb2YgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0Lm1tIHRvCisgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRN
YWMubW0uCisgICAgICAgICAgLSBNb3ZlIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5o
IGZyb20gcGxhdGZvcm0vbWFjIHRvCisgICAgICAgICAgICBwbGF0Zm9ybS9jb2NvYS4KKyAgICAg
ICAgICAtIEFkZGl0aW9uIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oLgorICAgICAgICAtIE1ha2UgdGhpcyB3b3JrIGZvciBpT1MgYnkgdXNpbmcg
UExBVEZPUk0oQ09DT0EpIGZvciB0aGUgb3V0ZXIKKyAgICAgICAgICBndWFyZCBhbmQgVVNFKEFQ
UEtJVCkgZm9yIHRoZSBNYWMtc3BlY2lmaWMgYml0cy4KKyAgICAgICAgLSBVc2UgUmV0YWluUHRy
PD4gZm9yIE5TR3JhcGhpY3NDb250ZXh0IHRvIGNsZWFuIHVwIGNvZGUgaW4KKyAgICAgICAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0uCisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6CisgICAgICAgIC0gSW5saW5lIGZy
b20gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tLgorCisgICAgICAgICogcGxhdGZv
cm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbS4K
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIC0gSW1w
bGVtZW50IGJhc2VkIG9uIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbS4gIFVzZQor
ICAgICAgICAgIFVJR3JhcGhpY3N7R2V0Q3VycmVudCxQb3AsUHVzaH1Db250ZXh0KCkgZnVuY3Rp
b25zIGFkZGVkIHRvCisgICAgICAgICAgVUlLaXRTb2Z0TGluay5oLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbTogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
bW0uCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIC0gVXNlIG1fc2F2ZWRHcmFwaGljc0Nv
bnRleHQgaW5zdGVhZCBvZiBncmFwaGljc0NvbnRleHQgaW4gdGhlCisgICAgICAgICAgYm9keSBv
ZiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIC0gUmVtb3ZlIHNldC10by1uaWwvcmV0YWluIG9m
IG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCBzaW5jZQorICAgICAgICAgIHRoYXQgaXMgaGFuZGxl
ZCBieSBSZXRhaW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAtIFJl
bW92ZSByZWxlYXNlIG9mIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCBzaW5jZSB0aGF0IGlzCisg
ICAgICAgICAgaGFuZGxlZCBieSBSZXRhaW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6IERlbGV0ZS4KKyAgICAgICAg
LSBJbmxpbmUgaW50byBoZWFkZXIgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gd2l0aCBpT1MuCisK
IDIwMjAtMDUtMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJvbSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9z
aXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDgwNWYxYjliM2RlMTBiYmFiYjA0ODNiMjVkYmQz
NTgyYzZkMjBmYzYuLmFmZTU1YTA4ZWU0OGQxZDZiZjljNWY2YzNmZTY2YzJiOWNiN2ZhZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA1LTA5ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMTY2
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHBhbC9p
b3MvVUlLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToK
KyAgICAgICAgLSBBZGQgc29mdCBsaW5raW5nIG9mIFVJR3JhcGhpY3N7R2V0Q3VycmVudCxQb3As
UHVzaH1Db250ZXh0KCkKKyAgICAgICAgICBmdW5jdGlvbnMuCisKIDIwMjAtMDUtMDggIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xvc2Ug
Y29ubmVjdGlvbnMgdG8gTGF1bmNoIFNlcnZpY2VzIGFmdGVyIHJldm9raW5nIGV4dGVuc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA5N2NmMGUxODk5Y2VmN2FiYWRlZjc2NzI1NWExMTI3ZGY1OGUxZmY1Li44MmQ3
MTYyZDg1M2I3ZDU4YmM2OTU4OWIwOGRlMDdkNDVmMWRlMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTA1LTA5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRhcHQgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6Cisg
ICAgICAgIC0gVXNlIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBmb3IgYm90aCBpT1MgYW5k
IE1hYyBjb2RlCisgICAgICAgICAgcGF0aHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAtIFN3aXRjaCBmcm9t
IFBMQVRGT1JNKE1BQykgYW5kIFBMQVRGT1JNKElPU19GQU1JWSkgdG8KKyAgICAgICAgICBVU0Uo
QVBQS0lUKSB0byBzZXBhcmF0ZSBwbGF0Zm9ybSBjb2RlLgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0Jp
dG1hcCk6IERlbGV0ZS4KKyAgICAgICAgKFdlYktpdDo6Y29udmVydENHSW1hZ2VUb0JpdG1hcCk6
IERlbGV0ZS4KKyAgICAgICAgLSBDb21iaW5lIE1hYy1zcGVjaWZpYyBjb252ZXJ0SW1hZ2VUb0Jp
dG1hcCgpIGFuZCBpT1Mtc3BlY2lmaWMKKyAgICAgICAgICBjb252ZXJ0Q0dJbWFnZVRvQml0bWFw
KCkgaW50byBhIHNpbmdsZSBtZXRob2QgdXNpbmcgRHJhZ0ltYWdlCisgICAgICAgICAgdHlwZSBh
bmQgc3BlY2lhbC1jYXNpbmcgb25lIGxpbmUgb2YgY29kZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6
ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6CisgICAgICAgIC0gQ29tYmluZSBpT1MgYW5kIE1hYyBtZXRo
b2RzIGludG8gYSBzaW5nZSBtZXRob2QuCisKIDIwMjAtMDUtMDggIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJv
bSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
aW9zL1VJS2l0U29mdExpbmsuaAppbmRleCAzYTM3ZWY1OGM4NWQyYmVmNTEzMjRjY2I4OTkwMDA1
NGQwOGY5NmVjLi4wYWRjMTkyMjkwZDVmZjFlYzllMTBiNmU2NWEwMTYxNDk5NjBlZTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCkBAIC02Nyw1ICs2Nyw4
IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0ludmVydENvbG9yc0VuYWJsZWQsIEJPT0ws
ICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBV
SUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQ
b3N0Tm90aWZpY2F0aW9uLCB2b2lkLCAoVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyBuLCBp
ZCBhcmd1bWVudCksIChuLCBhcmd1bWVudCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQsIENHQ29udGV4dFJlZiwg
KHZvaWQpLCAoKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJ
R3JhcGhpY3NQb3BDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGljc1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dD
b250ZXh0UmVmIGNvbnRleHQpLCAoY29udGV4dCkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KaW5kZXggOWQ5NmQ1OWUzMWUxMzJmNmYxMzM2
NzM5NjhhYzhjYjRlNTJmZTViOC4uOTljODUwNjZkNjFhNDYyMGM4MDM2YTVlYjc4M2RjMGM0YzY1
MThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCkBA
IC02Nyw1ICs2Nyw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQs
IFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0ludmVydENvbG9yc0Vu
YWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJs
ZWQsIEJPT0wsICh2b2lkKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLCB2b2lk
LCAoVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyBuLCBpZCBhcmd1bWVudCksIChuLCBhcmd1
bWVudCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBo
aWNzR2V0Q3VycmVudENvbnRleHQsIENHQ29udGV4dFJlZiwgKHZvaWQpLCAoKSkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NQb3BDb250ZXh0LCB2
b2lkLCAodm9pZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtp
dCwgVUlHcmFwaGljc1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQpLCAo
Y29udGV4dCkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBlNDhkNTZi
NjI1ZDhkNjlhZWEyMjE5ZWYxMzcxNGU1NjdiY2VkYTJlLi5mZjUxODkzNTgxZjA0YmM0M2NmODU2
N2MyOGRjOWNkNTYxZWM0YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzYyLDcg
KzM2Miw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KICAgICBwbGF0
Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tCisgICAgcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCiAgICAgcGxhdGZvcm0v
bWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJ
bXBEZXRhaWxzLm1tCkBAIC01MTYsNiArNTE2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAogCisgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKICAg
ICBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCiAgICAgcGxh
dGZvcm0vY29jb2EvUGxhdGZvcm1WaWV3LmgKICAgICBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UuaApAQCAtNTc1LDcgKzU3Niw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vbWFjL0R5bmFtaWNMaW5r
ZXJJbnRlcnBvc2luZy5oCiAgICAgcGxhdGZvcm0vbWFjL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVz
LmgKLSAgICBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKICAgICBw
bGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCiAgICAgcGxhdGZvcm0v
bWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKICAgICBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA3MWJhYjM4NjZhMTc5YTY5NWM3Njky
NTI1ODRmNzdjMmJjYjY0NjA2Li42MjNlMjgzN2FlMTE0YjU0MDJjMTY3NGI1ODc3MDYxNDMyODNi
NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQwNCw2ICs0MDQsNyBAQCBwbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUdyaWQubW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUu
bW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlTGF5ZXJQb29sLm1tCitwbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
SU9TLm1tCiBwbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tCiBwbGF0
Zm9ybS9pb3MvTG9jYWxpemVkRGV2aWNlTW9kZWwubW0KIHBsYXRmb3JtL2lvcy9Mb3dQb3dlck1v
ZGVOb3RpZmllcklPUy5tbQpAQCAtNDQ5LDcgKzQ1MCw3IEBAIHBsYXRmb3JtL21hYy9CbGFja2xp
c3RVcGRhdGVyLm1tCiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vbWFjL0tleUV2ZW50TWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBAbm8tdW5pZnkKLXBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQubW0KK3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHRNYWMubW0KIHBsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCiBw
bGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExp
bmsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjQzMTY3ZmZjNDFiYzdiMzgxNjk2YzVkNmU2NjFlMGRmYTA1ZmUxOS4uMDM1
YzU0NGZlY2JlNjRkZTkzNDg2MjM3MDAzNGM5YmFkZTgxNWYzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQyMyw3ICs1NDIz
LDcgQEAKIAkJMDY2Qzc3MkUwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2NkM3NzJG
MEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA2
RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAz
MzREMDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcwMzM0RDExNDU5RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzAzMzREMjE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2tFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NzY2LDYgKzc3NjYsNyBAQAogCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2
NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsYmFyVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
Qzk5MTlFMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NENBMjg0MzI0NUZDQTUwMDBDOTRDN0YgLyogTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEQ4REE5ODEzOTU0NUJFMDAzMzdCNzUgLyogU1ZHTVBhdGhFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBTVkdNUGF0aEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEQ4REE5QTEzOTU0NUNEMDAzMzdCNzUgLyogU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDREQUI1QUYxNUE2MjM1ODAw
OTdDMUU0IC8qIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4MjEsOCArMjA4MjIsNyBAQAogCQkJCUUxQkE2NkYw
MTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQk5
MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJRjQ0QTVG
NTcxRkVEMzgzMDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi8sCi0JCQkJ
MDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5o
ICovLAotCQkJCTA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQubW0gKi8sCisJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKIAkJCQk0NDU3NzVFNDIwNDcyRjczMDA4RENF
NUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovLAogCQkJCTQ0NTc3NUU5MjA0
NzMwM0IwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICovLAogCQkJ
CTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovLApAQCAtMjMyODMs
NiArMjMyODMsNyBAQAogCQkJCUU0QjY1QTVEMTMyRkFEQjYwMDcwRTdCRSAvKiBMZWdhY3lUaWxl
TGF5ZXIubW0gKi8sCiAJCQkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVM
YXllclBvb2wuaCAqLywKIAkJCQlFNEUzOUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGls
ZUxheWVyUG9vbC5tbSAqLywKKwkJCQk0NENBMjg0MzI0NUZDQTUwMDBDOTRDN0YgLyogTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tICovLAogCQkJCTFDNDNERTY4MjJBQjRCOEEwMDE1
MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLywKIAkJCQkxQzQzREU2QTIy
QUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tICovLAogCQkJ
CUUzNUI5MDdDMjNGNjA2NzcwMDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovLApA
QCAtMjM0NDQsNiArMjM0NDUsNyBAQAogCQkJCTdBMDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBG
aWxlTW9uaXRvckNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBL
ZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2
ZW50Q29jb2EubW0gKi8sCisJCQkJMDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAv
KiBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8sCiAJCQkJQzUzRDM5MzMxQzk3ODkyRDAwN0Yz
QUU5IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSAqLywKIAkJCQlBMTlEOTM0OTFBQTExQjFF
MDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2MjM2ZmIxY2ZkMmJhM2Y1MDI3MjhhYjI4MzUyMzc4
NzQwNmQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKworI2lmIFVTRShBUFBLSVQpCitPQkpDX0NMQVNTIE5TR3JhcGhp
Y3NDb250ZXh0OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFz
cyBhdXRvbWF0aWNhbGx5IHNhdmVzIGFuZCByZXN0b3JlcyB0aGUgY3VycmVudCBOU0dyYXBoaWNz
Q29udGV4dCBmb3IKKy8vIGZ1bmN0aW9ucyB3aGljaCBjYWxsIG91dCBpbnRvIEFwcEtpdCBhbmQg
cmVseSBvbiB0aGUgY3VycmVudENvbnRleHQgYmVpbmcgc2V0CitjbGFzcyBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5M
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
KCkgeyByZXR1cm4gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsgfQor
cHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7Cisj
aWYgVVNFKEFQUEtJVCkKKyAgICBSZXRhaW5QdHI8TlNHcmFwaGljc0NvbnRleHQ+IG1fc2F2ZWRO
U0dyYXBoaWNzQ29udGV4dDsKKyNlbmRpZgorICAgIGJvb2wgbV9kaWRTZXRHcmFwaGljc0NvbnRl
eHQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgQ29udGV4dENvbnRhaW5lciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5lcik7CitwdWJsaWM6CisgICAgQ29udGV4dENv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpCisgICAgewor
ICAgIH0KKworICAgIENHQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1cm4gbV9ncmFwaGljc0Nv
bnRleHQ7IH0KK3ByaXZhdGU6CisgICAgQ0dDb250ZXh0UmVmIG1fZ3JhcGhpY3NDb250ZXh0Owor
fTsKKworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElP
Uy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZThmMTMyMGZjNjEyZDNjYzVlNzAxMjk0OTBlYTQxOGM0MjcyZDQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dElPUy5tbQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVk
R3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBtX3NhdmVkR3JhcGhpY3ND
b250ZXh0LnNhdmUoKTsKKworICAgIGlmICghbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5oYXNQbGF0
Zm9ybUNvbnRleHQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkxvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBpcyBub3Qgc2V0dGluZyB0aGUgZ2xvYmFsIGNvbnRleHQgYmVjYXVzZSB0aGUg
cHJvdmlkZWQgR3JhcGhpY3NDb250ZXh0IGRvZXMgbm90IGhhdmUgYSBwbGF0Zm9ybSBjb250ZXh0
IChsaWtlbHkgZGlzcGxheSBsaXN0IHJlY29yZGluZykiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKKyAg
ICBpZiAoY2dDb250ZXh0ID09IFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBVSUdyYXBoaWNzUHVzaENvbnRleHQoY2dDb250ZXh0KTsKKyAgICBt
X2RpZFNldEdyYXBoaWNzQ29udGV4dCA9IHRydWU7Cit9CisKK0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgpCit7CisgICAgaWYgKG1fZGlk
U2V0R3JhcGhpY3NDb250ZXh0KQorICAgICAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOworCisg
ICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30KKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwZWJkNGUyYThmNWY2M2ZkYTIxMTQ3NzJmZTkxYTY0NmIzMGIxYzMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBVU0UoQVBQS0lUKQotCi1PQkpDX0NMQVNTIE5TR3Jh
cGhpY3NDb250ZXh0OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMgY2xhc3MgYXV0
b21hdGljYWxseSBzYXZlcyBhbmQgcmVzdG9yZXMgdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRl
eHQgZm9yCi0vLyBmdW5jdGlvbnMgd2hpY2ggY2FsbCBvdXQgaW50byBBcHBLaXQgYW5kIHJlbHkg
b24gdGhlIGN1cnJlbnRDb250ZXh0IGJlaW5nIHNldAotY2xhc3MgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQpOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+TG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCgpOwot
cHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7Ci0g
ICAgTlNHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dDsKLSAgICBib29s
IG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0OwotfTsKLQotY2xhc3MgQ29udGV4dENvbnRhaW5lciB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5lcik7Ci1wdWJsaWM6Ci0g
ICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKLSAg
ICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0
KCkpCi0gICAgewotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1cm4g
bV9ncmFwaGljc0NvbnRleHQ7IH0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIG1fZ3JhcGhpY3NDb250ZXh0OwotfTsKLQotfQotCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjQ0NTM1
OGE3OTU2ZDg5OTBiYTgxN2U5NDg1NmNmYWEzZDBmNTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKLQotI2lmIFVTRShBUFBL
SVQpCi0KLSNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzQ29udGV4dC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQotICAgIDogbV9z
YXZlZEdyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCi0gICAgLCBtX2RpZFNldEdyYXBo
aWNzQ29udGV4dChmYWxzZSkKLXsKLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotCi0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgaXMgbm90IHNldHRpbmcgdGhl
IGdsb2JhbCBjb250ZXh0IGJlY2F1c2UgdGhlIHByb3ZpZGVkIEdyYXBoaWNzQ29udGV4dCBkb2Vz
IG5vdCBoYXZlIGEgcGxhdGZvcm0gY29udGV4dCAobGlrZWx5IGRpc3BsYXkgbGlzdCByZWNvcmRp
bmcpIik7Ci0gICAgICAgIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCA9IG5pbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0Nv
bnRleHQoKTsKLSAgICBpZiAoY2dDb250ZXh0ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIENHQ29udGV4dF0pIHsKLSAgICAgICAgbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0
ID0gbmlsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zYXZlZE5TR3JhcGhpY3ND
b250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gcmV0YWluXTsKLSAg
ICBOU0dyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHRXaXRoQ0dDb250ZXh0OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgW05T
R3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5ld0NvbnRleHRdOwotICAgIG1fZGlk
U2V0R3JhcGhpY3NDb250ZXh0ID0gdHJ1ZTsKLX0KLQotTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKLXsKLSAgICBpZiAobV9kaWRTZXRH
cmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRD
b250ZXh0Om1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dF07Ci0gICAgICAgIFttX3NhdmVkTlNHcmFw
aGljc0NvbnRleHQgcmVsZWFzZV07Ci0gICAgfQotCi0gICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4
dC5yZXN0b3JlKCk7Ci19Ci0KLUNHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQ6OmNnQ29udGV4dCgpCi17Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRH
cmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgcmV0dXJuIGNnQ29udGV4dDsK
LX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE0MWViNGFkODhjNDZiYmVjYzM0NzdiZWYzOTJkMjYxOTYxZjJlM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0TWFjLm1tCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCisKKyNpZiBVU0UoQVBQS0lUKQorCisjaW1wb3J0
IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICA6IG1fc2F2ZWRHcmFwaGljc0Nv
bnRleHQoZ3JhcGhpY3NDb250ZXh0KQoreworICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQuc2F2
ZSgpOworCisgICAgaWYgKCFtX3NhdmVkR3JhcGhpY3NDb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGlzIG5vdCBzZXR0aW5nIHRoZSBnbG9iYWwgY29udGV4dCBiZWNhdXNlIHRoZSBwcm92aWRlZCBH
cmFwaGljc0NvbnRleHQgZG9lcyBub3QgaGF2ZSBhIHBsYXRmb3JtIGNvbnRleHQgKGxpa2VseSBk
aXNwbGF5IGxpc3QgcmVjb3JkaW5nKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHRoaXMtPmNnQ29udGV4dCgpOworICAgIGlmIChjZ0Nv
bnRleHQgPT0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gQ0dDb250ZXh0XSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0ID0gW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKKyAgICBOU0dyYXBoaWNzQ29udGV4dCogbmV3
Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQ0dDb250ZXh0
OmNnQ29udGV4dCBmbGlwcGVkOllFU107CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0Om5ld0NvbnRleHRdOworICAgIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0ID0gdHJ1
ZTsKK30KKworTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0KCkKK3sKKyAgICBpZiAobV9kaWRTZXRHcmFwaGljc0NvbnRleHQpCisgICAgICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDptX3NhdmVkTlNHcmFwaGljc0Nv
bnRleHQuZ2V0KCldOworCisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Cit9
CisKK30KKworI2VuZGlmIC8vIFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGIyNmVkZDlmMGE1MDNmNjVl
NjRjZGRjZjc3ZDU2NTllZDlhNzQyODEuLjIzMzc0YTJkMWNjMjVmYzUwMmZjMjkwY2FhMzkxYWEw
YmI2ZGNmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC0zODUsMTQgKzM4NSwxMyBAQCBzdGF0aWMgUmVmUHRyPFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1h
Z2UgKgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNz
Q29udGV4dCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBVSUdyYXBoaWNzUHVzaENv
bnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgW2ltYWdlIGRy
YXdJblJlY3Q6Q0dSZWN0TWFrZSgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAt
PnNpemUoKS5oZWlnaHQoKSldOwotICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CiAjZWxpZiBV
U0UoQVBQS0lUKQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQo
KmdyYXBoaWNzQ29udGV4dCk7CiAgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgwLCAw
LCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQoKSkgZnJvbVJl
Y3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIg
ZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKICNlbmRpZgorCiAgICAg
cmV0dXJuIGJpdG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDMw
YzZmZmUyM2YxZTQ5ZjE1ZjY2ODM4YjY4NDFiNTY2MmM3ZWVmMTUuLjg4Yzk0NDk4YTZhMjgwYWFk
YzZkYjQ1MzQyNWQ4Y2U2ZmQxNTk4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsNiArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJj
aGl2ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CkBAIC01MSwxNiArNTIsMjAgQEAK
ICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5oPgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBVU0UoQVBQS0lUKQogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFVTRShBUFBLSVQpCit1
c2luZyBEcmFnSW1hZ2UgPSBOU0ltYWdlICo7CisjZWxzZQordXNpbmcgRHJhZ0ltYWdlID0gQ0dJ
bWFnZVJlZjsKKyNlbmRpZgogCi1zdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVy
dEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1l
JiBmcmFtZSkKK3N0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdl
VG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJh
bWUpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3Vy
YXRpb247CiAgICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9
IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKQEAgLTcyLDI3ICs3
NywyNiBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRt
YXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpegogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJldGFpblB0cjxOU0dyYXBoaWNzQ29u
dGV4dD4gc2F2ZWRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsK
LQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OltOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHRXaXRoR3JhcGhpY3NQb3J0OmdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkg
ZmxpcHBlZDpZRVNdXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgc2F2ZWRDb250ZXh0KCpncmFwaGljc0NvbnRl
eHQpOworI2lmIFVTRShBUFBLSVQpCiAgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgw
LCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQoKSkgZnJv
bVJlY3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92
ZXIgZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKLQotICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOworI2Vs
c2UKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpLCBpbWFn
ZSk7CisjZW5kaWYKIAogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCi17Ci19Ci0KIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYgZnJhbWUpCiB7
CiAgICAgYXV0byYgaW1hZ2UgPSBkcmFnSXRlbS5pbWFnZTsKKworI2lmIFVTRShBUFBLSVQpCiAg
ICAgSW50U2l6ZSBiaXRtYXBTaXplKFtpbWFnZS5nZXQoKSBzaXplXSk7Ci0gICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gY29udmVydEltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCku
Z2V0KCksIGJpdG1hcFNpemUsIGZyYW1lKTsKKyNlbHNlCisgICAgSW50U2l6ZSBiaXRtYXBTaXpl
KENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UuZ2V0KCkuZ2V0KCkpKTsKKyNlbmRpZgorICAgIGF1dG8gYml0bWFwID0gY29udmVydERyYWdJ
bWFnZVRvQml0bWFwKGltYWdlLmdldCgpLmdldCgpLCBiaXRtYXBTaXplLCBmcmFtZSk7CiAgICAg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghYml0bWFwIHx8ICFiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQogICAgICAgICByZXR1cm47CkBAIC0xMDEsNiArMTA1
LDE1IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBE
YXRhVHJhbnNmZXImLCBGcmFtZSYgZnJhbWUpCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkcmFnSXRlbSwgaGFuZGxlKSk7CiB9CiAKK3ZvaWQgV2Vi
RHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKyAgICBtX3BhZ2UtPmRpZENvbmNsdWRlRWRpdERyYWcoKTsKKyNlbmRpZgorfQorCisj
aWYgVVNFKEFQUEtJVCkKKwogc3RhdGljIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZShFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5k
ZXJlcigpOwpAQCAtMTcxLDQxICsxODQsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VIYW5kbGUsIGltYWdlU2l6ZSwgZmlsZW5hbWUsIGV4
dGVuc2lvbiwgdGl0bGUsIFN0cmluZyhbW3Jlc3BvbnNlIFVSTF0gYWJzb2x1dGVTdHJpbmddKSwg
V1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwpLCBhcmNoaXZlSGFuZGxlLCBhcmNoaXZlU2l6ZSkp
OwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLQotc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRDR0ltYWdlVG9CaXRt
YXAoQ0dJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQot
ewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OwotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3Jl
ZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0
aW9uKTsKLSAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBh
dXRvIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0g
ICAgaWYgKCFncmFwaGljc0NvbnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
VUlHcmFwaGljc1B1c2hDb250ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIENHQ29udGV4dERyYXdJbWFnZShncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSksIGltYWdl
KTsKLSAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOwotICAgIHJldHVybiBiaXRtYXA7Ci19Ci0K
LXZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJh
bnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQotewotICAgIGF1dG8mIGltYWdlID0g
ZHJhZ0l0ZW0uaW1hZ2U7Ci0KLSAgICBJbnRTaXplIGJpdG1hcFNpemUoQ0dJbWFnZUdldFdpZHRo
KGltYWdlLmdldCgpLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKS5nZXQoKSkp
OwotICAgIGF1dG8gYml0bWFwID0gY29udmVydENHSW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKS5n
ZXQoKSwgYml0bWFwU2l6ZSwgZnJhbWUpOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKLSAgICBpZiAoIWJpdG1hcCB8fCAhYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkcmFnSXRlbSwgaGFu
ZGxlKSk7Ci19CisjZWxzZQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQogewpAQCAtMjEzLDEy
ICsxOTIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkud3JpdGVJbWFnZVRvUGFzdGVib2FyZCgqUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoKSwgZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CiAKLXZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlk
Q29uY2x1ZGVFZGl0RHJhZygpCi17Ci0gICAgbV9wYWdlLT5kaWRDb25jbHVkZUVkaXREcmFnKCk7
Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8vIFVTRShBUFBL
SVQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398941</attachid>
            <date>2020-05-09 14:33:04 -0700</date>
            <delta_ts>2020-05-09 16:10:45 -0700</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>bug-211660-20200509143645.patch</filename>
            <type>text/plain</type>
            <size>32777</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE3MTIwOGYyMTM4Njg1
ZjhkM2JhNTBlYjdiYmM2YjM4ZDEwNzI2MS4uODcwN2RjNGIzM2JkMzY3MmRjZjgwYzA5OGYyNjRm
NjQ1YWEyZmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAtIFVwZGF0ZSBi
dWlsZCBmaWxlcyBmb3I6CisgICAgICAgICAgLSBSZW5hbWUgb2YgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0Lm1tIHRvCisgICAgICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRN
YWMubW0uCisgICAgICAgICAgLSBNb3ZlIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5o
IGZyb20gcGxhdGZvcm0vbWFjIHRvCisgICAgICAgICAgICBwbGF0Zm9ybS9jb2NvYS4KKyAgICAg
ICAgICAtIEFkZGl0aW9uIG9mIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oLgorICAgICAgICAtIE1ha2UgdGhpcyB3b3JrIGZvciBpT1MgYnkgdXNpbmcg
UExBVEZPUk0oQ09DT0EpIGZvciB0aGUgb3V0ZXIKKyAgICAgICAgICBndWFyZCBhbmQgVVNFKEFQ
UEtJVCkgZm9yIHRoZSBNYWMtc3BlY2lmaWMgYml0cy4KKyAgICAgICAgLSBVc2UgUmV0YWluUHRy
PD4gZm9yIE5TR3JhcGhpY3NDb250ZXh0IHRvIGNsZWFuIHVwIGNvZGUgaW4KKyAgICAgICAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0uCisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6CisgICAgICAgIC0gSW5saW5lIGZy
b20gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1tLgorCisgICAgICAgICogcGxhdGZv
cm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElPUy5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbS4K
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIC0gSW1w
bGVtZW50IGJhc2VkIG9uIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbS4gIFVzZQor
ICAgICAgICAgIFVJR3JhcGhpY3N7R2V0Q3VycmVudCxQb3AsUHVzaH1Db250ZXh0KCkgZnVuY3Rp
b25zIGFkZGVkIHRvCisgICAgICAgICAgVUlLaXRTb2Z0TGluay5oLgorCisgICAgICAgICogcGxh
dGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbTogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
bW0uCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIC0gVXNlIG1fc2F2ZWRHcmFwaGljc0Nv
bnRleHQgaW5zdGVhZCBvZiBncmFwaGljc0NvbnRleHQgaW4gdGhlCisgICAgICAgICAgYm9keSBv
ZiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIC0gUmVtb3ZlIHNldC10by1uaWwvcmV0YWluIG9m
IG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCBzaW5jZQorICAgICAgICAgIHRoYXQgaXMgaGFuZGxl
ZCBieSBSZXRhaW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAtIFJl
bW92ZSByZWxlYXNlIG9mIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCBzaW5jZSB0aGF0IGlzCisg
ICAgICAgICAgaGFuZGxlZCBieSBSZXRhaW5QdHI8PiBub3cuCisgICAgICAgIChXZWJDb3JlOjpM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4dCk6IERlbGV0ZS4KKyAgICAgICAg
LSBJbmxpbmUgaW50byBoZWFkZXIgdG8gc2hhcmUgaW1wbGVtZW50YXRpb24gd2l0aCBpT1MuCisK
IDIwMjAtMDUtMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJvbSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9z
aXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDgwNWYxYjliM2RlMTBiYmFiYjA0ODNiMjVkYmQz
NTgyYzZkMjBmYzYuLmFmZTU1YTA4ZWU0OGQxZDZiZjljNWY2YzNmZTY2YzJiOWNiN2ZhZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA1LTA5ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRhcHQgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMTY2
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHBhbC9p
b3MvVUlLaXRTb2Z0TGluay5oOgorICAgICAgICAqIHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbToK
KyAgICAgICAgLSBBZGQgc29mdCBsaW5raW5nIG9mIFVJR3JhcGhpY3N7R2V0Q3VycmVudCxQb3As
UHVzaH1Db250ZXh0KCkKKyAgICAgICAgICBmdW5jdGlvbnMuCisKIDIwMjAtMDUtMDggIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQ2xvc2Ug
Y29ubmVjdGlvbnMgdG8gTGF1bmNoIFNlcnZpY2VzIGFmdGVyIHJldm9raW5nIGV4dGVuc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA5N2NmMGUxODk5Y2VmN2FiYWRlZjc2NzI1NWExMTI3ZGY1OGUxZmY1Li44MmQ3
MTYyZDg1M2I3ZDU4YmM2OTU4OWIwOGRlMDdkNDVmMWRlMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTA1LTA5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRhcHQgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGZvciBpT1MKKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMTY2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFBsYXRmb3JtSW1hZ2VUb0JpdG1hcCk6Cisg
ICAgICAgIC0gVXNlIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBmb3IgYm90aCBpT1MgYW5k
IE1hYyBjb2RlCisgICAgICAgICAgcGF0aHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAtIFN3aXRjaCBmcm9t
IFBMQVRGT1JNKE1BQykgYW5kIFBMQVRGT1JNKElPU19GQU1JWSkgdG8KKyAgICAgICAgICBVU0Uo
QVBQS0lUKSB0byBzZXBhcmF0ZSBwbGF0Zm9ybSBjb2RlLgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0Jp
dG1hcCk6IERlbGV0ZS4KKyAgICAgICAgKFdlYktpdDo6Y29udmVydENHSW1hZ2VUb0JpdG1hcCk6
IERlbGV0ZS4KKyAgICAgICAgLSBDb21iaW5lIE1hYy1zcGVjaWZpYyBjb252ZXJ0SW1hZ2VUb0Jp
dG1hcCgpIGFuZCBpT1Mtc3BlY2lmaWMKKyAgICAgICAgICBjb252ZXJ0Q0dJbWFnZVRvQml0bWFw
KCkgaW50byBhIHNpbmdsZSBtZXRob2QgdXNpbmcgRHJhZ0ltYWdlCisgICAgICAgICAgdHlwZSBh
bmQgc3BlY2lhbC1jYXNpbmcgb25lIGxpbmUgb2YgY29kZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6
ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6CisgICAgICAgIC0gQ29tYmluZSBpT1MgYW5kIE1hYyBtZXRo
b2RzIGludG8gYSBzaW5nZSBtZXRob2QuCisKIDIwMjAtMDUtMDggIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJv
bSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
aW9zL1VJS2l0U29mdExpbmsuaAppbmRleCAzYTM3ZWY1OGM4NWQyYmVmNTEzMjRjY2I4OTkwMDA1
NGQwOGY5NmVjLi4wYWRjMTkyMjkwZDVmZjFlYzllMTBiNmU2NWEwMTYxNDk5NjBlZTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCkBAIC02Nyw1ICs2Nyw4
IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0ludmVydENvbG9yc0VuYWJsZWQsIEJPT0ws
ICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBV
SUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQ
b3N0Tm90aWZpY2F0aW9uLCB2b2lkLCAoVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyBuLCBp
ZCBhcmd1bWVudCksIChuLCBhcmd1bWVudCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQsIENHQ29udGV4dFJlZiwg
KHZvaWQpLCAoKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJ
R3JhcGhpY3NQb3BDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlHcmFwaGljc1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dD
b250ZXh0UmVmIGNvbnRleHQpLCAoY29udGV4dCkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbSBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KaW5kZXggOWQ5NmQ1OWUzMWUxMzJmNmYxMzM2
NzM5NjhhYzhjYjRlNTJmZTViOC4uOTljODUwNjZkNjFhNDYyMGM4MDM2YTVlYjc4M2RjMGM0YzY1
MThmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGlu
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCkBA
IC02Nyw1ICs2Nyw4IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQs
IFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc0ludmVydENvbG9yc0Vu
YWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJs
ZWQsIEJPT0wsICh2b2lkKSwgKCksIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShQQUwsIFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLCB2b2lk
LCAoVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyBuLCBpZCBhcmd1bWVudCksIChuLCBhcmd1
bWVudCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBo
aWNzR2V0Q3VycmVudENvbnRleHQsIENHQ29udGV4dFJlZiwgKHZvaWQpLCAoKSkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJR3JhcGhpY3NQb3BDb250ZXh0LCB2
b2lkLCAodm9pZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtp
dCwgVUlHcmFwaGljc1B1c2hDb250ZXh0LCB2b2lkLCAoQ0dDb250ZXh0UmVmIGNvbnRleHQpLCAo
Y29udGV4dCkpCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBlNDhkNTZi
NjI1ZDhkNjlhZWEyMjE5ZWYxMzcxNGU1NjdiY2VkYTJlLi5mZjUxODkzNTgxZjA0YmM0M2NmODU2
N2MyOGRjOWNkNTYxZWM0YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzYyLDcg
KzM2Miw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL21hYy9E
cmFnRGF0YU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KICAgICBwbGF0
Zm9ybS9tYWMvS2V5RXZlbnRNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tCisgICAgcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dE1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9Mb2dnaW5nTWFjLm1tCiAgICAgcGxhdGZvcm0v
bWFjL01lZGlhUmVtb3RlU29mdExpbmsuY3BwCiAgICAgcGxhdGZvcm0vbWFjL05TU2Nyb2xsZXJJ
bXBEZXRhaWxzLm1tCkBAIC01MTYsNiArNTE2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAKICAgICBwbGF0Zm9ybS9jZi9SdW5Mb29wT2JzZXJ2ZXIu
aAogCisgICAgcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKICAg
ICBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCiAgICAgcGxh
dGZvcm0vY29jb2EvUGxhdGZvcm1WaWV3LmgKICAgICBwbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UuaApAQCAtNTc1LDcgKzU3Niw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogCiAgICAgcGxhdGZvcm0vbWFjL0R5bmFtaWNMaW5r
ZXJJbnRlcnBvc2luZy5oCiAgICAgcGxhdGZvcm0vbWFjL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVz
LmgKLSAgICBwbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKICAgICBw
bGF0Zm9ybS9tYWMvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oCiAgICAgcGxhdGZvcm0v
bWFjL05TU2Nyb2xsZXJJbXBEZXRhaWxzLmgKICAgICBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA3MWJhYjM4NjZhMTc5YTY5NWM3Njky
NTI1ODRmNzdjMmJjYjY0NjA2Li42MjNlMjgzN2FlMTE0YjU0MDJjMTY3NGI1ODc3MDYxNDMyODNi
NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQwNCw2ICs0MDQsNyBAQCBwbGF0Zm9y
bS9pb3MvTGVnYWN5VGlsZUdyaWQubW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlR3JpZFRpbGUu
bW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lUaWxlTGF5ZXIubW0KIHBsYXRmb3JtL2lvcy9MZWdhY3lU
aWxlTGF5ZXJQb29sLm1tCitwbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
SU9TLm1tCiBwbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tCiBwbGF0
Zm9ybS9pb3MvTG9jYWxpemVkRGV2aWNlTW9kZWwubW0KIHBsYXRmb3JtL2lvcy9Mb3dQb3dlck1v
ZGVOb3RpZmllcklPUy5tbQpAQCAtNDQ5LDcgKzQ1MCw3IEBAIHBsYXRmb3JtL21hYy9CbGFja2xp
c3RVcGRhdGVyLm1tCiBwbGF0Zm9ybS9tYWMvQ3Vyc29yTWFjLm1tIEBuby11bmlmeQogcGxhdGZv
cm0vbWFjL0tleUV2ZW50TWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBAbm8tdW5pZnkKLXBsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQubW0KK3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHRNYWMubW0KIHBsYXRmb3JtL21hYy9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tCiBw
bGF0Zm9ybS9tYWMvTG9nZ2luZ01hYy5tbQogcGxhdGZvcm0vbWFjL01lZGlhUmVtb3RlU29mdExp
bmsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjQzMTY3ZmZjNDFiYzdiMzgxNjk2YzVkNmU2NjFlMGRmYTA1ZmUxOS4uMDM1
YzU0NGZlY2JlNjRkZTkzNDg2MjM3MDAzNGM5YmFkZTgxNWYzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQyMyw3ICs1NDIz
LDcgQEAKIAkJMDY2Qzc3MkUwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2NkM3NzJG
MEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA2
RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzAz
MzREMDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDcwMzM0RDExNDU5RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhY2tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzAzMzREMjE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVHJhY2tFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NzY2LDYgKzc3NjYsNyBAQAogCQk0NEM5OTE4NTBGM0QxRUJFMDA1ODY2
NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsYmFyVGhlbWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRD
OTkxOUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRoZW1lSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
Qzk5MTlFMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRoZW1lSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NENBMjg0MzI0NUZDQTUwMDBDOTRDN0YgLyogTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NEQ4REE5ODEzOTU0NUJFMDAzMzdCNzUgLyogU1ZHTVBhdGhFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBTVkdNUGF0aEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NEQ4REE5QTEzOTU0NUNEMDAzMzdCNzUgLyogU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDREQUI1QUYxNUE2MjM1ODAw
OTdDMUU0IC8qIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4MjEsOCArMjA4MjIsNyBAQAogCQkJCUUxQkE2NkYw
MTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCAqLywKIAkJCQk5
MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyogS2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJRjQ0QTVG
NTcxRkVEMzgzMDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi8sCi0JCQkJ
MDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5o
ICovLAotCQkJCTA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQubW0gKi8sCisJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKIAkJCQk0NDU3NzVFNDIwNDcyRjczMDA4RENF
NUQgLyogTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oICovLAogCQkJCTQ0NTc3NUU5MjA0
NzMwM0IwMDhEQ0U1RCAvKiBMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLm1tICovLAogCQkJ
CTE0MDI2NDVEMEFGREMxOUIwMDU5MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovLApAQCAtMjMyODMs
NiArMjMyODMsNyBAQAogCQkJCUU0QjY1QTVEMTMyRkFEQjYwMDcwRTdCRSAvKiBMZWdhY3lUaWxl
TGF5ZXIubW0gKi8sCiAJCQkJRTRFMzlBRkExMzMwRUZBODAwM0FCMjc0IC8qIExlZ2FjeVRpbGVM
YXllclBvb2wuaCAqLywKIAkJCQlFNEUzOUFGQzEzMzBFRkM1MDAzQUIyNzQgLyogTGVnYWN5VGls
ZUxheWVyUG9vbC5tbSAqLywKKwkJCQk0NENBMjg0MzI0NUZDQTUwMDBDOTRDN0YgLyogTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tICovLAogCQkJCTFDNDNERTY4MjJBQjRCOEEwMDE1
MjdEOSAvKiBMb2NhbEN1cnJlbnRUcmFpdENvbGxlY3Rpb24uaCAqLywKIAkJCQkxQzQzREU2QTIy
QUI0QjhBMDAxNTI3RDkgLyogTG9jYWxDdXJyZW50VHJhaXRDb2xsZWN0aW9uLm1tICovLAogCQkJ
CUUzNUI5MDdDMjNGNjA2NzcwMDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5oICovLApA
QCAtMjM0NDQsNiArMjM0NDUsNyBAQAogCQkJCTdBMDlDRUYwMUYwMUQxRjcwMEU5M0JEQiAvKiBG
aWxlTW9uaXRvckNvY29hLm1tICovLAogCQkJCUE1Qzk3NENGMTE0ODVGRjEwMDY2RjJBQiAvKiBL
ZXlFdmVudENvY29hLmggKi8sCiAJCQkJQTVDOTc0RDAxMTQ4NUZGMTAwNjZGMkFCIC8qIEtleUV2
ZW50Q29jb2EubW0gKi8sCisJCQkJMDZFODFFRDYwQUI1RDVFOTAwQzg3ODM3IC8qIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCTFBNDgzMkIyMUE5NTNCQTYwMDhCNERGRSAv
KiBMb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gKi8sCiAJCQkJQzUzRDM5MzMxQzk3ODkyRDAwN0Yz
QUU5IC8qIE1JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSAqLywKIAkJCQlBMTlEOTM0OTFBQTExQjFF
MDBCNDZDMjQgLyogTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ2MjM2ZmIxY2ZkMmJhM2Y1MDI3MjhhYjI4MzUyMzc4
NzQwNmQwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKworI2lmIFVTRShBUFBLSVQpCitPQkpDX0NMQVNTIE5TR3JhcGhp
Y3NDb250ZXh0OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBjbGFz
cyBhdXRvbWF0aWNhbGx5IHNhdmVzIGFuZCByZXN0b3JlcyB0aGUgY3VycmVudCBOU0dyYXBoaWNz
Q29udGV4dCBmb3IKKy8vIGZ1bmN0aW9ucyB3aGljaCBjYWxsIG91dCBpbnRvIEFwcEtpdCBhbmQg
cmVseSBvbiB0aGUgY3VycmVudENvbnRleHQgYmVpbmcgc2V0CitjbGFzcyBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dCk7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYpOworICAgIFdFQkNPUkVfRVhQT1JUIH5M
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
KCkgeyByZXR1cm4gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsgfQor
cHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7Cisj
aWYgVVNFKEFQUEtJVCkKKyAgICBSZXRhaW5QdHI8TlNHcmFwaGljc0NvbnRleHQ+IG1fc2F2ZWRO
U0dyYXBoaWNzQ29udGV4dDsKKyNlbmRpZgorICAgIGJvb2wgbV9kaWRTZXRHcmFwaGljc0NvbnRl
eHQgeyBmYWxzZSB9OworfTsKKworY2xhc3MgQ29udGV4dENvbnRhaW5lciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5lcik7CitwdWJsaWM6CisgICAgQ29udGV4dENv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpCisgICAgewor
ICAgIH0KKworICAgIENHQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1cm4gbV9ncmFwaGljc0Nv
bnRleHQ7IH0KK3ByaXZhdGU6CisgICAgQ0dDb250ZXh0UmVmIG1fZ3JhcGhpY3NDb250ZXh0Owor
fTsKKworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0SU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dElP
Uy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lZThmMTMyMGZjNjEyZDNjYzVlNzAxMjk0OTBlYTQxOGM0MjcyZDQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dElPUy5tbQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKworI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVk
R3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBtX3NhdmVkR3JhcGhpY3ND
b250ZXh0LnNhdmUoKTsKKworICAgIGlmICghbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5oYXNQbGF0
Zm9ybUNvbnRleHQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkxvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBpcyBub3Qgc2V0dGluZyB0aGUgZ2xvYmFsIGNvbnRleHQgYmVjYXVzZSB0aGUg
cHJvdmlkZWQgR3JhcGhpY3NDb250ZXh0IGRvZXMgbm90IGhhdmUgYSBwbGF0Zm9ybSBjb250ZXh0
IChsaWtlbHkgZGlzcGxheSBsaXN0IHJlY29yZGluZykiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKKyAg
ICBpZiAoY2dDb250ZXh0ID09IFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBVSUdyYXBoaWNzUHVzaENvbnRleHQoY2dDb250ZXh0KTsKKyAgICBt
X2RpZFNldEdyYXBoaWNzQ29udGV4dCA9IHRydWU7Cit9CisKK0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgpCit7CisgICAgaWYgKG1fZGlk
U2V0R3JhcGhpY3NDb250ZXh0KQorICAgICAgICBVSUdyYXBoaWNzUG9wQ29udGV4dCgpOworCisg
ICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Cit9CisKK30KKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwZWJkNGUyYThmNWY2M2ZkYTIxMTQ3NzJmZTkxYTY0NmIzMGIxYzMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyAvZGV2L251
bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMu
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLSNpZiBVU0UoQVBQS0lUKQotCi1PQkpDX0NMQVNTIE5TR3Jh
cGhpY3NDb250ZXh0OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMgY2xhc3MgYXV0
b21hdGljYWxseSBzYXZlcyBhbmQgcmVzdG9yZXMgdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRl
eHQgZm9yCi0vLyBmdW5jdGlvbnMgd2hpY2ggY2FsbCBvdXQgaW50byBBcHBLaXQgYW5kIHJlbHkg
b24gdGhlIGN1cnJlbnRDb250ZXh0IGJlaW5nIHNldAotY2xhc3MgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQpOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+TG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCgpOwot
cHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7Ci0g
ICAgTlNHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dDsKLSAgICBib29s
IG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0OwotfTsKLQotY2xhc3MgQ29udGV4dENvbnRhaW5lciB7
Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5lcik7Ci1wdWJsaWM6Ci0g
ICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKLSAg
ICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0
KCkpCi0gICAgewotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1cm4g
bV9ncmFwaGljc0NvbnRleHQ7IH0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQqIG1fZ3JhcGhpY3NDb250ZXh0OwotfTsKLQotfQotCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjQ0NTM1
OGE3OTU2ZDg5OTBiYTgxN2U5NDg1NmNmYWEzZDBmNTE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKLQotI2lmIFVTRShBUFBL
SVQpCi0KLSNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzQ29udGV4dC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQotICAgIDogbV9z
YXZlZEdyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCi0gICAgLCBtX2RpZFNldEdyYXBo
aWNzQ29udGV4dChmYWxzZSkKLXsKLSAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotCi0gICAg
aWYgKCFncmFwaGljc0NvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgaXMgbm90IHNldHRpbmcgdGhl
IGdsb2JhbCBjb250ZXh0IGJlY2F1c2UgdGhlIHByb3ZpZGVkIEdyYXBoaWNzQ29udGV4dCBkb2Vz
IG5vdCBoYXZlIGEgcGxhdGZvcm0gY29udGV4dCAobGlrZWx5IGRpc3BsYXkgbGlzdCByZWNvcmRp
bmcpIik7Ci0gICAgICAgIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCA9IG5pbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0Nv
bnRleHQoKTsKLSAgICBpZiAoY2dDb250ZXh0ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdIENHQ29udGV4dF0pIHsKLSAgICAgICAgbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0
ID0gbmlsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zYXZlZE5TR3JhcGhpY3ND
b250ZXh0ID0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gcmV0YWluXTsKLSAg
ICBOU0dyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHRXaXRoQ0dDb250ZXh0OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgW05T
R3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5ld0NvbnRleHRdOwotICAgIG1fZGlk
U2V0R3JhcGhpY3NDb250ZXh0ID0gdHJ1ZTsKLX0KLQotTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKLXsKLSAgICBpZiAobV9kaWRTZXRH
cmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRD
b250ZXh0Om1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dF07Ci0gICAgICAgIFttX3NhdmVkTlNHcmFw
aGljc0NvbnRleHQgcmVsZWFzZV07Ci0gICAgfQotCi0gICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4
dC5yZXN0b3JlKCk7Ci19Ci0KLUNHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQ6OmNnQ29udGV4dCgpCi17Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRH
cmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgcmV0dXJuIGNnQ29udGV4dDsK
LX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0TWFjLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE0MWViNGFkODhjNDZiYmVjYzM0NzdiZWYzOTJkMjYxOTYxZjJlM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0TWFjLm1tCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCisKKyNpZiBVU0UoQVBQS0lUKQorCisjaW1wb3J0
IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICA6IG1fc2F2ZWRHcmFwaGljc0Nv
bnRleHQoZ3JhcGhpY3NDb250ZXh0KQoreworICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQuc2F2
ZSgpOworCisgICAgaWYgKCFtX3NhdmVkR3JhcGhpY3NDb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGlzIG5vdCBzZXR0aW5nIHRoZSBnbG9iYWwgY29udGV4dCBiZWNhdXNlIHRoZSBwcm92aWRlZCBH
cmFwaGljc0NvbnRleHQgZG9lcyBub3QgaGF2ZSBhIHBsYXRmb3JtIGNvbnRleHQgKGxpa2VseSBk
aXNwbGF5IGxpc3QgcmVjb3JkaW5nKSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHRoaXMtPmNnQ29udGV4dCgpOworICAgIGlmIChjZ0Nv
bnRleHQgPT0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gQ0dDb250ZXh0XSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0ID0gW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsKKyAgICBOU0dyYXBoaWNzQ29udGV4dCogbmV3
Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQ0dDb250ZXh0
OmNnQ29udGV4dCBmbGlwcGVkOllFU107CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0Om5ld0NvbnRleHRdOworICAgIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0ID0gdHJ1
ZTsKK30KKworTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0KCkKK3sKKyAgICBpZiAobV9kaWRTZXRHcmFwaGljc0NvbnRleHQpCisgICAgICAg
IFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDptX3NhdmVkTlNHcmFwaGljc0Nv
bnRleHQuZ2V0KCldOworCisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Cit9
CisKK30KKworI2VuZGlmIC8vIFVTRShBUFBLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGIyNmVkZDlmMGE1MDNmNjVl
NjRjZGRjZjc3ZDU2NTllZDlhNzQyODEuLjIzMzc0YTJkMWNjMjVmYzUwMmZjMjkwY2FhMzkxYWEw
YmI2ZGNmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC0zODUsMTQgKzM4NSwxMyBAQCBzdGF0aWMgUmVmUHRyPFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UGxhdGZvcm1JbWFnZVRvQml0bWFwKENvY29hSW1h
Z2UgKgogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAorICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQoKmdyYXBoaWNz
Q29udGV4dCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBVSUdyYXBoaWNzUHVzaENv
bnRleHQoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgW2ltYWdlIGRy
YXdJblJlY3Q6Q0dSZWN0TWFrZSgwLCAwLCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAt
PnNpemUoKS5oZWlnaHQoKSldOwotICAgIFVJR3JhcGhpY3NQb3BDb250ZXh0KCk7CiAjZWxpZiBV
U0UoQVBQS0lUKQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBzYXZlZENvbnRleHQo
KmdyYXBoaWNzQ29udGV4dCk7CiAgICAgW2ltYWdlIGRyYXdJblJlY3Q6TlNNYWtlUmVjdCgwLCAw
LCBiaXRtYXAtPnNpemUoKS53aWR0aCgpLCBiaXRtYXAtPnNpemUoKS5oZWlnaHQoKSkgZnJvbVJl
Y3Q6TlNaZXJvUmVjdCBvcGVyYXRpb246TlNDb21wb3NpdGluZ09wZXJhdGlvblNvdXJjZU92ZXIg
ZnJhY3Rpb246MSByZXNwZWN0RmxpcHBlZDpZRVMgaGludHM6bmlsXTsKICNlbmRpZgorCiAgICAg
cmV0dXJuIGJpdG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDMw
YzZmZmUyM2YxZTQ5ZjE1ZjY2ODM4YjY4NDFiNTY2MmM3ZWVmMTUuLmQ1ZDMzMThiNDE3ZTQ1MThh
N2JmZjRjMmZmNmM4ZjcwZTVjYzQ3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDMsNiArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJj
aGl2ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CkBAIC01OCw5ICs1OSwxMyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIFBMQVRG
T1JNKE1BQykKKyNpZiBVU0UoQVBQS0lUKQordXNpbmcgRHJhZ0ltYWdlID0gTlNJbWFnZSAqOwor
I2Vsc2UKK3VzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CisjZW5kaWYKIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdl
LCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCitzdGF0aWMgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERyYWdJbWFnZSBpbWFnZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwogICAgIGJpdG1hcENvbmZpZ3VyYXRp
b24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5G
cmFtZSgpLnZpZXcoKSk7CkBAIC03MiwyNyArNzcsMjYgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRT
aXoKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBSZXRhaW5QdHI8TlNHcmFwaGljc0NvbnRleHQ+IHNhdmVkQ29udGV4dCA9IFtOU0dyYXBo
aWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpb
TlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpncmFwaGlj
c0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGZsaXBwZWQ6WUVTXV07Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IHNhdmVkQ29udGV4dCgqZ3JhcGhpY3NDb250ZXh0KTsKKyNpZiBVU0UoQVBQS0lUKQogICAgIFtp
bWFnZSBkcmF3SW5SZWN0Ok5TTWFrZVJlY3QoMCwgMCwgYml0bWFwLT5zaXplKCkud2lkdGgoKSwg
Yml0bWFwLT5zaXplKCkuaGVpZ2h0KCkpIGZyb21SZWN0Ok5TWmVyb1JlY3Qgb3BlcmF0aW9uOk5T
Q29tcG9zaXRpbmdPcGVyYXRpb25Tb3VyY2VPdmVyIGZyYWN0aW9uOjEgcmVzcGVjdEZsaXBwZWQ6
WUVTIGhpbnRzOm5pbF07Ci0KLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRl
eHQ6c2F2ZWRDb250ZXh0LmdldCgpXTsKKyNlbHNlCisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKSwgaW1hZ2UpOworI2VuZGlmCiAKICAgICByZXR1cm4gYml0
bWFwOwogfQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQotewot
fQotCiB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0
YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lKQogewogICAgIGF1dG8mIGltYWdlID0gZHJhZ0l0ZW0u
aW1hZ2U7CisKKyNpZiBVU0UoQVBQS0lUKQogICAgIEludFNpemUgYml0bWFwU2l6ZShbaW1hZ2Uu
Z2V0KCkgc2l6ZV0pOwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IGNvbnZl
cnRJbWFnZVRvQml0bWFwKGltYWdlLmdldCgpLmdldCgpLCBiaXRtYXBTaXplLCBmcmFtZSk7Cisj
ZWxzZQorICAgIEludFNpemUgYml0bWFwU2l6ZShDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCku
Z2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpLmdldCgpKSk7CisjZW5kaWYKKyAg
ICBhdXRvIGJpdG1hcCA9IGNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcChpbWFnZS5nZXQoKS5nZXQo
KSwgYml0bWFwU2l6ZSwgZnJhbWUpOwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoIWJpdG1hcCB8fCAhYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTAxLDYgKzEwNSwxNSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmIGZyYW1lKQog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZHJhZ0l0
ZW0sIGhhbmRsZSkpOwogfQogCit2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERy
YWcoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgbV9wYWdlLT5kaWRDb25jbHVk
ZUVkaXREcmFnKCk7CisjZW5kaWYKK30KKworI2lmIFVTRShBUFBLSVQpCisKIHN0YXRpYyBXZWJD
b3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBh
dXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKQEAgLTE3MSw0MSArMTg0LDcgQEAg
dm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlSGFu
ZGxlLCBpbWFnZVNpemUsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCBTdHJpbmcoW1tyZXNw
b25zZSBVUkxdIGFic29sdXRlU3RyaW5nXSksIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKSwg
YXJjaGl2ZUhhbmRsZSwgYXJjaGl2ZVNpemUpKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0KLXN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0Q0dJbWFnZVRvQml0bWFwKENHSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKLXsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNv
bG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUo
KS52aWV3KCkpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFVJR3JhcGhpY3NQdXNoQ29udGV4dChncmFwaGlj
c0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpLCBpbWFnZSk7Ci0gICAgVUlHcmFwaGljc1BvcENvbnRleHQo
KTsKLSAgICByZXR1cm4gYml0bWFwOwotfQotCi12b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJh
ZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJiBm
cmFtZSkKLXsKLSAgICBhdXRvJiBpbWFnZSA9IGRyYWdJdGVtLmltYWdlOwotCi0gICAgSW50U2l6
ZSBiaXRtYXBTaXplKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKS5nZXQoKSksIENHSW1hZ2VH
ZXRIZWlnaHQoaW1hZ2UuZ2V0KCkuZ2V0KCkpKTsKLSAgICBhdXRvIGJpdG1hcCA9IGNvbnZlcnRD
R0ltYWdlVG9CaXRtYXAoaW1hZ2UuZ2V0KCkuZ2V0KCksIGJpdG1hcFNpemUsIGZyYW1lKTsKLSAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCFiaXRtYXAgfHwgIWJp
dG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFn
ZS0+d2lsbFN0YXJ0RHJhZygpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTdGFydERyYWcoZHJhZ0l0ZW0sIGhhbmRsZSkpOwotfQorI2Vsc2UKIAogdm9pZCBXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIEZyYW1lKikKIHsKQEAgLTIxMywxMiArMTkyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
RWxlbWUKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoKlBh
c3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKCksIGVsZW1lbnQsIHVybCwgbGFiZWwpOwog
fQogCi12b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQotewotICAgIG1f
cGFnZS0+ZGlkQ29uY2x1ZGVFZGl0RHJhZygpOwotfQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>