<?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>193568</bug_id>
          
          <creation_ts>2019-01-18 03:20:23 -0800</creation_ts>
          <short_desc>Switch remaining UIKit soft-linking in WebCore, WebKitLegacy over to UIKitSoftLink.{cpp,h}</short_desc>
          <delta_ts>2019-01-18 15:42:08 -0800</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>WebKit Local Build</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=141870</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>
          
          <blocked>141625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495783</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 03:20:23 -0800</bug_when>
    <thetext>Switch remaining UIKit soft-linking in WebCore over to UIKitSoftLink.{cpp,h}.

This gets rid of 16 instances of duplicate soft-linking code for UIKit.framework.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495784</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-18 03:23:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/47381130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495793</commentid>
    <comment_count>2</comment_count>
      <attachid>359472</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 04:24:19 -0800</bug_when>
    <thetext>Created attachment 359472
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495794</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 04:25:14 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #0)
&gt; Switch remaining UIKit soft-linking in WebCore over to UIKitSoftLink.{cpp,h}.
&gt; 
&gt; This gets rid of 16 instances of duplicate soft-linking code for
&gt; UIKit.framework.

Now 17 instances because I fixed WebView.mm in WebKitLegacy, too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495859</commentid>
    <comment_count>4</comment_count>
      <attachid>359491</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 08:15:58 -0800</bug_when>
    <thetext>Created attachment 359491
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495993</commentid>
    <comment_count>5</comment_count>
      <attachid>359491</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 12:42:05 -0800</bug_when>
    <thetext>Comment on attachment 359491
Patch v2

Clearing flags on attachment: 359491

Committed r240168: &lt;https://trac.webkit.org/changeset/240168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495994</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 12:42:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496002</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 13:17:15 -0800</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #5)
&gt; Comment on attachment 359491 [details]
&gt; Patch v2
&gt; 
&gt; Clearing flags on attachment: 359491
&gt; 
&gt; Committed r240168: &lt;https://trac.webkit.org/changeset/240168&gt;

Follow-up build fix:

Committed r240169: &lt;https://trac.webkit.org/changeset/240169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496071</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 15:42:08 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #7)
&gt; (In reply to WebKit Commit Bot from comment #5)
&gt; &gt; Comment on attachment 359491 [details]
&gt; &gt; Patch v2
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 359491
&gt; &gt; 
&gt; &gt; Committed r240168: &lt;https://trac.webkit.org/changeset/240168&gt;
&gt; 
&gt; Follow-up build fix:
&gt; 
&gt; Committed r240169: &lt;https://trac.webkit.org/changeset/240169&gt;

A second follow-up build fix:

Committed r240183: &lt;https://trac.webkit.org/changeset/240183&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359472</attachid>
            <date>2019-01-18 04:24:19 -0800</date>
            <delta_ts>2019-01-18 08:15:57 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-193568-20190118042418.patch</filename>
            <type>text/plain</type>
            <size>77198</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVmOGU0ODVjOGJiM2Yw
Y2QxNDJiYmY5NDViMjNmNDcxMTc3YmQxOS4uZjE1OTc5NjUwYTFmYTRiM2YyODc2ZWFlMTBlNGJj
ZWY2NjBlODBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDE5LTAxLTE4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHJlbWFpbmlu
ZyBVSUtpdCBzb2Z0LWxpbmtpbmcgaW4gV2ViQ29yZSwgV2ViS2l0TGVnYWN5IG92ZXIgdG8gVUlL
aXRTb2Z0TGluay57Y3BwLGh9CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xOTM1Njg+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4MTEzMD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGRvZXMgdGhlIGZvbGxvd2luZzoKKyAg
ICAgICAgLSBSZW1vdmVzIGxvY2FsIHNvZnQtbGlua2luZyBvZiBVSUtpdC4KKyAgICAgICAgLSBT
d2l0Y2hlcyB0byB1c2luZyBQQUwgZnVuY3Rpb25zIGZvciBzb2Z0LWxpbmtpbmcuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OiBBZGQgNCBzb3VyY2UgZmlsZXMgdG8gVW5pZmllZFNvdXJj
ZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUg
NCBzb3VyY2VzIGZpbGVzCisgICAgICAgIGZyb20gV2ViQ29yZSB0YXJnZXQgbm93IHRoYXQgdGhl
eSBhcmUgaW4gVW5pZmllZFNvdXJjZXMuCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EaWN0aW9u
YXJ5TG9va3VwLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbTog
TW92ZSBTUEkgdG8gVUlLaXRTUEkuaC4gUmVtb3ZlCisgICAgICAgIGRlY2xhcmF0aW9ucyBpbiBw
dWJsaWMgaGVhZGVycy4KKyAgICAgICAgKF9mb250Rm9yTmFtZUFuZFNpemUpOiBDaGFuZ2UgdXNl
IG9mIGdldFVJRm9udENsYXNzKCkgdG8KKyAgICAgICAgUGxhdGZvcm1Gb250Q2xhc3MuCisgICAg
ICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOiBBZGQgY2FzdCBoZXJlIHNpbmNl
IGNvbXBpbGVyCisgICAgICAgIHRob3VnaHQgYGNvbG9yYCB3YXMgYSBgQ0lDb2xvciAqYCBvYmpl
Y3QuCisgICAgICAgICogcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6ZGVmYXVsdFRleHRBdXRvc2l6aW5nRW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW06Cisg
ICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBpbml0V2l0aENhbGxiYWNrOl0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpleGVybmFsRGV2aWNl
RGlzcGxheU5hbWVGb3JQbGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93TGV0dGVycHJlc3Nl
ZEdseXBoc1dpdGhBZHZhbmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXNjYWRl
Rm9yU3lzdGVtRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVEcmFnSW1hZ2VGb3JDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0Q29sb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
SU9TOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjppc0NsYXNzaWMpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDbGFzc2ljUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xhc3Np
Y1Bob25lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbToK
KyAgICAgICAgKC1bV2ViVmFsaWRhdGlvbkJ1YmJsZVRhcFJlY29nbml6ZXIgaW5pdFdpdGhQb3Bv
dmVyQ29udHJvbGxlcjpdKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU6OlZh
bGlkYXRpb25CdWJibGUpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZTo6c2hv
dyk6CisgICAgICAgIChXZWJDb3JlOjpmYWxsYmFja1ZpZXdDb250cm9sbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW06CisgICAgICAg
IChjbGVhclVJQ29sb3IpOgorICAgICAgICAoYWxsb2NXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5
ZXJMYXllclZpZXdJbnN0YW5jZSk6CisgICAgICAgIChXZWJBVlBsYXllckxheWVyVmlld192aWRl
b1ZpZXcpOgorICAgICAgICAoZmFsbGJhY2tWaWV3Q29udHJvbGxlcik6CisgICAgICAgIChWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1cCk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1dlYkV2ZW50Lm1tOgorICAgICAgICAoK1tXZWJFdmVudCBtb2RpZmllckZsYWdzXSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW06CisgICAg
ICAgIChhbGxMb2FkYWJsZUNsYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgIChWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06IEFkZCBtaXNzaW5nIGhlYWRlcgorICAg
ICAgICBhZnRlciB1bmlmaWVkIHNvdXJjZXMgd2VyZSB1cGRhdGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRTaXplQ2F0
ZWdvcnlEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OlJlbmRl
clRoZW1lSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpjb250ZW50U2l6
ZUNhdGVnb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Db2xv
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50QWN0aW9uQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6YXR0YWNobWVudFRpdGxlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6
YXR0YWNobWVudFN1YnRpdGxlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6aWNvbkZvckF0dGFj
aG1lbnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gY29uc3QpOgorCiAyMDE5LTAx
LTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgSW50ZXJuYWwgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYzFhM2Y2YmE5NzRk
ZDg5OTQ5NDI3Yjc4M2MxY2FiMDJlNzgxMzY0OC4uMmNjZWI1MjY0NGE3ZTRlNjA5NDJiMWYzYmY4
OThmYzYxZGYzMTdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTkt
MDEtMTggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0
Y2ggcmVtYWluaW5nIFVJS2l0IHNvZnQtbGlua2luZyBpbiBXZWJDb3JlLCBXZWJLaXRMZWdhY3kg
b3ZlciB0byBVSUtpdFNvZnRMaW5rLntjcHAsaH0KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzE5MzU2OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MzgxMTMwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLmg6CisgICAgICAgICogcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tOgorICAgICAgICAt
IEFkZCBjb25zdGFudHMsIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IHdlcmUgcHJldmlvdXNs
eQorICAgICAgICAgIHNvZnQtbGlua2VkIGluIHNlcGFyYXRlIHNvdXJjZSBmaWxlcy4KKyAgICAg
ICAgLSBVSUFjY2Vzc2liaWxpdHlBbm5vdW5jZW1lbnROb3RpZmljYXRpb24gaXMgZGVjbGFyZWQg
YXMgYQorICAgICAgICAgIHZhcmlhYmxlIGJlY2F1c2UgdGhpcyBjb25zdGFudCBpcyBub3QgbWFy
a2VkIGFzIGBjb25zdGAgaW4KKyAgICAgICAgICBVSUtpdC4KKyAgICAgICAgKiBwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oOgorICAgICAgICAtIE1vdmUgU1BJIGRlY2xhcmF0aW9ucyBmcm9tIEhUTUxD
b252ZXJ0ZXIubW0gdG8gaGVyZS4KKwogMjAxOS0wMS0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkMTQ2YmViZWE3ZWE2ZDA2NjhhMzYwMTcwMzM1MGMy
ZjY1Nzg5MTg3Li5hNzJjZDc3YjQ0ZDUxNjJmOTVkYTA2ODA3NDYwM2U2ZTg3NmI2NWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDEtMTggIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggcmVtYWlu
aW5nIFVJS2l0IHNvZnQtbGlua2luZyBpbiBXZWJDb3JlLCBXZWJLaXRMZWdhY3kgb3ZlciB0byBV
SUtpdFNvZnRMaW5rLntjcHAsaH0KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE5MzU2
OD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MzgxMTMwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAtIFJlbW92ZSB1bnVzZWQgc29mdC1saW5raW5nIG1hY3Jvcy4KKyAgICAgICAgKC1bV2Vi
VUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxl
Ol0pOgorICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGluaXRXaXRoSW1hZ2U6c2Nh
bGU6XSk6CisgICAgICAgIC0gVXBkYXRlIHRvIHVzZSBleHBvcnRlZCBQQUwgZnVuY3Rpb25zLgor
CiAyMDE5LTAxLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVkdWNlIHVzZSBvZiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbiBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmgKaW5kZXggNTUyMTk0NGNlZDAzMWQ5MWIwOTdhZmM5ZjkyMmY1MTQ3ZjgzYzg3
NS4uMjFmNDE0Yjc3YmM2ZDM3YTkwOGQ2MTgxOWU5NWUzM2YzNmRlYzk0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaApAQCAtMzAsMTUgKzMwLDM5IEBACiAj
aW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CiAKK0BjbGFzcyBDVUlDYXRhbG9nOworCiBTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9IRUFE
RVIoUEFMLCBVSUtpdCkKIAorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBVSUtp
dCwgVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24sIE5TTm90aWZpY2F0
aW9uTmFtZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbk5h
bWUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbk5hbWUpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlkRW50
ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbk5hbWUpCitTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFVJS2l0LCBVSUNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRD
aGFuZ2VOb3RpZmljYXRpb24sIE5TTm90aWZpY2F0aW9uTmFtZSkKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJRm9udFRleHRTdHlsZUNhbGxvdXQsIFVJRm9udFRl
eHRTdHlsZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJVGV4
dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwsIFVJV2luZG93TGV2ZWwpCiBTT0ZU
X0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIE5TUGFyYWdyYXBoU3R5bGUpCiBTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIE5TU2hhZG93KQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBOU1RleHRMaXN0KQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSUFw
cGxpY2F0aW9uKQotU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSVNjcmVlbikKIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlDb2xvcikKK1NPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgVUlEZXZpY2UpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFVJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFVJRm9udCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlHcmFw
aGljc0ltYWdlUmVuZGVyZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJSW1h
Z2UpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJTGFiZWwpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIFVJUGFzdGVib2FyZCkKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgVUlTY3JlZW4pCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJ
VGFwR2VzdHVyZVJlY29nbml6ZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFVJ
VmlldykKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlWaWV3Q29udHJvbGxlcikK
K1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIFVJS2l0LCBfVUlLaXRHZXRUZXh0RWZmZWN0c0NhdGFsb2cs
IENVSUNhdGFsb2cgKiwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PTCwgKHZv
aWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNj
ZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVk
dWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKK1NPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24sIHZv
aWQsIChVSUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zIG4sIGlkIGFyZ3VtZW50KSwgKG4sIGFy
Z3VtZW50KSkKK1NPRlRfTElOS19WQVJJQUJMRV9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQWNj
ZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlvbiwgVUlBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9ucykKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lv
cy9VSUtpdFNvZnRMaW5rLm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0
TGluay5tbQppbmRleCAxMGUwMGJiNDE3NDExZDE3ZGU0NTFjNzU5MWM3Zjk2OGMzZGRiYzVkLi4x
NDNiOGViOTAwZjVjZGVjNDRlN2ZlMjQ5ZWRjYWI2Nzk0ZjBjN2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KQEAgLTMwLDE1ICszMCwzOSBAQAogI2lt
cG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5o
PgogCitAY2xhc3MgQ1VJQ2F0YWxvZzsKKwogU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNF
KFBBTCwgVUlLaXQpCiAKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVUlLaXQs
IFVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlv
bk5hbWUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiwgTlNOb3RpZmljYXRpb25OYW1l
KQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiwgTlNOb3RpZmljYXRpb25OYW1lKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZE5vdGlmaWNhdGlvbiwgTlNOb3RpZmljYXRpb25OYW1lKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hh
bmdlTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbk5hbWUpCitTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUZvbnRUZXh0U3R5bGVDYWxsb3V0LCBVSUZvbnRUZXh0
U3R5bGUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSVRleHRF
ZmZlY3RzQmVuZWF0aFN0YXR1c0JhcldpbmRvd0xldmVsLCBVSVdpbmRvd0xldmVsKQogU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgTlNQYXJhZ3JhcGhTdHlsZSkKIFNPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIE5TU2hhZG93KQogU09GVF9MSU5LX0NM
QVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgTlNUZXh0TGlzdCkKIFNPRlRfTElOS19DTEFTU19G
T1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQXBwbGljYXRpb24pCitTT0ZUX0xJTktfQ0xBU1NfRk9S
X1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFVJS2l0LCBVSUNvbG9yLCBQQUxfRVhQT1JUKQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlEZXZpY2UpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSURvY3VtZW50SW50ZXJhY3Rpb25Db250cm9s
bGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlGb250KQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlHcmFwaGljc0ltYWdlUmVuZGVy
ZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFVJS2l0LCBV
SUltYWdlLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtp
dCwgVUlMYWJlbCkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJUGFz
dGVib2FyZCkKIFNPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJU2NyZWVu
KQotU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlDb2xvcikKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJVGFwR2VzdHVyZVJlY29nbml6ZXIp
CitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSVZpZXcpCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSVZpZXdDb250cm9sbGVyKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlXaW5kb3cpCitTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBfVUlLaXRHZXRUZXh0RWZmZWN0c0NhdGFsb2cs
IENVSUNhdGFsb2cgKiwgKHZvaWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCwgQk9PTCwgKHZv
aWQpLCAoKSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQWNj
ZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3JzRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSwgUEFMX0VYUE9S
VCkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJp
bGl0eVBvc3ROb3RpZmljYXRpb24sIHZvaWQsIChVSUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25z
IG4sIGlkIGFyZ3VtZW50KSwgKG4sIGFyZ3VtZW50KSkKK1NPRlRfTElOS19WQVJJQUJMRV9GT1Jf
U09VUkNFKFBBTCwgVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlv
biwgVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucykKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGE0Mjc5MTNmNDc3NDM4NTNlNDY0N2I1
MmVjNjZkODI2MWJmZTViZjkuLjM1OWVmNDMyMTVmZWQ4YmFjMWQ1OWMzMzBmYzgxZmVmMTNlY2Yz
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0zMiwx
MCArMzIsMTIgQEAgV1RGX0VYVEVSTl9DX0VORAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKICNpbXBvcnQgPFVJS2l0L05TUGFyYWdyYXBoU3R5bGVfUHJpdmF0ZS5oPgorI2ltcG9ydCA8
VUlLaXQvTlNUZXh0QXR0YWNobWVudF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9OU1RleHRM
aXN0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uU2NlbmVDb25zdGFudHMuaD4KICNp
bXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25fUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlD
b2xvcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSUZvbnRfUHJpdmF0ZS5oPgogI2ltcG9y
dCA8VUlLaXQvVUlJbnRlcmZhY2VfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5f
UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CkBA
IC02Niw2ICs2OCwxNSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSUFwcGxpY2F0aW9u
U2NlbmVDbGFzc2ljTW9kZSkgewogICAgIFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQgPSA0LAogfTsKIAordHlwZWRlZiBlbnVtIHsKKyAgICBVSUZvbnRUcmFpdFBsYWlu
ICAgICAgID0gMHgwMDAwMDAwMCwKKyAgICBVSUZvbnRUcmFpdEl0YWxpYyAgICAgID0gMHgwMDAw
MDAwMSwgLy8gMSA8PCAwCisgICAgVUlGb250VHJhaXRCb2xkICAgICAgICA9IDB4MDAwMDAwMDIs
IC8vIDEgPDwgMQorICAgIFVJRm9udFRyYWl0VGhpbiAgICAgICAgPSAoMSA8PCAyKSwKKyAgICBV
SUZvbnRUcmFpdExpZ2h0ICAgICAgID0gKDEgPDwgMyksCisgICAgVUlGb250VHJhaXRVbHRyYUxp
Z2h0ICA9ICgxIDw8IDQpCit9IFVJRm9udFRyYWl0OworCiBAaW50ZXJmYWNlIE5TUGFyYWdyYXBo
U3R5bGUgKCkKIC0gKE5TQXJyYXkgKil0ZXh0TGlzdHM7CiBAZW5kCkBAIC03NCw2ICs4NSwxMCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9k
ZSkgewogLSAodm9pZClzZXRUZXh0TGlzdHM6KE5TQXJyYXkgKil0ZXh0TGlzdHM7CiBAZW5kCiAK
K0BpbnRlcmZhY2UgTlNUZXh0QXR0YWNobWVudCAoKQorLSAoaWQpaW5pdFdpdGhGaWxlV3JhcHBl
cjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyOworQGVuZAorCiBAaW50ZXJmYWNlIE5TVGV4
dExpc3QgOiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFya2VyRm9ybWF0OihO
U1N0cmluZyAqKWZvcm1hdCBvcHRpb25zOihOU1VJbnRlZ2VyKW1hc2s7CiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbWFya2VyRm9ybWF0OwpAQCAtOTgsNiArMTEzLDE0IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2Rl
KSB7CiAKICsgKFVJQ29sb3IgKilfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldp
dGhDR0NvbG9yOihDR0NvbG9yUmVmKWNnQ29sb3I7CiAKKy0gKENHRmxvYXQpYWxwaGFDb21wb25l
bnQ7CisKK0BlbmQKKworQGludGVyZmFjZSBVSUZvbnQgKCkKKworKyAoVUlGb250ICopZm9udFdp
dGhGYW1pbHlOYW1lOihOU1N0cmluZyAqKWZhbWlseU5hbWUgdHJhaXRzOihVSUZvbnRUcmFpdCl0
cmFpdHMgc2l6ZTooQ0dGbG9hdClmb250U2l6ZTsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFVJU2Ny
ZWVuICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyMDA1YzlhOTJlMTZmZTcxNzFmN2E3
YmJkZjRiN2JiZGZkYTViOWU3Li5lMTIwZWNmMWU0MTY4YjljNTgyMjJhYTlhMzcwNGNlZDcxMTZk
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQxNSwxNSArNDE1LDE1IEBAIHBsYXRm
b3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5tbQogcGxhdGZvcm0vaW9zL1Njcm9sbFZpZXdJT1Mu
bW0KIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAogcGxhdGZvcm0vaW9zL1N5c3RlbU1l
bW9yeUlPUy5jcHAKLXBsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbSBAbm8tdW5pZnkKK3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbQogcGxhdGZvcm0vaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxl
cklPUy5jcHAKLXBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gQG5vLXVuaWZ5Ci1wbGF0Zm9y
bS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KK3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxlSU9TLm1tCiBwbGF0Zm9y
bS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gQG5vLXVuaWZ5CiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCiBwbGF0Zm9ybS9pb3MvV2ViQmFja2dyb3Vu
ZFRhc2tDb250cm9sbGVyLm1tCiBwbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0K
LXBsYXRmb3JtL2lvcy9XZWJFdmVudC5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2lvcy9XZWJFdmVu
dC5tbQogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gQG5vLXVuaWZ5
CiBwbGF0Zm9ybS9pb3MvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCiBwbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2U0OWZkZjNl
NDE5OTcwOTE2MTIxNjhiZTM1ZDUxYjhjYmNmM2I2ZS4uNDQ2ZDY4MjFiOWJiMGE0MGZlNWNmOWJm
ZGIxY2FlYzg5YmNjMmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODA5LDcgKzgwOSw2IEBACiAJCTJEOEZFQkREMTQzRTNF
RjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4RkVCREIxNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Ny
b3NzZmFkZVZhbHVlLmggKi87IH07CiAJCTJEOTA2NjA3MEJFMTQxRDQwMDk1Njk5OCAvKiBSZW5k
ZXJMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIFJlbmRlckxheW91dFN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ5MkE3OUEy
MTM0QUQ3OTAwRjQ5M0ZEIC8qIFF1aWNrTG9va1NvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzOTE3RkQxQTkxQjJGODAwNkUwNEYyIC8q
IFF1aWNrTG9va1NvZnRMaW5rLm1tICovOyB9OwotCQkyRDkyQTc5RDIxMzRBRjk1MDBGNDkzRkQg
LyogVXNlckFnZW50SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTNBRjlEODMyMDMyNTY5MTAwNkNBRDA2IC8qIFVzZXJBZ2VudElPUy5tbSAqLzsg
fTsKIAkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTNB
RUUxMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggKi87IH07
CiAJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQUUzMkMx
OURDQUY2MDAwRTAwMkQyIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgKi87IH07CiAJCTJE
OTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUFFMzJEMTlEQ0FGNjAw
MEUwMDJEMiAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCAqLzsgfTsKQEAgLTEyMjksNyArMTIy
OCw2IEBACiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhC
RjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4
NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRo
ZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxOUQw
RjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07Ci0JCTQ0Qzk5MUEwMEYzRDIxMEUw
MDU4NjY3MCAvKiBUaGVtZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0Qzk5MTlFMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5tbSAqLzsg
fTsKIAkJNDREQUI1QjIxNUE2MjM1ODAwOTdDMUU0IC8qIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1v
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDREQUI1
QjAxNUE2MjM1ODAwOTdDMUU0IC8qIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oICovOyB9Owog
CQk0NTBDRUJGMTE1MDczQkJFMDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUwQ0VCRUYxNTA3M0JCRTAw
MkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0NTEyNTAyMzE1RENFMzdEMDAyRjg0RTIgLyogU3BpbkJ1
dHRvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1MTI1MDIxMTVEQ0UzN0QwMDJGODRFMiAvKiBTcGluQnV0dG9uRWxlbWVudC5oICovOyB9
OwpAQCAtMjQzNiw3ICsyNDM0LDYgQEAKIAkJODM3OTM2M0YxRkJCQjBCNDAwQzgwMjNDIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4Mzc5MzYzRTFGQkJCMEE1MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNs
aWVudERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzk2NENF
MUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovOyB9OwogCQk4
MzdBODAxMzFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEy
NzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKLQkJODM3QjdEMjAx
REMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMg
LyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLzsgfTsKIAkJODM3RDQ2MjcxRkEyQThDRTAwNTRF
MUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdENDYyNTFGQTJBOEM1MDA1NEUxRkEgLyog
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdl
RXZlbnQuaCAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4NkE5
NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9OwpAQCAtNDIwMiw3ICs0
MTk5LDYgQEAKIAkJQ0UwOEMzRDIxNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMDhDM0QwMTUyQjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJQ0UxODY2NDUxRjcyRTVC
NDAwQTBDQUI2IC8qIE1hcmtlZFRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMTg2NjQzMUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UyODQ5
ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4
NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMu
aCAqLzsgfTsKLQkJQ0U0RUNDRDYyMTVBQTgxMjAwNTU4QzQxIC8qIFdlYkV2ZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RUExMDQ4NDM2
RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tICovOyB9OwogCQlDRTVGQTI1NTIwOUU0OEM1MDA1MUQ3
MDAgLyogQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTVGQTI1MzIwOUU0OEM1MDA1MUQ3MDAgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNzk5Rjk4MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc5OUY5NjFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdC5oICovOyB9OwpAQCAtMzI4MTQsNyArMzI4MTAsNiBAQAog
CQkJCTk3NTlFOTQ1MTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMUU3MzQ3MTY3QkM3OEUwMDlBODg1RCAvKiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0NEM5OTFBMDBGM0Qy
MTBFMDA1ODY2NzAgLyogVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MURGNkQ4MDBC
OTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
MzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3MDMzNEQzMTQ1OUZGQUQwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzM0MTIsMTIgKzMzNDA3LDEwIEBACiAJCQkJMkQ4QjkyRkQyMDNEMTNFMTAwOUM4NjhG
IC8qIFVuaWZpZWRTb3VyY2U1MjguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4QjkyRkUyMDNE
MTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U1MjkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ4QjkyRkYyMDNEMTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U1MzAuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMkQ5MkE3OUQyMTM0QUY5NTAwRjQ5M0ZEIC8qIFVzZXJBZ2VudElPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUzMjA0MjAyMUY5QTlGMTAwMEI4MUIyQSAvKiBVc2VyQWdlbnRT
Y3JpcHRzRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdB
MkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRTY4MzQ0
MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdERTA2MSAvKiBVc2VyTWVzc2FnZUhh
bmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTgzN0I3RDIwMURDM0Y1NTAw
MEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJM0ZC
QzRBRjMxODk4ODE1NjAwNDZFRTM4IC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTJENUExOEYxQzU0NTkyMzAwREUzNEEzIC8qIFZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlck9iakMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBERTE3
MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDM5
LDcgKzMzNDMyLDYgQEAKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyogV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QyMjVDMEIxQzQ2RkJGNDAw
MTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0Yx
OUIwNzA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZVZpZXcubSBpbiBTb3VyY2VzICovLAotCQkJ
CUNFNEVDQ0Q2MjE1QUE4MTIwMDU1OEM0MSAvKiBXZWJFdmVudC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUQzRjNEMzZEMUE2OUI3REMwMDU5RkMyQiAvKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdCOUM4MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDhCMDBFMjIwQTI4MjQ5MDAwNEJDMEEgLyog
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KaW5kZXggMDYxNzE3
NGQwZTMwN2ZjMjE3MmVhMmUwOThkNWVlNjg4OTlkNzM4NC4uNzM0NjRhNWZhNjFiZmVmZDM3M2Ix
NmZhMjYyOGFjNmQ3OGExN2NhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtNDYsNiArNDYsNyBAQAogI2ltcG9ydCAiVmlzaWJs
ZVBvc2l0aW9uLmgiCiAjaW1wb3J0ICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW1wb3J0ICJWaXNp
YmxlVW5pdHMuaCIKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUmV2
ZWFsU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgpAQCAtNjQsMTAgKzY1
LDYgQEAgZXh0ZXJuICJDIiB7CiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoVUlLaXRNYWNI
ZWxwZXIpCiBTT0ZUX0xJTksoVUlLaXRNYWNIZWxwZXIsIFVJTlNTaGFyZWRSZXZlYWxDb250cm9s
bGVyLCBpZDxVSU5TUmV2ZWFsQ29udHJvbGxlcj4sICh2b2lkKSwgKCkpCiAKLVNPRlRfTElOS19G
UkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCi0K
LQogI2VuZGlmIC8vIFBMQVRGT1JNKElPU01BQykKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBmYjQ3ZWVm
Yzk5NWI1OWNmZDgxODkxYWFiMWMyZWU1N2RhMTE1NzY2Li5jODZmZDczOGMyODEwZTk3Yzg4MmYy
ZjQ0YTdiNmQ3NGQyMTYxZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCkBAIC02NSwxOSArNjUsMTYgQEAKICNpbXBvcnQgIlRleHRJdGVyYXRv
ci5oIgogI2ltcG9ydCAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nU1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oPgogI2ltcG9ydCA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlu
a2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiV0FLQXBwS2l0U3R1YnMuaCIKIAotU09GVF9MSU5L
X0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKLQotU09G
VF9MSU5LX0NMQVNTKFVJRm91bmRhdGlvbiwgVUlGb250KQogU09GVF9MSU5LX0NMQVNTKFVJRm91
bmRhdGlvbiwgTlNDb2xvcikKIFNPRlRfTElOS19DTEFTUyhVSUZvdW5kYXRpb24sIE5TU2hhZG93
KQogU09GVF9MSU5LX0NMQVNTKFVJRm91bmRhdGlvbiwgTlNUZXh0QXR0YWNobWVudCkKQEAgLTk3
LDEwICs5NCwxMCBAQCBTT0ZUX0xJTktfQ0xBU1MoVUlGb3VuZGF0aW9uLCBOU1RleHRUYWIpCiAj
ZGVmaW5lIFBsYXRmb3JtTlNUZXh0VGFibGUgICAgICAgICBnZXROU1RleHRUYWJsZUNsYXNzKCkK
ICNkZWZpbmUgUGxhdGZvcm1OU1RleHRUYWIgICAgICAgICAgIGdldE5TVGV4dFRhYkNsYXNzKCkK
ICNkZWZpbmUgUGxhdGZvcm1Db2xvciAgICAgICAgICAgICAgIFVJQ29sb3IKLSNkZWZpbmUgUGxh
dGZvcm1Db2xvckNsYXNzICAgICAgICAgIGdldFVJQ29sb3JDbGFzcygpCisjZGVmaW5lIFBsYXRm
b3JtQ29sb3JDbGFzcyAgICAgICAgICBQQUw6OmdldFVJQ29sb3JDbGFzcygpCiAjZGVmaW5lIFBs
YXRmb3JtTlNDb2xvckNsYXNzICAgICAgICBnZXROU0NvbG9yQ2xhc3MoKQogI2RlZmluZSBQbGF0
Zm9ybUZvbnQgICAgICAgICAgICAgICAgVUlGb250Ci0jZGVmaW5lIFBsYXRmb3JtRm9udENsYXNz
ICAgICAgICAgICBnZXRVSUZvbnRDbGFzcygpCisjZGVmaW5lIFBsYXRmb3JtRm9udENsYXNzICAg
ICAgICAgICBQQUw6OmdldFVJRm9udENsYXNzKCkKIAogI2Vsc2UKIApAQCAtMTI0LDE1ICsxMjEs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAotdHlwZWRlZiBlbnVtIHsKLSAgICBVSUZvbnRUcmFpdFBsYWluICAgICAgID0gMHgwMDAw
MDAwMCwKLSAgICBVSUZvbnRUcmFpdEl0YWxpYyAgICAgID0gMHgwMDAwMDAwMSwgLy8gMSA8PCAw
Ci0gICAgVUlGb250VHJhaXRCb2xkICAgICAgICA9IDB4MDAwMDAwMDIsIC8vIDEgPDwgMQotICAg
IFVJRm9udFRyYWl0VGhpbiAgICAgICAgPSAoMSA8PCAyKSwKLSAgICBVSUZvbnRUcmFpdExpZ2h0
ICAgICAgID0gKDEgPDwgMyksCi0gICAgVUlGb250VHJhaXRVbHRyYUxpZ2h0ICA9ICgxIDw8IDQp
Ci19IFVJRm9udFRyYWl0OwotCiBlbnVtIHsKICAgICBOU1RleHRCbG9ja0Fic29sdXRlVmFsdWVU
eXBlICAgID0gMCwgICAgLy8gQWJzb2x1dGUgdmFsdWUgaW4gcG9pbnRzCiAgICAgTlNUZXh0Qmxv
Y2tQZXJjZW50YWdlVmFsdWVUeXBlICA9IDEgICAgIC8vIFBlcmNlbnRhZ2UgdmFsdWUgKG91dCBv
ZiAxMDApCkBAIC0xNzAsMjAgKzE1OCw2IEBAIGVudW0gewogfTsKIHR5cGVkZWYgTlNVSW50ZWdl
ciBOU1RleHRCbG9ja1ZlcnRpY2FsQWxpZ25tZW50OwogCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBOU1RleHRBbGlnbm1lbnQpIHsKLSAgICBOU1RleHRBbGlnbm1lbnRMZWZ0ICAgICAgPSAw
LCAgICAvLyBWaXN1YWxseSBsZWZ0IGFsaWduZWQKLSAgICBOU1RleHRBbGlnbm1lbnRDZW50ZXIg
ICAgPSAxLCAgICAvLyBWaXN1YWxseSBjZW50ZXJlZAotICAgIE5TVGV4dEFsaWdubWVudFJpZ2h0
ICAgICA9IDIsICAgIC8vIFZpc3VhbGx5IHJpZ2h0IGFsaWduZWQKLSAgICBOU1RleHRBbGlnbm1l
bnRKdXN0aWZpZWQgPSAzLCAgICAvLyBGdWxseS1qdXN0aWZpZWQuIFRoZSBsYXN0IGxpbmUgaW4g
YSBwYXJhZ3JhcGggaXMgbmF0dXJhbC1hbGlnbmVkLgotICAgIE5TVGV4dEFsaWdubWVudE5hdHVy
YWwgICA9IDQsICAgIC8vIEluZGljYXRlcyB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgZm9yIHNjcmlw
dAotfSBOU19FTlVNX0FWQUlMQUJMRV9JT1MoNl8wKTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgTlNXcml0aW5nRGlyZWN0aW9uKSB7Ci0gICAgTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJh
bCAgICAgICA9IC0xLCAgICAvLyBEZXRlcm1pbmVzIGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29k
ZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQgUDMKLSAgICBOU1dyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodCAgID0gIDAsICAgIC8vIExlZnQgdG8gcmlnaHQgd3JpdGluZyBkaXJlY3Rpb24K
LSAgICBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCAgID0gIDEgICAgIC8vIFJpZ2h0IHRv
IGxlZnQgd3JpdGluZyBkaXJlY3Rpb24KLX0gTlNfRU5VTV9BVkFJTEFCTEVfSU9TKDZfMCk7Ci0K
IGVudW0gewogICAgIE5TRW50ZXJDaGFyYWN0ZXIgICAgICAgICAgICAgICAgPSAweDAwMDMsCiAg
ICAgTlNCYWNrc3BhY2VDaGFyYWN0ZXIgICAgICAgICAgICA9IDB4MDAwOCwKQEAgLTE5NSw3ICsx
NjksNiBAQCBlbnVtIHsKICAgICBOU0RlbGV0ZUNoYXJhY3RlciAgICAgICAgICAgICAgID0gMHgw
MDdmLAogICAgIE5TTGluZVNlcGFyYXRvckNoYXJhY3RlciAgICAgICAgPSAweDIwMjgsCiAgICAg
TlNQYXJhZ3JhcGhTZXBhcmF0b3JDaGFyYWN0ZXIgICA9IDB4MjAyOSwKLSAgICBOU0F0dGFjaG1l
bnRDaGFyYWN0ZXIgICAgICAgICAgID0gMHhGRkZDIC8vIFJlcGxhY2VtZW50IGNoYXJhY3RlciBp
cyB1c2VkIGZvciBhdHRhY2htZW50cwogfTsKIAogZW51bSB7CkBAIC0yMDYsNTcgKzE3OSwxNyBA
QCBlbnVtIHsKIH07CiB0eXBlZGVmIE5TVUludGVnZXIgTlNUZXh0VGFiVHlwZTsKIAotQGludGVy
ZmFjZSBVSUNvbG9yIDogTlNPYmplY3QKLSsgKFVJQ29sb3IgKiljbGVhckNvbG9yOwotLSAoQ0dG
bG9hdClhbHBoYUNvbXBvbmVudDsKLUBlbmQKLQogQGludGVyZmFjZSBOU0NvbG9yIDogVUlDb2xv
cgogKyAoaWQpY29sb3JXaXRoQ2FsaWJyYXRlZFJlZDooQ0dGbG9hdClyZWQgZ3JlZW46KENHRmxv
YXQpZ3JlZW4gYmx1ZTooQ0dGbG9hdClibHVlIGFscGhhOihDR0Zsb2F0KWFscGhhOwogQGVuZAog
Ci1AaW50ZXJmYWNlIFVJRm9udAotKyAoVUlGb250ICopZm9udFdpdGhOYW1lOihOU1N0cmluZyAq
KWZvbnROYW1lIHNpemU6KENHRmxvYXQpZm9udFNpemU7Ci0rIChVSUZvbnQgKilmb250V2l0aEZh
bWlseU5hbWU6KE5TU3RyaW5nICopZmFtaWx5TmFtZSB0cmFpdHM6KFVJRm9udFRyYWl0KXRyYWl0
cyBzaXplOihDR0Zsb2F0KWZvbnRTaXplOwotLSAoTlNTdHJpbmcgKilmYW1pbHlOYW1lOwotLSAo
Q0dGbG9hdClwb2ludFNpemU7Ci0tIChVSUZvbnQgKilmb250V2l0aFNpemU6KENHRmxvYXQpZm9u
dFNpemU7Ci0rIChOU0FycmF5ICopZmFtaWx5TmFtZXM7Ci0rIChOU0FycmF5ICopZm9udE5hbWVz
Rm9yRmFtaWx5TmFtZTooTlNTdHJpbmcgKilmYW1pbHlOYW1lOwotKyAoVUlGb250ICopc3lzdGVt
Rm9udE9mU2l6ZTooQ0dGbG9hdClmb250U2l6ZTsKLUBlbmQKLQotQGludGVyZmFjZSBOU1RleHRU
YWIKK0BpbnRlcmZhY2UgTlNUZXh0VGFiICgpCiAtIChpZClpbml0V2l0aFR5cGU6KE5TVGV4dFRh
YlR5cGUpdHlwZSBsb2NhdGlvbjooQ0dGbG9hdClsb2M7Ci0tIChpZClpbml0V2l0aFRleHRBbGln
bm1lbnQ6KE5TVGV4dEFsaWdubWVudClhbGlnbm1lbnQgbG9jYXRpb246KENHRmxvYXQpbG9jIG9w
dGlvbnM6KE5TRGljdGlvbmFyeSAqKW9wdGlvbnM7Ci0tIChDR0Zsb2F0KWxvY2F0aW9uOwotLSAo
dm9pZClyZWxlYXNlOwogQGVuZAogCi1AaW50ZXJmYWNlIE5TUGFyYWdyYXBoU3R5bGUgOiBOU09i
amVjdAotKyAoTlNQYXJhZ3JhcGhTdHlsZSAqKWRlZmF1bHRQYXJhZ3JhcGhTdHlsZTsKLS0gKHZv
aWQpc2V0QWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQpYWxpZ25tZW50OwotLSAodm9pZClzZXRC
YXNlV3JpdGluZ0RpcmVjdGlvbjooTlNXcml0aW5nRGlyZWN0aW9uKXdyaXRpbmdEaXJlY3Rpb247
Ci0tICh2b2lkKXNldEhlYWRJbmRlbnQ6KENHRmxvYXQpYUZsb2F0OwotLSAoQ0dGbG9hdCloZWFk
SW5kZW50OworQGludGVyZmFjZSBOU1BhcmFncmFwaFN0eWxlICgpCiAtICh2b2lkKXNldEhlYWRl
ckxldmVsOihOU0ludGVnZXIpbGV2ZWw7Ci0tICh2b2lkKXNldEZpcnN0TGluZUhlYWRJbmRlbnQ6
KENHRmxvYXQpYUZsb2F0OwotLSAodm9pZClzZXRUYWlsSW5kZW50OihDR0Zsb2F0KWFGbG9hdDsK
LS0gKHZvaWQpc2V0UGFyYWdyYXBoU3BhY2luZzooQ0dGbG9hdClwYXJhZ3JhcGhTcGFjaW5nOwot
LSAodm9pZClzZXRUZXh0TGlzdHM6KE5TQXJyYXkgKilhcnJheTsKIC0gKHZvaWQpc2V0VGV4dEJs
b2NrczooTlNBcnJheSAqKWFycmF5OwotLSAodm9pZClzZXRNaW5pbXVtTGluZUhlaWdodDooQ0dG
bG9hdClhRmxvYXQ7Ci0tIChOU0FycmF5ICopdGV4dExpc3RzOwotLSAodm9pZClyZW1vdmVUYWJT
dG9wOihOU1RleHRUYWIgKilhbk9iamVjdDsKLS0gKHZvaWQpYWRkVGFiU3RvcDooTlNUZXh0VGFi
ICopYW5PYmplY3Q7Ci0tIChOU0FycmF5ICopdGFiU3RvcHM7Ci0tICh2b2lkKXNldEh5cGhlbmF0
aW9uRmFjdG9yOihmbG9hdClhRmFjdG9yOwotQGVuZAotCi1AaW50ZXJmYWNlIE5TU2hhZG93IDog
TlNPYmplY3QKLS0gKHZvaWQpc2V0U2hhZG93T2Zmc2V0OihDR1NpemUpc2l6ZTsKLS0gKHZvaWQp
c2V0U2hhZG93Qmx1clJhZGl1czooQ0dGbG9hdClyYWRpdXM7Ci0tICh2b2lkKXNldFNoYWRvd0Nv
bG9yOihVSUNvbG9yICopY29sb3I7CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNUZXh0QmxvY2sgOiBO
U09iamVjdApAQCAtMjY5LDI4ICsyMDIsNiBAQCAtICh2b2lkKXNldEJvcmRlckNvbG9yOihVSUNv
bG9yICopY29sb3I7ICAgICAgICAvLyBDb252ZW5pZW5jZSBtZXRob2Qgc2V0cyBhbGwgZQogLSAo
dm9pZClzZXRWZXJ0aWNhbEFsaWdubWVudDooTlNUZXh0QmxvY2tWZXJ0aWNhbEFsaWdubWVudClh
bGlnbm1lbnQ7CiBAZW5kCiAKLUBpbnRlcmZhY2UgTlNUZXh0TGlzdAotLSAoaWQpaW5pdFdpdGhN
YXJrZXJGb3JtYXQ6KE5TU3RyaW5nICopZm9ybWF0IG9wdGlvbnM6KE5TVUludGVnZXIpbWFzazsK
LS0gKHZvaWQpc2V0U3RhcnRpbmdJdGVtTnVtYmVyOihOU0ludGVnZXIpaXRlbU51bTsKLS0gKE5T
SW50ZWdlcilzdGFydGluZ0l0ZW1OdW1iZXI7Ci0tIChOU1N0cmluZyAqKW1hcmtlckZvckl0ZW1O
dW1iZXI6KE5TSW50ZWdlcilpdGVtTnVtOwotLSAodm9pZClyZWxlYXNlOwotQGVuZAotCi1AaW50
ZXJmYWNlIE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlIDogTlNQYXJhZ3JhcGhTdHlsZQotLSAodm9p
ZClzZXREZWZhdWx0VGFiSW50ZXJ2YWw6KENHRmxvYXQpYUZsb2F0OwotLSAodm9pZClzZXRUYWJT
dG9wczooTlNBcnJheSAqKWFycmF5OwotQGVuZAotCi1AaW50ZXJmYWNlIE5TVGV4dEF0dGFjaG1l
bnQgOiBOU09iamVjdAotLSAoaWQpaW5pdFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAq
KWZpbGVXcmFwcGVyOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0tICh2b2lkKXNldEJvdW5k
czooQ0dSZWN0KWJvdW5kczsKLUBwcm9wZXJ0eShyZXRhaW4sIG5vbmF0b21pYykgTlNGaWxlV3Jh
cHBlciAqZmlsZVdyYXBwZXI7Ci0jZW5kaWYKLS0gKHZvaWQpcmVsZWFzZTsKLUBlbmQKLQogQGlu
dGVyZmFjZSBOU1RleHRUYWJsZSA6IE5TVGV4dEJsb2NrCiAtICh2b2lkKXNldE51bWJlck9mQ29s
dW1uczooTlNVSW50ZWdlciludW1Db2xzOwogLSAodm9pZClzZXRDb2xsYXBzZXNCb3JkZXJzOihC
T09MKWZsYWc7CkBAIC01NjEsNyArNDcyLDcgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnRG
b3JOYW1lQW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwgTlNNdXQKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBp
ZiAoIWZvbnQgJiYgW2ZhbWlseU1lbWJlckZhY2VOYW1lcyBjb3VudF0pCi0gICAgICAgICAgICAg
ICAgICAgIGZvbnQgPSBbZ2V0VUlGb250Q2xhc3MoKSBmb250V2l0aE5hbWU6ZmFtaWx5TmFtZSBz
aXplOnNpemVdOworICAgICAgICAgICAgICAgICAgICBmb250ID0gW1BsYXRmb3JtRm9udENsYXNz
IGZvbnRXaXRoTmFtZTpmYW1pbHlOYW1lIHNpemU6c2l6ZV07CiAjZWxzZQogICAgICAgICAgICAg
ICAgIE5TQXJyYXkgKmZhbWlseU1lbWJlckFycmF5OwogICAgICAgICAgICAgICAgIE5TU3RyaW5n
ICpmYWNlTmFtZSA9IFtmb250TmFtZSBzdWJzdHJpbmdGcm9tSW5kZXg6KGRpdmlkaW5nUmFuZ2Uu
bG9jYXRpb24gKyBkaXZpZGluZ1JhbmdlLmxlbmd0aCldOwpAQCAtMTg2Niw3ICsxNzc3LDcgQEAg
Qk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNJ
bnRlZ2VyIGRlcHRoKQogICAgIH0gZWxzZSBpZiAoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1yb3ci
ICYmIFtfdGV4dFRhYmxlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFBsYXRmb3JtQ29sb3IgKmNv
bG9yID0gX2NvbG9yRm9yRWxlbWVudChlbGVtZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CiAgICAgICAgIGlmICghY29sb3IpCi0gICAgICAgICAgICBjb2xvciA9IFtQbGF0Zm9ybUNv
bG9yQ2xhc3MgY2xlYXJDb2xvcl07CisgICAgICAgICAgICBjb2xvciA9IChQbGF0Zm9ybUNvbG9y
ICopW1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXTsKICAgICAgICAgW190ZXh0VGFibGVS
b3dCYWNrZ3JvdW5kQ29sb3JzIGFkZE9iamVjdDpjb2xvcl07CiAgICAgfSBlbHNlIGlmIChkaXNw
bGF5VmFsdWUgPT0gInRhYmxlLWNlbGwiKSB7CiAgICAgICAgIHdoaWxlIChbX3RleHRUYWJsZXMg
Y291bnRdIDwgW190ZXh0QmxvY2tzIGNvdW50XSArIDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQppbmRleCBhYjkyM2U0ZTE1MjNmNzRiZTFlMmZh
ZjEwZDc1MTY3ZmJmYTIyZTBhLi4xNzk3NDIyODliZDIyYjE2MzRjMjU4OWQyZTdhNTYwYWJmOGYw
MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2Eu
bW0KQEAgLTMwLDEzICszMCw4IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2luY2x1
ZGUgIkRldmljZS5oIgorI2luY2x1ZGUgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2luY2x1
ZGUgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+
Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1TT0ZUX0xJTktfRlJBTUVXT1JL
KFVJS2l0KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMCw3ICsxMjUsNyBAQCB2b2lkIFNldHRpbmdzQmFz
ZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogCiBib29sIFNldHRpbmdzQmFzZTo6
ZGVmYXVsdFRleHRBdXRvc2l6aW5nRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuICFkZXZpY2VIYXNJ
UGFkQ2FwYWJpbGl0eSgpIHx8IFtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGlj
YXRpb25dIF9pc0NsYXNzaWNdOworICAgIHJldHVybiAhZGV2aWNlSGFzSVBhZENhcGFiaWxpdHko
KSB8fCBbW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9p
c0NsYXNzaWNdOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KaW5kZXggNTZkODUx
NjM3MGJhZWExNDQ1ZTk1OWFjNzk3MjRmYmQzOGMwMDgzNi4uZjNlNDA0NTZmZGU2ZGQ2ZTIxZjM1
ODI1YjQzMGM3MWNhN2YxNzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KQEAgLTM1LDEzICsz
NSwxMyBAQAogI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgogI2ltcG9ydCA8QVZGb3VuZGF0
aW9uL0FWQXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZSb3V0ZURldGVj
dG9yLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgorI2ltcG9ydCA8cGFs
L3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JBTVNpemUuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5k
YXRpb24sIEFWQXVkaW9TZXNzaW9uKQpAQCAtNTksMTkgKzU5LDYgQEAgU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZSb3V0ZURldGVjdG9yKQogI2RlZmluZSBBVkF1ZGlvU2Vzc2lvbklu
dGVycnVwdGlvblR5cGVLZXkgZ2V0QVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5KCkK
ICNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkgZ2V0QVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25PcHRpb25LZXkoKQogCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0
KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQotU09GVF9MSU5LX0NPTlNU
QU5UKFVJS2l0LCBVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiwgTlNT
dHJpbmcgKikKLVNPRlRfTElOS19DT05TVEFOVChVSUtpdCwgVUlBcHBsaWNhdGlvbldpbGxFbnRl
ckZvcmVncm91bmROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09OU1RBTlQo
VUlLaXQsIFVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24sIE5TU3RyaW5n
ICopCi1TT0ZUX0xJTktfQ09OU1RBTlQoVUlLaXQsIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmROb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi0KLSNkZWZpbmUgVUlBcHBsaWNhdGlvbiBn
ZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKQotI2RlZmluZSBVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZU5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNh
dGlvbigpCi0jZGVmaW5lIFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uIGdldFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uKCkKLSNk
ZWZpbmUgVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiBnZXRVSUFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkKLSNkZWZpbmUgVUlBcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kTm90aWZpY2F0aW9uKCkKLQogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJ
QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlvbiI7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmlu
ZyogV2ViVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gPSBAIldl
YlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIjsKIFdFQkNPUkVf
RVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0
aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIjsKQEAg
LTIwNywxOSArMTk0LDE5IEBAIC0gKGlkKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhU2Vzc2lvbk1h
bmFnZXJpT1MqKWNhbGxiYWNrCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKICAgICBbY2VudGVyIGFkZE9ic2Vy
dmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGludGVycnVwdGlvbjopIG5hbWU6QVZBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24gb2JqZWN0OltBVkF1ZGlvU2Vzc2lvbiBzaGFy
ZWRJbnN0YW5jZV1dOwogCi0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6KSBuYW1lOlVJQXBwbGljYXRp
b25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kOikgbmFtZTpXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpVSUFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOworICAgIFtjZW50ZXIgYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmU6
KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmlj
YXRpb24oKSBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpXZWJVSUFwcGxp
Y2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50
ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxsUmVz
aWduQWN0aXZlOikgbmFtZTpVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6UEFMOjpnZXRfVUlLaXRf
VUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKSBvYmplY3Q6bmlsXTsK
ICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3Rp
dmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDopIG5hbWU6
VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
KyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOikgbmFtZTpQQUw6OmdldF9VSUtpdF9VSUFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CiAgICAgW2NlbnRl
ciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlm
aWNhdGlvbiBvYmplY3Q6bmlsXTsKIAogICAgIC8vIE5vdyBwbGF5aW5nIHdvbid0IHdvcmsgdW5s
ZXNzIHdlIHR1cm4gb24gdGhlIGRlbGl2ZXJ5IG9mIHJlbW90ZSBjb250cm9sIGV2ZW50cy4KICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeIHsKICAgICAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIFtbVUlBcHBsaWNhdGlvbiBzaGFy
ZWRBcHBsaWNhdGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9sRXZlbnRzXTsKKyAgICAg
ICAgW1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBiZWdp
blJlY2VpdmluZ1JlbW90ZUNvbnRyb2xFdmVudHNdOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDIyNDFkYjE1
MjJhYzJjMWI0MzRhNDE2MDMxZDIzNDIyZTljOTAwYmEuLmNkYTM2OTY0M2MzNjhiNjY2YjM0Mzhh
YjNmMDY2YjQyMGUzZjdmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTAzLDYgKzEw
Myw3IEBACiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ29yZUltYWdlLmg+CiAjaW1wb3J0IDxVSUtpdC9V
SURldmljZS5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4KKyNpbXBvcnQgPHBhbC9pb3Mv
VUlLaXRTb2Z0TGluay5oPgogI2Vsc2UKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNHZW9tZXRyeS5o
PgogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KQEAgLTMxNSwxMCArMzE2LDYgQEAg
U09GVF9MSU5LX0NPTlNUQU5UKENlbGVzdGlhbCwgQVZDb250cm9sbGVyX1JvdXRlRGVzY3JpcHRp
b25LZXlfQVZBdWRpb1JvdXRlTmFtZSwKIAogI2VuZGlmIC8vIEhBVkUoQ0VMRVNUSUFMKQogCi1T
T0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSURldmlj
ZSkKLSNkZWZpbmUgVUlEZXZpY2UgZ2V0VUlEZXZpY2VDbGFzcygpCi0KICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI4ODEsNyAr
Mjg3OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgLy8gVGhlIHJvdXRlIGlzIGEgc3BlYWtlciBvciBIRE1JIG91dCwg
b3ZlcnJpZGUgdGhlIG5hbWUgdG8gYmUgdGhlIGxvY2FsaXplZCBkZXZpY2UgbW9kZWwuCi0gICAg
ICAgIE5TU3RyaW5nICpsb2NhbGl6ZWREZXZpY2VNb2RlbCA9IFtbVUlEZXZpY2UgY3VycmVudERl
dmljZV0gbG9jYWxpemVkTW9kZWxdOworICAgICAgICBOU1N0cmluZyAqbG9jYWxpemVkRGV2aWNl
TW9kZWwgPSBbW1BBTDo6Z2V0VUlEZXZpY2VDbGFzcygpIGN1cnJlbnREZXZpY2VdIGxvY2FsaXpl
ZE1vZGVsXTsKIAogICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhIHJvdXRlIHdpdGggdGhhdCBu
YW1lIGFscmVhZHkgZXhpc3RzLCBwcmVmaXggdGhlIG5hbWUgd2l0aCB0aGUgbW9kZWwuCiAgICAg
ICAgIEJPT0wgaW5jbHVkZUxvY2FsaXplZERldmljZU1vZGVsTmFtZSA9IE5POwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRl
Q29jb2EubW0KaW5kZXggYjgwNzRkMTFhNzM0YzcyM2ZhZmY2ODkxMTI3ODYyZmY5MjNmYWJiOC4u
MGNkZGNkZjg5NzBhZDk1MmExMGJkY2IzMDQyOGU1NmFhMWU3YWM5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNv
Y29hLm1tCkBAIC0zOCwxNiArMzgsMTMgQEAKICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9Db3JlVUlTUEkuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQ29yZVVJKQogU09GVF9M
SU5LX0NMQVNTKENvcmVVSSwgQ1VJQ2F0YWxvZykKIFNPRlRfTElOS19DTEFTUyhDb3JlVUksIENV
SVN0eWxlRWZmZWN0Q29uZmlndXJhdGlvbikKLQotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkK
LVNPRlRfTElOSyhVSUtpdCwgX1VJS2l0R2V0VGV4dEVmZmVjdHNDYXRhbG9nLCBDVUlDYXRhbG9n
ICosICh2b2lkKSwgKCkpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3IpCiAjZW5kaWYK
IAogI2lmZGVmIF9fTFA2NF9fCkBAIC0xMjYsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQgc2hvd0xl
dHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNv
bnN0IEYKICAgICBDVEZvbnRSZWYgY3RGb250ID0gcGxhdGZvcm1EYXRhLmN0Rm9udCgpOwogICAg
IENHQ29udGV4dFNldEZvbnRTaXplKGNvbnRleHQsIENURm9udEdldFNpemUoY3RGb250KSk7CiAK
LSAgICBzdGF0aWMgQ1VJQ2F0YWxvZyAqY2F0YWxvZyA9IF9VSUtpdEdldFRleHRFZmZlY3RzQ2F0
YWxvZygpOworICAgIHN0YXRpYyBDVUlDYXRhbG9nICpjYXRhbG9nID0gUEFMOjpzb2Z0TGlua19V
SUtpdF9fVUlLaXRHZXRUZXh0RWZmZWN0c0NhdGFsb2coKTsKICAgICBpZiAoIWNhdGFsb2cpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0RyYWdJbWFnZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJ
T1MubW0KaW5kZXggMjBiMGQ5MjFkYjQ1MmRlZTUzODJlNjIxNmI0YmU1NGM3ZTVjNGRhMC4uZTk4
NTJmNGMyNjFhY2U0YmNkMWQzNjFjOTRjZDQxZGY0ZWNiOWVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCkBAIC00OSwyMCArNDksOCBAQAogI2ltcG9y
dCA8VUlLaXQvVUlGb250Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUdyYXBoaWNzSW1hZ2VSZW5kZXJl
ci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9T
b2Z0TGlua2luZy5oPgotCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oIm51bGxhYmlsaXR5LWNvbXBs
ZXRlbmVzcyIpCi0KLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1Mo
VUlLaXQsIFVJRm9udCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlHcmFwaGljc0ltYWdlUmVu
ZGVyZXIpCi1TT0ZUX0xJTksoVUlLaXQsIFVJR3JhcGhpY3NCZWdpbkltYWdlQ29udGV4dFdpdGhP
cHRpb25zLCB2b2lkLCAoQ0dTaXplIHNpemUsIEJPT0wgb3BhcXVlLCBDR0Zsb2F0IHNjYWxlKSwg
KHNpemUsIG9wYXF1ZSwgc2NhbGUpKQotU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3Vy
cmVudENvbnRleHQsIENHQ29udGV4dFJlZiwgKHZvaWQpLCAoKSkKLVNPRlRfTElOSyhVSUtpdCwg
VUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJbWFnZUNvbnRleHQsIFVJSW1hZ2UgKiwgKHZv
aWQpLCAoKSkKLVNPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCwgdm9p
ZCwgKHZvaWQpLCAoKSkKLQotSUdOT1JFX1dBUk5JTkdTX0VORAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTc4LDcgKzY2LDcgQEAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJ
bWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQogICAgIENHU2l6ZSBpbWFnZVNpemUgPSBD
R1NpemVNYWtlKHNjYWxlLndpZHRoKCkgKiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBz
Y2FsZS5oZWlnaHQoKSAqIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKTsKICAgICBDR1Jl
Y3QgaW1hZ2VSZWN0ID0geyBDR1BvaW50WmVybywgaW1hZ2VTaXplIH07CiAKLSAgICBSZXRhaW5Q
dHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJlbmRlciA9IGFkb3B0TlMoW2FsbG9jVUlHcmFw
aGljc0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZVNpemVdKTsKKyAg
ICBSZXRhaW5QdHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJlbmRlciA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5pdFdpdGhTaXplOmlt
YWdlU2l6ZV0pOwogICAgIFVJSW1hZ2UgKmltYWdlQ29weSA9IFtyZW5kZXIuZ2V0KCkgaW1hZ2VX
aXRoQWN0aW9uczpeKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250
ZXh0KSB7CiAgICAgICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcmVuZGVyZXJDb250ZXh0LkNH
Q29udGV4dDsKICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAsIGltYWdl
U2l6ZS5oZWlnaHQpOwpAQCAtMTAzLDcgKzkxLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbgog
ICAgICAgICBpbWFnZVNpemUgPSBhZGp1c3RlZFNpemU7CiAgICAgfQogCi0gICAgUmV0YWluUHRy
PFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFthbGxvY1VJR3JhcGhp
Y3NJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2VTaXplXSk7CisgICAg
UmV0YWluUHRyPFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jVUlHcmFwaGljc0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFn
ZVNpemVdKTsKICAgICBVSUltYWdlICppbWFnZUNvcHkgPSBbcmVuZGVyLmdldCgpIGltYWdlV2l0
aEFjdGlvbnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRlcmVyQ29udGV4
dCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dD
b250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7
CkBAIC0xMjMsNyArMTExLDcgQEAgc3RhdGljIGNvbnN0IFRleHRJbmRpY2F0b3JPcHRpb25zIGRl
ZmF1bHRMaW5rSW5kaWNhdG9yT3B0aW9ucyA9IFRleHRJbmRpY2F0b3JPcHQKIAogc3RhdGljIEZv
bnRDYXNjYWRlIGNhc2NhZGVGb3JTeXN0ZW1Gb250KENHRmxvYXQgc2l6ZSkKIHsKLSAgICBVSUZv
bnQgKmZvbnQgPSBbZ2V0VUlGb250Q2xhc3MoKSBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOworICAg
IFVJRm9udCAqZm9udCA9IFtQQUw6OmdldFVJRm9udENsYXNzKCkgc3lzdGVtRm9udE9mU2l6ZTpz
aXplXTsKICAgICByZXR1cm4gRm9udENhc2NhZGUoRm9udFBsYXRmb3JtRGF0YShDVEZvbnRDcmVh
dGVXaXRoTmFtZSgoQ0ZTdHJpbmdSZWYpZm9udC5mb250TmFtZSwgZm9udC5wb2ludFNpemUsIG5p
bCksIGZvbnQucG9pbnRTaXplKSk7CiB9CiAKQEAgLTE0OSw3ICsxMzcsNyBAQCBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiBsaW5rRWxlbWVudCwgVVJMJiB1cmws
IGNvbnN0IFN0cmluZwogCiAgICAgQ0dSZWN0IGltYWdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwg
dGV4dFdpZHRoICsgMiAqIGRyYWdJbWFnZVBhZGRpbmcsIHRleHRIZWlnaHQgKyAyICogZHJhZ0lt
YWdlUGFkZGluZyk7CiAKLSAgICBSZXRhaW5QdHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJl
bmRlciA9IGFkb3B0TlMoW2FsbG9jVUlHcmFwaGljc0ltYWdlUmVuZGVyZXJJbnN0YW5jZSgpIGlu
aXRXaXRoU2l6ZTppbWFnZVJlY3Quc2l6ZV0pOworICAgIFJldGFpblB0cjxVSUdyYXBoaWNzSW1h
Z2VSZW5kZXJlcj4gcmVuZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJR3JhcGhpY3NJbWFnZVJl
bmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2VSZWN0LnNpemVdKTsKICAgICBVSUlt
YWdlICppbWFnZSA9IFtyZW5kZXIuZ2V0KCkgaW1hZ2VXaXRoQWN0aW9uczpeKFVJR3JhcGhpY3NJ
bWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwogICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgwLCBDR1JlY3RHZXRIZWlnaHQoaW1hZ2VSZWN0KSk7CkBAIC0yMDUsNyAr
MTkzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIFRleHRJbmRpY2F0b3JEYXRhJiBpbmRpY2EKICAgICAgICAgaW1hZ2VSZWN0LnNjYWxl
KDEgLyBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAogCi0gICAgUmV0YWluUHRyPFVJR3Jh
cGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFthbGxvY1VJR3JhcGhpY3NJbWFn
ZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2VSZWN0LnNpemUoKV0pOworICAg
IFJldGFpblB0cjxVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlcj4gcmVuZGVyID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJR3JhcGhpY3NJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1h
Z2VSZWN0LnNpemUoKV0pOwogICAgIFVJSW1hZ2UgKmZpbmFsSW1hZ2UgPSBbcmVuZGVyLmdldCgp
IGltYWdlV2l0aEFjdGlvbnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRl
cmVyQ29udGV4dCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNv
bnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgLy8gRklYTUU6IFRoZSBjb250ZXh0IGZsaXAgaGVy
ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYW5kIHN1Z2dlc3RzIHRoYXQgc29tZXdoZXJlIGVs
c2UgaW4gdGhlIHJlZ3VsYXIKQEAgLTI0MSw3ICsyMjksNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9yY2VC
bGFjawogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0byYgaW1hZ2UgPSAqdGV4dEluZGlj
YXRvci0+Y29udGVudEltYWdlKCk7Ci0gICAgYXV0byByZW5kZXIgPSBhZG9wdE5TKFthbGxvY1VJ
R3JhcGhpY3NJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2Uuc2l6ZSgp
XSk7CisgICAgYXV0byByZW5kZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlHcmFwaGljc0ltYWdl
UmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZS5zaXplKCldKTsKICAgICBVSUlt
YWdlICpmaW5hbEltYWdlID0gW3JlbmRlci5nZXQoKSBpbWFnZVdpdGhBY3Rpb25zOlsmaW1hZ2Vd
KFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwog
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgRmxvYXRQb2ludCgpKTsKQEAgLTI1NSw3
ICsyNDMsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIGVsZW1lbgogICAgIEZsb2F0UmVjdCBpbWFnZVJl
Y3QgeyAwLCAwLCBlbGVtZW50UmVjdC53aWR0aCgpICogcGFnZVNjYWxlRmFjdG9yLCBlbGVtZW50
UmVjdC5oZWlnaHQoKSAqIHBhZ2VTY2FsZUZhY3RvciB9OwogICAgIEZsb2F0Um91bmRlZFJlY3Qg
c3dhdGNoIHsgaW1hZ2VSZWN0LCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaShDb2xvclN3YXRjaENv
cm5lclJhZGl1cyAqIHBhZ2VTY2FsZUZhY3RvcikgfTsKIAotICAgIGF1dG8gcmVuZGVyID0gYWRv
cHROUyhbYWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5pdFdpdGhTaXpl
OmltYWdlUmVjdC5zaXplKCldKTsKKyAgICBhdXRvIHJlbmRlciA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5pdFdpdGhTaXplOmltYWdlUmVj
dC5zaXplKCldKTsKICAgICBVSUltYWdlICppbWFnZSA9IFtyZW5kZXIgaW1hZ2VXaXRoQWN0aW9u
czpeKFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyQ29udGV4dCAqcmVuZGVyZXJDb250ZXh0KSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgcmVuZGVyZXJDb250ZXh0LkNHQ29udGV4
dCB9OwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBDR1JlY3RHZXRIZWlnaHQoaW1hZ2VS
ZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQppbmRleCBlOWMzYTMxNTc1MTQ4YzM0ODRkZWQ2M2JlZDVlMjQzZGRlMjVl
ZDU3Li4yMDBkYmMzZDA5NGE5MTgxNDUyZWNmMDkwYzE2YzFiMTJkMGNiODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
QEAgLTM4LDEwICszOCwxMCBAQAogI2ltcG9ydCA8VUlLaXQvVUlDb2xvci5oPgogI2ltcG9ydCA8
VUlLaXQvVUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQYXN0ZWJvYXJkLmg+CisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXll
ZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9y
dCA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBv
cnQgPHd0Zi9VUkwuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgogI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNTAsMTUgKzUwLDEwIEBACiAjZGVmaW5lIFBB
U1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEgKFBBU1RF
Qk9BUkRfU1VQUE9SVFNfSVRFTV9QUk9WSURFUlMgJiYgIVBMQVRGT1JNKElPU01BQykpCiAjZGVm
aW5lIE5TVVJMX1NVUFBPUlRTX1RJVExFICghUExBVEZPUk0oSU9TTUFDKSkKIAotU09GVF9MSU5L
X0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKLVNPRlRf
TElOS19DTEFTUyhVSUtpdCwgVUlJbWFnZSkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlQYXN0
ZWJvYXJkKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBsYXRmb3JtUGFzdGVib2FyZDo6UGxh
dGZvcm1QYXN0ZWJvYXJkKCkKLSAgICA6IG1fcGFzdGVib2FyZChbZ2V0VUlQYXN0ZWJvYXJkQ2xh
c3MoKSBnZW5lcmFsUGFzdGVib2FyZF0pCisgICAgOiBtX3Bhc3RlYm9hcmQoW1BBTDo6Z2V0VUlQ
YXN0ZWJvYXJkQ2xhc3MoKSBnZW5lcmFsUGFzdGVib2FyZF0pCiB7CiB9CiAKQEAgLTY4LDExICs2
MywxMSBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgaWYgKG5hbWUgPT0gImRhdGEgaW50ZXJhY3Rpb24gcGFzdGVib2FyZCIp
CiAgICAgICAgIG1fcGFzdGVib2FyZCA9IFtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNoYXJl
ZEluc3RhbmNlXTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFzdGVib2FyZCA9IFtnZXRVSVBhc3Rl
Ym9hcmRDbGFzcygpIGdlbmVyYWxQYXN0ZWJvYXJkXTsKKyAgICAgICAgbV9wYXN0ZWJvYXJkID0g
W1BBTDo6Z2V0VUlQYXN0ZWJvYXJkQ2xhc3MoKSBnZW5lcmFsUGFzdGVib2FyZF07CiB9CiAjZWxz
ZQogUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikK
LSAgICA6IG1fcGFzdGVib2FyZChbZ2V0VUlQYXN0ZWJvYXJkQ2xhc3MoKSBnZW5lcmFsUGFzdGVi
b2FyZF0pCisgICAgOiBtX3Bhc3RlYm9hcmQoW1BBTDo6Z2V0VUlQYXN0ZWJvYXJkQ2xhc3MoKSBn
ZW5lcmFsUGFzdGVib2FyZF0pCiB7CiB9CiAjZW5kaWYKQEAgLTIzMSw3ICsyMjYsNyBAQCBTdHJp
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogewogICAgIE5TRGF0YSAq
ZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOlVJQ29sb3JQYm9hcmRU
eXBlXTsKLSAgICBVSUNvbG9yICp1aUNvbG9yID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2
ZWRPYmplY3RPZkNsYXNzOmdldFVJQ29sb3JDbGFzcygpIGZyb21EYXRhOmRhdGEgZXJyb3I6bmls
XTsKKyAgICBVSUNvbG9yICp1aUNvbG9yID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRP
YmplY3RPZkNsYXNzOlBBTDo6Z2V0VUlDb2xvckNsYXNzKCkgZnJvbURhdGE6ZGF0YSBlcnJvcjpu
aWxdOwogICAgIHJldHVybiBDb2xvcih1aUNvbG9yLkNHQ29sb3IpOwogfQogCkBAIC0zMDMsNyAr
Mjk4LDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKFdlYkl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0ICpyZXByZXMKICNpZiBQTEFURk9STShJT1NNQUMpCiAg
ICAgLy8gSW4gaU9TTWFjLCAtW1VJUGFzdGVib2FyZCBzZXRJdGVtUHJvdmlkZXJzOl0gaXMgbm90
IHlldCBzdXBwb3J0ZWQsIHNvIHdlIGZhbGwgYmFjayB0byBzZXR0aW5nIGFuIGl0ZW0gZGljdGlv
bmFyeSB3aGVuCiAgICAgLy8gcG9wdWxhdGluZyB0aGUgcGFzdGVib2FyZCB1cG9uIGNvcHkuCi0g
ICAgaWYgKFtwYXN0ZWJvYXJkIGlzS2luZE9mQ2xhc3M6Z2V0VUlQYXN0ZWJvYXJkQ2xhc3MoKV0p
IHsKKyAgICBpZiAoW3Bhc3RlYm9hcmQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldFVJUGFzdGVib2Fy
ZENsYXNzKCldKSB7CiAgICAgICAgIGF1dG8gaXRlbURpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBlbnVtZXJhdGVJdGVtczpbaXRlbURpY3Rpb25hcnldIChpZCA8V2ViSXRlbVBy
b3ZpZGVyUmVnaXN0cmFyPiBpdGVtLCBOU1VJbnRlZ2VyKSB7CiAgICAgICAgICAgICBpZiAoW2l0
ZW0gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih0eXBlSWRlbnRpZmllckZvckNsaWVudCld
ICYmIFtpdGVtIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGF0YUZvckNsaWVudCldKQpA
QCAtMzI2LDcgKzMyMSw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChX
ZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdCAqcmVwcmVzCiBsb25nIFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIGF1dG8gcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciA9IGFkb3B0TlMoW1tXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvTGlzdCBhbGxvY10gaW5pdF0pOwotICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBbZ2V0
VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07Cisg
ICAgVUlDb2xvciAqdWlDb2xvciA9IFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0aENH
Q29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcildOwogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6W05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDp1
aUNvbG9yIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpOTyBlcnJvcjpuaWxdIGZvclR5cGU6VUlDb2xv
clBib2FyZFR5cGVdOwogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCmluZGV4IDY3OTRlNjdlMmVlYmUw
ZTc1Y2MxZGIxYWEzMzZiNTA4YzdiMWMwZjIuLjE0NzZmMWNiMjg2MmE3ZjNhNGI4Zjg0NDhkNjll
OTljYmYzNTI0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVt
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAg
LTI4LDExICsyOCw4IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0IDxw
YWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQp
Ci1TT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwg
Qk9PTCwgKHZvaWQpLCAoKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNDYsNyArNDMs
NyBAQCBUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCiAKIGJvb2wgVGhlbWVJT1M6OnVzZXJQcmVm
ZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVJQWNjZXNzaWJpbGl0eUlz
UmVkdWNlTW90aW9uRW5hYmxlZCgpOworICAgIHJldHVybiBQQUw6OnNvZnRMaW5rX1VJS2l0X1VJ
QWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCAxZTM1NDY5YTZiZjAwYWJi
Nzc4MjEzZWUzY2E3YWEzMzFiNTEyMDVlLi42YmVkY2M5NTM2ZWNkYTM2OTUwMGMwMGZiZmU3MzNi
NTYwODQ2Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFn
ZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KQEAgLTMwLDI5ICszMCwyNiBAQAogCiAjaW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIlN5
c3RlbVZlcnNpb24uaCIKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL3NwaS9pb3MvTW9iaWxlR2VzdGFsdFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3Mv
VUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KTsKLVNPRlRfTElOS19DTEFT
UyhVSUtpdCwgVUlBcHBsaWNhdGlvbik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGlubGluZSBib29sIGlzQ2xhc3NpYygpCiB7Ci0gICAgcmV0dXJuIFtbZ2V0VUlBcHBsaWNhdGlv
bkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9pc0NsYXNzaWNdOworICAgIHJldHVybiBbW1BB
TDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9pc0NsYXNzaWNd
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2ljUGFkKCkKIHsKLSAgICByZXR1cm4g
W2dldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gPT0gVUlBcHBsaWNhdGlvblNj
ZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKKyAgICByZXR1cm4gW1BBTDo6Z2V0VUlBcHBsaWNh
dGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSA9PSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9k
ZU9yaWdpbmFsUGFkOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2ljUGhvbmUoKQog
ewotICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2Ns
YXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwor
ICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBf
Y2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQYWQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgTlNTdHJpbmcgKm9zTmFtZUZvclVzZXJBZ2VudCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxlSU9TLm1tCmlu
ZGV4IDVkMTBhODk3ZTcwZTQwODc0NGUwMmEyZjUxY2RhZDYyYmNmMjMxZmIuLmE5NmQ1OWVlMzU2
MjdlZWNhZDg4NjY5MTNmODUyMTJlYTkzOWJlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WYWxpZGF0aW9uQnViYmxlSU9TLm1tCkBAIC0yOSwyMyArMjksMTIgQEAK
IAogI2ltcG9ydCAiVmFsaWRhdGlvbkJ1YmJsZS5oIgogCisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0
U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KTsKLVNPRlRf
TElOS19DTEFTUyhVSUtpdCwgVUlGb250KTsKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlMYWJl
bCk7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJUG9wb3ZlclByZXNlbnRhdGlvbkNvbnRyb2xs
ZXIpOwotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKLVNP
RlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3KTsKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlW
aWV3Q29udHJvbGxlcik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoVUlLaXQsIFVJRm9udFRleHRTdHls
ZUNhbGxvdXQsIFVJRm9udFRleHRTdHlsZSk7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoVUlLaXQsIFVJ
QWNjZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlvbiwgVUlBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9ucyk7Ci0jZGVmaW5lIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24gZ2V0
VUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbgotU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vz
c2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLCB2b2lkLCAoVUlBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9ucyBuLCBpZCBhcmd1bWVudCksIChuLCBhcmd1bWVudCkpOwotCiBAaW50ZXJmYWNlIFdlYlZh
bGlkYXRpb25CdWJibGVUYXBSZWNvZ25pemVyIDogTlNPYmplY3QKIEBlbmQKIApAQCAtNjEsNyAr
NTAsNyBAQCAtIChXZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2duaXplciAqKWluaXRXaXRoUG9w
b3ZlckNvbnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgX3BvcG92ZXJDb250cm9sbGVyID0gcG9wb3ZlckNvbnRyb2xsZXI7Ci0gICAgX3RhcEdlc3R1
cmVSZWNvZ25pemVyID0gYWRvcHROUyhbYWxsb2NVSVRhcEdlc3R1cmVSZWNvZ25pemVySW5zdGFu
Y2UoKSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoZGlzbWlzc1BvcG92ZXIp
XSk7CisgICAgX3RhcEdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJVGFw
R2VzdHVyZVJlY29nbml6ZXJJbnN0YW5jZSgpIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBz
ZWxlY3RvcihkaXNtaXNzUG9wb3ZlcildKTsKICAgICBbW19wb3BvdmVyQ29udHJvbGxlciB2aWV3
XSBhZGRHZXN0dXJlUmVjb2duaXplcjpfdGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCiAg
ICAgcmV0dXJuIHNlbGY7CkBAIC0xMDYsMTYgKzk1LDE2IEBAIFZhbGlkYXRpb25CdWJibGU6OlZh
bGlkYXRpb25CdWJibGUoVUlWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFNlCiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQogewotICAg
IG1fcG9wb3ZlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRdKTsKKyAgICBtX3BvcG92ZXJDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbbV9wb3BvdmVyQ29u
dHJvbGxlciBzZXRNb2RhbFByZXNlbnRhdGlvblN0eWxlOlVJTW9kYWxQcmVzZW50YXRpb25Qb3Bv
dmVyXTsKIAotICAgIFJldGFpblB0cjxVSVZpZXc+IHBvcG92ZXJWaWV3ID0gYWRvcHROUyhbYWxs
b2NVSVZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOworICAgIFJldGFp
blB0cjxVSVZpZXc+IHBvcG92ZXJWaWV3ID0gYWRvcHROUyhbUEFMOjphbGxvY1VJVmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CiAgICAgW21fcG9wb3ZlckNvbnRyb2xs
ZXIgc2V0Vmlldzpwb3BvdmVyVmlldy5nZXQoKV07CiAgICAgbV90YXBSZWNvZ25pemVyID0gYWRv
cHROUyhbW1dlYlZhbGlkYXRpb25CdWJibGVUYXBSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFBv
cG92ZXJDb250cm9sbGVyOm1fcG9wb3ZlckNvbnRyb2xsZXIuZ2V0KCldKTsKIAotICAgIFJldGFp
blB0cjxVSUxhYmVsPiBsYWJlbCA9IGFkb3B0TlMoW2FsbG9jVUlMYWJlbEluc3RhbmNlKCkgaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvXSk7CisgICAgUmV0YWluUHRyPFVJTGFiZWw+IGxhYmVsID0g
YWRvcHROUyhbUEFMOjphbGxvY1VJTGFiZWxJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVyb10pOwogICAgIFtsYWJlbCBzZXRUZXh0Om1lc3NhZ2VdOwotICAgIFtsYWJlbCBzZXRGb250
OltnZXRVSUZvbnRDbGFzcygpIHByZWZlcnJlZEZvbnRGb3JUZXh0U3R5bGU6Z2V0VUlGb250VGV4
dFN0eWxlQ2FsbG91dCgpXV07CisgICAgW2xhYmVsIHNldEZvbnQ6W1BBTDo6Z2V0VUlGb250Q2xh
c3MoKSBwcmVmZXJyZWRGb250Rm9yVGV4dFN0eWxlOlBBTDo6Z2V0X1VJS2l0X1VJRm9udFRleHRT
dHlsZUNhbGxvdXQoKV1dOwogICAgIG1fZm9udFNpemUgPSBbW2xhYmVsIGZvbnRdIHBvaW50U2l6
ZV07CiAgICAgW2xhYmVsIHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVRydW5jYXRpbmdU
YWlsXTsKICAgICBbbGFiZWwgc2V0TnVtYmVyT2ZMaW5lczo0XTsKQEAgLTE0NiwxMyArMTM1LDEz
IEBAIHZvaWQgVmFsaWRhdGlvbkJ1YmJsZTo6c2hvdygpCiAgICAgICAgIFtwcm90ZWN0ZWRUaGlz
LT5tX3BvcG92ZXJDb250cm9sbGVyLmdldCgpLnZpZXcgc2V0QWNjZXNzaWJpbGl0eUVsZW1lbnRz
SGlkZGVuOllFU107CiAgICAgfV07CiAKLSAgICBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0
aW9uKGdldFVJQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlvbigpLCBtX21lc3Nh
Z2UpOworICAgIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRp
b24oKlBBTDo6Z2V0X1VJS2l0X1VJQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlv
bigpLCBtX21lc3NhZ2UpOwogfQogCiBzdGF0aWMgVUlWaWV3Q29udHJvbGxlciAqZmFsbGJhY2tW
aWV3Q29udHJvbGxlcihVSVZpZXcgKnZpZXcpCiB7CiAgICAgZm9yIChVSVZpZXcgKmN1cnJlbnRW
aWV3ID0gdmlldzsgY3VycmVudFZpZXc7IGN1cnJlbnRWaWV3ID0gY3VycmVudFZpZXcuc3VwZXJ2
aWV3KSB7Ci0gICAgICAgIGlmIChVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciA9IFtn
ZXRVSVZpZXdDb250cm9sbGVyQ2xhc3MoKSB2aWV3Q29udHJvbGxlckZvclZpZXc6Y3VycmVudFZp
ZXddKQorICAgICAgICBpZiAoVUlWaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbUEFM
OjpnZXRVSVZpZXdDb250cm9sbGVyQ2xhc3MoKSB2aWV3Q29udHJvbGxlckZvclZpZXc6Y3VycmVu
dFZpZXddKQogICAgICAgICAgICAgcmV0dXJuIHZpZXdDb250cm9sbGVyOwogICAgIH0KICAgICBO
U0xvZyhAIkZhaWxlZCB0byBmaW5kIGEgdmlldyBjb250cm9sbGVyIHRvIHNob3cgZm9ybSB2YWxp
ZGF0aW9uIHBvcG92ZXIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRleCA5NjMzYjNjZjE5
ZDA5YTUyODkwNTNkZDM3ZTFkOTIxNzAxZjNmYjU0Li45ZjFiYTc5OTg2ZDI3MGNkZGQ2NzA0MGU2
NjFmNzY3MTA0NGM0MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC00Myw2ICs0Myw3
IEBACiAjaW1wb3J0IDxVSUtpdC9VSVdpbmRvdy5oPgogI2ltcG9ydCA8b2JqYy9tZXNzYWdlLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGlu
ay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVktpdFNQSS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTY1LDE1ICs2
Niw2IEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwgQVZQaWN0dXJlSW5QaWN0dXJl
Q29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwgQVZQbGF5ZXJWaWV3
Q29udHJvbGxlcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVktpdCwgX19BVlBsYXllckxh
eWVyVmlldykKIAotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhV
SUtpdCwgVUlBcHBsaWNhdGlvbikKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlTY3JlZW4pCi1T
T0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJV2luZG93KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBV
SVZpZXcpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJVmlld0NvbnRyb2xsZXIpCi1TT0ZUX0xJ
TktfQ0xBU1MoVUlLaXQsIFVJQ29sb3IpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVUlLaXQsIFVJVGV4
dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwsIFVJV2luZG93TGV2ZWwpCi0KIEBp
bnRlcmZhY2UgVUlXaW5kb3cgKCkKIC0gKEJPT0wpX2lzSG9zdGVkSW5Bbm90aGVyUHJvY2VzczsK
IEBlbmQKQEAgLTg0LDcgKzc2LDcgQEAgQGVuZAogCiBzdGF0aWMgVUlDb2xvciAqY2xlYXJVSUNv
bG9yKCkKIHsKLSAgICByZXR1cm4gKFVJQ29sb3IgKilbZ2V0VUlDb2xvckNsYXNzKCkgY2xlYXJD
b2xvcl07CisgICAgcmV0dXJuIChVSUNvbG9yICopW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY2xl
YXJDb2xvcl07CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0zOTgsNyArMzkwLDcgQEAgc3Rh
dGljIFdlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyAqYWxsb2NXZWJBVlBpY3R1
cmVJblBpY3R1cmVQbGF5ZXJMYXkKICAgICBzdGF0aWMgQ2xhc3MgdGhlQ2xhc3MgPSBuaWw7CiAg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeewotICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIo
Z2V0VUlWaWV3Q2xhc3MoKSwgIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIs
IDApOworICAgICAgICB0aGVDbGFzcyA9IG9iamNfYWxsb2NhdGVDbGFzc1BhaXIoUEFMOjpnZXRV
SVZpZXdDbGFzcygpLCAiV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3IiwgMCk7
CiAgICAgICAgIG9iamNfcmVnaXN0ZXJDbGFzc1BhaXIodGhlQ2xhc3MpOwogICAgICAgICBDbGFz
cyBtZXRhQ2xhc3MgPSBvYmpjX2dldE1ldGFDbGFzcygiV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxh
eWVyTGF5ZXJWaWV3Iik7CiAgICAgICAgIGNsYXNzX2FkZE1ldGhvZChtZXRhQ2xhc3MsIEBzZWxl
Y3RvcihsYXllckNsYXNzKSwgKElNUClXZWJBVlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZp
ZXdfbGF5ZXJDbGFzcywgIkBAOiIpOwpAQCAtNDUwLDcgKzQ0Miw3IEBAIHN0YXRpYyBVSVZpZXcg
KldlYkFWUGxheWVyTGF5ZXJWaWV3X3ZpZGVvVmlldyhpZCBhU2VsZiwgU0VMKQogICAgIENBTGF5
ZXIqIHZpZGVvTGF5ZXIgPSBbd2ViQVZQbGF5ZXJMYXllciB2aWRlb1N1YmxheWVyXTsKICAgICBp
ZiAoIXZpZGVvTGF5ZXIgfHwgIXZpZGVvTGF5ZXIuZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgQVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5kT2ZDbGFzczpnZXRV
SVZpZXdDbGFzcygpXSk7CisgICAgQVNTRVJUKFtbdmlkZW9MYXllciBkZWxlZ2F0ZV0gaXNLaW5k
T2ZDbGFzczpQQUw6OmdldFVJVmlld0NsYXNzKCldKTsKICAgICByZXR1cm4gKFVJVmlldyAqKVt2
aWRlb0xheWVyIGRlbGVnYXRlXTsKIH0KIApAQCAtODI5LDcgKzgyMSw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBpY3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVu
dGVyaW5nQmFja2dyCiBzdGF0aWMgVUlWaWV3Q29udHJvbGxlciAqZmFsbGJhY2tWaWV3Q29udHJv
bGxlcihVSVZpZXcgKnZpZXcpCiB7CiAgICAgZm9yIChVSVZpZXcgKmN1cnJlbnRWaWV3ID0gdmll
dzsgY3VycmVudFZpZXc7IGN1cnJlbnRWaWV3ID0gY3VycmVudFZpZXcuc3VwZXJ2aWV3KSB7Ci0g
ICAgICAgIGlmIChVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciA9IFtnZXRVSVZpZXdD
b250cm9sbGVyQ2xhc3MoKSB2aWV3Q29udHJvbGxlckZvclZpZXc6Y3VycmVudFZpZXddKSB7Cisg
ICAgICAgIGlmIChVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlciA9IFtQQUw6OmdldFVJ
Vmlld0NvbnRyb2xsZXJDbGFzcygpIHZpZXdDb250cm9sbGVyRm9yVmlldzpjdXJyZW50Vmlld10p
IHsKICAgICAgICAgICAgIGlmICghW3ZpZXdDb250cm9sbGVyIHBhcmVudFZpZXdDb250cm9sbGVy
XSkKICAgICAgICAgICAgICAgICByZXR1cm4gdmlld0NvbnRyb2xsZXI7CiAgICAgICAgIH0KQEAg
LTEyMDcsMTQgKzExOTksMTQgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZG9TZXR1cCgpCiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKCFbW21fcGFyZW50Vmll
dyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3NdICYmICFtX3dpbmRvdykgewogICAg
ICAgICBpZiAoIW1fd2luZG93KQotICAgICAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxv
Y1VJV2luZG93SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1h
aW5TY3JlZW5dIGJvdW5kc11dKTsKKyAgICAgICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJV2luZG93SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOltbUEFMOjpnZXRVSVNjcmVl
bkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwogICAgICAgICBbbV93aW5kb3cgc2V0QmFj
a2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKICAgICAgICAgaWYgKCFtX3ZpZXdDb250cm9s
bGVyKQotICAgICAgICAgICAgbV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3
Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICAgICAgbV92aWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSVZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7
CiAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBzZXRGcmFtZTpbbV93aW5kb3cgYm91
bmRzXV07CiAgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIF9zZXRJZ25vcmVBcHBTdXBwb3J0ZWRP
cmllbnRhdGlvbnM6WUVTXTsKICAgICAgICAgW21fd2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxl
cjptX3ZpZXdDb250cm9sbGVyLmdldCgpXTsKLSAgICAgICAgW21fd2luZG93IHNldFdpbmRvd0xl
dmVsOmdldFVJVGV4dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwoKSArIDFdOwor
ICAgICAgICBbbV93aW5kb3cgc2V0V2luZG93TGV2ZWw6UEFMOjpnZXRfVUlLaXRfVUlUZXh0RWZm
ZWN0c0JlbmVhdGhTdGF0dXNCYXJXaW5kb3dMZXZlbCgpICsgMV07CiAgICAgICAgIFttX3dpbmRv
dyBtYWtlS2V5QW5kVmlzaWJsZV07CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViRXZlbnQubW0KaW5kZXggOGQ4OGYyYmY5YWIxNTkxNDc0MjU2ZTdjMDZhM2U5YzE2
MjcxOGU1ZC4uMWQ1ZjZhNDRmYjcwYjkxM2Y4ZmQxNzFhNjlkOTgxZDJmMGRkNmI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVudC5tbQpAQCAtMzUsMTUgKzM1LDEwIEBACiAK
ICNpbXBvcnQgIktleUV2ZW50Q29kZXNJT1MuaCIKICNpbXBvcnQgIldBS0FwcEtpdFN0dWJzLmgi
CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvSU9LaXRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL0dyYXBoaWNzU2VydmljZXNTUEku
aD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhV
SUtpdCwgVUlBcHBsaWNhdGlvbik7Ci0KLSNkZWZpbmUgVUlBcHBsaWNhdGlvbiBnZXRVSUFwcGxp
Y2F0aW9uQ2xhc3MoKQogCiB1c2luZyBXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvcktleUNvZGU7
CiB1c2luZyBXZWJDb3JlOjp3aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlOwpAQCAtNDYzLDcgKzQ1
OCw3IEBAIC0gKGZsb2F0KWdlc3R1cmVSb3RhdGlvbgogCiArIChXZWJFdmVudEZsYWdzKW1vZGlm
aWVyRmxhZ3MKIHsKLSAgICByZXR1cm4gR1NFdmVudElzSGFyZHdhcmVLZXlib2FyZEF0dGFjaGVk
KCkgPyBHU0tleWJvYXJkR2V0TW9kaWZpZXJTdGF0ZShbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBs
aWNhdGlvbl0uX2hhcmR3YXJlS2V5Ym9hcmQpIDogMDsKKyAgICByZXR1cm4gR1NFdmVudElzSGFy
ZHdhcmVLZXlib2FyZEF0dGFjaGVkKCkgPyBHU0tleWJvYXJkR2V0TW9kaWZpZXJTdGF0ZShbUEFM
OjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0uX2hhcmR3YXJlS2V5
Ym9hcmQpIDogMDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCA5NjI5NmNiOGQzMjFl
MjBmYzNmNDI2MWUxNDM5MmViNmQwNzYyMTY3Li5iZjgyMTgzOTkxNWU4MGQ1ODk5YTk0ODk5OWYy
ZjAyMDZkOGNmZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMzYsMTUgKzM2LDExIEBACiAjaW1w
b3J0IDxVSUtpdC9VSUltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRM
aW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVX
T1JLKFVJS2l0KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUNvbG9yKQotU09GVF9MSU5LX0NM
QVNTKFVJS2l0LCBVSUltYWdlKQogCiB0eXBlZGVmIHZvaWQoXkl0ZW1Qcm92aWRlckRhdGFMb2Fk
Q29tcGxldGlvbkhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOwogdHlwZWRlZiB2b2lkKF5J
dGVtUHJvdmlkZXJGaWxlTG9hZENvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqLCBCT09MLCBOU0Vy
cm9yICopOwpAQCAtNTc5LDcgKzU3NSw3IEBAIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFzdGVib2Fy
ZFR5cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4CiAKIHN0
YXRpYyBOU0FycmF5PENsYXNzPE5TSXRlbVByb3ZpZGVyUmVhZGluZz4+ICphbGxMb2FkYWJsZUNs
YXNzZXMoKQogewotICAgIHJldHVybiBAWyBbZ2V0VUlDb2xvckNsYXNzKCkgY2xhc3NdLCBbZ2V0
VUlJbWFnZUNsYXNzKCkgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBb
TlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXSBdOworICAgIHJldHVybiBAWyBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBjbGFzc10sIFtQQUw6OmdldFVJSW1hZ2VDbGFzcygpIGNsYXNzXSwgW05TVVJM
IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TQXR0cmlidXRlZFN0cmluZyBjbGFzc10gXTsK
IH0KIAogc3RhdGljIENsYXNzIGNsYXNzRm9yVHlwZUlkZW50aWZpZXIoTlNTdHJpbmcgKnR5cGVJ
ZGVudGlmaWVyLCBOU1N0cmluZyAqJm91dFR5cGVJZGVudGlmaWVyVG9Mb2FkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggNDk2Nzc0NmJkYmVjYzBhMzdlZTRiYTU0OWQwMTg0
MWYzN2Y0NzI3MC4uNjkxY2JmODE3NjVjN2RkMTU2MzI3YmRkM2Y4YzJmMWU2NGZhYTlhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC00MywxMSArNDMsOCBAQAogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MVmlkZW9FbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlbmRlclZp
ZGVvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWRSdW4uaD4KKyNpbXBvcnQgPHBh
bC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3Jl
U1BJLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09S
SyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3KQogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtOTY5LDcgKzk2Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0Vs
CiAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAg
ICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMp
OwogCi0gICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3
SW5zdGFuY2UoKSBpbml0XSk7CisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuVmlldyA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSVZpZXdJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgICAgICBtX2ludGVy
ZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZpZXcuZ2V0KCksIHZpZGVv
RWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFsbG93c1BpY3R1cmVJblBp
Y3R1cmUsIGZhbHNlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCBmNTRmNThjMjVk
NmM1MjQ1MjI4YjJhNDc5NDBlZDUyMDUxNTc5OTY3Li41NDg2NDQwZDczODk0YWMxNDI5NzAwYmFm
NDlhMTc3NTc4OGQ5ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAj
aW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKIAogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgorI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2ltcG9ydCAiVVRJVXRpbGl0aWVz
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpp
bmRleCBlZTFlMjI2ODMxY2Y2NDk3YzA0ZGYzYjUwNzdhZDc1Nzk4ODVlODg5Li42MDk0OTkxNmIz
ODgxYzRjODg1MmE4MzcxMjc1MmMyNDI2ZmQ0M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC03MCwyMSArNzAsMTMgQEAKICNpbXBvcnQgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbXBvcnQgPENvcmVJbWFnZS9Db3JlSW1hZ2UuaD4K
ICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRf
TElOS19DTEFTUyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwg
VUlDb2xvcikKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlEb2N1bWVudEludGVyYWN0aW9uQ29u
dHJvbGxlcikKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlJbWFnZSkKLVNPRlRfTElOS19DT05T
VEFOVChVSUtpdCwgVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlTm90aWZpY2F0aW9uLCBD
RlN0cmluZ1JlZikKLSNkZWZpbmUgVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIGdldFVJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbigpCi0K
IEBpbnRlcmZhY2UgV2ViQ29yZVJlbmRlclRoZW1lQnVuZGxlIDogTlNPYmplY3QKIEBlbmQKIApA
QCAtMjg2LDcgKzI3OCw3IEBAIHN0YXRpYyBJT1NHcmFkaWVudFJlZiBncmFkaWVudFdpdGhOYW1l
KElPU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCiAKIHN0YXRpYyB2b2lkIGNvbnRlbnRTaXpl
Q2F0ZWdvcnlEaWRDaGFuZ2UoQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmlu
Z1JlZiBuYW1lLCBjb25zdCB2b2lkKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9V
TlVTRUQobmFtZSwgQ0ZFcXVhbChuYW1lLCBVSUNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2VO
b3RpZmljYXRpb24pKTsKKyAgICBBU1NFUlRfVU5VU0VEKG5hbWUsIENGRXF1YWwobmFtZSwgUEFM
OjpnZXRfVUlLaXRfVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkp
KTsKICAgICBXZWJUaHJlYWRSdW4oXnsKICAgICAgICAgUGFnZTo6dXBkYXRlU3R5bGVGb3JBbGxQ
YWdlc0FmdGVyR2xvYmFsQ2hhbmdlSW5FbnZpcm9ubWVudCgpOwogICAgIH0pOwpAQCAtMjk0LDcg
KzI4Niw3IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZWYsIHZvaWQqLCBDRlN0cmluCiAKIFJlbmRlclRoZW1lSU9TOjpSZW5k
ZXJUaGVtZUlPUygpCiB7Ci0gICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJBZGRPYnNlcnZlcihDRk5v
dGlmaWNhdGlvbkNlbnRlckdldExvY2FsQ2VudGVyKCksIHRoaXMsIGNvbnRlbnRTaXplQ2F0ZWdv
cnlEaWRDaGFuZ2UsIFVJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiwg
MCwgQ0ZOb3RpZmljYXRpb25TdXNwZW5zaW9uQmVoYXZpb3JEZWxpdmVySW1tZWRpYXRlbHkpOwor
ICAgIENGTm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJH
ZXRMb2NhbENlbnRlcigpLCB0aGlzLCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlLCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpUEFMOjpnZXRfVUlLaXRfVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlk
Q2hhbmdlTm90aWZpY2F0aW9uKCksIDAsIENGTm90aWZpY2F0aW9uU3VzcGVuc2lvbkJlaGF2aW9y
RGVsaXZlckltbWVkaWF0ZWx5KTsKIH0KIAogUmVuZGVyVGhlbWUmIFJlbmRlclRoZW1lOjpzaW5n
bGV0b24oKQpAQCAtMzEzLDcgKzMwNSw3IEBAIENGU3RyaW5nUmVmIFJlbmRlclRoZW1lSU9TOjpj
b250ZW50U2l6ZUNhdGVnb3J5KCkKIHsKICAgICBpZiAoIV9jb250ZW50U2l6ZUNhdGVnb3J5KCku
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpc3RhdGljX2Nh
c3Q8TlNTdHJpbmcqPihfY29udGVudFNpemVDYXRlZ29yeSgpKTsKLSAgICByZXR1cm4gKENGU3Ry
aW5nUmVmKVtbZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIHByZWZl
cnJlZENvbnRlbnRTaXplQ2F0ZWdvcnldOworICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpW1tQQUw6
OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBwcmVmZXJyZWRDb250
ZW50U2l6ZUNhdGVnb3J5XTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUlPUzo6c2V0Q29udGVudFNp
emVDYXRlZ29yeShjb25zdCBTdHJpbmcmIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCkBAIC0xNDM2LDI4
ICsxNDI4LDI4IEBAIENvbG9yIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlE
IGNzc1ZhbHVlSUQsIE9wdGlvblNldDxTdHlsZUNvbG9yOjpPCiAgICAgQ29sb3IgY29sb3I7CiAg
ICAgc3dpdGNoIChjc3NWYWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlV2lyZWxlc3NQ
bGF5YmFja1RhcmdldEFjdGl2ZToKLSAgICAgICAgY29sb3IgPSBbZ2V0VUlDb2xvckNsYXNzKCkg
c3lzdGVtQmx1ZUNvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFtQQUw6OmdldFVJQ29s
b3JDbGFzcygpIHN5c3RlbUJsdWVDb2xvcl0uQ0dDb2xvcjsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQmx1ZToKLSAgICAgICAgY29sb3IgPSBbZ2V0VUlDb2xv
ckNsYXNzKCkgc3lzdGVtQmx1ZUNvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFtQQUw6
OmdldFVJQ29sb3JDbGFzcygpIHN5c3RlbUJsdWVDb2xvcl0uQ0dDb2xvcjsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtR3JheToKLSAgICAgICAgY29sb3IgPSBb
Z2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtR3JheUNvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xv
ciA9IFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIHN5c3RlbUdyYXlDb2xvcl0uQ0dDb2xvcjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtR3JlZW46Ci0gICAgICAg
IGNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIHN5c3RlbUdyZWVuQ29sb3JdLkNHQ29sb3I7Cisg
ICAgICAgIGNvbG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtR3JlZW5Db2xvcl0u
Q0dDb2xvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtT3Jh
bmdlOgotICAgICAgICBjb2xvciA9IFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1PcmFuZ2VDb2xv
cl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0
ZW1PcmFuZ2VDb2xvcl0uQ0dDb2xvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtUGluazoKLSAgICAgICAgY29sb3IgPSBbZ2V0VUlDb2xvckNsYXNzKCkgc3lz
dGVtUGlua0NvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFtQQUw6OmdldFVJQ29sb3JD
bGFzcygpIHN5c3RlbVBpbmtDb2xvcl0uQ0dDb2xvcjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUFwcGxlU3lzdGVtUmVkOgotICAgICAgICBjb2xvciA9IFtnZXRVSUNvbG9yQ2xh
c3MoKSBzeXN0ZW1SZWRDb2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRV
SUNvbG9yQ2xhc3MoKSBzeXN0ZW1SZWRDb2xvcl0uQ0dDb2xvcjsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtWWVsbG93OgotICAgICAgICBjb2xvciA9IFtnZXRV
SUNvbG9yQ2xhc3MoKSBzeXN0ZW1ZZWxsb3dDb2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3Ig
PSBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1ZZWxsb3dDb2xvcl0uQ0dDb2xvcjsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0xNTAxLDcgKzE0
OTMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudEFjdGlvbkZvbnQo
KQogCiBzdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudEFjdGlvbkNvbG9yKGNvbnN0IFJlbmRlckF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQpCiB7Ci0gICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBj
b2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoYXR0YWNobWVudC5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSldOworICAgIHJldHVybiBbUEFMOjpnZXRV
SUNvbG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoYXR0YWNobWVudC5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSldOwogfQogCiBz
dGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudFRpdGxlRm9udCgpCkBAIC0xNTEw
LDEwICsxNTAyLDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBhdHRhY2htZW50VGl0
bGVGb250KCkKICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0
b3IoZm9udERlc2NyaXB0b3IuZ2V0KCksIDAsIG51bGxwdHIpKTsKIH0KIAotc3RhdGljIFVJQ29s
b3IgKmF0dGFjaG1lbnRUaXRsZUNvbG9yKCkgeyByZXR1cm4gW2dldFVJQ29sb3JDbGFzcygpIHN5
c3RlbUdyYXlDb2xvcl07IH0KK3N0YXRpYyBVSUNvbG9yICphdHRhY2htZW50VGl0bGVDb2xvcigp
IHsgcmV0dXJuIFtQQUw6OmdldFVJQ29sb3JDbGFzcygpIHN5c3RlbUdyYXlDb2xvcl07IH0KIAog
c3RhdGljIFJldGFpblB0cjxDVEZvbnRSZWY+IGF0dGFjaG1lbnRTdWJ0aXRsZUZvbnQoKSB7IHJl
dHVybiBhdHRhY2htZW50VGl0bGVGb250KCk7IH0KLXN0YXRpYyBVSUNvbG9yICphdHRhY2htZW50
U3VidGl0bGVDb2xvcigpIHsgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1HcmF5Q29s
b3JdOyB9CitzdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudFN1YnRpdGxlQ29sb3IoKSB7IHJldHVy
biBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1HcmF5Q29sb3JdOyB9CiAKIHN0cnVjdCBS
ZW5kZXJBdHRhY2htZW50SW5mbyB7CiAgICAgZXhwbGljaXQgUmVuZGVyQXR0YWNobWVudEluZm8o
Y29uc3QgUmVuZGVyQXR0YWNobWVudCYpOwpAQCAtMTYzNSw3ICsxNjI3LDcgQEAgc3RhdGljIEJP
T0wgZ2V0QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFjaG1l
bnQsIGZsb2F0JiBwcm8KIAogc3RhdGljIFJldGFpblB0cjxVSUltYWdlPiBpY29uRm9yQXR0YWNo
bWVudChjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBGbG9hdFNpemUmIHNpemUp
CiB7Ci0gICAgYXV0byBkb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMoW2Fs
bG9jVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOworICAg
IGF1dG8gZG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
VUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwogCiAgICAg
U3RyaW5nIGZpbGVOYW1lOwogICAgIGlmIChGaWxlKiBmaWxlID0gYXR0YWNobWVudC5hdHRhY2ht
ZW50RWxlbWVudCgpLmZpbGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMubW0KaW5kZXgg
YjI0MDRlMjQ3ODUzMmJlNjJjYjQ3MGRiY2IwMzI2ZGMxYzI0YWJlZS4uMjBkNzFiYWUzMTg1MmIw
OWUzMWJjOGU4ZDM2MjQwZGFiNGRhMDBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
bW0KQEAgLTMyLDE0ICszMiw5IEBACiAjaW1wb3J0ICJFdmVudEhhbmRsZXIuaCIKICNpbXBvcnQg
IkhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3Rm
L2NvY29hL05TVVJMRXh0cmFzLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotU09GVF9M
SU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOSyhVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNS
ZWR1Y2VNb3Rpb25FbmFibGVkLCBCT09MLCAodm9pZCksICgpKQotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU3RyaW5nIEludGVybmFsczo6dXNlclZpc2libGVTdHJpbmcoY29uc3Qg
RE9NVVJMJiB1cmwpCkBAIC01MCw3ICs0NSw3IEBAIFN0cmluZyBJbnRlcm5hbHM6OnVzZXJWaXNp
YmxlU3RyaW5nKGNvbnN0IERPTVVSTCYgdXJsKQogYm9vbCBJbnRlcm5hbHM6OnVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbigpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBy
ZXR1cm4gVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkKCk7CisgICAgcmV0dXJu
IFBBTDo6c29mdExpbmtfVUlLaXRfVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVk
KCk7CiAjZWxzZQogICAgIHJldHVybiBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gYWNj
ZXNzaWJpbGl0eURpc3BsYXlTaG91bGRSZWR1Y2VNb3Rpb25dOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjRhOTQ2YjcxM2U0NjNiZWYw
MWJkYTEyMzFjYjlhMGNjNWZhMjI4OC4uZjA5MDBhZjk5MmI3NThjZGU1NDYxYzFmZGFmMTg2M2Y2
MjY3MjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMzM0LDE3ICszMzQsOSBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKLSNpbXBvcnQgPFVJS2l0L1VJQmV6aWVyUGF0aC5oPgogI2ltcG9ydCA8VUlLaXQvVUlDb2xv
ci5oPgogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtp
dCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlCZXppZXJQYXRoKQotU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSUNvbG9yKQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUltYWdlKQotU09GVF9M
SU5LKFVJS2l0LCBVSUdyYXBoaWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucywgdm9pZCwg
KENHU2l6ZSBzaXplLCBCT09MIG9wYXF1ZSwgQ0dGbG9hdCBzY2FsZSksIChzaXplLCBvcGFxdWUs
IHNjYWxlKSkKLVNPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0LCBD
R0NvbnRleHRSZWYsICh2b2lkKSwgKCkpCi1TT0ZUX0xJTksoVUlLaXQsIFVJR3JhcGhpY3NHZXRJ
bWFnZUZyb21DdXJyZW50SW1hZ2VDb250ZXh0LCBVSUltYWdlICosICh2b2lkKSwgKCkpCi1TT0ZU
X0xJTksoVUlLaXQsIFVJR3JhcGhpY3NFbmRJbWFnZUNvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkp
CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNlbmRpZgogCiAjaWYgSEFWRShU
T1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTcw
MCw3ICs2OTIsNyBAQCAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZToo
Q0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooYwogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIF9kYXRhSW50ZXJh
Y3Rpb25JbWFnZSA9IFthbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFn
ZSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRd
OworICAgIF9kYXRhSW50ZXJhY3Rpb25JbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhDR0ltYWdlOmltYWdlIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VP
cmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgX3NlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXM7CiAgICAgX3RleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0
b3JEYXRhLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgCkBAIC03
MTAsMjAgKzcwMiwyMCBAQCAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFn
ZTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooYwogICAgIF90ZXh0UmVjdHNJ
bkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzID0gW1tOU0FycmF5IGFycmF5V2l0aEFycmF5OnRleHRS
ZWN0c0luQm91bmRpbmdSZWN0Q29vcmRpbmF0ZXNdIHJldGFpbl07CiAgICAgX2NvbnRlbnRJbWFn
ZVNjYWxlRmFjdG9yID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcjsKICAg
ICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KQotICAgICAgICBf
Y29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFthbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCkt
Pm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVu
dGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQg
PSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkg
c2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsK
ICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1h
Z2UgPSBbYWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOworICAgICAgICBfY29udGVudEltYWdlID0g
W1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3Jp
ZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdOwogCiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uLmdldCgpLT5uYXRp
dmVJbWFnZSgpOwogICAgICAgICBpZiAobmF0aXZlSW1hZ2UpIHsKLSAgICAgICAgICAgIF9jb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uID0gW2FsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1h
Z2VPcmllbnRhdGlvblVwXTsKKyAgICAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0
aW9uID0gW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6bmF0aXZl
SW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBd
OwogICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChp
bmRpY2F0b3JEYXRhLm9wdGlvbnMgJiBUZXh0SW5kaWNhdG9yT3B0aW9uQ29tcHV0ZUVzdGltYXRl
ZEJhY2tncm91bmRDb2xvcikKLSAgICAgICAgX2VzdGltYXRlZEJhY2tncm91bmRDb2xvciA9IFth
bGxvY1VJQ29sb3JJbnN0YW5jZSgpIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGluZGlj
YXRvckRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKV07CisgICAgICAgIF9lc3RpbWF0ZWRC
YWNrZ3JvdW5kQ29sb3IgPSBbUEFMOjphbGxvY1VJQ29sb3JJbnN0YW5jZSgpIGluaXRXaXRoQ0dD
b2xvcjpjYWNoZWRDR0NvbG9yKGluZGljYXRvckRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9y
KV07CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTczMyw3ICs3MjUsNyBAQCAtIChXZWJVSVRl
eHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSBzY2FsZToo
Q0dGbG9hdClzY2FsZQogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIF9kYXRhSW50ZXJhY3Rpb25JbWFnZSA9IFthbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFnZSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOworICAgIF9kYXRhSW50ZXJhY3Rpb25J
bWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmltYWdl
IHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07
CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODIzYjA4Y2U0ZTRmNzMxZTM3MmVmZWRkZmE5ODQwZjQw
ZDBhMDYwMy4uMGNlNjdhYjI2Y2JjMWZiYzg5NTQ1MDliNTk0MmMzNGNjNzQ0ZTlmMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDE5LTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3dpdGNoIHJlbWFpbmluZyBVSUtpdCBzb2Z0LWxpbmtpbmcgaW4gV2ViQ29yZSwgV2Vi
S2l0TGVnYWN5IG92ZXIgdG8gVUlLaXRTb2Z0TGluay57Y3BwLGh9CisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xOTM1Njg+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4MTEzMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHN1
cmUgbm8gb25lIHJlLWludHJvZHVjZXMgVUlLaXQgc29mdC1saW5raW5nIGJ5IGFkZGluZyBhCisg
ICAgICAgIHN0eWxlIHJ1bGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNrX2xhbmd1YWdlKTogQWRkIHNvZnRsaW5rL3Vp
a2l0IGNoZWNrLgorICAgICAgICAoQ3BwQ2hlY2tlcik6IEVuYWJsZSBzb2Z0bGluay91aWtpdCBj
aGVjay4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0
dGVzdC5weToKKyAgICAgICAgKENwcFN0eWxlVGVzdCk6IEFkZCB0ZXN0IGZvciBzb2Z0bGluay91
aWtpdC4KKwogMjAxOS0wMS0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZ3Jlc3Npb24oUFNPTikgVmlldyBiZWNvbWVzIGJsYW5rIGFmdGVyIGNsaWNrIGEg
Y3Jvc3Mtc2l0ZSBkb3dubG9hZCBsaW5rCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY3BwLnB5CmluZGV4IDMyNTYxOWRiMTg4NGY4NmE1MzU5ZjNhN2JlNGI1NmI0Mjhj
ZTM3NzEuLjA3NjMwYTEwNjc1M2RlZjkyZTU5Y2EyN2IwMWFhZWNmYTg3ZDJiZDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0zMzMyLDYgKzMz
MzIsMTAgQEAgZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3MKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1JldGFpblB0cjw+IHNob3VsZCBuZXZlciBjb250YWluIGEgdHlwZSB3aXRoIFwnKlwnLiBD
b3JyZWN0OiBSZXRhaW5QdHI8TlNTdHJpbmc+LCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+LicpCiAg
ICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGlmIHNlYXJjaChyJ15ccypTT0ZUX0xJTktfRlJB
TUVXT1JLXChVSUtpdFwpJywgbGluZSk6CisgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnc29m
dGxpbmsvdWlraXQnLCA1LAorICAgICAgICAgICAgICAnVXNlICNpbXBvcnQgPHBhbC9pb3MvVUlL
aXRTb2Z0TGluay5oPiBhbmQgdXBkYXRlIHBhbC9pb3MvVUlLaXRTb2Z0TGluay5tbSB0byBzb2Z0
LWxpbmsgdG8gVUlLaXQuZnJhbWV3b3JrLicpCisKICAgICAjIENoZWNrIGZvciBzdXNwaWNpb3Vz
IHVzYWdlIG9mICJpZiIgbGlrZQogICAgICMgfSBpZiAoYSA9PSBiKSB7CiAgICAgaWYgc2VhcmNo
KHInXH1ccyppZlxzKlwoJywgbGluZSk6CkBAIC00MDg0LDYgKzQwODgsNyBAQCBjbGFzcyBDcHBD
aGVja2VyKG9iamVjdCk6CiAgICAgICAgICdzZWN1cml0eS9hc3NlcnRpb24nLAogICAgICAgICAn
c2VjdXJpdHkvcHJpbnRmJywKICAgICAgICAgJ3NlY3VyaXR5L3RlbXBfZmlsZScsCisgICAgICAg
ICdzb2Z0bGluay91aWtpdCcsCiAgICAgICAgICd3aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAogICAg
ICAgICAnd2hpdGVzcGFjZS9icmFjZXMnLAogICAgICAgICAnd2hpdGVzcGFjZS9icmFja2V0cycs
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3Vu
aXR0ZXN0LnB5CmluZGV4IGJhZDI3ODU2MWFkNDYzMGMwZWY5ZTUwNTIzMDcwOWRhOWRkN2E0OTUu
LjIyNGIwMjlmMDI1MzkwYWYxNDAzZjU0NjE4ZGMyN2M0MzZiYTFiOGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CkBA
IC0xNjg4LDYgKzE2ODgsMTUgQEAgY2xhc3MgQ3BwU3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2Up
OgogICAgICAgICAgICAgJyAgW3J1bnRpbWUvcmV0YWlucHRyXSBbNV0nKQogICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcnJ1JldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNBcnJh
eTxOU1N0cmluZyAqPj4+IGRpY3Rpb25hcnk7JycnLCAnJykKIAorICAgIGRlZiB0ZXN0X3NvZnRs
aW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJycnU09G
VF9MSU5LX0ZSQU1FV09SSyhBVkZvdW5kYXRpb24pJycnLAorICAgICAgICAgICAgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnJydTT0ZUX0xJTktfRlJBTUVXT1JL
KFVJS2l0KScnJywKKyAgICAgICAgICAgICdVc2UgI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRM
aW5rLmg+IGFuZCB1cGRhdGUgcGFsL2lvcy9VSUtpdFNvZnRMaW5rLm1tIHRvIHNvZnQtbGluayB0
byBVSUtpdC5mcmFtZXdvcmsuJworICAgICAgICAgICAgJyAgW3NvZnRsaW5rL3Vpa2l0XSBbNV0n
KQorCiAgICAgIyBWYXJpYWJsZS1sZW5ndGggYXJyYXlzIGFyZSBub3QgcGVybWl0dGVkLgogICAg
IGRlZiB0ZXN0X3ZhcmlhYmxlX2xlbmd0aF9hcnJheV9kZXRlY3Rpb24oc2VsZik6CiAgICAgICAg
IGVycm1zZyA9ICgnRG8gbm90IHVzZSB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLiAgVXNlIGFuIGFw
cHJvcHJpYXRlbHkgbmFtZWQgJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359491</attachid>
            <date>2019-01-18 08:15:58 -0800</date>
            <delta_ts>2019-01-18 12:42:05 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-193568-20190118081557.patch</filename>
            <type>text/plain</type>
            <size>77460</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVmOGU0ODVjOGJiM2Yw
Y2QxNDJiYmY5NDViMjNmNDcxMTc3YmQxOS4uYTUwNTJlYjQ2NzhhNTQyZWJiYzQxYmQyZTYxYTdh
ZjBmZTQ3MzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE5LTAxLTE4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgU3dpdGNoIHJlbWFpbmlu
ZyBVSUtpdCBzb2Z0LWxpbmtpbmcgaW4gV2ViQ29yZSwgV2ViS2l0TGVnYWN5IG92ZXIgdG8gVUlL
aXRTb2Z0TGluay57Y3BwLGh9CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xOTM1Njg+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4MTEzMD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGRvZXMgdGhlIGZvbGxvd2luZzoKKyAg
ICAgICAgLSBSZW1vdmVzIGxvY2FsIHNvZnQtbGlua2luZyBvZiBVSUtpdC4KKyAgICAgICAgLSBT
d2l0Y2hlcyB0byB1c2luZyBQQUwgZnVuY3Rpb25zIGZvciBzb2Z0LWxpbmtpbmcuCisKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OiBBZGQgNCBzb3VyY2UgZmlsZXMgdG8gVW5pZmllZFNvdXJj
ZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmUg
NCBzb3VyY2VzIGZpbGVzCisgICAgICAgIGZyb20gV2ViQ29yZSB0YXJnZXQgbm93IHRoYXQgdGhl
eSBhcmUgaW4gVW5pZmllZFNvdXJjZXMuCisgICAgICAgICogZWRpdGluZy9jb2NvYS9EaWN0aW9u
YXJ5TG9va3VwLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbTog
TW92ZSBTUEkgdG8gVUlLaXRTUEkuaC4gUmVtb3ZlCisgICAgICAgIGRlY2xhcmF0aW9ucyBpbiBw
dWJsaWMgaGVhZGVycy4KKyAgICAgICAgKF9mb250Rm9yTmFtZUFuZFNpemUpOiBDaGFuZ2UgdXNl
IG9mIGdldFVJRm9udENsYXNzKCkgdG8KKyAgICAgICAgUGxhdGZvcm1Gb250Q2xhc3MuCisgICAg
ICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOiBBZGQgY2FzdCBoZXJlIHNpbmNl
IGNvbXBpbGVyCisgICAgICAgIGZpbmRzIHRoZSB3cm9uZyBzZWxlY3RvciBmb3IgK2NsZWFyQ29s
b3IgYW5kIHRoaW5rcyBpdCByZXR1cm5zIGEKKyAgICAgICAgYENJQ29sb3IgKmAgb2JqZWN0LiAg
VGhlIHNhbWUgY2FzdCBhbHJlYWR5IGV4aXN0cyBpbgorICAgICAgICBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbS4KKyAgICAgICAgKiBwYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3NCYXNlOjpkZWZhdWx0VGV4dEF1dG9zaXpp
bmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9uSGVscGVyIGluaXRXaXRoQ2Fs
bGJhY2s6XSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvRHJhZ0ltYWdlSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVEcmFnSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNhc2NhZGVGb3JTeXN0ZW1Gb250KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURy
YWdJbWFnZUZvckxpbmspOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckNvbG9yKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpyZWdpc3Rlckl0
ZW1Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVJT1M6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omlz
Q2xhc3NpYyk6CisgICAgICAgIChXZWJDb3JlOjppc0NsYXNzaWNQYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNDbGFzc2ljUGhvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WYWxpZGF0aW9u
QnViYmxlSU9TLm1tOgorICAgICAgICAoLVtXZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2duaXpl
ciBpbml0V2l0aFBvcG92ZXJDb250cm9sbGVyOl0pOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRh
dGlvbkJ1YmJsZTo6VmFsaWRhdGlvbkJ1YmJsZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0
aW9uQnViYmxlOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6OmZhbGxiYWNrVmlld0NvbnRyb2xs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbToKKyAgICAgICAgKGNsZWFyVUlDb2xvcik6CisgICAgICAgIChhbGxvY1dlYkFWUGljdHVy
ZUluUGljdHVyZVBsYXllckxheWVyVmlld0luc3RhbmNlKToKKyAgICAgICAgKFdlYkFWUGxheWVy
TGF5ZXJWaWV3X3ZpZGVvVmlldyk6CisgICAgICAgIChmYWxsYmFja1ZpZXdDb250cm9sbGVyKToK
KyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpkb1NldHVwKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW06CisgICAgICAgICgrW1dlYkV2ZW50IG1vZGlm
aWVyRmxhZ3NdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbToKKyAgICAgICAgKGFsbExvYWRhYmxlQ2xhc3Nlcyk6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbTogQWRkIG1pc3Np
bmcgaGVhZGVyCisgICAgICAgIGFmdGVyIHVuaWZpZWQgc291cmNlcyB3ZXJlIHVwZGF0ZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUlPUzo6UmVuZGVyVGhlbWVJT1MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJ
T1M6OmNvbnRlbnRTaXplQ2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJ
T1M6OnN5c3RlbUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRBY3Rp
b25Db2xvcik6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50VGl0bGVDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjphdHRhY2htZW50U3VidGl0bGVDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjppY29uRm9yQXR0YWNobWVudCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiBjb25z
dCk6CisKIDIwMTktMDEtMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBJbnRlcm5hbCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCBjMWEzZjZiYTk3NGRkODk5NDk0MjdiNzgzYzFjYWIwMmU3ODEzNjQ4Li4yY2NlYjUyNjQ0YTdl
NGU2MDk0MmIxZjNiZjg5OGZjNjFkZjMxN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxOS0wMS0xOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN3aXRjaCByZW1haW5pbmcgVUlLaXQgc29mdC1saW5raW5nIGluIFdlYkNvcmUs
IFdlYktpdExlZ2FjeSBvdmVyIHRvIFVJS2l0U29mdExpbmsue2NwcCxofQorICAgICAgICA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTkzNTY4PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczODEx
MzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWwvaW9zL1VJS2l0U29mdExpbmsuaDoKKyAgICAgICAgKiBwYWwvaW9zL1VJS2l0U29mdExpbmsu
bW06CisgICAgICAgIC0gQWRkIGNvbnN0YW50cywgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHRoYXQg
d2VyZSBwcmV2aW91c2x5CisgICAgICAgICAgc29mdC1saW5rZWQgaW4gc2VwYXJhdGUgc291cmNl
IGZpbGVzLgorICAgICAgICAtIFVJQWNjZXNzaWJpbGl0eUFubm91bmNlbWVudE5vdGlmaWNhdGlv
biBpcyBkZWNsYXJlZCBhcyBhCisgICAgICAgICAgdmFyaWFibGUgYmVjYXVzZSB0aGlzIGNvbnN0
YW50IGlzIG5vdCBtYXJrZWQgYXMgYGNvbnN0YCBpbgorICAgICAgICAgIFVJS2l0LgorICAgICAg
ICAqIHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg6CisgICAgICAgIC0gTW92ZSBTUEkgZGVjbGFyYXRp
b25zIGZyb20gSFRNTENvbnZlcnRlci5tbSB0byBoZXJlLgorCiAyMDE5LTAxLTE2ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGQxNDZiZWJlYTdlYTZkMDY2
OGEzNjAxNzAzMzUwYzJmNjU3ODkxODcuLmE3MmNkNzdiNDRkNTE2MmY5NWRhMDY4MDc0NjAzZTZl
ODc2YjY1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMS0xOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFN3aXRjaCByZW1haW5pbmcgVUlLaXQgc29mdC1saW5raW5nIGluIFdlYkNvcmUsIFdlYktpdExl
Z2FjeSBvdmVyIHRvIFVJS2l0U29mdExpbmsue2NwcCxofQorICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTkzNTY4PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczODExMzA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgIC0gUmVtb3ZlIHVudXNlZCBzb2Z0LWxpbmtpbmcgbWFjcm9zLgor
ICAgICAgICAoLVtXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGluaXRXaXRoSW1hZ2U6dGV4dEluZGlj
YXRvckRhdGE6c2NhbGU6XSk6CisgICAgICAgICgtW1dlYlVJVGV4dEluZGljYXRvckRhdGEgaW5p
dFdpdGhJbWFnZTpzY2FsZTpdKToKKyAgICAgICAgLSBVcGRhdGUgdG8gdXNlIGV4cG9ydGVkIFBB
TCBmdW5jdGlvbnMuCisKIDIwMTktMDEtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvaW9zL1VJS2l0U29mdExpbmsuaAppbmRleCA1NTIxOTQ0Y2VkMDMxZDkxYjA5N2FmYzlm
OTIyZjUxNDdmODNjODc1Li4yMWY0MTRiNzdiYzZkMzdhOTA4ZDYxODE5ZTk1ZTMzZjM2ZGVjOTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2lvcy9VSUtpdFNvZnRMaW5rLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5oCkBAIC0zMCwx
NSArMzAsMzkgQEAKICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3
dGYvU29mdExpbmtpbmcuaD4KIAorQGNsYXNzIENVSUNhdGFsb2c7CisKIFNPRlRfTElOS19GUkFN
RVdPUktfRk9SX0hFQURFUihQQUwsIFVJS2l0KQogCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hF
QURFUihQQUwsIFVJS2l0LCBVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZU5vdGlmaWNhdGlv
biwgTlNOb3RpZmljYXRpb25OYW1lKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBVSUtpdCwgVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24sIE5T
Tm90aWZpY2F0aW9uTmFtZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVUlL
aXQsIFVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24sIE5TTm90aWZpY2F0
aW9uTmFtZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24sIE5TTm90aWZpY2F0aW9uTmFt
ZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIFVJQ29udGVudFNp
emVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiwgTlNOb3RpZmljYXRpb25OYW1lKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlGb250VGV4dFN0eWxlQ2Fs
bG91dCwgVUlGb250VGV4dFN0eWxlKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBVSUtpdCwgVUlUZXh0RWZmZWN0c0JlbmVhdGhTdGF0dXNCYXJXaW5kb3dMZXZlbCwgVUlXaW5k
b3dMZXZlbCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgTlNQYXJhZ3JhcGhTdHls
ZSkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgTlNTaGFkb3cpCiBTT0ZUX0xJTktf
Q0xBU1NfRk9SX0hFQURFUihQQUwsIE5TVGV4dExpc3QpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFVJQXBwbGljYXRpb24pCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFVJU2NyZWVuKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSUNvbG9yKQorU09G
VF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSURldmljZSkKK1NPRlRfTElOS19DTEFTU19G
T1JfSEVBREVSKFBBTCwgVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlcikKK1NPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlGb250KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFE
RVIoUEFMLCBVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlcikKK1NPRlRfTElOS19DTEFTU19GT1JfSEVB
REVSKFBBTCwgVUlJbWFnZSkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlMYWJl
bCkKK1NPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgVUlQYXN0ZWJvYXJkKQorU09GVF9M
SU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSVNjcmVlbikKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgVUlUYXBHZXN0dXJlUmVjb2duaXplcikKK1NPRlRfTElOS19DTEFTU19GT1Jf
SEVBREVSKFBBTCwgVUlWaWV3KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSVZp
ZXdDb250cm9sbGVyKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoUEFMLCBVSVdpbmRvdykK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgVUlLaXQsIF9VSUtpdEdldFRleHRF
ZmZlY3RzQ2F0YWxvZywgQ1VJQ2F0YWxvZyAqLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNHcmF5c2NhbGVFbmFi
bGVkLCBCT09MLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkLCBCT09MLCAodm9p
ZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nl
c3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkLCBCT09MLCAodm9pZCksICgpKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5UG9zdE5v
dGlmaWNhdGlvbiwgdm9pZCwgKFVJQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMgbiwgaWQgYXJn
dW1lbnQpLCAobiwgYXJndW1lbnQpKQorU09GVF9MSU5LX1ZBUklBQkxFX0ZPUl9IRUFERVIoUEFM
LCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5QW5ub3VuY2VtZW50Tm90aWZpY2F0aW9uLCBVSUFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25zKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2lvcy9VSUtpdFNvZnRMaW5rLm1tCmluZGV4IDEwZTAwYmI0MTc0MTFkMTdkZTQ1MWM3NTkxYzdm
OTY4YzNkZGJjNWQuLjE0M2I4ZWI5MDBmNWNkZWM0NGU3ZmUyNDllZGNhYjY3OTRmMGM3YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvaW9zL1VJS2l0U29mdExpbmsubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9pb3MvVUlLaXRTb2Z0TGluay5tbQpAQCAtMzAsMTUg
KzMwLDM5IEBACiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKK0BjbGFzcyBDVUlDYXRhbG9nOworCiBTT0ZUX0xJTktfRlJBTUVX
T1JLX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCkKIAorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0UoUEFMLCBVSUtpdCwgVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24s
IE5TTm90aWZpY2F0aW9uTmFtZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
VUlLaXQsIFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uLCBOU05v
dGlmaWNhdGlvbk5hbWUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFVJS2l0
LCBVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlv
bk5hbWUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uLCBOU05vdGlmaWNhdGlvbk5hbWUp
CitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUNvbnRlbnRTaXpl
Q2F0ZWdvcnlEaWRDaGFuZ2VOb3RpZmljYXRpb24sIE5TTm90aWZpY2F0aW9uTmFtZSkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJRm9udFRleHRTdHlsZUNhbGxv
dXQsIFVJRm9udFRleHRTdHlsZSkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
VUlLaXQsIFVJVGV4dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2luZG93TGV2ZWwsIFVJV2luZG93
TGV2ZWwpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBOU1BhcmFncmFw
aFN0eWxlKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgTlNTaGFkb3cp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBOU1RleHRMaXN0KQogU09G
VF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBcHBsaWNhdGlvbikKK1NPRlRf
TElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JUKFBBTCwgVUlLaXQsIFVJQ29sb3IsIFBB
TF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSURldmlj
ZSkKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJRG9jdW1lbnRJbnRl
cmFjdGlvbkNvbnRyb2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0
LCBVSUZvbnQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSUdyYXBo
aWNzSW1hZ2VSZW5kZXJlcikKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgVUlLaXQsIFVJSW1hZ2UsIFBBTF9FWFBPUlQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NP
VVJDRShQQUwsIFVJS2l0LCBVSUxhYmVsKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFM
LCBVSUtpdCwgVUlQYXN0ZWJvYXJkKQogU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBV
SUtpdCwgVUlTY3JlZW4pCi1TT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBV
SUNvbG9yKQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlUYXBHZXN0
dXJlUmVjb2duaXplcikKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJ
VmlldykKK1NPRlRfTElOS19DTEFTU19GT1JfU09VUkNFKFBBTCwgVUlLaXQsIFVJVmlld0NvbnRy
b2xsZXIpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShQQUwsIFVJS2l0LCBVSVdpbmRvdykK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgVUlLaXQsIF9VSUtpdEdldFRleHRF
ZmZlY3RzQ2F0YWxvZywgQ1VJQ2F0YWxvZyAqLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNHcmF5c2NhbGVFbmFi
bGVkLCBCT09MLCAodm9pZCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkLCBCT09MLCAodm9p
ZCksICgpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBV
SUtpdCwgVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkLCBCT09MLCAodm9pZCks
ICgpLCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBVSUtp
dCwgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbiwgdm9pZCwgKFVJQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbnMgbiwgaWQgYXJndW1lbnQpLCAobiwgYXJndW1lbnQpKQorU09GVF9MSU5L
X1ZBUklBQkxFX0ZPUl9TT1VSQ0UoUEFMLCBVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5QW5ub3VuY2Vt
ZW50Tm90aWZpY2F0aW9uLCBVSUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggYTQyNzkxM2Y0
Nzc0Mzg1M2U0NjQ3YjUyZWM2NmQ4MjYxYmZlNWJmOS4uN2YzMTY1YTc3ODk2MmRlMzA1ZjhiODA2
MjViYWUzYjUyYjg2YjU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
aW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTMyLDEwICszMiwxMiBAQCBXVEZfRVhURVJOX0NfRU5ECiAjaWYgVVNFKEFQUExF
X0lOVEVSTkFMX1NESykKIAogI2ltcG9ydCA8VUlLaXQvTlNQYXJhZ3JhcGhTdHlsZV9Qcml2YXRl
Lmg+CisjaW1wb3J0IDxVSUtpdC9OU1RleHRBdHRhY2htZW50X1ByaXZhdGUuaD4KICNpbXBvcnQg
PFVJS2l0L05TVGV4dExpc3QuaD4KICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25TY2VuZUNv
bnN0YW50cy5oPgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxVSUtpdC9VSUNvbG9yX1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJRm9udF9Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUludGVyZmFjZV9Qcml2YXRlLmg+CiAjaW1wb3J0IDxV
SUtpdC9VSVNjcmVlbl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVy
X1ByaXZhdGUuaD4KQEAgLTY2LDYgKzY4LDE1IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlKSB7CiAgICAgVUlBcHBsaWNhdGlvblNjZW5l
Q2xhc3NpY01vZGVPcmlnaW5hbFBhZCA9IDQsCiB9OwogCit0eXBlZGVmIGVudW0geworICAgIFVJ
Rm9udFRyYWl0UGxhaW4gICAgICAgPSAweDAwMDAwMDAwLAorICAgIFVJRm9udFRyYWl0SXRhbGlj
ICAgICAgPSAweDAwMDAwMDAxLCAvLyAxIDw8IDAKKyAgICBVSUZvbnRUcmFpdEJvbGQgICAgICAg
ID0gMHgwMDAwMDAwMiwgLy8gMSA8PCAxCisgICAgVUlGb250VHJhaXRUaGluICAgICAgICA9ICgx
IDw8IDIpLAorICAgIFVJRm9udFRyYWl0TGlnaHQgICAgICAgPSAoMSA8PCAzKSwKKyAgICBVSUZv
bnRUcmFpdFVsdHJhTGlnaHQgID0gKDEgPDwgNCkKK30gVUlGb250VHJhaXQ7CisKIEBpbnRlcmZh
Y2UgTlNQYXJhZ3JhcGhTdHlsZSAoKQogLSAoTlNBcnJheSAqKXRleHRMaXN0czsKIEBlbmQKQEAg
LTc0LDEwICs4NSwxNSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSUFwcGxpY2F0aW9u
U2NlbmVDbGFzc2ljTW9kZSkgewogLSAodm9pZClzZXRUZXh0TGlzdHM6KE5TQXJyYXkgKil0ZXh0
TGlzdHM7CiBAZW5kCiAKK0BpbnRlcmZhY2UgTlNUZXh0QXR0YWNobWVudCAoKQorLSAoaWQpaW5p
dFdpdGhGaWxlV3JhcHBlcjooTlNGaWxlV3JhcHBlciAqKWZpbGVXcmFwcGVyOworQGVuZAorCiBA
aW50ZXJmYWNlIE5TVGV4dExpc3QgOiBOU09iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
TWFya2VyRm9ybWF0OihOU1N0cmluZyAqKWZvcm1hdCBvcHRpb25zOihOU1VJbnRlZ2VyKW1hc2s7
CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbWFya2VyRm9ybWF0OwogQHBy
b3BlcnR5IE5TSW50ZWdlciBzdGFydGluZ0l0ZW1OdW1iZXI7CistIChOU1N0cmluZyAqKW1hcmtl
ckZvckl0ZW1OdW1iZXI6KE5TSW50ZWdlcilpdGVtTnVtOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJ
QXBwbGljYXRpb24gKCkKQEAgLTk4LDYgKzExNCwxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZSkgewogCiArIChVSUNvbG9yICopX2Rp
c2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjooQ0dDb2xvclJlZilj
Z0NvbG9yOwogCistIChDR0Zsb2F0KWFscGhhQ29tcG9uZW50OworCitAZW5kCisKK0BpbnRlcmZh
Y2UgVUlGb250ICgpCisKKysgKFVJRm9udCAqKWZvbnRXaXRoRmFtaWx5TmFtZTooTlNTdHJpbmcg
KilmYW1pbHlOYW1lIHRyYWl0czooVUlGb250VHJhaXQpdHJhaXRzIHNpemU6KENHRmxvYXQpZm9u
dFNpemU7CisKIEBlbmQKIAogQGludGVyZmFjZSBVSVNjcmVlbiAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMjAwNWM5YTkyZTE2ZmU3MTcxZjdhN2JiZGY0YjdiYmRmZGE1YjllNy4uZTEy
MGVjZjFlNDE2OGI5YzU4MjIyYWE5YTM3MDRjZWQ3MTE2ZDRjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CkBAIC00MTUsMTUgKzQxNSwxNSBAQCBwbGF0Zm9ybS9pb3MvU2Nyb2xsYmFyVGhlbWVJ
T1MubW0KIHBsYXRmb3JtL2lvcy9TY3JvbGxWaWV3SU9TLm1tCiBwbGF0Zm9ybS9pb3MvU2VsZWN0
aW9uUmVjdC5jcHAKIHBsYXRmb3JtL2lvcy9TeXN0ZW1NZW1vcnlJT1MuY3BwCi1wbGF0Zm9ybS9p
b3MvVGhlbWVJT1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KIHBsYXRm
b3JtL2lvcy9UaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwCi1wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tIEBuby11bmlmeQotcGxhdGZvcm0vaW9zL1ZhbGlkYXRpb25CdWJibGVJ
T1MubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCitwbGF0Zm9ybS9p
b3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbQogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tIEBuby11bmlmeQogcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5tbQogcGxhdGZvcm0vaW9zL1dlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5tbQogcGxh
dGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCi1wbGF0Zm9ybS9pb3MvV2ViRXZlbnQu
bW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KIHBsYXRmb3JtL2lvcy9XZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIEBuby11bmlmeQogcGxhdGZvcm0vaW9zL1dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudC5tbQogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJBVktpdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNlNDlmZGYzZTQxOTk3MDkxNjEyMTY4YmUzNWQ1MWI4
Y2JjZjNiNmUuLjQ0NmQ2ODIxYjliYjBhNDBmZTVjZjliZmRiMWNhZWM4OWJjYzJhMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTgwOSw3ICs4MDksNiBAQAogCQkyRDhGRUJERDE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3Nm
YWRlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEOEZFQkRCMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5oICovOyB9Owog
CQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogUmVuZGVyTGF5b3V0U3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2NjA1MEJFMTQxRDQw
MDk1Njk5OCAvKiBSZW5kZXJMYXlvdXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEOTJBNzlBMjEzNEFENzkwMEY0OTNGRCAvKiBRdWlj
a0xvb2tTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ0MzkxN0ZEMUE5MUIyRjgwMDZFMDRGMiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAq
LzsgfTsKLQkJMkQ5MkE3OUQyMTM0QUY5NTAwRjQ5M0ZEIC8qIFVzZXJBZ2VudElPUy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUY5RDgzMjAzMjU2
OTEwMDZDQUQwNiAvKiBVc2VyQWdlbnRJT1MubW0gKi87IH07CiAJCTJEOTNBRUUzMTlERjU2NDEw
MDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkzQUVFMTE5REY1NjQxMDAyQTg2QzMgLyog
U2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oICovOyB9OwogCQkyRDk3RjA0NzE5REQ0MTNDMDAx
RUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQUFFMzJDMTlEQ0FGNjAwMEUwMDJEMiAvKiBNb2Nr
UGFnZU92ZXJsYXlDbGllbnQuY3BwICovOyB9OwogCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMg
LyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREFBRTMyRDE5RENBRjYwMDBFMDAyRDIgLyogTW9ja1BhZ2VPdmVy
bGF5Q2xpZW50LmggKi87IH07CkBAIC0xMjI5LDcgKzEyMjgsNiBAQAogCQk0NEEyOEFBRjEyREZC
OEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1l
cy5oICovOyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5
OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVt
ZUlPUy5oICovOyB9OwotCQk0NEM5OTFBMDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE5RTBG
M0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MubW0gKi87IH07CiAJCTQ0REFCNUIyMTVBNjIzNTgw
MDk3QzFFNCAvKiBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0REFCNUIwMTVBNjIzNTgwMDk3QzFFNCAvKiBF
eHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCAqLzsgfTsKIAkJNDUwQ0VCRjExNTA3M0JCRTAwMkJC
MTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ1MENFQkVGMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDUxMjUwMjMxNURDRTM3RDAwMkY4NEUyIC8qIFNwaW5CdXR0b25FbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NTEyNTAyMTE1RENFMzdEMDAy
Rjg0RTIgLyogU3BpbkJ1dHRvbkVsZW1lbnQuaCAqLzsgfTsKQEAgLTI0MzYsNyArMjQzNCw2IEBA
CiAJCTgzNzkzNjNGMUZCQkIwQjQwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTM2M0Ux
RkJCQjBBNTAwQzgwMjNDIC8qIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3OTY0Q0YxRjhEQjY5RDAw
MjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFFMTI3MzAwMDI2QjlG
IC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFi
bGUuc3RyaW5nc2RpY3QgKi87IH07Ci0JCTgzN0I3RDIwMURDM0Y1NTAwMEQwNTFGQyAvKiBWYWxp
ZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1Mu
bW0gKi87IH07CiAJCTgzN0Q0NjI3MUZBMkE4Q0UwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0ZCMzQwMUY5
RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzODZB
OTZEMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODZBOTZDMTlGNjFCMkUwMEUxRUM0QSAvKiBT
dHlsZUJ1aWxkZXIuaCAqLzsgfTsKQEAgLTQyMDIsNyArNDE5OSw2IEBACiAJCUNFMDhDM0QyMTUy
QjU5OUEwMDIxQjhDMiAvKiBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTA4QzNEMDE1MkI1OTlBMDAyMUI4
QzIgLyogQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKCk7IH07IH07CiAJCUNFMTg2NjQ1MUY3MkU1QjQwMEEwQ0FCNiAvKiBNYXJrZWRUZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE4NjY0
MzFGNzJFNUI0MDBBMENBQjYgLyogTWFya2VkVGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87IH07Ci0JCUNFNEVDQ0Q2MjE1
QUE4MTIwMDU1OEM0MSAvKiBXZWJFdmVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMEQ4NEVBMTA0ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5t
bSAqLzsgfTsKIAkJQ0U1RkEyNTUyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBv
bGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0U1RkEyNTMyMDlFNDhDNTAwNTFENzAwIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
NkRBREZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NkRBREY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDRTc5OUY5ODFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3
OTlGOTYxQzZBNDZCQzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
aCAqLzsgfTsKQEAgLTMyODE0LDcgKzMyODEwLDYgQEAKIAkJCQk5NzU5RTk0NTE0RUYxQ0Y4MDAy
NkEyREQgLyogVGV4dFRyYWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzY5NzA4
NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDFFNzM0NzE2N0JDNzhFMDA5QTg4NUQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDRDOTkxQTAwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9T
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFERjZEODAwQjkyQTE4RTAwQzJEQzg1IC8qIFRocmVh
ZENoZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8q
IFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFEMDA4RDhE
NDUgLyogVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMzNDEyLDEyICszMzQwNywx
MCBAQAogCQkJCTJEOEI5MkZEMjAzRDEzRTEwMDlDODY4RiAvKiBVbmlmaWVkU291cmNlNTI4LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEI5MkZFMjAzRDEzRTEwMDlDODY4RiAvKiBVbmlmaWVk
U291cmNlNTI5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEI5MkZGMjAzRDEzRTEwMDlDODY4
RiAvKiBVbmlmaWVkU291cmNlNTMwLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTJEOTJBNzlEMjEz
NEFGOTUwMEY0OTNGRCAvKiBVc2VyQWdlbnRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MzIw
NDIwMjFGOUE5RjEwMDBCODFCMkEgLyogVXNlckFnZW50U2NyaXB0c0RhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzczRkIw
NzE5MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk4MzdCN0QyMDFEQzNGNTUwMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1
YmJsZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAv
KiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUy
RDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpD
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU4OEUwREUxNzE1RDJBMjAwNjU4RDk4IC8qIFZpZGVv
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMzQzOSw3ICszMzQzMiw2IEBACiAJCQkJQ0Q3
RTA1MjIxNjUxQzI4MjAwQzEyMDFGIC8qIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEMjI1QzBCMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlCMDcwODI0NUU1OTAwMUU5QUJDIC8q
IFdlYkNvcmVWaWV3Lm0gaW4gU291cmNlcyAqLywKLQkJCQlDRTRFQ0NENjIxNUFBODEyMDA1NThD
NDEgLyogV2ViRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlEM0YzRDM2RDFBNjlCN0RDMDA1
OUZDMkIgLyogV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUM3QjlDODEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRDA4QjAwRTIyMEEyODI0OTAwMDRCQzBBIC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVB
U1RDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IDA2MTcxNzRkMGUzMDdmYzIxNzJlYTJlMDk4ZDVl
ZTY4ODk5ZDczODQuLjczNDY0YTVmYTYxYmZlZmQzNzNiMTZmYTI2MjhhYzZkNzhhMTdjYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0K
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgogI2ltcG9ydCAi
VmlzaWJsZVNlbGVjdGlvbi5oIgogI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgiCisjaW1wb3J0IDxw
YWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1JldmVhbFNQSS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9pb3MvVUlLaXRTUEkuaD4KQEAgLTY0LDEwICs2NSw2IEBAIGV4dGVybiAiQyIgewogU09G
VF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKFVJS2l0TWFjSGVscGVyKQogU09GVF9MSU5LKFVJS2l0
TWFjSGVscGVyLCBVSU5TU2hhcmVkUmV2ZWFsQ29udHJvbGxlciwgaWQ8VUlOU1JldmVhbENvbnRy
b2xsZXI+LCAodm9pZCksICgpKQogCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQotU09GVF9M
SU5LX0NMQVNTKFVJS2l0LCBVSUFwcGxpY2F0aW9uKQotCi0KICNlbmRpZiAvLyBQTEFURk9STShJ
T1NNQUMpCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZmI0N2VlZmM5OTViNTljZmQ4MTg5MWFhYjFjMmVl
NTdkYTExNTc2Ni4uYzg2ZmQ3MzhjMjgxMGU5N2M4ODJmMmY0NGE3YjZkNzRkMjE2MWY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNjUs
MTkgKzY1LDE2IEBACiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKICNpbXBvcnQgIlZpc2libGVT
ZWxlY3Rpb24uaCIKICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2lvcy9V
SUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmlu
Z1NQSS5oPgorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9B
U0NJSUNUeXBlLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIldBS0FwcEtpdFN0dWJzLmgiCiAKLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZU
X0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3IpCi0KLVNPRlRfTElOS19DTEFTUyhVSUZvdW5kYXRp
b24sIFVJRm9udCkKIFNPRlRfTElOS19DTEFTUyhVSUZvdW5kYXRpb24sIE5TQ29sb3IpCiBTT0ZU
X0xJTktfQ0xBU1MoVUlGb3VuZGF0aW9uLCBOU1NoYWRvdykKIFNPRlRfTElOS19DTEFTUyhVSUZv
dW5kYXRpb24sIE5TVGV4dEF0dGFjaG1lbnQpCkBAIC05NywxMCArOTQsMTAgQEAgU09GVF9MSU5L
X0NMQVNTKFVJRm91bmRhdGlvbiwgTlNUZXh0VGFiKQogI2RlZmluZSBQbGF0Zm9ybU5TVGV4dFRh
YmxlICAgICAgICAgZ2V0TlNUZXh0VGFibGVDbGFzcygpCiAjZGVmaW5lIFBsYXRmb3JtTlNUZXh0
VGFiICAgICAgICAgICBnZXROU1RleHRUYWJDbGFzcygpCiAjZGVmaW5lIFBsYXRmb3JtQ29sb3Ig
ICAgICAgICAgICAgICBVSUNvbG9yCi0jZGVmaW5lIFBsYXRmb3JtQ29sb3JDbGFzcyAgICAgICAg
ICBnZXRVSUNvbG9yQ2xhc3MoKQorI2RlZmluZSBQbGF0Zm9ybUNvbG9yQ2xhc3MgICAgICAgICAg
UEFMOjpnZXRVSUNvbG9yQ2xhc3MoKQogI2RlZmluZSBQbGF0Zm9ybU5TQ29sb3JDbGFzcyAgICAg
ICAgZ2V0TlNDb2xvckNsYXNzKCkKICNkZWZpbmUgUGxhdGZvcm1Gb250ICAgICAgICAgICAgICAg
IFVJRm9udAotI2RlZmluZSBQbGF0Zm9ybUZvbnRDbGFzcyAgICAgICAgICAgZ2V0VUlGb250Q2xh
c3MoKQorI2RlZmluZSBQbGF0Zm9ybUZvbnRDbGFzcyAgICAgICAgICAgUEFMOjpnZXRVSUZvbnRD
bGFzcygpCiAKICNlbHNlCiAKQEAgLTEyNCwxNSArMTIxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXR5cGVkZWYgZW51bSB7Ci0g
ICAgVUlGb250VHJhaXRQbGFpbiAgICAgICA9IDB4MDAwMDAwMDAsCi0gICAgVUlGb250VHJhaXRJ
dGFsaWMgICAgICA9IDB4MDAwMDAwMDEsIC8vIDEgPDwgMAotICAgIFVJRm9udFRyYWl0Qm9sZCAg
ICAgICAgPSAweDAwMDAwMDAyLCAvLyAxIDw8IDEKLSAgICBVSUZvbnRUcmFpdFRoaW4gICAgICAg
ID0gKDEgPDwgMiksCi0gICAgVUlGb250VHJhaXRMaWdodCAgICAgICA9ICgxIDw8IDMpLAotICAg
IFVJRm9udFRyYWl0VWx0cmFMaWdodCAgPSAoMSA8PCA0KQotfSBVSUZvbnRUcmFpdDsKLQogZW51
bSB7CiAgICAgTlNUZXh0QmxvY2tBYnNvbHV0ZVZhbHVlVHlwZSAgICA9IDAsICAgIC8vIEFic29s
dXRlIHZhbHVlIGluIHBvaW50cwogICAgIE5TVGV4dEJsb2NrUGVyY2VudGFnZVZhbHVlVHlwZSAg
PSAxICAgICAvLyBQZXJjZW50YWdlIHZhbHVlIChvdXQgb2YgMTAwKQpAQCAtMTcwLDIwICsxNTgs
NiBAQCBlbnVtIHsKIH07CiB0eXBlZGVmIE5TVUludGVnZXIgTlNUZXh0QmxvY2tWZXJ0aWNhbEFs
aWdubWVudDsKIAotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNUZXh0QWxpZ25tZW50KSB7
Ci0gICAgTlNUZXh0QWxpZ25tZW50TGVmdCAgICAgID0gMCwgICAgLy8gVmlzdWFsbHkgbGVmdCBh
bGlnbmVkCi0gICAgTlNUZXh0QWxpZ25tZW50Q2VudGVyICAgID0gMSwgICAgLy8gVmlzdWFsbHkg
Y2VudGVyZWQKLSAgICBOU1RleHRBbGlnbm1lbnRSaWdodCAgICAgPSAyLCAgICAvLyBWaXN1YWxs
eSByaWdodCBhbGlnbmVkCi0gICAgTlNUZXh0QWxpZ25tZW50SnVzdGlmaWVkID0gMywgICAgLy8g
RnVsbHktanVzdGlmaWVkLiBUaGUgbGFzdCBsaW5lIGluIGEgcGFyYWdyYXBoIGlzIG5hdHVyYWwt
YWxpZ25lZC4KLSAgICBOU1RleHRBbGlnbm1lbnROYXR1cmFsICAgPSA0LCAgICAvLyBJbmRpY2F0
ZXMgdGhlIGRlZmF1bHQgYWxpZ25tZW50IGZvciBzY3JpcHQKLX0gTlNfRU5VTV9BVkFJTEFCTEVf
SU9TKDZfMCk7Ci0KLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TV3JpdGluZ0RpcmVjdGlv
bikgewotICAgIE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwgICAgICAgPSAtMSwgICAgLy8gRGV0
ZXJtaW5lcyBkaXJlY3Rpb24gdXNpbmcgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0gcnVsZXMg
UDIgYW5kIFAzCi0gICAgTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgICA9ICAwLCAgICAv
LyBMZWZ0IHRvIHJpZ2h0IHdyaXRpbmcgZGlyZWN0aW9uCi0gICAgTlNXcml0aW5nRGlyZWN0aW9u
UmlnaHRUb0xlZnQgICA9ICAxICAgICAvLyBSaWdodCB0byBsZWZ0IHdyaXRpbmcgZGlyZWN0aW9u
Ci19IE5TX0VOVU1fQVZBSUxBQkxFX0lPUyg2XzApOwotCiBlbnVtIHsKICAgICBOU0VudGVyQ2hh
cmFjdGVyICAgICAgICAgICAgICAgID0gMHgwMDAzLAogICAgIE5TQmFja3NwYWNlQ2hhcmFjdGVy
ICAgICAgICAgICAgPSAweDAwMDgsCkBAIC0xOTUsNyArMTY5LDYgQEAgZW51bSB7CiAgICAgTlNE
ZWxldGVDaGFyYWN0ZXIgICAgICAgICAgICAgICA9IDB4MDA3ZiwKICAgICBOU0xpbmVTZXBhcmF0
b3JDaGFyYWN0ZXIgICAgICAgID0gMHgyMDI4LAogICAgIE5TUGFyYWdyYXBoU2VwYXJhdG9yQ2hh
cmFjdGVyICAgPSAweDIwMjksCi0gICAgTlNBdHRhY2htZW50Q2hhcmFjdGVyICAgICAgICAgICA9
IDB4RkZGQyAvLyBSZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgdXNlZCBmb3IgYXR0YWNobWVudHMK
IH07CiAKIGVudW0gewpAQCAtMjA2LDU3ICsxNzksMTcgQEAgZW51bSB7CiB9OwogdHlwZWRlZiBO
U1VJbnRlZ2VyIE5TVGV4dFRhYlR5cGU7CiAKLUBpbnRlcmZhY2UgVUlDb2xvciA6IE5TT2JqZWN0
Ci0rIChVSUNvbG9yICopY2xlYXJDb2xvcjsKLS0gKENHRmxvYXQpYWxwaGFDb21wb25lbnQ7Ci1A
ZW5kCi0KIEBpbnRlcmZhY2UgTlNDb2xvciA6IFVJQ29sb3IKICsgKGlkKWNvbG9yV2l0aENhbGli
cmF0ZWRSZWQ6KENHRmxvYXQpcmVkIGdyZWVuOihDR0Zsb2F0KWdyZWVuIGJsdWU6KENHRmxvYXQp
Ymx1ZSBhbHBoYTooQ0dGbG9hdClhbHBoYTsKIEBlbmQKIAotQGludGVyZmFjZSBVSUZvbnQKLSsg
KFVJRm9udCAqKWZvbnRXaXRoTmFtZTooTlNTdHJpbmcgKilmb250TmFtZSBzaXplOihDR0Zsb2F0
KWZvbnRTaXplOwotKyAoVUlGb250ICopZm9udFdpdGhGYW1pbHlOYW1lOihOU1N0cmluZyAqKWZh
bWlseU5hbWUgdHJhaXRzOihVSUZvbnRUcmFpdCl0cmFpdHMgc2l6ZTooQ0dGbG9hdClmb250U2l6
ZTsKLS0gKE5TU3RyaW5nICopZmFtaWx5TmFtZTsKLS0gKENHRmxvYXQpcG9pbnRTaXplOwotLSAo
VUlGb250ICopZm9udFdpdGhTaXplOihDR0Zsb2F0KWZvbnRTaXplOwotKyAoTlNBcnJheSAqKWZh
bWlseU5hbWVzOwotKyAoTlNBcnJheSAqKWZvbnROYW1lc0ZvckZhbWlseU5hbWU6KE5TU3RyaW5n
ICopZmFtaWx5TmFtZTsKLSsgKFVJRm9udCAqKXN5c3RlbUZvbnRPZlNpemU6KENHRmxvYXQpZm9u
dFNpemU7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgTlNUZXh0VGFiCitAaW50ZXJmYWNlIE5TVGV4dFRh
YiAoKQogLSAoaWQpaW5pdFdpdGhUeXBlOihOU1RleHRUYWJUeXBlKXR5cGUgbG9jYXRpb246KENH
RmxvYXQpbG9jOwotLSAoaWQpaW5pdFdpdGhUZXh0QWxpZ25tZW50OihOU1RleHRBbGlnbm1lbnQp
YWxpZ25tZW50IGxvY2F0aW9uOihDR0Zsb2F0KWxvYyBvcHRpb25zOihOU0RpY3Rpb25hcnkgKilv
cHRpb25zOwotLSAoQ0dGbG9hdClsb2NhdGlvbjsKLS0gKHZvaWQpcmVsZWFzZTsKIEBlbmQKIAot
QGludGVyZmFjZSBOU1BhcmFncmFwaFN0eWxlIDogTlNPYmplY3QKLSsgKE5TUGFyYWdyYXBoU3R5
bGUgKilkZWZhdWx0UGFyYWdyYXBoU3R5bGU7Ci0tICh2b2lkKXNldEFsaWdubWVudDooTlNUZXh0
QWxpZ25tZW50KWFsaWdubWVudDsKLS0gKHZvaWQpc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb246KE5T
V3JpdGluZ0RpcmVjdGlvbil3cml0aW5nRGlyZWN0aW9uOwotLSAodm9pZClzZXRIZWFkSW5kZW50
OihDR0Zsb2F0KWFGbG9hdDsKLS0gKENHRmxvYXQpaGVhZEluZGVudDsKK0BpbnRlcmZhY2UgTlNQ
YXJhZ3JhcGhTdHlsZSAoKQogLSAodm9pZClzZXRIZWFkZXJMZXZlbDooTlNJbnRlZ2VyKWxldmVs
OwotLSAodm9pZClzZXRGaXJzdExpbmVIZWFkSW5kZW50OihDR0Zsb2F0KWFGbG9hdDsKLS0gKHZv
aWQpc2V0VGFpbEluZGVudDooQ0dGbG9hdClhRmxvYXQ7Ci0tICh2b2lkKXNldFBhcmFncmFwaFNw
YWNpbmc6KENHRmxvYXQpcGFyYWdyYXBoU3BhY2luZzsKLS0gKHZvaWQpc2V0VGV4dExpc3RzOihO
U0FycmF5ICopYXJyYXk7CiAtICh2b2lkKXNldFRleHRCbG9ja3M6KE5TQXJyYXkgKilhcnJheTsK
LS0gKHZvaWQpc2V0TWluaW11bUxpbmVIZWlnaHQ6KENHRmxvYXQpYUZsb2F0OwotLSAoTlNBcnJh
eSAqKXRleHRMaXN0czsKLS0gKHZvaWQpcmVtb3ZlVGFiU3RvcDooTlNUZXh0VGFiICopYW5PYmpl
Y3Q7Ci0tICh2b2lkKWFkZFRhYlN0b3A6KE5TVGV4dFRhYiAqKWFuT2JqZWN0OwotLSAoTlNBcnJh
eSAqKXRhYlN0b3BzOwotLSAodm9pZClzZXRIeXBoZW5hdGlvbkZhY3RvcjooZmxvYXQpYUZhY3Rv
cjsKLUBlbmQKLQotQGludGVyZmFjZSBOU1NoYWRvdyA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFNo
YWRvd09mZnNldDooQ0dTaXplKXNpemU7Ci0tICh2b2lkKXNldFNoYWRvd0JsdXJSYWRpdXM6KENH
RmxvYXQpcmFkaXVzOwotLSAodm9pZClzZXRTaGFkb3dDb2xvcjooVUlDb2xvciAqKWNvbG9yOwog
QGVuZAogCiBAaW50ZXJmYWNlIE5TVGV4dEJsb2NrIDogTlNPYmplY3QKQEAgLTI2OSwyOCArMjAy
LDYgQEAgLSAodm9pZClzZXRCb3JkZXJDb2xvcjooVUlDb2xvciAqKWNvbG9yOyAgICAgICAgLy8g
Q29udmVuaWVuY2UgbWV0aG9kIHNldHMgYWxsIGUKIC0gKHZvaWQpc2V0VmVydGljYWxBbGlnbm1l
bnQ6KE5TVGV4dEJsb2NrVmVydGljYWxBbGlnbm1lbnQpYWxpZ25tZW50OwogQGVuZAogCi1AaW50
ZXJmYWNlIE5TVGV4dExpc3QKLS0gKGlkKWluaXRXaXRoTWFya2VyRm9ybWF0OihOU1N0cmluZyAq
KWZvcm1hdCBvcHRpb25zOihOU1VJbnRlZ2VyKW1hc2s7Ci0tICh2b2lkKXNldFN0YXJ0aW5nSXRl
bU51bWJlcjooTlNJbnRlZ2VyKWl0ZW1OdW07Ci0tIChOU0ludGVnZXIpc3RhcnRpbmdJdGVtTnVt
YmVyOwotLSAoTlNTdHJpbmcgKiltYXJrZXJGb3JJdGVtTnVtYmVyOihOU0ludGVnZXIpaXRlbU51
bTsKLS0gKHZvaWQpcmVsZWFzZTsKLUBlbmQKLQotQGludGVyZmFjZSBOU011dGFibGVQYXJhZ3Jh
cGhTdHlsZSA6IE5TUGFyYWdyYXBoU3R5bGUKLS0gKHZvaWQpc2V0RGVmYXVsdFRhYkludGVydmFs
OihDR0Zsb2F0KWFGbG9hdDsKLS0gKHZvaWQpc2V0VGFiU3RvcHM6KE5TQXJyYXkgKilhcnJheTsK
LUBlbmQKLQotQGludGVyZmFjZSBOU1RleHRBdHRhY2htZW50IDogTlNPYmplY3QKLS0gKGlkKWlu
aXRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlcjsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotLSAodm9pZClzZXRCb3VuZHM6KENHUmVjdClib3VuZHM7Ci1AcHJv
cGVydHkocmV0YWluLCBub25hdG9taWMpIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyOwotI2Vu
ZGlmCi0tICh2b2lkKXJlbGVhc2U7Ci1AZW5kCi0KIEBpbnRlcmZhY2UgTlNUZXh0VGFibGUgOiBO
U1RleHRCbG9jawogLSAodm9pZClzZXROdW1iZXJPZkNvbHVtbnM6KE5TVUludGVnZXIpbnVtQ29s
czsKIC0gKHZvaWQpc2V0Q29sbGFwc2VzQm9yZGVyczooQk9PTClmbGFnOwpAQCAtNTYxLDcgKzQ3
Miw3IEBAIHN0YXRpYyBQbGF0Zm9ybUZvbnQgKl9mb250Rm9yTmFtZUFuZFNpemUoTlNTdHJpbmcg
KmZvbnROYW1lLCBDR0Zsb2F0IHNpemUsIE5TTXV0CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFmb250ICYmIFtmYW1pbHlNZW1i
ZXJGYWNlTmFtZXMgY291bnRdKQotICAgICAgICAgICAgICAgICAgICBmb250ID0gW2dldFVJRm9u
dENsYXNzKCkgZm9udFdpdGhOYW1lOmZhbWlseU5hbWUgc2l6ZTpzaXplXTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9udCA9IFtQbGF0Zm9ybUZvbnRDbGFzcyBmb250V2l0aE5hbWU6ZmFtaWx5TmFt
ZSBzaXplOnNpemVdOwogI2Vsc2UKICAgICAgICAgICAgICAgICBOU0FycmF5ICpmYW1pbHlNZW1i
ZXJBcnJheTsKICAgICAgICAgICAgICAgICBOU1N0cmluZyAqZmFjZU5hbWUgPSBbZm9udE5hbWUg
c3Vic3RyaW5nRnJvbUluZGV4OihkaXZpZGluZ1JhbmdlLmxvY2F0aW9uICsgZGl2aWRpbmdSYW5n
ZS5sZW5ndGgpXTsKQEAgLTE4NjYsNyArMTc3Nyw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3By
b2Nlc3NFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCkKICAgICB9IGVs
c2UgaWYgKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtcm93IiAmJiBbX3RleHRUYWJsZXMgY291bnRd
ID4gMCkgewogICAgICAgICBQbGF0Zm9ybUNvbG9yICpjb2xvciA9IF9jb2xvckZvckVsZW1lbnQo
ZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgICAgICBpZiAoIWNvbG9y
KQotICAgICAgICAgICAgY29sb3IgPSBbUGxhdGZvcm1Db2xvckNsYXNzIGNsZWFyQ29sb3JdOwor
ICAgICAgICAgICAgY29sb3IgPSAoUGxhdGZvcm1Db2xvciAqKVtQbGF0Zm9ybUNvbG9yQ2xhc3Mg
Y2xlYXJDb2xvcl07CiAgICAgICAgIFtfdGV4dFRhYmxlUm93QmFja2dyb3VuZENvbG9ycyBhZGRP
YmplY3Q6Y29sb3JdOwogICAgIH0gZWxzZSBpZiAoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jZWxs
IikgewogICAgICAgICB3aGlsZSAoW190ZXh0VGFibGVzIGNvdW50XSA8IFtfdGV4dEJsb2NrcyBj
b3VudF0gKyAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5n
c0Jhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29j
b2EubW0KaW5kZXggYWI5MjNlNGUxNTIzZjc0YmUxZTJmYWYxMGQ3NTE2N2ZiZmEyMmUwYS4uMTc5
NzQyMjg5YmQyMmIxNjM0YzI1ODlkMmU3YTU2MGFiZjhmMDEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC0zMCwxMyArMzAsOCBAQAog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJEZXZpY2UuaCIKKyNpbmNsdWRl
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFT
UyhVSUtpdCwgVUlBcHBsaWNhdGlvbikKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMzAsNyArMTI1LDcgQEAgdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9u
dEZhbWlsaWVzKCkKIAogYm9vbCBTZXR0aW5nc0Jhc2U6OmRlZmF1bHRUZXh0QXV0b3NpemluZ0Vu
YWJsZWQoKQogewotICAgIHJldHVybiAhZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSB8fCBbW2dl
dFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKKyAg
ICByZXR1cm4gIWRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgfHwgW1tQQUw6OmdldFVJQXBwbGlj
YXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IDU2ZDg1MTYzNzBiYWVhMTQ0NWU5NTlhYzc5NzI0
ZmJkMzhjMDA4MzYuLmYzZTQwNDU2ZmRlNmRkNmUyMWYzNTgyNWI0MzBjNzFjYTdmMTcxOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0zNSwxMyArMzUsMTMgQEAKICNpbXBvcnQgIldlYkNv
cmVUaHJlYWRSdW4uaCIKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvU2Vzc2lvbi5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUm91dGVEZXRlY3Rvci5oPgotI2ltcG9ydCA8VUlLaXQv
VUlBcHBsaWNhdGlvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KKyNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJl
YWQuaD4KICNpbXBvcnQgPHd0Zi9SQU1TaXplLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhBVkZv
dW5kYXRpb24pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkF1ZGlvU2Vzc2lvbikK
QEAgLTU5LDE5ICs1OSw2IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUm91dGVE
ZXRlY3RvcikKICNkZWZpbmUgQVZBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb25UeXBlS2V5IGdldEFW
QXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uVHlwZUtleSgpCiAjZGVmaW5lIEFWQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uT3B0aW9uS2V5IGdldEFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uT3B0aW9u
S2V5KCkKIAotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19DTEFTUyhVSUtp
dCwgVUlBcHBsaWNhdGlvbikKLVNPRlRfTElOS19DT05TVEFOVChVSUtpdCwgVUlBcHBsaWNhdGlv
bldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24sIE5TU3RyaW5nICopCi1TT0ZUX0xJTktfQ09O
U1RBTlQoVUlLaXQsIFVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9u
LCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5UKFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlk
QmVjb21lQWN0aXZlTm90aWZpY2F0aW9uLCBOU1N0cmluZyAqKQotU09GVF9MSU5LX0NPTlNUQU5U
KFVJS2l0LCBVSUFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kTm90aWZpY2F0aW9uLCBOU1N0
cmluZyAqKQotCi0jZGVmaW5lIFVJQXBwbGljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkK
LSNkZWZpbmUgVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gZ2V0VUlB
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24oKQotI2RlZmluZSBVSUFwcGxp
Y2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBnZXRVSUFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbigpCi0jZGVmaW5lIFVJQXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmVOb3RpZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5v
dGlmaWNhdGlvbigpCi0jZGVmaW5lIFVJQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3Rp
ZmljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlmaWNhdGlvbigp
Ci0KIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nKiBXZWJVSUFwcGxpY2F0aW9uV2lsbFJlc2lnbkFj
dGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3Rp
ZmljYXRpb24iOwogV0VCQ09SRV9FWFBPUlQgTlNTdHJpbmcqIFdlYlVJQXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uID0gQCJXZWJVSUFwcGxpY2F0aW9uV2lsbEVudGVy
Rm9yZWdyb3VuZE5vdGlmaWNhdGlvbiI7CiBXRUJDT1JFX0VYUE9SVCBOU1N0cmluZyogV2ViVUlB
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiA9IEAiV2ViVUlBcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlvbiI7CkBAIC0yMDcsMTkgKzE5NCwxOSBAQCAtIChp
ZClpbml0V2l0aENhbGxiYWNrOihNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKiljYWxsYmFjawogICAg
IE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3RvcihpbnRlcnJ1cHRpb246KSBuYW1lOkFWQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uTm90aWZp
Y2F0aW9uIG9iamVjdDpbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdXTsKIAotICAgIFtj
ZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25XaWxs
RW50ZXJGb3JlZ3JvdW5kOikgbmFtZTpVSUFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6UEFM
OjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24o
KSBvYmplY3Q6bmlsXTsKICAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZDopIG5hbWU6V2ViVUlBcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEJl
Y29tZUFjdGl2ZTopIG5hbWU6VUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsKKyAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlOikgbmFtZTpQQUw6OmdldF9VSUtpdF9V
SUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CiAg
ICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlv
bkRpZEJlY29tZUFjdGl2ZTopIG5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5v
dGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKGFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTopIG5hbWU6VUlBcHBs
aWNhdGlvbldpbGxSZXNpZ25BY3RpdmVOb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmU6KSBuYW1lOlBBTDo6Z2V0X1VJS2l0X1VJQXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlTm90aWZpY2F0aW9uKCkgb2JqZWN0Om5pbF07CiAgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmU6KSBu
YW1lOldlYlVJQXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOlVJQXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CisgICAgW2NlbnRlciBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDop
IG5hbWU6UEFMOjpnZXRfVUlLaXRfVUlBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZE5vdGlm
aWNhdGlvbigpIG9iamVjdDpuaWxdOwogICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBzZWxl
Y3RvcjpAc2VsZWN0b3IoYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KSBuYW1lOldlYlVJ
QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAK
ICAgICAvLyBOb3cgcGxheWluZyB3b24ndCB3b3JrIHVubGVzcyB3ZSB0dXJuIG9uIHRoZSBkZWxp
dmVyeSBvZiByZW1vdGUgY29udHJvbCBldmVudHMuCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgICAgICBbW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dIGJlZ2luUmVj
ZWl2aW5nUmVtb3RlQ29udHJvbEV2ZW50c107CisgICAgICAgIFtbUEFMOjpnZXRVSUFwcGxpY2F0
aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gYmVnaW5SZWNlaXZpbmdSZW1vdGVDb250cm9s
RXZlbnRzXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAyMjQxZGIxNTIyYWMyYzFiNDM0YTQxNjAzMWQyMzQy
MmU5YzkwMGJhLi5jZGEzNjk2NDNjMzY4YjY2NmIzNDM4YWIzZjA2NmI0MjBlM2Y3ZjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTEwMyw2ICsxMDMsNyBAQAogI2ltcG9ydCA8Q29yZUlt
YWdlL0NvcmVJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlEZXZpY2UuaD4KICNpbXBvcnQgPG1h
Y2gvbWFjaF9wb3J0Lmg+CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNlbHNl
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TR2VvbWV0cnkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUltYWdlLmg+CkBAIC0zMTUsMTAgKzMxNiw2IEBAIFNPRlRfTElOS19DT05TVEFOVChDZWxl
c3RpYWwsIEFWQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X0FWQXVkaW9Sb3V0ZU5hbWUs
CiAKICNlbmRpZiAvLyBIQVZFKENFTEVTVElBTCkKIAotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtp
dCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlEZXZpY2UpCi0jZGVmaW5lIFVJRGV2aWNlIGdl
dFVJRGV2aWNlQ2xhc3MoKQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yODgxLDcgKzI4NzgsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFRo
ZSByb3V0ZSBpcyBhIHNwZWFrZXIgb3IgSERNSSBvdXQsIG92ZXJyaWRlIHRoZSBuYW1lIHRvIGJl
IHRoZSBsb2NhbGl6ZWQgZGV2aWNlIG1vZGVsLgotICAgICAgICBOU1N0cmluZyAqbG9jYWxpemVk
RGV2aWNlTW9kZWwgPSBbW1VJRGV2aWNlIGN1cnJlbnREZXZpY2VdIGxvY2FsaXplZE1vZGVsXTsK
KyAgICAgICAgTlNTdHJpbmcgKmxvY2FsaXplZERldmljZU1vZGVsID0gW1tQQUw6OmdldFVJRGV2
aWNlQ2xhc3MoKSBjdXJyZW50RGV2aWNlXSBsb2NhbGl6ZWRNb2RlbF07CiAKICAgICAgICAgLy8g
SW4gY2FzZXMgd2hlcmUgYSByb3V0ZSB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cywgcHJl
Zml4IHRoZSBuYW1lIHdpdGggdGhlIG1vZGVsLgogICAgICAgICBCT09MIGluY2x1ZGVMb2NhbGl6
ZWREZXZpY2VNb2RlbE5hbWUgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IGI4MDc0ZDEx
YTczNGM3MjNmYWZmNjg5MTEyNzg2MmZmOTIzZmFiYjguLjBjZGRjZGY4OTcwYWQ5NTJhMTBiZGNi
MzA0MjhlNTZhYTFlN2FjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtMzgsMTYgKzM4LDEz
IEBACiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9p
b3MvQ29yZVVJU1BJLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5L
X1BSSVZBVEVfRlJBTUVXT1JLKENvcmVVSSkKIFNPRlRfTElOS19DTEFTUyhDb3JlVUksIENVSUNh
dGFsb2cpCiBTT0ZUX0xJTktfQ0xBU1MoQ29yZVVJLCBDVUlTdHlsZUVmZmVjdENvbmZpZ3VyYXRp
b24pCi0KLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTksoVUlLaXQsIF9VSUtp
dEdldFRleHRFZmZlY3RzQ2F0YWxvZywgQ1VJQ2F0YWxvZyAqLCAodm9pZCksICgpKQotU09GVF9M
SU5LX0NMQVNTKFVJS2l0LCBVSUNvbG9yKQogI2VuZGlmCiAKICNpZmRlZiBfX0xQNjRfXwpAQCAt
MTI2LDcgKzEyMyw3IEBAIHN0YXRpYyB2b2lkIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFk
dmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGCiAgICAgQ1RGb250UmVmIGN0
Rm9udCA9IHBsYXRmb3JtRGF0YS5jdEZvbnQoKTsKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShj
b250ZXh0LCBDVEZvbnRHZXRTaXplKGN0Rm9udCkpOwogCi0gICAgc3RhdGljIENVSUNhdGFsb2cg
KmNhdGFsb2cgPSBfVUlLaXRHZXRUZXh0RWZmZWN0c0NhdGFsb2coKTsKKyAgICBzdGF0aWMgQ1VJ
Q2F0YWxvZyAqY2F0YWxvZyA9IFBBTDo6c29mdExpbmtfVUlLaXRfX1VJS2l0R2V0VGV4dEVmZmVj
dHNDYXRhbG9nKCk7CiAgICAgaWYgKCFjYXRhbG9nKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IDIwYjBkOTIxZGI0
NTJkZWU1MzgyZTYyMTZiNGJlNTRjN2U1YzRkYTAuLmU5ODUyZjRjMjYxYWNlNGJjZDFkMzYxYzk0
Y2Q0MWRmNGVjYjllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
cmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFn
ZUlPUy5tbQpAQCAtNDksMjAgKzQ5LDggQEAKICNpbXBvcnQgPFVJS2l0L1VJRm9udC5oPgogI2lt
cG9ydCA8VUlLaXQvVUlHcmFwaGljc0ltYWdlUmVuZGVyZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
SW1hZ2UuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJudWxsYWJpbGl0eS1jb21wbGV0ZW5lc3MiKQotCi1TT0ZUX0xJTktf
RlJBTUVXT1JLKFVJS2l0KQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUZvbnQpCi1TT0ZUX0xJ
TktfQ0xBU1MoVUlLaXQsIFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyKQotU09GVF9MSU5LKFVJS2l0
LCBVSUdyYXBoaWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucywgdm9pZCwgKENHU2l6ZSBz
aXplLCBCT09MIG9wYXF1ZSwgQ0dGbG9hdCBzY2FsZSksIChzaXplLCBvcGFxdWUsIHNjYWxlKSkK
LVNPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0LCBDR0NvbnRleHRS
ZWYsICh2b2lkKSwgKCkpCi1TT0ZUX0xJTksoVUlLaXQsIFVJR3JhcGhpY3NHZXRJbWFnZUZyb21D
dXJyZW50SW1hZ2VDb250ZXh0LCBVSUltYWdlICosICh2b2lkKSwgKCkpCi1TT0ZUX0xJTksoVUlL
aXQsIFVJR3JhcGhpY3NFbmRJbWFnZUNvbnRleHQsIHZvaWQsICh2b2lkKSwgKCkpCi0KLUlHTk9S
RV9XQVJOSU5HU19FTkQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03OCw3ICs2Niw3IEBA
IERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZsb2F0U2l6
ZSBzY2FsZSkKICAgICBDR1NpemUgaW1hZ2VTaXplID0gQ0dTaXplTWFrZShzY2FsZS53aWR0aCgp
ICogQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgc2NhbGUuaGVpZ2h0KCkgKiBDR0ltYWdl
R2V0SGVpZ2h0KGltYWdlLmdldCgpKSk7CiAgICAgQ0dSZWN0IGltYWdlUmVjdCA9IHsgQ0dQb2lu
dFplcm8sIGltYWdlU2l6ZSB9OwogCi0gICAgUmV0YWluUHRyPFVJR3JhcGhpY3NJbWFnZVJlbmRl
cmVyPiByZW5kZXIgPSBhZG9wdE5TKFthbGxvY1VJR3JhcGhpY3NJbWFnZVJlbmRlcmVySW5zdGFu
Y2UoKSBpbml0V2l0aFNpemU6aW1hZ2VTaXplXSk7CisgICAgUmV0YWluUHRyPFVJR3JhcGhpY3NJ
bWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlHcmFwaGljc0ltYWdl
UmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZVNpemVdKTsKICAgICBVSUltYWdl
ICppbWFnZUNvcHkgPSBbcmVuZGVyLmdldCgpIGltYWdlV2l0aEFjdGlvbnM6XihVSUdyYXBoaWNz
SW1hZ2VSZW5kZXJlckNvbnRleHQgKnJlbmRlcmVyQ29udGV4dCkgewogICAgICAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQ7CiAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCBpbWFnZVNpemUuaGVpZ2h0KTsKQEAgLTEwMyw3
ICs5MSw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24KICAgICAgICAgaW1hZ2VTaXplID0gYWRq
dXN0ZWRTaXplOwogICAgIH0KIAotICAgIFJldGFpblB0cjxVSUdyYXBoaWNzSW1hZ2VSZW5kZXJl
cj4gcmVuZGVyID0gYWRvcHROUyhbYWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNl
KCkgaW5pdFdpdGhTaXplOmltYWdlU2l6ZV0pOworICAgIFJldGFpblB0cjxVSUdyYXBoaWNzSW1h
Z2VSZW5kZXJlcj4gcmVuZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJR3JhcGhpY3NJbWFnZVJl
bmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2VTaXplXSk7CiAgICAgVUlJbWFnZSAq
aW1hZ2VDb3B5ID0gW3JlbmRlci5nZXQoKSBpbWFnZVdpdGhBY3Rpb25zOl4oVUlHcmFwaGljc0lt
YWdlUmVuZGVyZXJDb250ZXh0ICpyZW5kZXJlckNvbnRleHQpIHsKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwpAQCAtMTIzLDcgKzExMSw3IEBAIHN0
YXRpYyBjb25zdCBUZXh0SW5kaWNhdG9yT3B0aW9ucyBkZWZhdWx0TGlua0luZGljYXRvck9wdGlv
bnMgPSBUZXh0SW5kaWNhdG9yT3B0CiAKIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lz
dGVtRm9udChDR0Zsb2F0IHNpemUpCiB7Ci0gICAgVUlGb250ICpmb250ID0gW2dldFVJRm9udENs
YXNzKCkgc3lzdGVtRm9udE9mU2l6ZTpzaXplXTsKKyAgICBVSUZvbnQgKmZvbnQgPSBbUEFMOjpn
ZXRVSUZvbnRDbGFzcygpIHN5c3RlbUZvbnRPZlNpemU6c2l6ZV07CiAgICAgcmV0dXJuIEZvbnRD
YXNjYWRlKEZvbnRQbGF0Zm9ybURhdGEoQ1RGb250Q3JlYXRlV2l0aE5hbWUoKENGU3RyaW5nUmVm
KWZvbnQuZm9udE5hbWUsIGZvbnQucG9pbnRTaXplLCBuaWwpLCBmb250LnBvaW50U2l6ZSkpOwog
fQogCkBAIC0xNDksNyArMTM3LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxp
bmsoRWxlbWVudCYgbGlua0VsZW1lbnQsIFVSTCYgdXJsLCBjb25zdCBTdHJpbmcKIAogICAgIENH
UmVjdCBpbWFnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIHRleHRXaWR0aCArIDIgKiBkcmFnSW1h
Z2VQYWRkaW5nLCB0ZXh0SGVpZ2h0ICsgMiAqIGRyYWdJbWFnZVBhZGRpbmcpOwogCi0gICAgUmV0
YWluUHRyPFVJR3JhcGhpY3NJbWFnZVJlbmRlcmVyPiByZW5kZXIgPSBhZG9wdE5TKFthbGxvY1VJ
R3JhcGhpY3NJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0V2l0aFNpemU6aW1hZ2VSZWN0LnNp
emVdKTsKKyAgICBSZXRhaW5QdHI8VUlHcmFwaGljc0ltYWdlUmVuZGVyZXI+IHJlbmRlciA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5pdFdp
dGhTaXplOmltYWdlUmVjdC5zaXplXSk7CiAgICAgVUlJbWFnZSAqaW1hZ2UgPSBbcmVuZGVyLmdl
dCgpIGltYWdlV2l0aEFjdGlvbnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckNvbnRleHQgKnJl
bmRlcmVyQ29udGV4dCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJl
ckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgQ0dSZWN0
R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwpAQCAtMjA1LDcgKzE5Myw3IEBAIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBUZXh0SW5kaWNhdG9yRGF0
YSYgaW5kaWNhCiAgICAgICAgIGltYWdlUmVjdC5zY2FsZSgxIC8gcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAKIAotICAgIFJldGFpblB0cjxVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlcj4gcmVu
ZGVyID0gYWRvcHROUyhbYWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5p
dFdpdGhTaXplOmltYWdlUmVjdC5zaXplKCldKTsKKyAgICBSZXRhaW5QdHI8VUlHcmFwaGljc0lt
YWdlUmVuZGVyZXI+IHJlbmRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUdyYXBoaWNzSW1hZ2VS
ZW5kZXJlckluc3RhbmNlKCkgaW5pdFdpdGhTaXplOmltYWdlUmVjdC5zaXplKCldKTsKICAgICBV
SUltYWdlICpmaW5hbEltYWdlID0gW3JlbmRlci5nZXQoKSBpbWFnZVdpdGhBY3Rpb25zOl4oVUlH
cmFwaGljc0ltYWdlUmVuZGVyZXJDb250ZXh0ICpyZW5kZXJlckNvbnRleHQpIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGUgY29udGV4dCBmbGlwIGhlcmUgc2hvdWxkIG5vdCBiZSBuZWNlc3Nh
cnksIGFuZCBzdWdnZXN0cyB0aGF0IHNvbWV3aGVyZSBlbHNlIGluIHRoZSByZWd1bGFyCkBAIC0y
NDEsNyArMjI5LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1l
JiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2sKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIGF1dG8mIGltYWdlID0gKnRleHRJbmRpY2F0b3ItPmNvbnRlbnRJbWFnZSgpOwot
ICAgIGF1dG8gcmVuZGVyID0gYWRvcHROUyhbYWxsb2NVSUdyYXBoaWNzSW1hZ2VSZW5kZXJlcklu
c3RhbmNlKCkgaW5pdFdpdGhTaXplOmltYWdlLnNpemUoKV0pOworICAgIGF1dG8gcmVuZGVyID0g
YWRvcHROUyhbUEFMOjphbGxvY1VJR3JhcGhpY3NJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBpbml0
V2l0aFNpemU6aW1hZ2Uuc2l6ZSgpXSk7CiAgICAgVUlJbWFnZSAqZmluYWxJbWFnZSA9IFtyZW5k
ZXIuZ2V0KCkgaW1hZ2VXaXRoQWN0aW9uczpbJmltYWdlXShVSUdyYXBoaWNzSW1hZ2VSZW5kZXJl
ckNvbnRleHQgKnJlbmRlcmVyQ29udGV4dCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UsIEZsb2F0UG9pbnQoKSk7CkBAIC0yNTUsNyArMjQzLDcgQEAgRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckNvbG9yKGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxvYXRS
ZWN0JiBlbGVtZW4KICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0IHsgMCwgMCwgZWxlbWVudFJlY3Qu
d2lkdGgoKSAqIHBhZ2VTY2FsZUZhY3RvciwgZWxlbWVudFJlY3QuaGVpZ2h0KCkgKiBwYWdlU2Nh
bGVGYWN0b3IgfTsKICAgICBGbG9hdFJvdW5kZWRSZWN0IHN3YXRjaCB7IGltYWdlUmVjdCwgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkoQ29sb3JTd2F0Y2hDb3JuZXJSYWRpdXMgKiBwYWdlU2NhbGVG
YWN0b3IpIH07CiAKLSAgICBhdXRvIHJlbmRlciA9IGFkb3B0TlMoW2FsbG9jVUlHcmFwaGljc0lt
YWdlUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZVJlY3Quc2l6ZSgpXSk7Cisg
ICAgYXV0byByZW5kZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlHcmFwaGljc0ltYWdlUmVuZGVy
ZXJJbnN0YW5jZSgpIGluaXRXaXRoU2l6ZTppbWFnZVJlY3Quc2l6ZSgpXSk7CiAgICAgVUlJbWFn
ZSAqaW1hZ2UgPSBbcmVuZGVyIGltYWdlV2l0aEFjdGlvbnM6XihVSUdyYXBoaWNzSW1hZ2VSZW5k
ZXJlckNvbnRleHQgKnJlbmRlcmVyQ29udGV4dCkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQg
Y29udGV4dCB7IHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQgfTsKICAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoMCwgQ0dSZWN0R2V0SGVpZ2h0KGltYWdlUmVjdCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZTlj
M2EzMTU3NTE0OGMzNDg0ZGVkNjNiZWQ1ZTI0M2RkZTI1ZWQ1Ny4uMjAwZGJjM2QwOTRhOTE4MTQ1
MmVjZjA5MGMxNmMxYjEyZDBjYjg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zOCwxMCArMzgsMTAgQEAKICNp
bXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2UuaD4KICNpbXBv
cnQgPFVJS2l0L1VJUGFzdGVib2FyZC5oPgorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9y
dCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9MaXN0SGFzaFNldC5oPgot
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAjaW1wb3J0
IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTUwLDE1ICs1MCwxMCBAQAogI2RlZmluZSBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNF
TlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRBIChQQVNURUJPQVJEX1NVUFBPUlRTX0lURU1fUFJP
VklERVJTICYmICFQTEFURk9STShJT1NNQUMpKQogI2RlZmluZSBOU1VSTF9TVVBQT1JUU19USVRM
RSAoIVBMQVRGT1JNKElPU01BQykpCiAKLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZU
X0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3IpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJSW1h
Z2UpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJUGFzdGVib2FyZCkKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZCgpCi0gICAg
OiBtX3Bhc3RlYm9hcmQoW2dldFVJUGFzdGVib2FyZENsYXNzKCkgZ2VuZXJhbFBhc3RlYm9hcmRd
KQorICAgIDogbV9wYXN0ZWJvYXJkKFtQQUw6OmdldFVJUGFzdGVib2FyZENsYXNzKCkgZ2VuZXJh
bFBhc3RlYm9hcmRdKQogewogfQogCkBAIC02OCwxMSArNjMsMTEgQEAgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIGlmIChuYW1l
ID09ICJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiKQogICAgICAgICBtX3Bhc3RlYm9hcmQg
PSBbV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzaGFyZWRJbnN0YW5jZV07CiAgICAgZWxzZQot
ICAgICAgICBtX3Bhc3RlYm9hcmQgPSBbZ2V0VUlQYXN0ZWJvYXJkQ2xhc3MoKSBnZW5lcmFsUGFz
dGVib2FyZF07CisgICAgICAgIG1fcGFzdGVib2FyZCA9IFtQQUw6OmdldFVJUGFzdGVib2FyZENs
YXNzKCkgZ2VuZXJhbFBhc3RlYm9hcmRdOwogfQogI2Vsc2UKIFBsYXRmb3JtUGFzdGVib2FyZDo6
UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCi0gICAgOiBtX3Bhc3RlYm9hcmQoW2dl
dFVJUGFzdGVib2FyZENsYXNzKCkgZ2VuZXJhbFBhc3RlYm9hcmRdKQorICAgIDogbV9wYXN0ZWJv
YXJkKFtQQUw6OmdldFVJUGFzdGVib2FyZENsYXNzKCkgZ2VuZXJhbFBhc3RlYm9hcmRdKQogewog
fQogI2VuZGlmCkBAIC0yMzEsNyArMjI2LDcgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiBDb2xvciBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmNvbG9yKCkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTpVSUNvbG9yUGJvYXJkVHlwZV07Ci0gICAgVUlDb2xvciAqdWlD
b2xvciA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpnZXRVSUNv
bG9yQ2xhc3MoKSBmcm9tRGF0YTpkYXRhIGVycm9yOm5pbF07CisgICAgVUlDb2xvciAqdWlDb2xv
ciA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzczpQQUw6OmdldFVJ
Q29sb3JDbGFzcygpIGZyb21EYXRhOmRhdGEgZXJyb3I6bmlsXTsKICAgICByZXR1cm4gQ29sb3Io
dWlDb2xvci5DR0NvbG9yKTsKIH0KIApAQCAtMzAzLDcgKzI5OCw3IEBAIHN0YXRpYyB2b2lkIHJl
Z2lzdGVySXRlbVRvUGFzdGVib2FyZChXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlz
dCAqcmVwcmVzCiAjaWYgUExBVEZPUk0oSU9TTUFDKQogICAgIC8vIEluIGlPU01hYywgLVtVSVBh
c3RlYm9hcmQgc2V0SXRlbVByb3ZpZGVyczpdIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLCBzbyB3ZSBm
YWxsIGJhY2sgdG8gc2V0dGluZyBhbiBpdGVtIGRpY3Rpb25hcnkgd2hlbgogICAgIC8vIHBvcHVs
YXRpbmcgdGhlIHBhc3RlYm9hcmQgdXBvbiBjb3B5LgotICAgIGlmIChbcGFzdGVib2FyZCBpc0tp
bmRPZkNsYXNzOmdldFVJUGFzdGVib2FyZENsYXNzKCldKSB7CisgICAgaWYgKFtwYXN0ZWJvYXJk
IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRVSVBhc3RlYm9hcmRDbGFzcygpXSkgewogICAgICAgICBh
dXRvIGl0ZW1EaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgZW51bWVyYXRlSXRl
bXM6W2l0ZW1EaWN0aW9uYXJ5XSAoaWQgPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhcj4gaXRlbSwg
TlNVSW50ZWdlcikgewogICAgICAgICAgICAgaWYgKFtpdGVtIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IodHlwZUlkZW50aWZpZXJGb3JDbGllbnQpXSAmJiBbaXRlbSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRhdGFGb3JDbGllbnQpXSkKQEAgLTMyNiw3ICszMjEsNyBAQCBzdGF0
aWMgdm9pZCByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQoV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3QgKnJlcHJlcwogbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBhdXRvIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
PSBhZG9wdE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGlu
aXRdKTsKLSAgICBVSUNvbG9yICp1aUNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0
aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcildOworICAgIFVJQ29sb3IgKnVpQ29sb3IgPSBb
UEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29s
b3IpXTsKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOltOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dWlDb2xvciByZXF1aXJpbmdTZWN1cmVD
b2Rpbmc6Tk8gZXJyb3I6bmlsXSBmb3JUeXBlOlVJQ29sb3JQYm9hcmRUeXBlXTsKICAgICByZWdp
c3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9w
YXN0ZWJvYXJkLmdldCgpKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9UaGVtZUlPUy5tbQppbmRleCA2Nzk0ZTY3ZTJlZWJlMGU3NWNjMWRiMWFhMzM2YjUwOGM3YjFj
MGYyLi4xNDc2ZjFjYjI4NjJhN2YzYTRiOGY4NDQ4ZDY5ZTk5Y2JmMzUyNDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCkBAIC0yOCwxMSArMjgsOCBAQAogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+
CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQotU09GVF9MSU5LKFVJS2l0LCBVSUFj
Y2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTQ2LDcgKzQzLDcgQEAgVGhlbWUmIFRoZW1lOjpzaW5n
bGV0b24oKQogCiBib29sIFRoZW1lSU9TOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25z
dAogewotICAgIHJldHVybiBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQoKTsK
KyAgICByZXR1cm4gUEFMOjpzb2Z0TGlua19VSUtpdF9VSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1v
dGlvbkVuYWJsZWQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggMWUzNTQ2OWE2YmYwMGFiYjc3ODIxM2VlM2NhN2FhMzMxYjUxMjA1
ZS4uNmJlZGNjOTUzNmVjZGEzNjk1MDBjMDBmYmZlNzMzYjU2MDg0NjY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC0zMCwyOSArMzAsMjYgQEAK
IAogI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJTeXN0ZW1WZXJzaW9uLmgiCisjaW1wb3J0
IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdl
c3RhbHRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5L
X0ZSQU1FV09SSyhVSUtpdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24p
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWMo
KQogewotICAgIHJldHVybiBbW2dldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0
aW9uXSBfaXNDbGFzc2ljXTsKKyAgICByZXR1cm4gW1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFz
cygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFzc2ljXTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIGlzQ2xhc3NpY1BhZCgpCiB7Ci0gICAgcmV0dXJuIFtnZXRVSUFwcGxpY2F0aW9uQ2xhc3Mo
KSBfY2xhc3NpY01vZGVdID09IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQ
YWQ7CisgICAgcmV0dXJuIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9k
ZV0gPT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKIHsKLSAgICByZXR1cm4gaXNDbGFzc2lj
KCkgJiYgW2dldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlBcHBsaWNh
dGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKKyAgICByZXR1cm4gaXNDbGFzc2ljKCkg
JiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxp
Y2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCiBzdGF0aWMgaW5saW5lIE5T
U3RyaW5nICpvc05hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZhbGlkYXRpb25CdWJibGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbQppbmRleCA1ZDEwYTg5N2U3MGU0MDg3NDRl
MDJhMmY1MWNkYWQ2MmJjZjIzMWZiLi5hOTZkNTllZTM1NjI3ZWVjYWQ4ODY2OTEzZjg1MjEyZWE5
MzliZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmFsaWRhdGlv
bkJ1YmJsZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmFsaWRhdGlv
bkJ1YmJsZUlPUy5tbQpAQCAtMjksMjMgKzI5LDEyIEBACiAKICNpbXBvcnQgIlZhbGlkYXRpb25C
dWJibGUuaCIKIAorI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAot
U09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCk7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJRm9u
dCk7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJTGFiZWwpOwotU09GVF9MSU5LX0NMQVNTKFVJ
S2l0LCBVSVBvcG92ZXJQcmVzZW50YXRpb25Db250cm9sbGVyKTsKLVNPRlRfTElOS19DTEFTUyhV
SUtpdCwgVUlUYXBHZXN0dXJlUmVjb2duaXplcik7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
Vmlldyk7Ci1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJVmlld0NvbnRyb2xsZXIpOwotU09GVF9M
SU5LX0NPTlNUQU5UKFVJS2l0LCBVSUZvbnRUZXh0U3R5bGVDYWxsb3V0LCBVSUZvbnRUZXh0U3R5
bGUpOwotU09GVF9MSU5LX0NPTlNUQU5UKFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlBbm5vdW5jZW1l
bnROb3RpZmljYXRpb24sIFVJQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMpOwotI2RlZmluZSBV
SUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uIGdldFVJQWNjZXNzaWJpbGl0eVBvc3ROb3Rp
ZmljYXRpb24KLVNPRlRfTElOSyhVSUtpdCwgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlv
biwgdm9pZCwgKFVJQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMgbiwgaWQgYXJndW1lbnQpLCAo
biwgYXJndW1lbnQpKTsKLQogQGludGVyZmFjZSBXZWJWYWxpZGF0aW9uQnViYmxlVGFwUmVjb2du
aXplciA6IE5TT2JqZWN0CiBAZW5kCiAKQEAgLTYxLDcgKzUwLDcgQEAgLSAoV2ViVmFsaWRhdGlv
bkJ1YmJsZVRhcFJlY29nbml6ZXIgKilpbml0V2l0aFBvcG92ZXJDb250cm9sbGVyOihVSVZpZXdD
b250cm9sbGUKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF9wb3BvdmVyQ29udHJvbGxlciA9
IHBvcG92ZXJDb250cm9sbGVyOwotICAgIF90YXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMo
W2FsbG9jVUlUYXBHZXN0dXJlUmVjb2duaXplckluc3RhbmNlKCkgaW5pdFdpdGhUYXJnZXQ6c2Vs
ZiBhY3Rpb246QHNlbGVjdG9yKGRpc21pc3NQb3BvdmVyKV0pOworICAgIF90YXBHZXN0dXJlUmVj
b2duaXplciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSVRhcEdlc3R1cmVSZWNvZ25pemVySW5zdGFu
Y2UoKSBpbml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoZGlzbWlzc1BvcG92ZXIp
XSk7CiAgICAgW1tfcG9wb3ZlckNvbnRyb2xsZXIgdmlld10gYWRkR2VzdHVyZVJlY29nbml6ZXI6
X3RhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTA2
LDE2ICs5NSwxNiBAQCBWYWxpZGF0aW9uQnViYmxlOjpWYWxpZGF0aW9uQnViYmxlKFVJVmlldyog
dmlldywgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTZQogICAgIDogbV92aWV3KHZpZXcp
CiAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKIHsKLSAgICBtX3BvcG92ZXJDb250cm9sbGVyID0g
YWRvcHROUyhbYWxsb2NVSVZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgbV9w
b3BvdmVyQ29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSVZpZXdDb250cm9sbGVySW5z
dGFuY2UoKSBpbml0XSk7CiAgICAgW21fcG9wb3ZlckNvbnRyb2xsZXIgc2V0TW9kYWxQcmVzZW50
YXRpb25TdHlsZTpVSU1vZGFsUHJlc2VudGF0aW9uUG9wb3Zlcl07CiAKLSAgICBSZXRhaW5QdHI8
VUlWaWV3PiBwb3BvdmVyVmlldyA9IGFkb3B0TlMoW2FsbG9jVUlWaWV3SW5zdGFuY2UoKSBpbml0
V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiBwb3BvdmVyVmll
dyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSVZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVyb10pOwogICAgIFttX3BvcG92ZXJDb250cm9sbGVyIHNldFZpZXc6cG9wb3ZlclZpZXcu
Z2V0KCldOwogICAgIG1fdGFwUmVjb2duaXplciA9IGFkb3B0TlMoW1tXZWJWYWxpZGF0aW9uQnVi
YmxlVGFwUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhQb3BvdmVyQ29udHJvbGxlcjptX3BvcG92
ZXJDb250cm9sbGVyLmdldCgpXSk7CiAKLSAgICBSZXRhaW5QdHI8VUlMYWJlbD4gbGFiZWwgPSBh
ZG9wdE5TKFthbGxvY1VJTGFiZWxJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10p
OworICAgIFJldGFpblB0cjxVSUxhYmVsPiBsYWJlbCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUxh
YmVsSW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKICAgICBbbGFiZWwgc2V0
VGV4dDptZXNzYWdlXTsKLSAgICBbbGFiZWwgc2V0Rm9udDpbZ2V0VUlGb250Q2xhc3MoKSBwcmVm
ZXJyZWRGb250Rm9yVGV4dFN0eWxlOmdldFVJRm9udFRleHRTdHlsZUNhbGxvdXQoKV1dOworICAg
IFtsYWJlbCBzZXRGb250OltQQUw6OmdldFVJRm9udENsYXNzKCkgcHJlZmVycmVkRm9udEZvclRl
eHRTdHlsZTpQQUw6OmdldF9VSUtpdF9VSUZvbnRUZXh0U3R5bGVDYWxsb3V0KCldXTsKICAgICBt
X2ZvbnRTaXplID0gW1tsYWJlbCBmb250XSBwb2ludFNpemVdOwogICAgIFtsYWJlbCBzZXRMaW5l
QnJlYWtNb2RlOk5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbF07CiAgICAgW2xhYmVsIHNldE51
bWJlck9mTGluZXM6NF07CkBAIC0xNDYsMTMgKzEzNSwxMyBAQCB2b2lkIFZhbGlkYXRpb25CdWJi
bGU6OnNob3coKQogICAgICAgICBbcHJvdGVjdGVkVGhpcy0+bV9wb3BvdmVyQ29udHJvbGxlci5n
ZXQoKS52aWV3IHNldEFjY2Vzc2liaWxpdHlFbGVtZW50c0hpZGRlbjpZRVNdOwogICAgIH1dOwog
Ci0gICAgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbihnZXRVSUFjY2Vzc2liaWxpdHlB
bm5vdW5jZW1lbnROb3RpZmljYXRpb24oKSwgbV9tZXNzYWdlKTsKKyAgICBQQUw6OnNvZnRMaW5r
VUlLaXRVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uKCpQQUw6OmdldF9VSUtpdF9VSUFj
Y2Vzc2liaWxpdHlBbm5vdW5jZW1lbnROb3RpZmljYXRpb24oKSwgbV9tZXNzYWdlKTsKIH0KIAog
c3RhdGljIFVJVmlld0NvbnRyb2xsZXIgKmZhbGxiYWNrVmlld0NvbnRyb2xsZXIoVUlWaWV3ICp2
aWV3KQogewogICAgIGZvciAoVUlWaWV3ICpjdXJyZW50VmlldyA9IHZpZXc7IGN1cnJlbnRWaWV3
OyBjdXJyZW50VmlldyA9IGN1cnJlbnRWaWV3LnN1cGVydmlldykgewotICAgICAgICBpZiAoVUlW
aWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIgPSBbZ2V0VUlWaWV3Q29udHJvbGxlckNsYXNz
KCkgdmlld0NvbnRyb2xsZXJGb3JWaWV3OmN1cnJlbnRWaWV3XSkKKyAgICAgICAgaWYgKFVJVmll
d0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyID0gW1BBTDo6Z2V0VUlWaWV3Q29udHJvbGxlckNs
YXNzKCkgdmlld0NvbnRyb2xsZXJGb3JWaWV3OmN1cnJlbnRWaWV3XSkKICAgICAgICAgICAgIHJl
dHVybiB2aWV3Q29udHJvbGxlcjsKICAgICB9CiAgICAgTlNMb2coQCJGYWlsZWQgdG8gZmluZCBh
IHZpZXcgY29udHJvbGxlciB0byBzaG93IGZvcm0gdmFsaWRhdGlvbiBwb3BvdmVyIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0KaW5kZXggOTYzM2IzY2YxOWQwOWE1Mjg5MDUzZGQzN2UxZDkyMTcw
MWYzZmI1NC4uOWYxYmE3OTk4NmQyNzBjZGRkNjcwNDBlNjYxZjc2NzEwNDRjNDI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8VUlLaXQvVUlX
aW5kb3cuaD4KICNpbXBvcnQgPG9iamMvbWVzc2FnZS5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1l
Lmg+CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvQVZLaXRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC02NSwxNSArNjYsNiBAQCBTT0ZUX0xJTktfQ0xBU1Nf
T1BUSU9OQUwoQVZLaXQsIEFWUGljdHVyZUluUGljdHVyZUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWUGxheWVyVmlld0NvbnRyb2xsZXIpCiBTT0ZUX0xJTktf
Q0xBU1NfT1BUSU9OQUwoQVZLaXQsIF9fQVZQbGF5ZXJMYXllclZpZXcpCiAKLVNPRlRfTElOS19G
UkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pCi1T
T0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJU2NyZWVuKQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBV
SVdpbmRvdykKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlWaWV3KQotU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSVZpZXdDb250cm9sbGVyKQotU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUNvbG9y
KQotU09GVF9MSU5LX0NPTlNUQU5UKFVJS2l0LCBVSVRleHRFZmZlY3RzQmVuZWF0aFN0YXR1c0Jh
cldpbmRvd0xldmVsLCBVSVdpbmRvd0xldmVsKQotCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCiAt
IChCT09MKV9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3M7CiBAZW5kCkBAIC04NCw3ICs3Niw3IEBA
IEBlbmQKIAogc3RhdGljIFVJQ29sb3IgKmNsZWFyVUlDb2xvcigpCiB7Ci0gICAgcmV0dXJuIChV
SUNvbG9yICopW2dldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdOworICAgIHJldHVybiAoVUlD
b2xvciAqKVtQQUw6OmdldFVJQ29sb3JDbGFzcygpIGNsZWFyQ29sb3JdOwogfQogCiAjaWYgIUxP
R19ESVNBQkxFRApAQCAtMzk4LDcgKzM5MCw3IEBAIHN0YXRpYyBXZWJBVlBpY3R1cmVJblBpY3R1
cmVQbGF5ZXJMYXllclZpZXcgKmFsbG9jV2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5CiAg
ICAgc3RhdGljIENsYXNzIHRoZUNsYXNzID0gbmlsOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAg
dGhlQ2xhc3MgPSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWlyKGdldFVJVmlld0NsYXNzKCksICJXZWJB
VlBpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXciLCAwKTsKKyAgICAgICAgdGhlQ2xhc3Mg
PSBvYmpjX2FsbG9jYXRlQ2xhc3NQYWlyKFBBTDo6Z2V0VUlWaWV3Q2xhc3MoKSwgIldlYkFWUGlj
dHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIsIDApOwogICAgICAgICBvYmpjX3JlZ2lzdGVy
Q2xhc3NQYWlyKHRoZUNsYXNzKTsKICAgICAgICAgQ2xhc3MgbWV0YUNsYXNzID0gb2JqY19nZXRN
ZXRhQ2xhc3MoIldlYkFWUGljdHVyZUluUGljdHVyZVBsYXllckxheWVyVmlldyIpOwogICAgICAg
ICBjbGFzc19hZGRNZXRob2QobWV0YUNsYXNzLCBAc2VsZWN0b3IobGF5ZXJDbGFzcyksIChJTVAp
V2ViQVZQaWN0dXJlSW5QaWN0dXJlUGxheWVyTGF5ZXJWaWV3X2xheWVyQ2xhc3MsICJAQDoiKTsK
QEAgLTQ1MCw3ICs0NDIsNyBAQCBzdGF0aWMgVUlWaWV3ICpXZWJBVlBsYXllckxheWVyVmlld192
aWRlb1ZpZXcoaWQgYVNlbGYsIFNFTCkKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gW3dlYkFW
UGxheWVyTGF5ZXIgdmlkZW9TdWJsYXllcl07CiAgICAgaWYgKCF2aWRlb0xheWVyIHx8ICF2aWRl
b0xheWVyLmRlbGVnYXRlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIEFTU0VSVChbW3ZpZGVv
TGF5ZXIgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6Z2V0VUlWaWV3Q2xhc3MoKV0pOworICAgIEFT
U0VSVChbW3ZpZGVvTGF5ZXIgZGVsZWdhdGVdIGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRVSVZpZXdD
bGFzcygpXSk7CiAgICAgcmV0dXJuIChVSVZpZXcgKilbdmlkZW9MYXllciBkZWxlZ2F0ZV07CiB9
CiAKQEAgLTgyOSw3ICs4MjEsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncgogc3RhdGljIFVJ
Vmlld0NvbnRyb2xsZXIgKmZhbGxiYWNrVmlld0NvbnRyb2xsZXIoVUlWaWV3ICp2aWV3KQogewog
ICAgIGZvciAoVUlWaWV3ICpjdXJyZW50VmlldyA9IHZpZXc7IGN1cnJlbnRWaWV3OyBjdXJyZW50
VmlldyA9IGN1cnJlbnRWaWV3LnN1cGVydmlldykgewotICAgICAgICBpZiAoVUlWaWV3Q29udHJv
bGxlciAqdmlld0NvbnRyb2xsZXIgPSBbZ2V0VUlWaWV3Q29udHJvbGxlckNsYXNzKCkgdmlld0Nv
bnRyb2xsZXJGb3JWaWV3OmN1cnJlbnRWaWV3XSkgeworICAgICAgICBpZiAoVUlWaWV3Q29udHJv
bGxlciAqdmlld0NvbnRyb2xsZXIgPSBbUEFMOjpnZXRVSVZpZXdDb250cm9sbGVyQ2xhc3MoKSB2
aWV3Q29udHJvbGxlckZvclZpZXc6Y3VycmVudFZpZXddKSB7CiAgICAgICAgICAgICBpZiAoIVt2
aWV3Q29udHJvbGxlciBwYXJlbnRWaWV3Q29udHJvbGxlcl0pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHZpZXdDb250cm9sbGVyOwogICAgICAgICB9CkBAIC0xMjA3LDE0ICsxMTk5LDE0IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRvU2V0dXAoKQogI2lmICFQTEFURk9S
TShXQVRDSE9TKQogICAgIGlmICghW1ttX3BhcmVudFZpZXcgd2luZG93XSBfaXNIb3N0ZWRJbkFu
b3RoZXJQcm9jZXNzXSAmJiAhbV93aW5kb3cpIHsKICAgICAgICAgaWYgKCFtX3dpbmRvdykKLSAg
ICAgICAgICAgIG1fd2luZG93ID0gYWRvcHROUyhbYWxsb2NVSVdpbmRvd0luc3RhbmNlKCkgaW5p
dFdpdGhGcmFtZTpbW2dldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBib3VuZHNdXSk7Cisg
ICAgICAgICAgICBtX3dpbmRvdyA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSVdpbmRvd0luc3RhbmNl
KCkgaW5pdFdpdGhGcmFtZTpbW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIGJv
dW5kc11dKTsKICAgICAgICAgW21fd2luZG93IHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29s
b3IoKV07CiAgICAgICAgIGlmICghbV92aWV3Q29udHJvbGxlcikKLSAgICAgICAgICAgIG1fdmll
d0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGlu
aXRdKTsKKyAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9j
VUlWaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOwogICAgICAgICBbW21fdmlld0NvbnRy
b2xsZXIgdmlld10gc2V0RnJhbWU6W21fd2luZG93IGJvdW5kc11dOwogICAgICAgICBbbV92aWV3
Q29udHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVkT3JpZW50YXRpb25zOllFU107CiAgICAg
ICAgIFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQo
KV07Ci0gICAgICAgIFttX3dpbmRvdyBzZXRXaW5kb3dMZXZlbDpnZXRVSVRleHRFZmZlY3RzQmVu
ZWF0aFN0YXR1c0JhcldpbmRvd0xldmVsKCkgKyAxXTsKKyAgICAgICAgW21fd2luZG93IHNldFdp
bmRvd0xldmVsOlBBTDo6Z2V0X1VJS2l0X1VJVGV4dEVmZmVjdHNCZW5lYXRoU3RhdHVzQmFyV2lu
ZG93TGV2ZWwoKSArIDFdOwogICAgICAgICBbbV93aW5kb3cgbWFrZUtleUFuZFZpc2libGVdOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkV2ZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCmluZGV4
IDhkODhmMmJmOWFiMTU5MTQ3NDI1NmU3YzA2YTNlOWMxNjI3MThlNWQuLjFkNWY2YTQ0ZmI3MGI5
MTNmOGZkMTcxYTY5ZDk4MWQyZjBkZDZiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJFdmVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViRXZlbnQubW0KQEAgLTM1LDE1ICszNSwxMCBAQAogCiAjaW1wb3J0ICJLZXlFdmVudENvZGVz
SU9TLmgiCiAjaW1wb3J0ICJXQUtBcHBLaXRTdHVicy5oIgorI2ltcG9ydCA8cGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0U1BJLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2lvcy9HcmFwaGljc1NlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lv
cy9VSUtpdFNQSS5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19G
UkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBwbGljYXRpb24pOwot
Ci0jZGVmaW5lIFVJQXBwbGljYXRpb24gZ2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkKIAogdXNpbmcg
V2ViQ29yZTo6d2luZG93c0tleUNvZGVGb3JLZXlDb2RlOwogdXNpbmcgV2ViQ29yZTo6d2luZG93
c0tleUNvZGVGb3JDaGFyQ29kZTsKQEAgLTQ2Myw3ICs0NTgsNyBAQCAtIChmbG9hdClnZXN0dXJl
Um90YXRpb24KIAogKyAoV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzCiB7Ci0gICAgcmV0dXJu
IEdTRXZlbnRJc0hhcmR3YXJlS2V5Ym9hcmRBdHRhY2hlZCgpID8gR1NLZXlib2FyZEdldE1vZGlm
aWVyU3RhdGUoW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLl9oYXJkd2FyZUtleWJv
YXJkKSA6IDA7CisgICAgcmV0dXJuIEdTRXZlbnRJc0hhcmR3YXJlS2V5Ym9hcmRBdHRhY2hlZCgp
ID8gR1NLZXlib2FyZEdldE1vZGlmaWVyU3RhdGUoW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNz
KCkgc2hhcmVkQXBwbGljYXRpb25dLl9oYXJkd2FyZUtleWJvYXJkKSA6IDA7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQubW0KaW5kZXggOTYyOTZjYjhkMzIxZTIwZmMzZjQyNjFlMTQzOTJlYjZkMDc2
MjE2Ny4uYmY4MjE4Mzk5MTVlODBkNTg5OWE5NDg5OTlmMmYwMjA2ZDhjZmYzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0KQEAgLTM2LDE1ICszNiwxMSBAQAogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9h
cmQuaD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9pb3MvVUlLaXRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3Rm
L09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKLVNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlDb2xvcikKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlJbWFnZSkKIAog
dHlwZWRlZiB2b2lkKF5JdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25IYW5kbGVyKShOU0Rh
dGEgKiwgTlNFcnJvciAqKTsKIHR5cGVkZWYgdm9pZCheSXRlbVByb3ZpZGVyRmlsZUxvYWRDb21w
bGV0aW9uSGFuZGxlcikoTlNVUkwgKiwgQk9PTCwgTlNFcnJvciAqKTsKQEAgLTU3OSw3ICs1NzUs
NyBAQCAtIChOU0FycmF5ICopZGF0YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3Rl
Ym9hcmRUeXBlIGluSXRlbVNldDooTlNJbmRleAogCiBzdGF0aWMgTlNBcnJheTxDbGFzczxOU0l0
ZW1Qcm92aWRlclJlYWRpbmc+PiAqYWxsTG9hZGFibGVDbGFzc2VzKCkKIHsKLSAgICByZXR1cm4g
QFsgW2dldFVJQ29sb3JDbGFzcygpIGNsYXNzXSwgW2dldFVJSW1hZ2VDbGFzcygpIGNsYXNzXSwg
W05TVVJMIGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TQXR0cmlidXRlZFN0cmluZyBjbGFz
c10gXTsKKyAgICByZXR1cm4gQFsgW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY2xhc3NdLCBbUEFM
OjpnZXRVSUltYWdlQ2xhc3MoKSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1N0cmluZyBjbGFz
c10sIFtOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIF07CiB9CiAKIHN0YXRpYyBDbGFzcyBjbGFz
c0ZvclR5cGVJZGVudGlmaWVyKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciwgTlNTdHJpbmcgKiZv
dXRUeXBlSWRlbnRpZmllclRvTG9hZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmlu
ZGV4IDQ5Njc3NDZiZGJlY2MwYTM3ZWU0YmE1NDlkMDE4NDFmMzdmNDcyNzAuLjY5MWNiZjgxNzY1
YzdkZDE1NjMyN2JkZDNmOGMyZjFlNjRmYWE5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJB
VktpdC5tbQpAQCAtNDMsMTEgKzQzLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTFZpZGVvRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWRlby5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkUnVuLmg+CisjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgotI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJVmlldykKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTk2OSw3
ICs5NjYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRVcEZ1
bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbAogICAgICAgICBtX2ludGVyZmFjZS0+
c2V0VmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CiAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRW
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKIAotICAgICAgICBtX3ZpZGVvRnVs
bHNjcmVlblZpZXcgPSBhZG9wdE5TKFthbGxvY1VJVmlld0luc3RhbmNlKCkgaW5pdF0pOworICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlWaWV3SW5z
dGFuY2UoKSBpbml0XSk7CiAKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldHVwRnVsbHNjcmVlbigq
bV92aWRlb0Z1bGxzY3JlZW5WaWV3LmdldCgpLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2aWV3
UmVmLmdldCgpLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBmYWxzZSk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
VVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW0KaW5kZXggZjU0ZjU4YzI1ZDZjNTI0NTIyOGIyYTQ3OTQwZWQ1MjA1
MTU3OTk2Ny4uNTQ4NjQ0MGQ3Mzg5NGFjMTQyOTcwMGJhZjQ5YTE3NzU3ODhkOWRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVV
UkxSZXNwb25zZS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV2ViQ29yZVVSTFJlc3Bv
bnNlLmgiCiAKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbXBvcnQgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgogI2ltcG9ydCA8cGFsL3NwaS9j
Zi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZWUxZTIyNjgzMWNmNjQ5N2Mw
NGRmM2I1MDc3YWQ3NTc5ODg1ZTg4OS4uNjA5NDk5MTZiMzg4MWM0Yzg4NTJhODM3MTI3NTJjMjQy
NmZkNDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpA
QCAtNzAsMjEgKzcwLDEzIEBACiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+
CiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ29yZUltYWdlLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUu
aD4KKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9Db3JlVGV4dFNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgotI2lt
cG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAK
LVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQXBw
bGljYXRpb24pCi1TT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3IpCi1TT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJSW1hZ2UpCi1TT0ZUX0xJTktfQ09OU1RBTlQoVUlLaXQsIFVJQ29udGVudFNp
emVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIFVJ
Q29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbiBnZXRVSUNvbnRlbnRTaXpl
Q2F0ZWdvcnlEaWRDaGFuZ2VOb3RpZmljYXRpb24oKQotCiBAaW50ZXJmYWNlIFdlYkNvcmVSZW5k
ZXJUaGVtZUJ1bmRsZSA6IE5TT2JqZWN0CiBAZW5kCiAKQEAgLTI4Niw3ICsyNzgsNyBAQCBzdGF0
aWMgSU9TR3JhZGllbnRSZWYgZ3JhZGllbnRXaXRoTmFtZShJT1NHcmFkaWVudFR5cGUgZ3JhZGll
bnRUeXBlKQogCiBzdGF0aWMgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lkKiwgQ0ZTdHJpbmdSZWYgbmFtZSwgY29uc3Qgdm9pZCos
IENGRGljdGlvbmFyeVJlZikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKG5hbWUsIENGRXF1YWwobmFt
ZSwgVUlDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlTm90aWZpY2F0aW9uKSk7CisgICAgQVNT
RVJUX1VOVVNFRChuYW1lLCBDRkVxdWFsKG5hbWUsIFBBTDo6Z2V0X1VJS2l0X1VJQ29udGVudFNp
emVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbigpKSk7CiAgICAgV2ViVGhyZWFkUnVuKF57
CiAgICAgICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUlu
RW52aXJvbm1lbnQoKTsKICAgICB9KTsKQEAgLTI5NCw3ICsyODYsNyBAQCBzdGF0aWMgdm9pZCBj
b250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLCB2b2lk
KiwgQ0ZTdHJpbgogCiBSZW5kZXJUaGVtZUlPUzo6UmVuZGVyVGhlbWVJT1MoKQogewotICAgIENG
Tm90aWZpY2F0aW9uQ2VudGVyQWRkT2JzZXJ2ZXIoQ0ZOb3RpZmljYXRpb25DZW50ZXJHZXRMb2Nh
bENlbnRlcigpLCB0aGlzLCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlLCBVSUNvbnRlbnRT
aXplQ2F0ZWdvcnlEaWRDaGFuZ2VOb3RpZmljYXRpb24sIDAsIENGTm90aWZpY2F0aW9uU3VzcGVu
c2lvbkJlaGF2aW9yRGVsaXZlckltbWVkaWF0ZWx5KTsKKyAgICBDRk5vdGlmaWNhdGlvbkNlbnRl
ckFkZE9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2VudGVyR2V0TG9jYWxDZW50ZXIoKSwgdGhpcywg
Y29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVBBTDo6
Z2V0X1VJS2l0X1VJQ29udGVudFNpemVDYXRlZ29yeURpZENoYW5nZU5vdGlmaWNhdGlvbigpLCAw
LCBDRk5vdGlmaWNhdGlvblN1c3BlbnNpb25CZWhhdmlvckRlbGl2ZXJJbW1lZGlhdGVseSk7CiB9
CiAKIFJlbmRlclRoZW1lJiBSZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkKQEAgLTMxMyw3ICszMDUs
NyBAQCBDRlN0cmluZ1JlZiBSZW5kZXJUaGVtZUlPUzo6Y29udGVudFNpemVDYXRlZ29yeSgpCiB7
CiAgICAgaWYgKCFfY29udGVudFNpemVDYXRlZ29yeSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gKF9fYnJpZGdlIENGU3RyaW5nUmVmKXN0YXRpY19jYXN0PE5TU3RyaW5nKj4oX2NvbnRlbnRT
aXplQ2F0ZWdvcnkoKSk7Ci0gICAgcmV0dXJuIChDRlN0cmluZ1JlZilbW2dldFVJQXBwbGljYXRp
b25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBwcmVmZXJyZWRDb250ZW50U2l6ZUNhdGVnb3J5
XTsKKyAgICByZXR1cm4gKENGU3RyaW5nUmVmKVtbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3Mo
KSBzaGFyZWRBcHBsaWNhdGlvbl0gcHJlZmVycmVkQ29udGVudFNpemVDYXRlZ29yeV07CiB9CiAK
IHZvaWQgUmVuZGVyVGhlbWVJT1M6OnNldENvbnRlbnRTaXplQ2F0ZWdvcnkoY29uc3QgU3RyaW5n
JiBjb250ZW50U2l6ZUNhdGVnb3J5KQpAQCAtMTQzNiwyOCArMTQyOCwyOCBAQCBDb2xvciBSZW5k
ZXJUaGVtZUlPUzo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBPcHRpb25TZXQ8
U3R5bGVDb2xvcjo6TwogICAgIENvbG9yIGNvbG9yOwogICAgIHN3aXRjaCAoY3NzVmFsdWVJRCkg
ewogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVdpcmVsZXNzUGxheWJhY2tUYXJnZXRBY3RpdmU6Ci0g
ICAgICAgIGNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIHN5c3RlbUJsdWVDb2xvcl0uQ0dDb2xv
cjsKKyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1CbHVlQ29s
b3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bUJsdWU6Ci0gICAgICAgIGNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIHN5c3RlbUJsdWVDb2xv
cl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0
ZW1CbHVlQ29sb3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVB
cHBsZVN5c3RlbUdyYXk6Ci0gICAgICAgIGNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIHN5c3Rl
bUdyYXlDb2xvcl0uQ0dDb2xvcjsKKyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRVSUNvbG9yQ2xh
c3MoKSBzeXN0ZW1HcmF5Q29sb3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbUdyZWVuOgotICAgICAgICBjb2xvciA9IFtnZXRVSUNvbG9yQ2xh
c3MoKSBzeXN0ZW1HcmVlbkNvbG9yXS5DR0NvbG9yOworICAgICAgICBjb2xvciA9IFtQQUw6Omdl
dFVJQ29sb3JDbGFzcygpIHN5c3RlbUdyZWVuQ29sb3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbU9yYW5nZToKLSAgICAgICAgY29sb3IgPSBb
Z2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtT3JhbmdlQ29sb3JdLkNHQ29sb3I7CisgICAgICAgIGNv
bG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtT3JhbmdlQ29sb3JdLkNHQ29sb3I7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVBpbms6Ci0gICAg
ICAgIGNvbG9yID0gW2dldFVJQ29sb3JDbGFzcygpIHN5c3RlbVBpbmtDb2xvcl0uQ0dDb2xvcjsK
KyAgICAgICAgY29sb3IgPSBbUEFMOjpnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1QaW5rQ29sb3Jd
LkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVJl
ZDoKLSAgICAgICAgY29sb3IgPSBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtUmVkQ29sb3JdLkNH
Q29sb3I7CisgICAgICAgIGNvbG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtUmVk
Q29sb3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5
c3RlbVllbGxvdzoKLSAgICAgICAgY29sb3IgPSBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtWWVs
bG93Q29sb3JdLkNHQ29sb3I7CisgICAgICAgIGNvbG9yID0gW1BBTDo6Z2V0VUlDb2xvckNsYXNz
KCkgc3lzdGVtWWVsbG93Q29sb3JdLkNHQ29sb3I7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTUwMSw3ICsxNDkzLDcgQEAgc3RhdGljIFJldGFpblB0
cjxDVEZvbnRSZWY+IGF0dGFjaG1lbnRBY3Rpb25Gb250KCkKIAogc3RhdGljIFVJQ29sb3IgKmF0
dGFjaG1lbnRBY3Rpb25Db2xvcihjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50KQog
ewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRD
R0NvbG9yKGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvcikpXTsKKyAgICByZXR1cm4gW1BBTDo6Z2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRo
Q0dDb2xvcjpjYWNoZWRDR0NvbG9yKGF0dGFjaG1lbnQuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpXTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDVEZvbnRS
ZWY+IGF0dGFjaG1lbnRUaXRsZUZvbnQoKQpAQCAtMTUxMCwxMCArMTUwMiwxMCBAQCBzdGF0aWMg
UmV0YWluUHRyPENURm9udFJlZj4gYXR0YWNobWVudFRpdGxlRm9udCgpCiAgICAgcmV0dXJuIGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgp
LCAwLCBudWxscHRyKSk7CiB9CiAKLXN0YXRpYyBVSUNvbG9yICphdHRhY2htZW50VGl0bGVDb2xv
cigpIHsgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBzeXN0ZW1HcmF5Q29sb3JdOyB9CitzdGF0
aWMgVUlDb2xvciAqYXR0YWNobWVudFRpdGxlQ29sb3IoKSB7IHJldHVybiBbUEFMOjpnZXRVSUNv
bG9yQ2xhc3MoKSBzeXN0ZW1HcmF5Q29sb3JdOyB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250
UmVmPiBhdHRhY2htZW50U3VidGl0bGVGb250KCkgeyByZXR1cm4gYXR0YWNobWVudFRpdGxlRm9u
dCgpOyB9Ci1zdGF0aWMgVUlDb2xvciAqYXR0YWNobWVudFN1YnRpdGxlQ29sb3IoKSB7IHJldHVy
biBbZ2V0VUlDb2xvckNsYXNzKCkgc3lzdGVtR3JheUNvbG9yXTsgfQorc3RhdGljIFVJQ29sb3Ig
KmF0dGFjaG1lbnRTdWJ0aXRsZUNvbG9yKCkgeyByZXR1cm4gW1BBTDo6Z2V0VUlDb2xvckNsYXNz
KCkgc3lzdGVtR3JheUNvbG9yXTsgfQogCiBzdHJ1Y3QgUmVuZGVyQXR0YWNobWVudEluZm8gewog
ICAgIGV4cGxpY2l0IFJlbmRlckF0dGFjaG1lbnRJbmZvKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQm
KTsKQEAgLTE2MzUsNyArMTYyNyw3IEBAIHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVz
cyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBmbG9hdCYgcHJvCiAKIHN0YXRp
YyBSZXRhaW5QdHI8VUlJbWFnZT4gaWNvbkZvckF0dGFjaG1lbnQoY29uc3QgUmVuZGVyQXR0YWNo
bWVudCYgYXR0YWNobWVudCwgRmxvYXRTaXplJiBzaXplKQogewotICAgIGF1dG8gZG9jdW1lbnRJ
bnRlcmFjdGlvbkNvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJRG9jdW1lbnRJbnRlcmFjdGlv
bkNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBhdXRvIGRvY3VtZW50SW50ZXJhY3Rp
b25Db250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNv
bnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICBp
ZiAoRmlsZSogZmlsZSA9IGF0dGFjaG1lbnQuYXR0YWNobWVudEVsZW1lbnQoKS5maWxlKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCmluZGV4IGIyNDA0ZTI0Nzg1MzJiZTYyY2I0NzBk
YmNiMDMyNmRjMWMyNGFiZWUuLjIwZDcxYmFlMzE4NTJiMDllMzFiYzhlOGQzNjI0MGRhYjRkYTAw
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLm1tCkBAIC0zMiwxNCArMzIsOSBAQAog
I2ltcG9ydCAiRXZlbnRIYW5kbGVyLmgiCiAjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW1w
b3J0ICJSYW5nZS5oIgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDxwYWwv
aW9zL1VJS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9OU1VSTEV4dHJhcy5oPgog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1T
T0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9P
TCwgKHZvaWQpLCAoKSkKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBJ
bnRlcm5hbHM6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IERPTVVSTCYgdXJsKQpAQCAtNTAsNyAr
NDUsNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBET01VUkwm
IHVybCkKIGJvb2wgSW50ZXJuYWxzOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdAog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmV0dXJuIFVJQWNjZXNzaWJpbGl0eUlz
UmVkdWNlTW90aW9uRW5hYmxlZCgpOworICAgIHJldHVybiBQQUw6OnNvZnRMaW5rX1VJS2l0X1VJ
QWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4g
W1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIGFjY2Vzc2liaWxpdHlEaXNwbGF5U2hvdWxk
UmVkdWNlTW90aW9uXTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IDY0YTk0NmI3MTNlNDYzYmVmMDFiZGExMjMxY2I5YTBjYzVmYTIyODgu
LmYwOTAwYWY5OTJiNzU4Y2RlNTQ2MWMxZmRhZjE4NjNmNjI2NzIxZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMzNCwxNyArMzM0LDkgQEAKICNl
bmRpZgogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi0jaW1wb3J0IDxVSUtpdC9VSUJl
emllclBhdGguaD4KICNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
SW1hZ2UuaD4KLVNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoVUlL
aXQsIFVJQmV6aWVyUGF0aCkKLVNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKLVNPRlRf
TElOS19DTEFTUyhVSUtpdCwgVUlJbWFnZSkKLVNPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0Jl
Z2luSW1hZ2VDb250ZXh0V2l0aE9wdGlvbnMsIHZvaWQsIChDR1NpemUgc2l6ZSwgQk9PTCBvcGFx
dWUsIENHRmxvYXQgc2NhbGUpLCAoc2l6ZSwgb3BhcXVlLCBzY2FsZSkpCi1TT0ZUX0xJTksoVUlL
aXQsIFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCksICgp
KQotU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29u
dGV4dCwgVUlJbWFnZSAqLCAodm9pZCksICgpKQotU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNz
RW5kSW1hZ2VDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQorI2ltcG9ydCA8cGFsL2lvcy9VSUtp
dFNvZnRMaW5rLmg+CiAjZW5kaWYKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VC
X1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCkBAIC03MDAsNyArNjkyLDcgQEAgLSAoV2ViVUlU
ZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dElu
ZGljYXRvckRhdGE6KGMKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAKLSAgICBfZGF0YUludGVyYWN0aW9uSW1hZ2UgPSBbYWxsb2NVSUlt
YWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW1hZ2Ugc2NhbGU6c2NhbGUgb3JpZW50YXRp
b246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJvcmVkXTsKKyAgICBfZGF0YUludGVyYWN0aW9u
SW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFn
ZSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRd
OwogICAgIF9zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0
YS5zZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIF90ZXh0Qm91bmRpbmdS
ZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gaW5kaWNhdG9yRGF0YS50ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIApAQCAtNzEwLDIwICs3MDIsMjAgQEAgLSAoV2Vi
VUlUZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4
dEluZGljYXRvckRhdGE6KGMKICAgICBfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRl
cyA9IFtbTlNBcnJheSBhcnJheVdpdGhBcnJheTp0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3Jk
aW5hdGVzXSByZXRhaW5dOwogICAgIF9jb250ZW50SW1hZ2VTY2FsZUZhY3RvciA9IGluZGljYXRv
ckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3I7CiAgICAgaWYgKGluZGljYXRvckRhdGEuY29u
dGVudEltYWdlV2l0aEhpZ2hsaWdodCkKLSAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhIaWdobGln
aHQgPSBbYWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNj
YWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07Cisg
ICAgICAgIF9jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0ID0gW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGln
aGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF07CiAgICAgaWYgKGluZGljYXRvckRhdGEu
Y29udGVudEltYWdlKQotICAgICAgICBfY29udGVudEltYWdlID0gW2FsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgpLT5u
YXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRh
dGlvblVwXTsKKyAgICAgICAgX2NvbnRlbnRJbWFnZSA9IFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVudEltYWdlLmdldCgpLT5u
YXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRh
dGlvblVwXTsKIAogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24pIHsKICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGluZGljYXRvckRhdGEuY29udGVu
dEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1hZ2UoKTsKICAgICAgICAgaWYg
KG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlv
biA9IFthbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTpuYXRpdmVJbWFnZS5n
ZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUltYWdlT3JpZW50YXRpb25VcF07CisgICAg
ICAgICAgICBfY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNjYWxlOnNjYWxl
IG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXTsKICAgICAgICAgICAgIF9jb250ZW50
SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IGluZGljYXRv
ckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXM7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5vcHRpb25zICYg
VGV4dEluZGljYXRvck9wdGlvbkNvbXB1dGVFc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IpCi0gICAg
ICAgIF9lc3RpbWF0ZWRCYWNrZ3JvdW5kQ29sb3IgPSBbYWxsb2NVSUNvbG9ySW5zdGFuY2UoKSBp
bml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRpY2F0b3JEYXRhLmVzdGltYXRlZEJhY2tn
cm91bmRDb2xvcildOworICAgICAgICBfZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yID0gW1BBTDo6
YWxsb2NVSUNvbG9ySW5zdGFuY2UoKSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihpbmRp
Y2F0b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcildOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CkBAIC03MzMsNyArNzI1LDcgQEAgLSAoV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRX
aXRoSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2Ugc2NhbGU6KENHRmxvYXQpc2NhbGUKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBf
ZGF0YUludGVyYWN0aW9uSW1hZ2UgPSBbYWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aENH
SW1hZ2U6aW1hZ2Ugc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93
bk1pcnJvcmVkXTsKKyAgICBfZGF0YUludGVyYWN0aW9uSW1hZ2UgPSBbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFnZSBzY2FsZTpzY2FsZSBvcmllbnRhdGlv
bjpVSUltYWdlT3JpZW50YXRpb25Eb3duTWlycm9yZWRdOwogICAgIAogICAgIHJldHVybiBzZWxm
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgyM2IwOGNlNGU0ZjczMWUzNzJlZmVkZGZhOTg0MGY0MGQwYTA2MDMuLjBjZTY3YWIyNmNiYzFm
YmM4OTU0NTA5YjU5NDJjMzRjYzc0NGU5ZjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxOS0wMS0xOCAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN3aXRjaCByZW1haW5pbmcg
VUlLaXQgc29mdC1saW5raW5nIGluIFdlYkNvcmUsIFdlYktpdExlZ2FjeSBvdmVyIHRvIFVJS2l0
U29mdExpbmsue2NwcCxofQorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTkzNTY4Pgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczODExMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIG5vIG9uZSByZS1pbnRyb2R1Y2Vz
IFVJS2l0IHNvZnQtbGlua2luZyBieSBhZGRpbmcgYQorICAgICAgICBzdHlsZSBydWxlLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHk6CisgICAgICAg
IChjaGVja19sYW5ndWFnZSk6IEFkZCBzb2Z0bGluay91aWtpdCBjaGVjay4KKyAgICAgICAgKENw
cENoZWNrZXIpOiBFbmFibGUgc29mdGxpbmsvdWlraXQgY2hlY2suCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHk6CisgICAgICAgIChDcHBT
dHlsZVRlc3QpOiBBZGQgdGVzdCBmb3Igc29mdGxpbmsvdWlraXQuCisKIDIwMTktMDEtMTYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKFBTT04p
IFZpZXcgYmVjb21lcyBibGFuayBhZnRlciBjbGljayBhIGNyb3NzLXNpdGUgZG93bmxvYWQgbGlu
awpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCAz
MjU2MTlkYjE4ODRmODZhNTM1OWYzYTdiZTRiNTZiNDI4Y2UzNzcxLi4wNzYzMGExMDY3NTNkZWY5
MmU1OWNhMjdiMDFhYWVjZmE4N2QyYmQ4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcC5weQpAQCAtMzMzMiw2ICszMzMyLDEwIEBAIGRlZiBjaGVja19sYW5n
dWFnZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwg
aW5jbHVkZV9zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZXRhaW5QdHI8PiBzaG91bGQg
bmV2ZXIgY29udGFpbiBhIHR5cGUgd2l0aCBcJypcJy4gQ29ycmVjdDogUmV0YWluUHRyPE5TU3Ry
aW5nPiwgUmV0YWluUHRyPENGU3RyaW5nUmVmPi4nKQogICAgICAgICAgICAgICAgIGJyZWFrCiAK
KyAgICBpZiBzZWFyY2gocideXHMqU09GVF9MSU5LX0ZSQU1FV09SS1woVUlLaXRcKScsIGxpbmUp
OgorICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3NvZnRsaW5rL3Vpa2l0JywgNSwKKyAgICAg
ICAgICAgICAgJ1VzZSAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4gYW5kIHVwZGF0
ZSBwYWwvaW9zL1VJS2l0U29mdExpbmsubW0gdG8gc29mdC1saW5rIHRvIFVJS2l0LmZyYW1ld29y
ay4nKQorCiAgICAgIyBDaGVjayBmb3Igc3VzcGljaW91cyB1c2FnZSBvZiAiaWYiIGxpa2UKICAg
ICAjIH0gaWYgKGEgPT0gYikgewogICAgIGlmIHNlYXJjaChyJ1x9XHMqaWZccypcKCcsIGxpbmUp
OgpAQCAtNDA4NCw2ICs0MDg4LDcgQEAgY2xhc3MgQ3BwQ2hlY2tlcihvYmplY3QpOgogICAgICAg
ICAnc2VjdXJpdHkvYXNzZXJ0aW9uJywKICAgICAgICAgJ3NlY3VyaXR5L3ByaW50ZicsCiAgICAg
ICAgICdzZWN1cml0eS90ZW1wX2ZpbGUnLAorICAgICAgICAnc29mdGxpbmsvdWlraXQnLAogICAg
ICAgICAnd2hpdGVzcGFjZS9ibGFua19saW5lJywKICAgICAgICAgJ3doaXRlc3BhY2UvYnJhY2Vz
JywKICAgICAgICAgJ3doaXRlc3BhY2UvYnJhY2tldHMnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRleCBiYWQyNzg1
NjFhZDQ2MzBjMGVmOWU1MDUyMzA3MDlkYTlkZDdhNDk1Li4yMjRiMDI5ZjAyNTM5MGFmMTQwM2Y1
NDYxOGRjMjdjNDM2YmExYjhmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtMTY4OCw2ICsxNjg4LDE1IEBAIGNs
YXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgICAgICcgIFtydW50
aW1lL3JldGFpbnB0cl0gWzVdJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnJydSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TQXJyYXk8TlNTdHJpbmcgKj4+PiBkaWN0aW9u
YXJ5OycnJywgJycpCiAKKyAgICBkZWYgdGVzdF9zb2Z0bGluayhzZWxmKToKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcnJ1NPRlRfTElOS19GUkFNRVdPUksoQVZGb3Vu
ZGF0aW9uKScnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJycnU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCknJycsCisgICAgICAgICAg
ICAnVXNlICNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPiBhbmQgdXBkYXRlIHBhbC9p
b3MvVUlLaXRTb2Z0TGluay5tbSB0byBzb2Z0LWxpbmsgdG8gVUlLaXQuZnJhbWV3b3JrLicKKyAg
ICAgICAgICAgICcgIFtzb2Z0bGluay91aWtpdF0gWzVdJykKKwogICAgICMgVmFyaWFibGUtbGVu
Z3RoIGFycmF5cyBhcmUgbm90IHBlcm1pdHRlZC4KICAgICBkZWYgdGVzdF92YXJpYWJsZV9sZW5n
dGhfYXJyYXlfZGV0ZWN0aW9uKHNlbGYpOgogICAgICAgICBlcnJtc2cgPSAoJ0RvIG5vdCB1c2Ug
dmFyaWFibGUtbGVuZ3RoIGFycmF5cy4gIFVzZSBhbiBhcHByb3ByaWF0ZWx5IG5hbWVkICcK
</data>

          </attachment>
      

    </bug>

</bugzilla>