<?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>233075</bug_id>
          
          <creation_ts>2021-11-12 15:36:44 -0800</creation_ts>
          <short_desc>Add a helper class to coordinate batch analysis of images</short_desc>
          <delta_ts>2021-11-17 12:23:26 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233210</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>annulen</cc>
    
    <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814654</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-12 15:36:44 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814661</commentid>
    <comment_count>1</comment_count>
      <attachid>444116</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-12 15:57:48 -0800</bug_when>
    <thetext>Created attachment 444116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815511</commentid>
    <comment_count>2</comment_count>
      <attachid>444396</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-16 08:51:20 -0800</bug_when>
    <thetext>Created attachment 444396
Rebase + implement more logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815959</commentid>
    <comment_count>3</comment_count>
      <attachid>444527</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-17 08:50:31 -0800</bug_when>
    <thetext>Created attachment 444527
Remove unnecessary SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816024</commentid>
    <comment_count>4</comment_count>
      <attachid>444527</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-17 11:21:04 -0800</bug_when>
    <thetext>Comment on attachment 444527
Remove unnecessary SPI

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

&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:59
&gt; +    auto imageIterator = document.images()-&gt;createIterator();

What order does document.images() use? I wonder if we can have an iterator that is in document order (more likely to have the images on screen up front).

Also, what happens with lazy loaded images?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816029</commentid>
    <comment_count>5</comment_count>
      <attachid>444527</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-17 11:29:51 -0800</bug_when>
    <thetext>Comment on attachment 444527
Remove unnecessary SPI

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

Thanks for the review!

&gt;&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:59
&gt;&gt; +    auto imageIterator = document.images()-&gt;createIterator();
&gt; 
&gt; What order does document.images() use? I wonder if we can have an iterator that is in document order (more likely to have the images on screen up front).
&gt; 
&gt; Also, what happens with lazy loaded images?

Good question! So `document.images()` is already in DOM order, but this is actually not ideal because (as you hinted) it would be better to prioritize images that are on-screen vs. images that are offscreen.

For lazily loaded images, I *think* we&apos;ll also exclude them from the queue here because the cached image would be 0x0. I have a followup task to add a way to queue images that are dynamically inserted into the document, so I&apos;ll use that to make sure lazy loaded images are also handled by these changes. For the time being, I&apos;ll file a new bugzilla bug and add a FIXME here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816031</commentid>
    <comment_count>6</comment_count>
      <attachid>444542</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-17 11:35:19 -0800</bug_when>
    <thetext>Created attachment 444542
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816052</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-17 12:22:18 -0800</bug_when>
    <thetext>Committed r285949 (244351@main): &lt;https://commits.webkit.org/244351@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444542.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816054</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-17 12:23:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/85515876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444116</attachid>
            <date>2021-11-12 15:57:48 -0800</date>
            <delta_ts>2021-11-16 08:51:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233075-20211112155747.patch</filename>
            <type>text/plain</type>
            <size>23525</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmExMDllNWVlOTUxZGM5
NDQxN2VjNWVhMjExMDAxMTM0ZWY0N2FlYi4uYjZjZDcwNTg3MDE2MTlhZWRmOTkwYmNmNjQxNDdk
NmU5MjYwNDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTExLTEyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBjbGFzcyB0byBjb29yZGluYXRlIGJhdGNoIGFuYWx5c2lzIG9mIGltYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEltYWdlQW5h
bHlzaXNRdWV1ZSwgd2hpY2ggd2lsbCBjb2xsZWN0IHN1aXRhYmxlIGltYWdlIGVsZW1lbnRzIGlu
IHRoZSBtYWluIGRvY3VtZW50IGFuZCBjb29yZGluYXRlCisgICAgICAgIGltYWdlIGFuYWx5c2lz
IHRhc2tzIGZvciB1cCB0byBzb21lIChjb25maWd1cmFibGUpIG1heGltdW0gbnVtYmVyIG9mIHNp
bXVsdGFuZW91cyBwZW5kaW5nIHRhc2tzLiBTZWUgYmVsb3cgZm9yCisgICAgICAgIG1vcmUgZGV0
YWlscy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlzaXNRdWV1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcik6CisgICAgICAgICogcGFnZS9JbWFnZUFuYWx5
c2lzUXVldWUuaDogQWRkZWQuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBuZXcgY2xhc3MsIGJ1
dCBzdHViIG91dCB0aGUgY29yZSBsb2dpYyBpbiBgZW5xdWV1ZUFsbEltYWdlcygpYC4KKworICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbWFnZU92ZXJs
YXlDb250cm9sbGVyKToKKworICAgICAgICBEcml2ZS1ieSBmaXg6IGBtX2ltYWdlT3ZlcmxheUNv
bnRyb2xsZXJgIHdhcyBiZWluZyBlYWdlcmx5IGluaXRpYWxpemVkIGhlcmUsIGRlc3BpdGUgdGhl
IGV4aXN0ZW5jZSBvZiBib3RoCisgICAgICAgIGBpbWFnZU92ZXJsYXlDb250cm9sbGVySWZFeGlz
dHMoKWAgYW5kIGBpbWFnZU92ZXJsYXlDb250cm9sbGVyKClgLiBGaXggdGhpcyBieSBsYXppbHkg
Y3JlYXRpbmcgdGhlCisgICAgICAgIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIgaW5zdGVhZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW1hZ2VBbmFseXNpc1F1ZXVlKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmltYWdlQW5hbHlzaXNRdWV1ZUlm
RXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmltYWdlT3ZlcmxheUNvbnRyb2xsZXIp
OiBEZWxldGVkLgorCiAyMDIxLTExLTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBpbmplY3RpbmcgYW5kIHJlbmRlcmlu
ZyB0ZXh0IHJlY29nbml0aW9uIGJsb2NrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMmU0MGFjODUyODE4MDI4Mzlj
YjIwM2ZmNDc1NGQyYjdhZGU2MWNiLi40N2IwZDc4ZWYyM2Q3MTE3YTk4MzAxMzBmOGIwYjMwZWJk
MzVhOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTExLTEyICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBjbGFz
cyB0byBjb29yZGluYXRlIGJhdGNoIGFuYWx5c2lzIG9mIGltYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY291cGxlIG9mIFdLV2ViVmll
dyBTUEkgbWV0aG9kcyB0byBraWNrIG9mZiAoYW5kIGNhbmNlbCkgYmF0Y2ggaW1hZ2UgYW5hbHlz
aXMgZm9yIG1haW5mcmFtZSBjb250ZW50LgorICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cg
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0YXJ0SW1hZ2VBbmFseXNpczpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wSW1hZ2VBbmFseXNpc10pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0SW1h
Z2VBbmFseXNpcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RvcEltYWdlQW5h
bHlzaXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnN0YXJ0SW1hZ2VBbmFseXNpcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0b3BJbWFn
ZUFuYWx5c2lzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIxLTEx
LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFBy
b2Nlc3NMYXVuY2hlck1hYy5tbSB0byBQcm9jZXNzTGF1bmNoZXJEYXJ3aW4ubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDM5MTU3M2YwODI0Y2NkMzQ4MmRmZDYxN2Y5N2Q2YWE1YjBiN2NlZGMuLjZk
NmFmZTAyZTkxZTUyNDYyNGM2ZDNiZWFiNDI0ZWU0N2E0ZDFlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtOTU0LDYgKzk1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaAogICAgIHBhZ2UvR2xvYmFsRnJh
bWVJZGVudGlmaWVyLmgKICAgICBwYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAorICAgIHBh
Z2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9uZS5oCiAgICAg
cGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDU0ZDhkM2JkOTgwZThiOWI2YjgyMWY5Y2Ni
NGZhNTIyZTFiZjFlMDIuLjA5ZDUxODA3Yjg3NjlkODAxYjQ0MTg0MDE0NzZjMWM4NTQyMzkwMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNzIzLDYgKzE3MjMsNyBAQCBwYWdlL0ZyYW1lVHJlZS5jcHAK
IHBhZ2UvRnJhbWVWaWV3LmNwcAogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFn
ZS9IaXN0b3J5LmNwcAorcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCiBwYWdlL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk5Yzg2ZDlkYmU3YjVmMDk4NGVlZjU5
NjAzZTVmYmI3OGUzMmJkZjUuLmIzZmQzZmYxN2EyOTYyNDM3ZDVhZGQ1OTU1MzI0ZTFiNGE5MjFi
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU0NDUsNiArNTQ0NSw3IEBACiAJCUY0NjcyOTI4MUUwREU2ODUwMEFDQzNEOCAv
KiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ2QzQ0N0MyMzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuaCAqLzsgfTsKIAkJRjQ2RDUzODYyNzNEN0U0NjAwMDlGQTgwIC8qIEltYWdlT3ZlcmxheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2RDUzODUy
NzNEN0UzRjAwMDlGQTgwIC8qIEltYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NkQ1M0ExMjczRUVGQTAwMDA5RkE4MCAvKiBJ
bWFnZUFuYWx5c2lzUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDcz
ODQ1ODI1RERFOUZCMDA2REU4REQgLyogRGF0YU93bmVyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3Mzg0NTcyNURERTlGQjAwNkRFOEREIC8q
IERhdGFPd25lclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGNDdBMDlEMTIwQTkzQTk3MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3QTA5
Q0YyMEE5MzlGNjAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDdBNUUzRTE5NUI4QzhBMDA0
ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdBNUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE3MjQ3LDYgKzE3MjQ4LDggQEAKIAkJRjQ2QzQ0ODEyMzQ2NTQ3QTAwMzlB
NzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDZENTM4NDI3M0Q3RTNFMDAwOUZBODAgLyogSW1hZ2VPdmVy
bGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NkQ1Mzg1MjczRDdFM0YwMDA5RkE4MCAvKiBJbWFnZU92ZXJs
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VBbmFseXNpc1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NkQ1MzlFMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3Mzg0NTcyNURERTlGQjAwNkRFOEREIC8qIERhdGFP
d25lclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YU93bmVyVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDdBMDlDRjIwQTkzOUY2MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFw
dGF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhYmxlZEFkYXB0YXRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0N0EwOUQ0MjBBOUREMDQwMDI0MEZBRSAvKiBEaXNhYmxl
ZEFkYXB0YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FibGVkQWRhcHRhdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5MzgsMTEgKzE4OTQxLDExIEBA
CiAJCTFBNTY5Q0M0MEQ3RTJCNjAwMDdDMzk4MyAvKiBicmlkZ2UgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTU5QjU5NzcxMTEwODY1NTYwMDcxNTlFOCAv
KiBqc2MgKi8sCi0JCQkJMUE1NjlDRTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamMgKi8sCiAJCQkJ
NTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oICovLAogCQkJCTFBNzFENTc5MEYz
MzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmNwcCAqLywKIAkJCQkxQTcxRDU3QTBGMzM4
MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5oICovLAorCQkJCTU5QjU5NzcxMTEwODY1NTYw
MDcxNTlFOCAvKiBqc2MgKi8sCisJCQkJMUE1NjlDRTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamMg
Ki8sCiAJCQkJMUE1NjlDRUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICov
LAogCQkJCTFBNTY5Q0YwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggKi8sCiAJ
CQkJMUE1NjlDRjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCAqLywKQEAg
LTIzMTY2LDYgKzIzMTY5LDggQEAKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlz
dG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAq
LywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCisJCQkJ
RjQ2RDUzOUUyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5jcHAgKi8sCisJ
CQkJRjQ2RDUzOUQyNzNFRUNGNzAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oICovLAog
CQkJCUY0ODI0MzRBMjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmNw
cCAqLywKIAkJCQlGNDgyNDM0ODI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJv
bGxlci5oICovLAogCQkJCTBGNDcxMEQ1MURCNkZFMjIwMDJEQ0VDMyAvKiBJbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAgKi8sCkBAIC0zMzgxMyw2ICszMzgxOCw3IEBACiAJCQkJODM1MDUxQTUyNEY1
NzNDODAwOTkxMUQ3IC8qIElJUkZpbHRlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
MEQwQjY5MjRGNTdENjcwMDdFRDEyMiAvKiBJSVJQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyNzUzNTcwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRjQ2RDUzQTEyNzNFRUZBMDAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTVBMzM2RjkxRDgyMUUzQzAwMjJDNEM3IC8qIEltYWdlQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTgxNUEzMTFGOUE2QzhGMDBGQ0JGODkgLyogSW1h
Z2VCaXRtYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMUI0OTc0MjUxMkJBM0IwMEZFOUQzQiAv
KiBJbWFnZUJpdG1hcEJhY2tpbmcuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxODI2YWQ1YWIxZjEyYmU0YzQw
NjM4Mjk1MzhjMTI3NTYwMTkxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUFuYWx5c2lzUXVldWUuaCIKKwor
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKworI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitJbWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlzaXNR
dWV1ZShQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlIHsgcGFnZSB9Cit7Cit9CisKK0ltYWdlQW5h
bHlzaXNRdWV1ZTo6fkltYWdlQW5hbHlzaXNRdWV1ZSgpID0gZGVmYXVsdDsKKwordm9pZCBJbWFn
ZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZCB5
ZXQuCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnRp
Zmllcik7CisgICAgVU5VU0VEX1BBUkFNKG1fcGVuZGluZ1JlcXVlc3RDb3VudCk7Cit9CisKK3Zv
aWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcigpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGNhbmNlbCBwZW5kaW5nIHJlcXVlc3RzIGluIGFkZGl0aW9uIHRvIGVtcHR5aW5nIHRoZSB0
YXNrIHF1ZXVlLgorICAgIG1fcXVldWUuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBmZjI4MGVhNjY0NTM3MTM5OWFk
YWVjOTRkZTM5ZTViODQ1NjMwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERvY3VtZW50OworY2xhc3Mg
SFRNTEVsZW1lbnQ7CitjbGFzcyBQYWdlOworCitjbGFzcyBJbWFnZUFuYWx5c2lzUXVldWUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEltYWdlQW5hbHlzaXNR
dWV1ZShQYWdlJik7CisgICAgfkltYWdlQW5hbHlzaXNRdWV1ZSgpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbnF1ZXVlQWxsSW1hZ2VzKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFRhc2sgeworICAgICAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50Owor
ICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKKyAgICB9OworCisgICAgV2Vha1B0cjxQYWdlPiBt
X3BhZ2U7CisgICAgRGVxdWU8VGFzaz4gbV9xdWV1ZTsKKyAgICB1bnNpZ25lZCBtX3BlbmRpbmdS
ZXF1ZXN0Q291bnQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA4YjU2ZjRm
MTk0OTIyMGU1Y2YxNWE5ZTI5MWNkNjAzOWE0MGEwZjkwLi41NzA2YWQ4NjI4ZmI5YmIyYzQ5ODY1
MzVjNjMyZDlkMmRhYzkxM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTc2LDYgKzc2LDcgQEAK
ICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgi
CiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VBbmFs
eXNpc1F1ZXVlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW1hZ2VP
dmVybGF5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgpAQCAtMzE2
LDcgKzMxNyw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJh
dGlvbikKICNpZiBQTEFURk9STShNQUMpICYmIChFTkFCTEUoU0VSVklDRV9DT05UUk9MUykgfHwg
RU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSkKICAgICAsIG1fc2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcihtYWtlVW5pcXVlPFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlz
KSkKICNlbmRpZgotICAgICwgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8SW1h
Z2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogICAgICwgbV9yZWNlbnRXaGVlbEV2ZW50RGVs
dGFGaWx0ZXIoV2hlZWxFdmVudERlbHRhRmlsdGVyOjpjcmVhdGUoKSkKICAgICAsIG1fcGFnZU92
ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8UGFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykp
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTM3MDQsOCArMzcwNCwyMiBAQCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgUmVuZGVyaW5nVXBkYXRlU3Rl
cCBzdGVwKQogICAgIHJldHVybiB0czsKIH0KIAorSW1hZ2VPdmVybGF5Q29udHJvbGxlciYgUGFn
ZTo6aW1hZ2VPdmVybGF5Q29udHJvbGxlcigpCit7CisgICAgaWYgKCFtX2ltYWdlT3ZlcmxheUNv
bnRyb2xsZXIpCisgICAgICAgIG1faW1hZ2VPdmVybGF5Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8
SW1hZ2VPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpOworICAgIHJldHVybiAqbV9pbWFnZU92ZXJs
YXlDb250cm9sbGVyOworfQorCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCitJbWFnZUFu
YWx5c2lzUXVldWUmIFBhZ2U6OmltYWdlQW5hbHlzaXNRdWV1ZSgpCit7CisgICAgaWYgKCFtX2lt
YWdlQW5hbHlzaXNRdWV1ZSkKKyAgICAgICAgbV9pbWFnZUFuYWx5c2lzUXVldWUgPSBtYWtlVW5p
cXVlPEltYWdlQW5hbHlzaXNRdWV1ZT4oKnRoaXMpOworICAgIHJldHVybiAqbV9pbWFnZUFuYWx5
c2lzUXVldWU7Cit9CisKIHZvaWQgUGFnZTo6dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0
aW9uUmVzdWx0cygpCiB7CiAgICAgaWYgKG1fdGV4dFJlY29nbml0aW9uUmVzdWx0cy5pc0VtcHR5
SWdub3JpbmdOdWxsUmVmZXJlbmNlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBjMTIyZWJkN2E2Njcw
ZjE3ZGU3YjZjOGEyNGFjZGFjNjc2MzdmYTgwLi5mMWUwOGJjNGZlYzA3NDkxNmEzNzMzYWRmZjYy
MDcxZGE0ZWQzODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMTE1LDYgKzExNSw3IEBAIGNsYXNzIEZy
YW1lOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3Mg
SGlzdG9yeUl0ZW07CitjbGFzcyBJbWFnZUFuYWx5c2lzUXVldWU7CiBjbGFzcyBJbWFnZU92ZXJs
YXlDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ29u
dHJvbGxlcjsKQEAgLTUzMSw5ICs1MzIsMTQgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykg
JiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9E
RVRFQ1RJT04pKQogICAgIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXImIHNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOyB9CiAj
ZW5kaWYKLSAgICBJbWFnZU92ZXJsYXlDb250cm9sbGVyJiBpbWFnZU92ZXJsYXlDb250cm9sbGVy
KCkgeyByZXR1cm4gKm1faW1hZ2VPdmVybGF5Q29udHJvbGxlcjsgfQorICAgIEltYWdlT3Zlcmxh
eUNvbnRyb2xsZXImIGltYWdlT3ZlcmxheUNvbnRyb2xsZXIoKTsKICAgICBJbWFnZU92ZXJsYXlD
b250cm9sbGVyKiBpbWFnZU92ZXJsYXlDb250cm9sbGVySWZFeGlzdHMoKSB7IHJldHVybiBtX2lt
YWdlT3ZlcmxheUNvbnRyb2xsZXIuZ2V0KCk7IH0KIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZUFuYWx5c2lzUXVldWUmIGltYWdlQW5hbHlzaXNR
dWV1ZSgpOworICAgIEltYWdlQW5hbHlzaXNRdWV1ZSogaW1hZ2VBbmFseXNpc1F1ZXVlSWZFeGlz
dHMoKSB7IHJldHVybiBtX2ltYWdlQW5hbHlzaXNRdWV1ZS5nZXQoKTsgfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoV0hFRUxfRVZFTlRfTEFUQ0hJTkcpCiAgICAgU2Nyb2xsTGF0Y2hpbmdDb250cm9s
bGVyJiBzY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIoKTsKICAgICBTY3JvbGxMYXRjaGluZ0NvbnRy
b2xsZXIqIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcklmRXhpc3RzKCk7CkBAIC0xMTkyLDYgKzEx
OTgsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZU92ZXJs
YXlDb250cm9sbGVyPiBtX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXI7CiAKKyNpZiBFTkFCTEUoSU1B
R0VfQU5BTFlTSVMpCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQW5hbHlzaXNRdWV1ZT4gbV9p
bWFnZUFuYWx5c2lzUXVldWU7CisjZW5kaWYKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXaGVlbEV2
ZW50RGVsdGFGaWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+IG1fcGFnZU92ZXJsYXlDb250cm9sbGVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBhMjU2NGRmMmE1YWIxNzAxMDU5MjNlNWU3ZGU5ZDRiODM2MzQwODllLi5hYTFiOTI0MjM2
ZmQ5NDlmZDNlYzgxMzJjZDlhNzQzODkxNWQ5OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxNzUsNiArMjE3NSwyNCBAQCAtICh2
b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFu
aXB1bGF0aW9uSXRlbSAqPiAqKQogICAgIH0pOwogfQogCistICh2b2lkKV9zdGFydEltYWdlQW5h
bHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllcgoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CisgICAgaWYgKF9wYWdlKQorICAgICAgICBfcGFn
ZS0+c3RhcnRJbWFnZUFuYWx5c2lzKGlkZW50aWZpZXIpOworI2VuZGlmCit9CisKKy0gKHZvaWQp
X3N0b3BJbWFnZUFuYWx5c2lzCit7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKKyAgICBpZiAoX3BhZ2UpCisgICAgICAgIF9wYWdlLT5zdG9wSW1h
Z2VBbmFseXNpcygpOworI2VuZGlmCit9CisKIC0gKHZvaWQpX3Rha2VGaW5kU3RyaW5nRnJvbVNl
bGVjdGlvbjooaWQpc2VuZGVyCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggYmQyMDU5ZWM1NmVjZDE2ODNhYjljNjAyMjg4YjliNzAyY2NlNDU3OC4uNjUzYzc1ZTllNDM2
YTk5NzA5YWY5YjU5NjZhZjM3M2IxODUzYTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00MTUsNiArNDE1LDkg
QEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKTsKIC0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAKKy0gKHZvaWQp
X3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zdG9wSW1h
Z2VBbmFseXNpcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmOWY3N2UwZTZmYWM4MmRjYThmY2IwMDVjNzJl
YzFiY2U2MWY0M2ZmLi5hYzc2ODIxMzg3ZjcyOGRjOGEzNjIzNjM4NTdhMzVkMTYzYWUxMWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg2MzMsNiArODYz
MywxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3Vs
dChUZXh0UmVjb2duaXRpb25SZXN1bHQmJiByZXN1bAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChXVEZNb3Zl
KHJlc3VsdHMpLCBjb250ZXh0LCBsb2NhdGlvbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0SW1hZ2VBbmFseXNpcyhpZGVudGlmaWVyKSk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9wSW1hZ2VBbmFseXNpcygpCit7CisgICAgaWYg
KGhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BJbWFnZUFuYWx5c2lzKCkpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lT
KQogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggZjAxZjM1NGFlNzhjYjRhZmFiMTgzNWY4MTlhMTQ1ODljNDA4OTIx
NS4uZDIxNjM3M2Q1ZGFiZWU5YWVkM2UyZDhlZjE0MzQ2NmI1MzY5NDVlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3MDEsNiArMTcwMSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oY29uc3QgVVJMJiBpbWFnZVVSTCwgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpUZXh0UmVjb2duaXRpb25SZXN1bHQmJik+JiYpOwogICAgIHZvaWQgdXBk
YXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChXZWJDb3JlOjpUZXh0UmVjb2duaXRpb25SZXN1
bHQmJiwgY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBsb2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0UmVjb2duaXRpb25V
cGRhdGVSZXN1bHQpPiYmKTsKICAgICB2b2lkIGNvbXB1dGVIYXNJbWFnZUFuYWx5c2lzUmVzdWx0
cyhjb25zdCBVUkwmIGltYWdlVVJMLCBTaGFyZWFibGVCaXRtYXAmIGltYWdlQml0bWFwLCBJbWFn
ZUFuYWx5c2lzVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBzdGFydEltYWdlQW5hbHlzaXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lk
IHN0b3BJbWFnZUFuYWx5c2lzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9DT05UUk9M
U19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYWUyNDEwY2FhYzA2MjlkZTE5NTk5
ODJiOWYxOGQ0MGQyZGNkZDgxNS4uZjM3OWU2OGEzYTJhY2E3N2M0MWNkODQ5YWEzYzZiMjEwYzZi
OWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTIwMiw2ICsyMDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUNvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXRUZXN0UmVzdWx0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUFuYWx5c2lzUXVldWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5k
bGluZy5oPgpAQCAtNzYxOSw2ICs3NjIwLDIxIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRl
eHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIodXBkYXRlUmVzdWx0KTsKIH0KIAordm9pZCBXZWJQYWdlOjpz
dGFydEltYWdlQW5hbHlzaXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGlmIChS
ZWZQdHIgZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkpIHsK
KyAgICAgICAgLy8gV2Ugb25seSBjb25zaWRlciBtYWluIGRvY3VtZW50IGNvbnRlbnQgZm9yIG5v
dywgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUKKyAg
ICAgICAgLy8gdGhhdCB3aWxsIHRyaWdnZXIgdGhpcyBjb2RlcGF0aC4KKyAgICAgICAgY29yZVBh
Z2UoKS0+aW1hZ2VBbmFseXNpc1F1ZXVlKCkuZW5xdWV1ZUFsbEltYWdlcygqZG9jdW1lbnQsIGlk
ZW50aWZpZXIpOworICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpzdG9wSW1hZ2VBbmFseXNpcygp
Cit7CisgICAgaWYgKGF1dG8qIHF1ZXVlID0gY29yZVBhZ2UoKS0+aW1hZ2VBbmFseXNpc1F1ZXVl
SWZFeGlzdHMoKSkKKyAgICAgICAgcXVldWUtPmNsZWFyKCk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoSU1BR0VfQU5BTFlTSVMpCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9N
RU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggOTVjZjE2MWRmM2FkYjg0ZmRlMmY0ZWQxMzg0YjE5NjgwNjdi
OGQ4ZS4uODIzNzA4MzNkM2VlZTIwODhlZTAxMmI5YmYxNzAwODViMjAxNTE4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQzMiw2ICsxNDMyLDgg
QEAgcHVibGljOgogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB2b2lkIHJlcXVlc3RU
ZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVdpdGhUZXh0
UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0Jiwg
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBsb2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0UmVjb2duaXRpb25VcGRhdGVS
ZXN1bHQpPiYmKTsKKyAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpOworICAgIHZvaWQgc3RvcEltYWdlQW5hbHlzaXMoKTsKICNlbmRpZgogCiAjaWYg
SEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCAzZDYwYjg4M2IyODY2NWIxMzZhMWJkMzc3OGNjMDVjMmVjNDczZDdkLi42OWRi
MzZlNTc4ZWI0MjRkMzllNDdhM2E5ZDhiZmNiNjY3MzY1ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTY0NCw2
ICs2NDQsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBX
ZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogICAgIFVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoc3RydWN0IFdlYkNv
cmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCByZXN1bHQsIHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCBlbGVtZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uKSAtPiAoZW51bTp1
aW50OF90IFdlYktpdDo6VGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0IHJlc3VsdCkgQXN5bmMK
KyAgICBTdGFydEltYWdlQW5hbHlzaXMoU3RyaW5nIGlkZW50aWZpZXIpCisgICAgU3RvcEltYWdl
QW5hbHlzaXMoKQogI2VuZGlmCiAKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444396</attachid>
            <date>2021-11-16 08:51:20 -0800</date>
            <delta_ts>2021-11-17 08:50:29 -0800</delta_ts>
            <desc>Rebase + implement more logic</desc>
            <filename>bug-233075-20211116085119.patch</filename>
            <type>text/plain</type>
            <size>25587</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJmNmY5MjExYjgzYjVm
NzA2NjIyOTIzMTk3ZWI5MDMzMGUxNTA4OC4uNDgyMGFiZTg4ZGIxZDA4MzE1Yjg4NWFmNjAxZDUx
ZGM4YzIxOGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBjbGFzcyB0byBjb29yZGluYXRlIGJhdGNoIGFuYWx5c2lzIG9mIGltYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEltYWdlQW5h
bHlzaXNRdWV1ZSwgd2hpY2ggd2lsbCBjb2xsZWN0IHN1aXRhYmxlIGltYWdlIGVsZW1lbnRzIGlu
IHRoZSBtYWluIGRvY3VtZW50IGFuZCBjb29yZGluYXRlCisgICAgICAgIGltYWdlIGFuYWx5c2lz
IHRhc2tzIGZvciB1cCB0byBzb21lIChmaXhlZCwgYnV0IGVhc2lseSBjb25maWd1cmFibGUpIG1h
eGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBwZW5kaW5nCisgICAgICAgIHRhc2tzLiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlzaXNRdWV1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMp
OgorCisgICAgICAgIEl0ZXJhdGUgdGhyb3VnaCBhbGwgaW1hZ2UgZWxlbWVudHMgb24gdGhlIHBh
Z2Ugd2l0aCBjYWNoZWQgaW1hZ2VzLCBhbmQgYWRkIHRoZW0gYXMgaW1hZ2UgYW5hbHlzaXMgdGFz
a3MgdG8gdGhlCisgICAgICAgIHRhc2sgcXVldWUgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgdGlu
eS4gQXV0b21hdGljYWxseSBzdGFydCBwcm9jZXNzaW5nIHF1ZXVlZCB0YXNrcyBhZnRlcndhcmRz
IChzZWUgYmVsb3cpLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OnJl
c3VtZVByb2Nlc3NpbmcpOgorCisgICAgICAgIFJ1biB0aGUgbWFpbiBwcm9jZXNzaW5nIGxvb3Ag
b2YgdGhlIHRhc2sgcXVldWU7IHdoaWxlIHRoZXJlIGFyZSB0YXNrcyByZW1haW5pbmcsIHB1c2gg
dXAgdG8gNSBpbWFnZXMgdG8gdGhlCisgICAgICAgIGNsaWVudCBsYXllciBmb3IgaW1hZ2UgYW5h
bHlzaXMgYXQgdGhlIHNhbWUgdGltZSwgdW50aWwgYWxsIHRoZXJlIGFyZSBubyBtb3JlIHF1ZXVl
ZCB0YXNrcy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcik6
CisgICAgICAgICogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaDogQWRkZWQuCisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBuZXcgY2xhc3MuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aW1hZ2VPdmVybGF5Q29udHJvbGxlcik6CisKKyAgICAgICAg
RHJpdmUtYnkgZml4OiBgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyYCB3YXMgYmVpbmcgZWFnZXJs
eSBpbml0aWFsaXplZCBoZXJlLCBkZXNwaXRlIHRoZSBleGlzdGVuY2Ugb2YgYm90aAorICAgICAg
ICBgaW1hZ2VPdmVybGF5Q29udHJvbGxlcklmRXhpc3RzKClgIGFuZCBgaW1hZ2VPdmVybGF5Q29u
dHJvbGxlcigpYC4gRml4IHRoaXMgYnkgbGF6aWx5IGNyZWF0aW5nIHRoZQorICAgICAgICBJbWFn
ZU92ZXJsYXlDb250cm9sbGVyIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omlt
YWdlQW5hbHlzaXNRdWV1ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjppbWFnZUFuYWx5c2lzUXVldWVJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjppbWFnZU92ZXJsYXlDb250cm9sbGVyKTogRGVsZXRlZC4KKwogMjAyMS0xMS0xNiAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGaXgg
ZmFzdC90ZXh0L2Jhc2ljLzAwNS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0NWU0OGQyODBiMzZkYWVkZTYx
OWI3MmZlYzdjZDhjNmI4YmZiNzguLmVlYWI3YWIzOWMyZmJiY2MwMDEzNTRhNWMzYmUwYjAzNzcx
OTY5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMTEtMTYgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGNsYXNz
IHRvIGNvb3JkaW5hdGUgYmF0Y2ggYW5hbHlzaXMgb2YgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb3VwbGUgb2YgV0tXZWJWaWV3
IFNQSSBtZXRob2RzIHRvIGtpY2sgb2ZmIChhbmQgY2FuY2VsKSBiYXRjaCBpbWFnZSBhbmFseXNp
cyBmb3IgbWFpbmZyYW1lIGNvbnRlbnQuCisgICAgICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RhcnRJbWFnZUFuYWx5c2lzOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N0b3BJbWFnZUFuYWx5c2lzXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRJbWFn
ZUFuYWx5c2lzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9wSW1hZ2VBbmFs
eXNpcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c3RhcnRJbWFnZUFuYWx5c2lzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3RvcEltYWdl
QW5hbHlzaXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjEtMTEt
MTYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjptX3N3YXBDaGFpbiBpcyB1bnVzZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDBkNmZmMmY1OWU1NGQ1ZjQwM2MzMDYxY2M3NWNkNzUyM2FlMDRmYWIuLmZi
YjRhYThjMjEwZjhmYzAzNzlhYTNjNDlhYmQ5OTFlZGVkNzU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtOTU0LDYgKzk1NCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaAogICAgIHBhZ2UvR2xvYmFsRnJh
bWVJZGVudGlmaWVyLmgKICAgICBwYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAorICAgIHBh
Z2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgKICAgICBwYWdlL0xheW91dE1pbGVzdG9uZS5oCiAgICAg
cGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAgIHBhZ2UvTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDlkNzc1NDhjZGVhMGI0N2IyMjA2YmI1OGRl
NmQzZGEwODRlNWM3NDguLmU5MGI3OWQ3NGRhYmU1MjlhYTNhNWUyNmJiMWNlYTUyY2M5MDAwODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNzI0LDYgKzE3MjQsNyBAQCBwYWdlL0ZyYW1lVHJlZS5jcHAK
IHBhZ2UvRnJhbWVWaWV3LmNwcAogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAogcGFn
ZS9IaXN0b3J5LmNwcAorcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCiBwYWdlL0ltYWdlT3Zl
cmxheUNvbnRyb2xsZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAogcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkMWI3YTkzMmIzNTA5NzdiZjVmOTQw
NWE5NjVkMDhlYTg1NjlhMmEuLmIzYzhjMDQ3YWZiNWZjYTYzOTI1MTY3OGJmYjMyZjJjODA1Njdk
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU0NDgsNiArNTQ0OCw3IEBACiAJCUY0NjcyOTI4MUUwREU2ODUwMEFDQzNEOCAv
KiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ2QzQ0N0MyMzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuaCAqLzsgfTsKIAkJRjQ2RDUzODYyNzNEN0U0NjAwMDlGQTgwIC8qIEltYWdlT3ZlcmxheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2RDUzODUy
NzNEN0UzRjAwMDlGQTgwIC8qIEltYWdlT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NkQ1M0ExMjczRUVGQTAwMDA5RkE4MCAvKiBJ
bWFnZUFuYWx5c2lzUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDcz
ODQ1ODI1RERFOUZCMDA2REU4REQgLyogRGF0YU93bmVyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3Mzg0NTcyNURERTlGQjAwNkRFOEREIC8q
IERhdGFPd25lclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGNDdBMDlEMTIwQTkzQTk3MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3QTA5
Q0YyMEE5MzlGNjAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDdBNUUzRTE5NUI4QzhBMDA0
ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdBNUUzQjE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE3MjY0LDYgKzE3MjY1LDggQEAKIAkJRjQ2QzQ0ODEyMzQ2NTQ3QTAwMzlB
NzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDZENTM4NDI3M0Q3RTNFMDAwOUZBODAgLyogSW1hZ2VPdmVy
bGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NkQ1Mzg1MjczRDdFM0YwMDA5RkE4MCAvKiBJbWFnZU92ZXJs
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VBbmFseXNpc1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NkQ1MzlFMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3Mzg0NTcyNURERTlGQjAwNkRFOEREIC8qIERhdGFP
d25lclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YU93bmVyVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDdBMDlDRjIwQTkzOUY2MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFw
dGF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhYmxlZEFkYXB0YXRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0N0EwOUQ0MjBBOUREMDQwMDI0MEZBRSAvKiBEaXNhYmxl
ZEFkYXB0YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc2FibGVkQWRhcHRhdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMxODMsNiArMjMxODYsOCBAQAog
CQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0
RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVD
OEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKKwkJCQlGNDZENTM5RTI3M0VFQ0Y3MDAwOUZB
ODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcCAqLywKKwkJCQlGNDZENTM5RDI3M0VFQ0Y3MDAw
OUZBODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmggKi8sCiAJCQkJRjQ4MjQzNEEyNjBDMzJGMTAw
MjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLAogCQkJCUY0ODI0MzQ4MjYw
QzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmggKi8sCiAJCQkJMEY0NzEw
RDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyLmNwcCAqLywKQEAgLTMz
ODUyLDYgKzMzODU3LDcgQEAKIAkJCQk4MzUwNTFBNTI0RjU3M0M4MDA5OTExRDcgLyogSUlSRmls
dGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwRDBCNjkyNEY1N0Q2NzAwN0VEMTIy
IC8qIElJUlByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzAwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDZENTNBMTI3M0VFRkEwMDAw
OUZBODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUEzMzZG
OTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJbWFnZUJpdG1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzIxQjQ5NzQyNTEyQkEzQjAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5h
bHlzaXNRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTA4NGRjNDljNjZiYjQ5YjhlMjE0NDA0MjQ5OWIzZjljMzUzNzllNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVl
LmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbWFnZUFuYWx5c2lzUXVldWUuaCIKKworI2lmIEVOQUJMRShJTUFHRV9BTkFM
WVNJUykKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgor
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1
ZGUgIlRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBtYXhpbXVtUGVuZGluZ0ltYWdlQW5hbHlzaXNDb3VudCA9IDU7CitzdGF0aWMgY29u
c3RleHByIGZsb2F0IG1pbmltdW1XaWR0aEZvckFuYWx5c2lzID0gMjA7CitzdGF0aWMgY29uc3Rl
eHByIGZsb2F0IG1pbmltdW1IZWlnaHRGb3JBbmFseXNpcyA9IDIwOworc3RhdGljIGNvbnN0ZXhw
ciBTZWNvbmRzIHJlc3VtZVByb2Nlc3NpbmdEZWxheSA9IDEwMF9tczsKKworSW1hZ2VBbmFseXNp
c1F1ZXVlOjpJbWFnZUFuYWx5c2lzUXVldWUoUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZShwYWdl
KQorICAgICwgbV9yZXN1bWVQcm9jZXNzaW5nVGltZXIoKnRoaXMsICZJbWFnZUFuYWx5c2lzUXVl
dWU6OnJlc3VtZVByb2Nlc3NpbmcpCit7Cit9CisKK0ltYWdlQW5hbHlzaXNRdWV1ZTo6fkltYWdl
QW5hbHlzaXNRdWV1ZSgpID0gZGVmYXVsdDsKKwordm9pZCBJbWFnZUFuYWx5c2lzUXVldWU6OmVu
cXVldWVBbGxJbWFnZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1h
Z2VJdGVyYXRvciA9IGRvY3VtZW50LmltYWdlcygpLT5jcmVhdGVJdGVyYXRvcigpOworICAgIGZv
ciAoUmVmUHRyIG5vZGUgPSBpbWFnZUl0ZXJhdG9yLm5leHQoKTsgbm9kZTsgbm9kZSA9IGltYWdl
SXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KCpub2RlKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MRWxlbWVudD4oKm5vZGUpOworICAgICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihlbGVt
ZW50LnJlbmRlcmVyKCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYg
cmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7
CisgICAgICAgIGF1dG8qIGNhY2hlZEltYWdlID0gcmVuZGVySW1hZ2UuY2FjaGVkSW1hZ2UoKTsK
KyAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHJlbmRlckltYWdlLnNpemUo
KS53aWR0aCgpIDwgbWluaW11bVdpZHRoRm9yQW5hbHlzaXMgfHwgcmVuZGVySW1hZ2Uuc2l6ZSgp
LmhlaWdodCgpIDwgbWluaW11bUhlaWdodEZvckFuYWx5c2lzKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoeyBXZWFrUHRyIHsgZWxlbWVudCB9LCBpZGVu
dGlmaWVyIH0pOworICAgIH0KKworICAgIHJlc3VtZVByb2Nlc3NpbmcoKTsKK30KKwordm9pZCBJ
bWFnZUFuYWx5c2lzUXVldWU6OnJlc3VtZVByb2Nlc3NpbmcoKQoreworICAgIGlmICghbV9wYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcXVldWUuaXNFbXB0eSgpICYmIG1f
cGVuZGluZ1JlcXVlc3RDb3VudCA8IG1heGltdW1QZW5kaW5nSW1hZ2VBbmFseXNpc0NvdW50KSB7
CisgICAgICAgIGF1dG8gW3dlYWtFbGVtZW50LCBpZGVudGlmaWVyXSA9IG1fcXVldWUudGFrZUZp
cnN0KCk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50ID0gd2Vha0VsZW1lbnQuZ2V0KCk7CisgICAg
ICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RDb3VudCsrOworICAgICAgICBt
X3BhZ2UtPnJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0KCplbGVtZW50KTsKKyAgICAgICAgbV9w
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0VGV4dFJlY29nbml0aW9uKCplbGVtZW50LCBb
dGhpcywgcGFnZSA9IG1fcGFnZV0gKGF1dG8mJikgeworICAgICAgICAgICAgaWYgKCFwYWdlKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKG1fcGVuZGluZ1JlcXVl
c3RDb3VudCkKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0Q291bnQtLTsKKworICAg
ICAgICAgICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSAmJiAhbV9yZXN1bWVQcm9jZXNzaW5nVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lci5z
dGFydE9uZVNob3QocmVzdW1lUHJvY2Vzc2luZ0RlbGF5KTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCit2b2lkIEltYWdlQW5hbHlzaXNRdWV1ZTo6Y2xlYXIoKQoreworICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBjYW5jZWwgcGVuZGluZyByZXF1ZXN0cyBpbiBhZGRpdGlvbiB0byBlbXB0eWlu
ZyB0aGUgdGFzayBxdWV1ZS4KKyAgICBtX3BlbmRpbmdSZXF1ZXN0Q291bnQgPSAwOworICAgIG1f
cmVzdW1lUHJvY2Vzc2luZ1RpbWVyLnN0b3AoKTsKKyAgICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZh
OTQ0OGFmZjQ0Y2M5MjYwOTVjMGViZjlkNWE0MTJhMTlmY2I4NWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIEhUTUxFbGVtZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFRpbWVy
OworCitjbGFzcyBJbWFnZUFuYWx5c2lzUXVldWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIEltYWdlQW5hbHlzaXNRdWV1ZShQYWdlJik7CisgICAgfkltYWdl
QW5hbHlzaXNRdWV1ZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnF1ZXVlQWxsSW1h
Z2VzKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZXN1bWVQcm9jZXNzaW5n
KCk7CisKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIFdlYWtQdHI8SFRNTEVsZW1lbnQ+IGVs
ZW1lbnQ7CisgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOworICAgIH07CisKKyAgICBXZWFrUHRy
PFBhZ2U+IG1fcGFnZTsKKyAgICBUaW1lciBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lcjsKKyAgICBE
ZXF1ZTxUYXNrPiBtX3F1ZXVlOworICAgIHVuc2lnbmVkIG1fcGVuZGluZ1JlcXVlc3RDb3VudCB7
IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhiNTZmNGYxOTQ5MjIwZTVjZjE1
YTllMjkxY2Q2MDM5YTQwYTBmOTAuLjU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFj
OTEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIkhp
c3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRlICJJbWFnZUFuYWx5c2lzUXVldWUuaCIK
ICNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXlDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCkBAIC0zMTYsNyArMzE3LDYgQEAg
UGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uKQogI2lmIFBM
QVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKSB8fCBFTkFCTEUoVEVMRVBI
T05FX05VTUJFUl9ERVRFQ1RJT04pKQogICAgICwgbV9zZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
KG1ha2VVbmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4oKnRoaXMpKQogI2VuZGlmCi0g
ICAgLCBtX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxJbWFnZU92ZXJsYXlDb250
cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcihXaGVl
bEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xs
ZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKQpAQCAtMzcwNCw4ICszNzA0LDIyIEBAIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXApCiAgICAg
cmV0dXJuIHRzOwogfQogCitJbWFnZU92ZXJsYXlDb250cm9sbGVyJiBQYWdlOjppbWFnZU92ZXJs
YXlDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1faW1hZ2VPdmVybGF5Q29udHJvbGxlcikKKyAg
ICAgICAgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbWFnZU92ZXJsYXlD
b250cm9sbGVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXI7
Cit9CisKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK0ltYWdlQW5hbHlzaXNRdWV1ZSYg
UGFnZTo6aW1hZ2VBbmFseXNpc1F1ZXVlKCkKK3sKKyAgICBpZiAoIW1faW1hZ2VBbmFseXNpc1F1
ZXVlKQorICAgICAgICBtX2ltYWdlQW5hbHlzaXNRdWV1ZSA9IG1ha2VVbmlxdWU8SW1hZ2VBbmFs
eXNpc1F1ZXVlPigqdGhpcyk7CisgICAgcmV0dXJuICptX2ltYWdlQW5hbHlzaXNRdWV1ZTsKK30K
Kwogdm9pZCBQYWdlOjp1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVjb2duaXRpb25SZXN1bHRzKCkK
IHsKICAgICBpZiAobV90ZXh0UmVjb2duaXRpb25SZXN1bHRzLmlzRW1wdHlJZ25vcmluZ051bGxS
ZWZlcmVuY2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGMxMjJlYmQ3YTY2NzBmMTdkZTdiNmM4YTI0
YWNkYWM2NzYzN2ZhODAuLmYxZTA4YmM0ZmVjMDc0OTE2YTM3MzNhZGZmNjIwNzFkYTRlZDM4NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0xMTUsNiArMTE1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBI
VE1MRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsK
K2NsYXNzIEltYWdlQW5hbHlzaXNRdWV1ZTsKIGNsYXNzIEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAt
NTMxLDkgKzUzMiwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikpCiAg
ICAgU2VydmljZXNPdmVybGF5Q29udHJvbGxlciYgc2VydmljZXNPdmVybGF5Q29udHJvbGxlcigp
IHsgcmV0dXJuICptX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI7IH0KICNlbmRpZgotICAgIElt
YWdlT3ZlcmxheUNvbnRyb2xsZXImIGltYWdlT3ZlcmxheUNvbnRyb2xsZXIoKSB7IHJldHVybiAq
bV9pbWFnZU92ZXJsYXlDb250cm9sbGVyOyB9CisgICAgSW1hZ2VPdmVybGF5Q29udHJvbGxlciYg
aW1hZ2VPdmVybGF5Q29udHJvbGxlcigpOwogICAgIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIqIGlt
YWdlT3ZlcmxheUNvbnRyb2xsZXJJZkV4aXN0cygpIHsgcmV0dXJuIG1faW1hZ2VPdmVybGF5Q29u
dHJvbGxlci5nZXQoKTsgfQogCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlQW5hbHlzaXNRdWV1ZSYgaW1hZ2VBbmFseXNpc1F1ZXVlKCk7CisgICAg
SW1hZ2VBbmFseXNpc1F1ZXVlKiBpbWFnZUFuYWx5c2lzUXVldWVJZkV4aXN0cygpIHsgcmV0dXJu
IG1faW1hZ2VBbmFseXNpc1F1ZXVlLmdldCgpOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShXSEVF
TF9FVkVOVF9MQVRDSElORykKICAgICBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXImIHNjcm9sbExh
dGNoaW5nQ29udHJvbGxlcigpOwogICAgIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlciogc2Nyb2xs
TGF0Y2hpbmdDb250cm9sbGVySWZFeGlzdHMoKTsKQEAgLTExOTIsNiArMTE5OCwxMCBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlT3ZlcmxheUNvbnRyb2xsZXI+
IG1faW1hZ2VPdmVybGF5Q29udHJvbGxlcjsKIAorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VBbmFseXNpc1F1ZXVlPiBtX2ltYWdlQW5hbHlzaXNR
dWV1ZTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdoZWVsRXZlbnREZWx0YUZpbHRl
cj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
Z2VPdmVybGF5Q29udHJvbGxlcj4gbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDBjM2VkZTY4
ZDU3Mzc1ZDhhNDVmMzU3NTgzZmFiZGIwNmY0OTk0NzUuLjQ4MWExOTIwMTZiZjg5Y2MzZWNmOTI1
YmQ4NTRlMWE0ZDcxYTZmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtMjIwNCw2ICsyMjA0LDI3IEBAIC0gKHZvaWQpX2NvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
ICo+ICopCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJp
bmcgKilpZGVudGlmaWVyCit7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorICAgIFRIUk9X
X0lGX1NVU1BFTkRFRDsKKworICAgIGlmICghX3BhZ2UgfHwgIV9wYWdlLT5wcmVmZXJlbmNlcygp
LnRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgX3BhZ2UtPnN0YXJ0SW1hZ2VBbmFseXNpcyhpZGVudGlmaWVyKTsKKyNlbmRpZgorfQor
CistICh2b2lkKV9zdG9wSW1hZ2VBbmFseXNpcworeworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
UykKKyAgICBUSFJPV19JRl9TVVNQRU5ERUQ7CisgICAgaWYgKF9wYWdlKQorICAgICAgICBfcGFn
ZS0+c3RvcEltYWdlQW5hbHlzaXMoKTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV90YWtlRmluZFN0
cmluZ0Zyb21TZWxlY3Rpb246KGlkKXNlbmRlcgogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDQ3MDY4MDEwMzg1ZmJlYjdjMzVhNTQ2ODY0M2RhNzUwZmUxOGU2MDMuLjlj
NWRhOTdmMGEwMWM3YWVkNzk3NGM0ODI5ZWZmMGNhMDFlMThmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDE0
LDYgKzQxNCw5IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZv
aWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIu
MCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwog
CistICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfc3RvcEltYWdlQW5hbHlzaXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjlmNzdlMGU2ZmFjODJkY2E4
ZmNiMDA1YzcyZWMxYmNlNjFmNDNmZi4uYWM3NjgyMTM4N2Y3MjhkYzhhMzYyMzYzODU3YTM1ZDE2
M2FlMTFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04
NjMzLDYgKzg2MzMsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdpdGhUZXh0UmVjb2du
aXRpb25SZXN1bHQoVGV4dFJlY29nbml0aW9uUmVzdWx0JiYgcmVzdWwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1
bHQoV1RGTW92ZShyZXN1bHRzKSwgY29udGV4dCwgbG9jYXRpb24pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEltYWdlQW5hbHlzaXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGlmIChoYXNSdW5uaW5nUHJvY2Vzcygp
KQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydEltYWdlQW5hbHlzaXMoaWRl
bnRpZmllcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEltYWdlQW5hbHlzaXMoKQor
eworICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTdG9wSW1hZ2VBbmFseXNpcygpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShJTUFH
RV9BTkFMWVNJUykKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGYwMWYzNTRhZTc4Y2I0YWZhYjE4MzVmODE5YTE0
NTg5YzQwODkyMTUuLmQyMTYzNzNkNWRhYmVlOWFlZDNlMmQ4ZWYxNDM0NjZiNTM2OTQ1ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzAxLDYgKzE3MDEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0VGV4dFJlY29nbml0aW9uKGNvbnN0IFVSTCYgaW1h
Z2VVUkwsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZURhdGEsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKTsKICAg
ICB2b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoV2ViQ29yZTo6VGV4dFJlY29n
bml0aW9uUmVzdWx0JiYsIGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJl
Y29nbml0aW9uVXBkYXRlUmVzdWx0KT4mJik7CiAgICAgdm9pZCBjb21wdXRlSGFzSW1hZ2VBbmFs
eXNpc1Jlc3VsdHMoY29uc3QgVVJMJiBpbWFnZVVSTCwgU2hhcmVhYmxlQml0bWFwJiBpbWFnZUJp
dG1hcCwgSW1hZ2VBbmFseXNpc1R5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworICAgIHZvaWQgc3RhcnRJbWFnZUFuYWx5c2lzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CisgICAgdm9pZCBzdG9wSW1hZ2VBbmFseXNpcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVE
SUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDJmYTlhNWUxMDcw
MjUxOTNmMjAxNTM3YThlM2M5NzIzMjg4YTMwOTMuLmViN2Q3NDUwMGViYmRmNzQ4YWRlM2VkNjcz
OTgxZTRhZGYyZGY4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VBbmFseXNp
c1F1ZXVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaD4KQEAgLTc2MzEsNiArNzYzMiwyMSBAQCB2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0
JiByZXN1bAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHVwZGF0ZVJlc3VsdCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6c3RhcnRJbWFnZUFuYWx5c2lzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sK
KyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1
bWVudCgpKSB7CisgICAgICAgIC8vIFdlIG9ubHkgY29uc2lkZXIgbWFpbiBkb2N1bWVudCBjb250
ZW50IGZvciBub3csIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiB0aGUgY29ycmVzcG9uZGluZyBm
ZWF0dXJlCisgICAgICAgIC8vIHRoYXQgd2lsbCB0cmlnZ2VyIHRoaXMgY29kZXBhdGguCisgICAg
ICAgIGNvcmVQYWdlKCktPmltYWdlQW5hbHlzaXNRdWV1ZSgpLmVucXVldWVBbGxJbWFnZXMoKmRv
Y3VtZW50LCBpZGVudGlmaWVyKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3RvcEltYWdl
QW5hbHlzaXMoKQoreworICAgIGlmIChhdXRvKiBxdWV1ZSA9IGNvcmVQYWdlKCktPmltYWdlQW5h
bHlzaXNRdWV1ZUlmRXhpc3RzKCkpCisgICAgICAgIHF1ZXVlLT5jbGVhcigpOworfQorCiAjZW5k
aWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xT
X0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIxNDU2M2UxMTNkYzk4MDdiYWNlN2JkZDQw
YzFmZjQ3NDQxMjI5ZTIuLmVlNjY5MWRkNjFiMzRkMTcyZjI1ZGIyYjVjNDE5YzEwYTE5ZTA4MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0MzIs
NiArMTQzMiw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdm9p
ZCByZXF1ZXN0VGV4dFJlY29nbml0aW9uKFdlYkNvcmU6OkVsZW1lbnQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiYmKT4mJik7CiAgICAgdm9pZCB1cGRh
dGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlRleHRSZWNvZ25pdGlv
blJlc3VsdCYsIGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgbG9jYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVGV4dFJlY29nbml0
aW9uVXBkYXRlUmVzdWx0KT4mJik7CisgICAgdm9pZCBzdGFydEltYWdlQW5hbHlzaXMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIHN0b3BJbWFnZUFuYWx5c2lzKCk7CiAjZW5k
aWYKIAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShDT05URVhU
X01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggM2Q2MGI4ODNiMjg2NjViMTM2YTFiZDM3NzhjYzA1YzJlYzQ3
M2Q3ZC4uNjlkYjM2ZTU3OGViNDI0ZDM5ZTQ3YTNhOWQ4YmZjYjY2NzM2NWViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC02NDQsNiArNjQ0LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKICAgICBVcGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KHN0
cnVjdCBXZWJDb3JlOjpUZXh0UmVjb2duaXRpb25SZXN1bHQgcmVzdWx0LCBzdHJ1Y3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQgZWxlbWVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbikg
LT4gKGVudW06dWludDhfdCBXZWJLaXQ6OlRleHRSZWNvZ25pdGlvblVwZGF0ZVJlc3VsdCByZXN1
bHQpIEFzeW5jCisgICAgU3RhcnRJbWFnZUFuYWx5c2lzKFN0cmluZyBpZGVudGlmaWVyKQorICAg
IFN0b3BJbWFnZUFuYWx5c2lzKCkKICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6
OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444527</attachid>
            <date>2021-11-17 08:50:31 -0800</date>
            <delta_ts>2021-11-17 11:21:04 -0800</delta_ts>
            <desc>Remove unnecessary SPI</desc>
            <filename>bug-233075-20211117085030.patch</filename>
            <type>text/plain</type>
            <size>24855</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJmNmY5MjExYjgzYjVm
NzA2NjIyOTIzMTk3ZWI5MDMzMGUxNTA4OC4uZmIxODliZjYwY2I1M2JlZjBjYmRiNjcyYTVjYjY4
MDEyNjUyZTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBjbGFzcyB0byBjb29yZGluYXRlIGJhdGNoIGFuYWx5c2lzIG9mIGltYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIEltYWdlQW5h
bHlzaXNRdWV1ZSwgd2hpY2ggd2lsbCBjb2xsZWN0IHN1aXRhYmxlIGltYWdlIGVsZW1lbnRzIGlu
IHRoZSBtYWluIGRvY3VtZW50IGFuZCBjb29yZGluYXRlCisgICAgICAgIGltYWdlIGFuYWx5c2lz
IHRhc2tzIGZvciB1cCB0byBzb21lIChmaXhlZCwgYnV0IGVhc2lseSBjb25maWd1cmFibGUpIG1h
eGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBwZW5kaW5nCisgICAgICAgIHRhc2tzLiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlzaXNRdWV1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMp
OgorCisgICAgICAgIEl0ZXJhdGUgdGhyb3VnaCBhbGwgaW1hZ2UgZWxlbWVudHMgb24gdGhlIHBh
Z2Ugd2l0aCBjYWNoZWQgaW1hZ2VzLCBhbmQgYWRkIHRoZW0gYXMgaW1hZ2UgYW5hbHlzaXMgdGFz
a3MgdG8gdGhlCisgICAgICAgIHRhc2sgcXVldWUgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgdGlu
eS4gQXV0b21hdGljYWxseSBzdGFydCBwcm9jZXNzaW5nIHF1ZXVlZCB0YXNrcyBhZnRlcndhcmRz
IChzZWUgYmVsb3cpLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OnJl
c3VtZVByb2Nlc3NpbmcpOgorCisgICAgICAgIFJ1biB0aGUgbWFpbiBwcm9jZXNzaW5nIGxvb3Ag
b2YgdGhlIHRhc2sgcXVldWU7IHdoaWxlIHRoZXJlIGFyZSB0YXNrcyByZW1haW5pbmcsIHB1c2gg
dXAgdG8gNSBpbWFnZXMgdG8gdGhlCisgICAgICAgIGNsaWVudCBsYXllciBmb3IgaW1hZ2UgYW5h
bHlzaXMgYXQgdGhlIHNhbWUgdGltZSwgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgcXVldWVkIHRh
c2tzLgorCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OmNsZWFyKToKKyAg
ICAgICAgKiBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oOiBBZGRlZC4KKworICAgICAgICBJbnRy
b2R1Y2UgdGhlIG5ldyBjbGFzcy4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjppbWFnZU92ZXJsYXlDb250cm9sbGVyKToKKworICAgICAgICBEcml2
ZS1ieSBmaXg6IGBtX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXJgIHdhcyBiZWluZyBlYWdlcmx5IGlu
aXRpYWxpemVkIGhlcmUsIGRlc3BpdGUgdGhlIGV4aXN0ZW5jZSBvZiBib3RoCisgICAgICAgIGBp
bWFnZU92ZXJsYXlDb250cm9sbGVySWZFeGlzdHMoKWAgYW5kIGBpbWFnZU92ZXJsYXlDb250cm9s
bGVyKClgLiBGaXggdGhpcyBieSBsYXppbHkgY3JlYXRpbmcgdGhlCisgICAgICAgIEltYWdlT3Zl
cmxheUNvbnRyb2xsZXIgaW5zdGVhZC4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW1hZ2VB
bmFseXNpc1F1ZXVlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmltYWdlQW5hbHlzaXNRdWV1ZUlmRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OmltYWdlT3ZlcmxheUNvbnRyb2xsZXIpOiBEZWxldGVkLgorCiAyMDIxLTExLTE2ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEZpeCBmYXN0
L3RleHQvYmFzaWMvMDA1Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTQ1ZTQ4ZDI4MGIzNmRhZWRlNjE5Yjcy
ZmVjN2NkOGM2YjhiZmI3OC4uNTVkZDcwOGZiN2U2N2ExMjY3NDMyYjg1ODA4ZDM4Y2MzZjU3ZTJm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMS0xNiAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBoZWxwZXIgY2xhc3MgdG8g
Y29vcmRpbmF0ZSBiYXRjaCBhbmFseXNpcyBvZiBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBvZiBXS1dlYlZpZXcgU1BJ
IG1ldGhvZHMgdG8ga2ljayBvZmYgKGFuZCBjYW5jZWwpIGJhdGNoIGltYWdlIGFuYWx5c2lzIGZv
ciBtYWluZnJhbWUgY29udGVudC4KKyAgICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdGFydEltYWdlQW5hbHlzaXM6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c3RhcnRJbWFnZUFuYWx5c2lzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzdGFydEltYWdlQW5hbHlzaXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMjEtMTEtMTYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjptX3N3YXBD
aGFpbiBpcyB1bnVzZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDBkNmZmMmY1OWU1NGQ1ZjQwM2Mz
MDYxY2M3NWNkNzUyM2FlMDRmYWIuLmZiYjRhYThjMjEwZjhmYzAzNzlhYTNjNDlhYmQ5OTFlZGVk
NzU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtOTU0LDYgKzk1NCw3IEBAIHNldChXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRl
eHQuaAogICAgIHBhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKICAgICBwYWdlL0dsb2JhbFdp
bmRvd0lkZW50aWZpZXIuaAorICAgIHBhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgKICAgICBwYWdl
L0xheW91dE1pbGVzdG9uZS5oCiAgICAgcGFnZS9NZWRpYUNhblN0YXJ0TGlzdGVuZXIuaAogICAg
IHBhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDlk
Nzc1NDhjZGVhMGI0N2IyMjA2YmI1OGRlNmQzZGEwODRlNWM3NDguLmU5MGI3OWQ3NGRhYmU1Mjlh
YTNhNWUyNmJiMWNlYTUyY2M5MDAwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzI0LDYgKzE3MjQs
NyBAQCBwYWdlL0ZyYW1lVHJlZS5jcHAKIHBhZ2UvRnJhbWVWaWV3LmNwcAogcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmNwcAogcGFnZS9IaXN0b3J5LmNwcAorcGFnZS9JbWFnZUFuYWx5c2lz
UXVldWUuY3BwCiBwYWdlL0ltYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCiBwYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcAogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGJkMWI3YTkzMmIzNTA5NzdiZjVmOTQwNWE5NjVkMDhlYTg1NjlhMmEuLmIzYzhjMDQ3YWZiNWZj
YTYzOTI1MTY3OGJmYjMyZjJjODA1NjdkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0NDgsNiArNTQ0OCw3IEBACiAJCUY0
NjcyOTI4MUUwREU2ODUwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NjcyOTI1MUUwREU1QUIw
MEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDZDNDQ3RTIzNDY1NDU0MDAzOUE3OUQgLyog
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2QzQ0N0MyMzQ2NTQ1NDAwMzlBNzlEIC8qIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCAqLzsgfTsKIAkJRjQ2RDUzODYyNzNEN0U0NjAw
MDlGQTgwIC8qIEltYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ2RDUzODUyNzNEN0UzRjAwMDlGQTgwIC8qIEltYWdlT3ZlcmxheS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NkQ1
M0ExMjczRUVGQTAwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4
MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGNDczODQ1ODI1RERFOUZCMDA2REU4REQgLyogRGF0YU93bmVy
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3
Mzg0NTcyNURERTlGQjAwNkRFOEREIC8qIERhdGFPd25lclR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDdBMDlEMTIwQTkzQTk3MDAyNDBG
QUUgLyogRGlzYWJsZWRBZGFwdGF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ3QTA5Q0YyMEE5MzlGNjAwMjQwRkFFIC8qIERpc2FibGVkQWRh
cHRhdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGNDdBNUUzRTE5NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdBNUUzQjE5
NUI4QzhBMDA0ODMxMDAgLyogU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MjY0LDYgKzE3MjY1LDggQEAK
IAkJRjQ2QzQ0ODEyMzQ2NTQ3QTAwMzlBNzlEIC8qIENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0
YVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDZENTM4NDI3M0Q3
RTNFMDAwOUZBODAgLyogSW1hZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
T3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NkQ1Mzg1MjczRDdF
M0YwMDA5RkE4MCAvKiBJbWFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVybGF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4
MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VBbmFseXNpc1F1
ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NkQ1MzlFMjczRUVDRjcwMDA5
RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VB
bmFseXNpc1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3Mzg0NTcy
NURERTlGQjAwNkRFOEREIC8qIERhdGFPd25lclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YU93
bmVyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdBMDlDRjIwQTkzOUY2
MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNhYmxl
ZEFkYXB0YXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0N0EwOUQ0MjBB
OUREMDQwMDI0MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc2FibGVkQWRhcHRhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjMxODMsNiArMjMxODYsOCBAQAogCQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBI
aXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5o
ICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKKwkJ
CQlGNDZENTM5RTI3M0VFQ0Y3MDAwOUZBODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcCAqLywK
KwkJCQlGNDZENTM5RDI3M0VFQ0Y3MDAwOUZBODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmggKi8s
CiAJCQkJRjQ4MjQzNEEyNjBDMzJGMTAwMjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xsZXIu
Y3BwICovLAogCQkJCUY0ODI0MzQ4MjYwQzMyRjEwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250
cm9sbGVyLmggKi8sCiAJCQkJMEY0NzEwRDUxREI2RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlv
bk9ic2VydmVyLmNwcCAqLywKQEAgLTMzODUyLDYgKzMzODU3LDcgQEAKIAkJCQk4MzUwNTFBNTI0
RjU3M0M4MDA5OTExRDcgLyogSUlSRmlsdGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwRDBCNjkyNEY1N0Q2NzAwN0VEMTIyIC8qIElJUlByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjI3NTM1NzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDZENTNBMTI3M0VFRkEwMDAwOUZBODAgLyogSW1hZ2VBbmFseXNpc1F1ZXVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NUEzMzZGOTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5n
U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxODE1QTMxMUY5QTZDOEYwMEZDQkY4OSAvKiBJ
bWFnZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzIxQjQ5NzQyNTEyQkEzQjAwRkU5RDNC
IC8qIEltYWdlQml0bWFwQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA4NGRjNDljNjZiYjQ5Yjhl
MjE0NDA0MjQ5OWIzZjljMzUzNzllNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbWFnZUFuYWx5c2lzUXVldWUuaCIK
KworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKKyNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtUGVuZGluZ0ltYWdlQW5hbHlz
aXNDb3VudCA9IDU7CitzdGF0aWMgY29uc3RleHByIGZsb2F0IG1pbmltdW1XaWR0aEZvckFuYWx5
c2lzID0gMjA7CitzdGF0aWMgY29uc3RleHByIGZsb2F0IG1pbmltdW1IZWlnaHRGb3JBbmFseXNp
cyA9IDIwOworc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHJlc3VtZVByb2Nlc3NpbmdEZWxheSA9
IDEwMF9tczsKKworSW1hZ2VBbmFseXNpc1F1ZXVlOjpJbWFnZUFuYWx5c2lzUXVldWUoUGFnZSYg
cGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQorICAgICwgbV9yZXN1bWVQcm9jZXNzaW5nVGltZXIo
KnRoaXMsICZJbWFnZUFuYWx5c2lzUXVldWU6OnJlc3VtZVByb2Nlc3NpbmcpCit7Cit9CisKK0lt
YWdlQW5hbHlzaXNRdWV1ZTo6fkltYWdlQW5hbHlzaXNRdWV1ZSgpID0gZGVmYXVsdDsKKwordm9p
ZCBJbWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gaW1hZ2VJdGVyYXRvciA9IGRvY3VtZW50LmltYWdlcygpLT5j
cmVhdGVJdGVyYXRvcigpOworICAgIGZvciAoUmVmUHRyIG5vZGUgPSBpbWFnZUl0ZXJhdG9yLm5l
eHQoKTsgbm9kZTsgbm9kZSA9IGltYWdlSXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmICgh
aXM8SFRNTEVsZW1lbnQ+KCpub2RlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpOworICAgICAgICBp
ZiAoIWlzPFJlbmRlckltYWdlPihlbGVtZW50LnJlbmRlcmVyKCkpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFn
ZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgICAgIGF1dG8qIGNhY2hlZEltYWdlID0gcmVu
ZGVySW1hZ2UuY2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNo
ZWRJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKHJlbmRlckltYWdlLnNpemUoKS53aWR0aCgpIDwgbWluaW11bVdpZHRoRm9yQW5hbHlz
aXMgfHwgcmVuZGVySW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIDwgbWluaW11bUhlaWdodEZvckFuYWx5
c2lzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoeyBX
ZWFrUHRyIHsgZWxlbWVudCB9LCBpZGVudGlmaWVyIH0pOworICAgIH0KKworICAgIHJlc3VtZVBy
b2Nlc3NpbmcoKTsKK30KKwordm9pZCBJbWFnZUFuYWx5c2lzUXVldWU6OnJlc3VtZVByb2Nlc3Np
bmcoKQoreworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAo
IW1fcXVldWUuaXNFbXB0eSgpICYmIG1fcGVuZGluZ1JlcXVlc3RDb3VudCA8IG1heGltdW1QZW5k
aW5nSW1hZ2VBbmFseXNpc0NvdW50KSB7CisgICAgICAgIGF1dG8gW3dlYWtFbGVtZW50LCBpZGVu
dGlmaWVyXSA9IG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50ID0g
d2Vha0VsZW1lbnQuZ2V0KCk7CisgICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXND
b25uZWN0ZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1fcGVuZGluZ1Jl
cXVlc3RDb3VudCsrOworICAgICAgICBtX3BhZ2UtPnJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0
KCplbGVtZW50KTsKKyAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0VGV4
dFJlY29nbml0aW9uKCplbGVtZW50LCBbdGhpcywgcGFnZSA9IG1fcGFnZV0gKGF1dG8mJikgewor
ICAgICAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKG1fcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAgICAgICAgICAgICAgICBtX3BlbmRp
bmdSZXF1ZXN0Q291bnQtLTsKKworICAgICAgICAgICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSAm
JiAhbV9yZXN1bWVQcm9jZXNzaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBt
X3Jlc3VtZVByb2Nlc3NpbmdUaW1lci5zdGFydE9uZVNob3QocmVzdW1lUHJvY2Vzc2luZ0RlbGF5
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEltYWdlQW5hbHlzaXNRdWV1ZTo6Y2xl
YXIoKQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYW5jZWwgcGVuZGluZyByZXF1ZXN0
cyBpbiBhZGRpdGlvbiB0byBlbXB0eWluZyB0aGUgdGFzayBxdWV1ZS4KKyAgICBtX3BlbmRpbmdS
ZXF1ZXN0Q291bnQgPSAwOworICAgIG1fcmVzdW1lUHJvY2Vzc2luZ1RpbWVyLnN0b3AoKTsKKyAg
ICBtX3F1ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlz
aXNRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhOTQ0OGFmZjQ0Y2M5MjYwOTVjMGViZjlkNWE0MTJhMTlm
Y2I4NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlz
aXNRdWV1ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxFbGVtZW50Owor
Y2xhc3MgUGFnZTsKK2NsYXNzIFRpbWVyOworCitjbGFzcyBJbWFnZUFuYWx5c2lzUXVldWUgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEltYWdlQW5hbHlzaXNR
dWV1ZShQYWdlJik7CisgICAgfkltYWdlQW5hbHlzaXNRdWV1ZSgpOworCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbnF1ZXVlQWxsSW1hZ2VzKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCByZXN1bWVQcm9jZXNzaW5nKCk7CisKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAg
IFdlYWtQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIFN0cmluZyBpZGVudGlmaWVy
OworICAgIH07CisKKyAgICBXZWFrUHRyPFBhZ2U+IG1fcGFnZTsKKyAgICBUaW1lciBtX3Jlc3Vt
ZVByb2Nlc3NpbmdUaW1lcjsKKyAgICBEZXF1ZTxUYXNrPiBtX3F1ZXVlOworICAgIHVuc2lnbmVk
IG1fcGVuZGluZ1JlcXVlc3RDb3VudCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDhiNTZmNGYxOTQ5MjIwZTVjZjE1YTllMjkxY2Q2MDM5YTQwYTBmOTAuLjU3MDZhZDg2Mjhm
YjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzYs
NiArNzYsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSGlz
dG9yeUl0ZW0uaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRl
ICJJbWFnZUFuYWx5c2lzUXVldWUuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKICNpbmNs
dWRlICJJbWFnZU92ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
LmgiCkBAIC0zMTYsNyArMzE3LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBh
Z2VDb25maWd1cmF0aW9uKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQogICAgICwgbV9z
ZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJv
bGxlcj4oKnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFr
ZVVuaXF1ZTxJbWFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3JlY2VudFdo
ZWVsRXZlbnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQogICAg
ICwgbV9wYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xs
ZXI+KCp0aGlzKSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpAQCAtMzcwNCw4ICszNzA0LDIyIEBA
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBSZW5kZXJp
bmdVcGRhdGVTdGVwIHN0ZXApCiAgICAgcmV0dXJuIHRzOwogfQogCitJbWFnZU92ZXJsYXlDb250
cm9sbGVyJiBQYWdlOjppbWFnZU92ZXJsYXlDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1faW1h
Z2VPdmVybGF5Q29udHJvbGxlcikKKyAgICAgICAgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyID0g
bWFrZVVuaXF1ZTxJbWFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X2ltYWdlT3ZlcmxheUNvbnRyb2xsZXI7Cit9CisKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMp
CiAKK0ltYWdlQW5hbHlzaXNRdWV1ZSYgUGFnZTo6aW1hZ2VBbmFseXNpc1F1ZXVlKCkKK3sKKyAg
ICBpZiAoIW1faW1hZ2VBbmFseXNpc1F1ZXVlKQorICAgICAgICBtX2ltYWdlQW5hbHlzaXNRdWV1
ZSA9IG1ha2VVbmlxdWU8SW1hZ2VBbmFseXNpc1F1ZXVlPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X2ltYWdlQW5hbHlzaXNRdWV1ZTsKK30KKwogdm9pZCBQYWdlOjp1cGRhdGVFbGVtZW50c1dpdGhU
ZXh0UmVjb2duaXRpb25SZXN1bHRzKCkKIHsKICAgICBpZiAobV90ZXh0UmVjb2duaXRpb25SZXN1
bHRzLmlzRW1wdHlJZ25vcmluZ051bGxSZWZlcmVuY2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGMx
MjJlYmQ3YTY2NzBmMTdkZTdiNmM4YTI0YWNkYWM2NzYzN2ZhODAuLmYxZTA4YmM0ZmVjMDc0OTE2
YTM3MzNhZGZmNjIwNzFkYTRlZDM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMTUsNiArMTE1LDcg
QEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1l
bnQ7CiBjbGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEltYWdlQW5hbHlzaXNRdWV1ZTsKIGNsYXNz
IEltYWdlT3ZlcmxheUNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNTMxLDkgKzUzMiwxNCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhP
TkVfTlVNQkVSX0RFVEVDVElPTikpCiAgICAgU2VydmljZXNPdmVybGF5Q29udHJvbGxlciYgc2Vy
dmljZXNPdmVybGF5Q29udHJvbGxlcigpIHsgcmV0dXJuICptX3NlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI7IH0KICNlbmRpZgotICAgIEltYWdlT3ZlcmxheUNvbnRyb2xsZXImIGltYWdlT3Zlcmxh
eUNvbnRyb2xsZXIoKSB7IHJldHVybiAqbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyOyB9CisgICAg
SW1hZ2VPdmVybGF5Q29udHJvbGxlciYgaW1hZ2VPdmVybGF5Q29udHJvbGxlcigpOwogICAgIElt
YWdlT3ZlcmxheUNvbnRyb2xsZXIqIGltYWdlT3ZlcmxheUNvbnRyb2xsZXJJZkV4aXN0cygpIHsg
cmV0dXJuIG1faW1hZ2VPdmVybGF5Q29udHJvbGxlci5nZXQoKTsgfQogCisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTKQorICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQW5hbHlzaXNRdWV1ZSYgaW1h
Z2VBbmFseXNpc1F1ZXVlKCk7CisgICAgSW1hZ2VBbmFseXNpc1F1ZXVlKiBpbWFnZUFuYWx5c2lz
UXVldWVJZkV4aXN0cygpIHsgcmV0dXJuIG1faW1hZ2VBbmFseXNpc1F1ZXVlLmdldCgpOyB9Cisj
ZW5kaWYKKwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKICAgICBTY3JvbGxMYXRj
aGluZ0NvbnRyb2xsZXImIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpOwogICAgIFNjcm9sbExh
dGNoaW5nQ29udHJvbGxlciogc2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVySWZFeGlzdHMoKTsKQEAg
LTExOTIsNiArMTE5OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlT3ZlcmxheUNvbnRyb2xsZXI+IG1faW1hZ2VPdmVybGF5Q29udHJvbGxlcjsKIAorI2lm
IEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VBbmFseXNp
c1F1ZXVlPiBtX2ltYWdlQW5hbHlzaXNRdWV1ZTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4gbV9wYWdlT3Zlcmxh
eUNvbnRyb2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IDBjM2VkZTY4ZDU3Mzc1ZDhhNDVmMzU3NTgzZmFiZGIwNmY0OTk0NzUu
LmNhNTZjZDA4MGE5NjhhZDI5YzJhOGZiM2M0NTNlOTQ0ZDA1NjEyZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjIwNCw2ICsyMjA0
LDE4IEBAIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5
PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX3N0
YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTKQorICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKworICAgIGlmICghX3BhZ2Ug
fHwgIV9wYWdlLT5wcmVmZXJlbmNlcygpLnRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c0VuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX3BhZ2UtPnN0YXJ0SW1hZ2VBbmFseXNpcyhp
ZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV90YWtlRmluZFN0cmluZ0Zyb21TZWxl
Y3Rpb246KGlkKXNlbmRlcgogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IDQ3MDY4MDEwMzg1ZmJlYjdjMzVhNTQ2ODY0M2RhNzUwZmUxOGU2MDMuLmNjNjExY2VjYmM1NTEx
MzQ3ZDViODBjNjIxZDc4OTE4NThlODk2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDE0LDYgKzQxNCw4IEBA
IGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wp
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4w
KSk7CiAtICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogCistICh2b2lkKV9z
dGFydEltYWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJH
RVRfT1NfSVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCBmOWY3N2UwZTZmYWM4MmRjYThmY2IwMDVjNzJlYzFiY2U2MWY0M2ZmLi5iYjg2ZDA3NmVhOTY3
NDE1YWQ0ZTI2YTliMjJlZTIzODRhYTIzZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTg2MzMsNiArODYzMywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChUZXh0UmVjb2duaXRpb25SZXN1bHQmJiBy
ZXN1bAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2l0
aFRleHRSZWNvZ25pdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdHMpLCBjb250ZXh0LCBsb2NhdGlv
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgaWYg
KGhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
YXJ0SW1hZ2VBbmFseXNpcyhpZGVudGlmaWVyKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1B
R0VfQU5BTFlTSVMpCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmMDFmMzU0YWU3OGNiNGFmYWIxODM1ZjgxOWEx
NDU4OWM0MDg5MjE1Li44N2E0MTU3YmI0OTM4OGE5Mzk3MDkzN2MxNWJhMmRlNmY2Y2RhMjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcwMSw2ICsxNzAxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFRleHRSZWNvZ25pdGlvbihjb25zdCBVUkwmIGlt
YWdlVVJMLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRhLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYmKT4mJik7CiAg
ICAgdm9pZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KFdlYkNvcmU6OlRleHRSZWNv
Z25pdGlvblJlc3VsdCYmLCBjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFRleHRS
ZWNvZ25pdGlvblVwZGF0ZVJlc3VsdCk+JiYpOwogICAgIHZvaWQgY29tcHV0ZUhhc0ltYWdlQW5h
bHlzaXNSZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VC
aXRtYXAsIEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYg
VVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDJmYTlhNWUxMDcwMjUxOTNmMjAxNTM3YThlM2M5NzIzMjg4YTMwOTMu
LmNlMGY4MjE4ZTk0OWI3YWU1M2VhNWVkYTZjYTEwMmYyNGU2YjY2YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IaXN0b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSW1hZ2VBbmFseXNpc1F1ZXVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KQEAgLTc2MzEsNiAr
NzYzMiwxNSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQo
Y29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KHVwZGF0ZVJlc3VsdCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3RhcnRJbWFnZUFuYWx5c2lzKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAgIC8vIFdlIG9ubHkg
Y29uc2lkZXIgbWFpbiBkb2N1bWVudCBjb250ZW50IGZvciBub3csIHRvIG1hdGNoIHRoZSBiZWhh
dmlvciBvZiB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlCisgICAgICAgIC8vIHRoYXQgd2lsbCB0
cmlnZ2VyIHRoaXMgY29kZXBhdGguCisgICAgICAgIGNvcmVQYWdlKCktPmltYWdlQW5hbHlzaXNR
dWV1ZSgpLmVucXVldWVBbGxJbWFnZXMoKmRvY3VtZW50LCBpZGVudGlmaWVyKTsKKyAgICB9Cit9
CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKICNpZiBFTkFCTEUoTUVESUFf
Q09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjE0NTYzZTExM2RjOTgwN2Jh
Y2U3YmRkNDBjMWZmNDc0NDEyMjllMi4uNjhmMWI5YTQzOWJmNWRlNmMwNjE0NDFlMDdhZjc3MDZh
ZjUwMzhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTQzMiw2ICsxNDMyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykK
ICAgICB2b2lkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPiYmKTsKICAgICB2
b2lkIHVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViQ29yZTo6VGV4dFJl
Y29nbml0aW9uUmVzdWx0JiwgY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0
UmVjb2duaXRpb25VcGRhdGVSZXN1bHQpPiYmKTsKKyAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNp
cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFU
SU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNk
NjBiODgzYjI4NjY1YjEzNmExYmQzNzc4Y2MwNWMyZWM0NzNkN2QuLjM3NzE1OTBlZmQyYjZjNWVk
NDA5ZDJmM2M5ZjUxZTUxNWQ1NzM2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjQ0LDYgKzY0NCw3IEBAIEdl
bmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAg
VXBkYXRlV2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChzdHJ1Y3QgV2ViQ29yZTo6VGV4dFJlY29n
bml0aW9uUmVzdWx0IHJlc3VsdCwgc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1l
bnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpUZXh0UmVjb2duaXRpb25VcGRhdGVSZXN1bHQgcmVzdWx0KSBBc3luYworICAgIFN0YXJ0SW1h
Z2VBbmFseXNpcyhTdHJpbmcgaWRlbnRpZmllcikKICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0
KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikK
</data>
<flag name="review"
          id="469574"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444542</attachid>
            <date>2021-11-17 11:35:19 -0800</date>
            <delta_ts>2021-11-17 12:22:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233075-20211117113519.patch</filename>
            <type>text/plain</type>
            <size>24963</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJmNmY5MjExYjgzYjVm
NzA2NjIyOTIzMTk3ZWI5MDMzMGUxNTA4OC4uNjdjZDlkNzhhYmY1YjE0MTU1NzlmMjRkOTQ1MjMw
YzYxNDAwMmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTExLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBjbGFzcyB0byBjb29yZGluYXRlIGJhdGNoIGFuYWx5c2lzIG9mIGltYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEludHJvZHVjZSBJbWFnZUFuYWx5
c2lzUXVldWUsIHdoaWNoIHdpbGwgY29sbGVjdCBzdWl0YWJsZSBpbWFnZSBlbGVtZW50cyBpbiB0
aGUgbWFpbiBkb2N1bWVudCBhbmQgY29vcmRpbmF0ZQorICAgICAgICBpbWFnZSBhbmFseXNpcyB0
YXNrcyBmb3IgdXAgdG8gc29tZSAoZml4ZWQsIGJ1dCBlYXNpbHkgY29uZmlndXJhYmxlKSBtYXhp
bXVtIG51bWJlciBvZiBzaW11bHRhbmVvdXMgcGVuZGluZworICAgICAgICB0YXNrcy4gU2VlIGJl
bG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjpJbWFnZUFuYWx5c2lzUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjplbnF1ZXVlQWxsSW1hZ2VzKToK
KworICAgICAgICBJdGVyYXRlIHRocm91Z2ggYWxsIGltYWdlIGVsZW1lbnRzIG9uIHRoZSBwYWdl
IHdpdGggY2FjaGVkIGltYWdlcywgYW5kIGFkZCB0aGVtIGFzIGltYWdlIGFuYWx5c2lzIHRhc2tz
IHRvIHRoZQorICAgICAgICB0YXNrIHF1ZXVlIGFzIGxvbmcgYXMgdGhleSBhcmUgbm90IHRpbnku
IEF1dG9tYXRpY2FsbHkgc3RhcnQgcHJvY2Vzc2luZyBxdWV1ZWQgdGFza3MgYWZ0ZXJ3YXJkcyAo
c2VlIGJlbG93KS4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjpyZXN1
bWVQcm9jZXNzaW5nKToKKworICAgICAgICBSdW4gdGhlIG1haW4gcHJvY2Vzc2luZyBsb29wIG9m
IHRoZSB0YXNrIHF1ZXVlOyB3aGlsZSB0aGVyZSBhcmUgdGFza3MgcmVtYWluaW5nLCBwdXNoIHVw
IHRvIDUgaW1hZ2VzIHRvIHRoZQorICAgICAgICBjbGllbnQgbGF5ZXIgZm9yIGltYWdlIGFuYWx5
c2lzIGF0IHRoZSBzYW1lIHRpbWUsIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIHF1ZXVlZCB0YXNr
cy4KKworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcik6CisgICAg
ICAgICogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaDogQWRkZWQuCisKKyAgICAgICAgSW50cm9k
dWNlIHRoZSBuZXcgY2xhc3MuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6aW1hZ2VPdmVybGF5Q29udHJvbGxlcik6CisKKyAgICAgICAgRHJpdmUt
YnkgZml4OiBgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyYCB3YXMgYmVpbmcgZWFnZXJseSBpbml0
aWFsaXplZCBoZXJlLCBkZXNwaXRlIHRoZSBleGlzdGVuY2Ugb2YgYm90aAorICAgICAgICBgaW1h
Z2VPdmVybGF5Q29udHJvbGxlcklmRXhpc3RzKClgIGFuZCBgaW1hZ2VPdmVybGF5Q29udHJvbGxl
cigpYC4gRml4IHRoaXMgYnkgbGF6aWx5IGNyZWF0aW5nIHRoZQorICAgICAgICBJbWFnZU92ZXJs
YXlDb250cm9sbGVyIGluc3RlYWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmltYWdlQW5h
bHlzaXNRdWV1ZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjppbWFnZUFuYWx5c2lzUXVldWVJZkV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjppbWFnZU92ZXJsYXlDb250cm9sbGVyKTogRGVsZXRlZC4KKwogMjAyMS0xMS0xNiAgQWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBGaXggZmFzdC90
ZXh0L2Jhc2ljLzAwNS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0NWU0OGQyODBiMzZkYWVkZTYxOWI3MmZl
YzdjZDhjNmI4YmZiNzguLmUzYjU2YzBhZThiOGNlZjc1ZmEwYzE3YmUzNWRkNGE2YmVjMTEzY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMTYgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGNsYXNzIHRvIGNv
b3JkaW5hdGUgYmF0Y2ggYW5hbHlzaXMgb2YgaW1hZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwNzUKKworICAgICAgICBSZXZpZXdlZCBieSBE
ZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkIGEgY291cGxlIG9mIFdLV2ViVmlldyBTUEkgbWV0
aG9kcyB0byBraWNrIG9mZiAoYW5kIGNhbmNlbCkgYmF0Y2ggaW1hZ2UgYW5hbHlzaXMgZm9yIG1h
aW5mcmFtZSBjb250ZW50LgorICAgICAgICBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3N0YXJ0SW1hZ2VBbmFseXNpczpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dEltYWdlQW5hbHlzaXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnN0YXJ0SW1hZ2VBbmFseXNpcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKwogMjAyMS0xMS0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6Om1fc3dhcENoYWlu
IGlzIHVudXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMGQ2ZmYyZjU5ZTU0ZDVmNDAzYzMwNjFj
Yzc1Y2Q3NTIzYWUwNGZhYi4uZmJiNGFhOGMyMTBmOGZjMDM3OWFhM2M0OWFiZDk5MWVkZWQ3NTg5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05NTQsNiArOTU0LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5o
CiAgICAgcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAogICAgIHBhZ2UvR2xvYmFsV2luZG93
SWRlbnRpZmllci5oCisgICAgcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaAogICAgIHBhZ2UvTGF5
b3V0TWlsZXN0b25lLmgKICAgICBwYWdlL01lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oCiAgICAgcGFn
ZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOWQ3NzU0
OGNkZWEwYjQ3YjIyMDZiYjU4ZGU2ZDNkYTA4NGU1Yzc0OC4uZTkwYjc5ZDc0ZGFiZTUyOWFhM2E1
ZTI2YmIxY2VhNTJjYzkwMDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MjQsNiArMTcyNCw3IEBA
IHBhZ2UvRnJhbWVUcmVlLmNwcAogcGFnZS9GcmFtZVZpZXcuY3BwCiBwYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwCiBwYWdlL0hpc3RvcnkuY3BwCitwYWdlL0ltYWdlQW5hbHlzaXNRdWV1
ZS5jcHAKIHBhZ2UvSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKIHBhZ2UvSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuY3BwCiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmQx
YjdhOTMyYjM1MDk3N2JmNWY5NDA1YTk2NWQwOGVhODU2OWEyYS4uYjNjOGMwNDdhZmI1ZmNhNjM5
MjUxNjc4YmZiMzJmMmM4MDU2N2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTQ0OCw2ICs1NDQ4LDcgQEAKIAkJRjQ2NzI5
MjgxRTBERTY4NTAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2NzI5MjUxRTBERTVBQjAwQUND
M0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDZDNDQ3QzIzNDY1NDU0MDAzOUE3OUQgLyogQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oICovOyB9OwogCQlGNDZENTM4NjI3M0Q3RTQ2MDAwOUZB
ODAgLyogSW1hZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDZENTM4NTI3M0Q3RTNGMDAwOUZBODAgLyogSW1hZ2VPdmVybGF5LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ2RDUzQTEy
NzNFRUZBMDAwMDlGQTgwIC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2RDUzOUQyNzNFRUNGNzAwMDlGQTgwIC8q
IEltYWdlQW5hbHlzaXNRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUY0NzM4NDU4MjVEREU5RkIwMDZERThERCAvKiBEYXRhT3duZXJUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDczODQ1
NzI1RERFOUZCMDA2REU4REQgLyogRGF0YU93bmVyVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0N0EwOUQxMjBBOTNBOTcwMDI0MEZBRSAv
KiBEaXNhYmxlZEFkYXB0YXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDdBMDlDRjIwQTkzOUY2MDAyNDBGQUUgLyogRGlzYWJsZWRBZGFwdGF0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUY0N0E1RTNFMTk1QjhDOEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0E1RTNCMTk1QjhD
OEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTcyNjQsNiArMTcyNjUsOCBAQAogCQlG
NDZDNDQ4MTIzNDY1NDdBMDAzOUE3OUQgLyogQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291
cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNv
dXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NkQ1Mzg0MjczRDdFM0Uw
MDA5RkE4MCAvKiBJbWFnZU92ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPdmVy
bGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2RDUzODUyNzNEN0UzRjAw
MDlGQTgwIC8qIEltYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU92ZXJsYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2RDUzOUQyNzNFRUNGNzAwMDlGQTgwIC8q
IEltYWdlQW5hbHlzaXNRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUFuYWx5c2lzUXVldWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ2RDUzOUUyNzNFRUNGNzAwMDlGQTgw
IC8qIEltYWdlQW5hbHlzaXNRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUFuYWx5
c2lzUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDczODQ1NzI1RERF
OUZCMDA2REU4REQgLyogRGF0YU93bmVyVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhT3duZXJU
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0N0EwOUNGMjBBOTM5RjYwMDI0
MEZBRSAvKiBEaXNhYmxlZEFkYXB0YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2FibGVkQWRh
cHRhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3QTA5RDQyMEE5REQw
NDAwMjQwRkFFIC8qIERpc2FibGVkQWRhcHRhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGlzYWJsZWRBZGFwdGF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MzE4Myw2ICsyMzE4Niw4IEBACiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3Rv
cnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8s
CiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLAorCQkJCUY0
NkQ1MzlFMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuY3BwICovLAorCQkJ
CUY0NkQ1MzlEMjczRUVDRjcwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuaCAqLywKIAkJ
CQlGNDgyNDM0QTI2MEMzMkYxMDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5jcHAg
Ki8sCiAJCQkJRjQ4MjQzNDgyNjBDMzJGMTAwMjI0OTdDIC8qIEltYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaCAqLywKIAkJCQkwRjQ3MTBENTFEQjZGRTIyMDAyRENFQzMgLyogSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuY3BwICovLApAQCAtMzM4NTIsNiArMzM4NTcsNyBAQAogCQkJCTgzNTA1MUE1MjRGNTcz
QzgwMDk5MTFENyAvKiBJSVJGaWx0ZXJPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzBE
MEI2OTI0RjU3RDY3MDA3RUQxMjIgLyogSUlSUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjc1MzU3MDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0NkQ1M0ExMjczRUVGQTAwMDA5RkE4MCAvKiBJbWFnZUFuYWx5c2lzUXVldWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU1QTMzNkY5MUQ4MjFFM0MwMDIyQzRDNyAvKiBJbWFnZUJhY2tpbmdTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE4MTVBMzExRjlBNkM4RjAwRkNCRjg5IC8qIEltYWdl
Qml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjFCNDk3NDI1MTJCQTNCMDBGRTlEM0IgLyog
SW1hZ2VCaXRtYXBCYWNraW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW1hZ2VBbmFseXNpc1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjI2MWVkMWQ4NzQwYzE5ZTE1OGJm
NjFmNzNkYzU0ZjI0MzI1ZWQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkltYWdlQW5hbHlzaXNRdWV1ZS5oIgorCisj
aWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVk
ZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlT3ZlcmxheS5oIgorI2luY2x1ZGUgIlJl
bmRlckltYWdlLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1heGltdW1QZW5kaW5nSW1hZ2VBbmFseXNpc0Nv
dW50ID0gNTsKK3N0YXRpYyBjb25zdGV4cHIgZmxvYXQgbWluaW11bVdpZHRoRm9yQW5hbHlzaXMg
PSAyMDsKK3N0YXRpYyBjb25zdGV4cHIgZmxvYXQgbWluaW11bUhlaWdodEZvckFuYWx5c2lzID0g
MjA7CitzdGF0aWMgY29uc3RleHByIFNlY29uZHMgcmVzdW1lUHJvY2Vzc2luZ0RlbGF5ID0gMTAw
X21zOworCitJbWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlzaXNRdWV1ZShQYWdlJiBwYWdl
KQorICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lcigqdGhp
cywgJkltYWdlQW5hbHlzaXNRdWV1ZTo6cmVzdW1lUHJvY2Vzc2luZykKK3sKK30KKworSW1hZ2VB
bmFseXNpc1F1ZXVlOjp+SW1hZ2VBbmFseXNpc1F1ZXVlKCkgPSBkZWZhdWx0OworCit2b2lkIElt
YWdlQW5hbHlzaXNRdWV1ZTo6ZW5xdWV1ZUFsbEltYWdlcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUUgKDIzMzI2Nik6IEFuYWx5emUgaW1hZ2UgZWxlbWVudHMgdGhh
dCBhcmUgbG9hZGVkIGFmdGVyIHdlJ3ZlIGVucXVldWVkIGFsbCBpbWFnZXMgaW4gdGhlIGRvY3Vt
ZW50LgorICAgIGF1dG8gaW1hZ2VJdGVyYXRvciA9IGRvY3VtZW50LmltYWdlcygpLT5jcmVhdGVJ
dGVyYXRvcigpOworICAgIGZvciAoUmVmUHRyIG5vZGUgPSBpbWFnZUl0ZXJhdG9yLm5leHQoKTsg
bm9kZTsgbm9kZSA9IGltYWdlSXRlcmF0b3IubmV4dCgpKSB7CisgICAgICAgIGlmICghaXM8SFRN
TEVsZW1lbnQ+KCpub2RlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8m
IGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpOworICAgICAgICBpZiAoIWlz
PFJlbmRlckltYWdlPihlbGVtZW50LnJlbmRlcmVyKCkpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVs
ZW1lbnQucmVuZGVyZXIoKSk7CisgICAgICAgIGF1dG8qIGNhY2hlZEltYWdlID0gcmVuZGVySW1h
Z2UuY2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFn
ZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYg
KHJlbmRlckltYWdlLnNpemUoKS53aWR0aCgpIDwgbWluaW11bVdpZHRoRm9yQW5hbHlzaXMgfHwg
cmVuZGVySW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIDwgbWluaW11bUhlaWdodEZvckFuYWx5c2lzKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoeyBXZWFrUHRy
IHsgZWxlbWVudCB9LCBpZGVudGlmaWVyIH0pOworICAgIH0KKworICAgIHJlc3VtZVByb2Nlc3Np
bmcoKTsKK30KKwordm9pZCBJbWFnZUFuYWx5c2lzUXVldWU6OnJlc3VtZVByb2Nlc3NpbmcoKQor
eworICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAoIW1fcXVl
dWUuaXNFbXB0eSgpICYmIG1fcGVuZGluZ1JlcXVlc3RDb3VudCA8IG1heGltdW1QZW5kaW5nSW1h
Z2VBbmFseXNpc0NvdW50KSB7CisgICAgICAgIGF1dG8gW3dlYWtFbGVtZW50LCBpZGVudGlmaWVy
XSA9IG1fcXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIFJlZlB0ciBlbGVtZW50ID0gd2Vha0Vs
ZW1lbnQuZ2V0KCk7CisgICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNDb25uZWN0
ZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RD
b3VudCsrOworICAgICAgICBtX3BhZ2UtPnJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0KCplbGVt
ZW50KTsKKyAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0VGV4dFJlY29n
bml0aW9uKCplbGVtZW50LCBbdGhpcywgcGFnZSA9IG1fcGFnZV0gKGF1dG8mJikgeworICAgICAg
ICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
aWYgKG1fcGVuZGluZ1JlcXVlc3RDb3VudCkKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdSZXF1
ZXN0Q291bnQtLTsKKworICAgICAgICAgICAgaWYgKCFtX3F1ZXVlLmlzRW1wdHkoKSAmJiAhbV9y
ZXN1bWVQcm9jZXNzaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc3Vt
ZVByb2Nlc3NpbmdUaW1lci5zdGFydE9uZVNob3QocmVzdW1lUHJvY2Vzc2luZ0RlbGF5KTsKKyAg
ICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEltYWdlQW5hbHlzaXNRdWV1ZTo6Y2xlYXIoKQor
eworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYW5jZWwgcGVuZGluZyByZXF1ZXN0cyBpbiBh
ZGRpdGlvbiB0byBlbXB0eWluZyB0aGUgdGFzayBxdWV1ZS4KKyAgICBtX3BlbmRpbmdSZXF1ZXN0
Q291bnQgPSAwOworICAgIG1fcmVzdW1lUHJvY2Vzc2luZ1RpbWVyLnN0b3AoKTsKKyAgICBtX3F1
ZXVlLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1h
Z2VBbmFseXNpc1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZhOTQ0OGFmZjQ0Y2M5MjYwOTVjMGViZjlkNWE0MTJhMTlmY2I4NWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1
ZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEhUTUxFbGVtZW50OworY2xhc3Mg
UGFnZTsKK2NsYXNzIFRpbWVyOworCitjbGFzcyBJbWFnZUFuYWx5c2lzUXVldWUgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEltYWdlQW5hbHlzaXNRdWV1ZShQ
YWdlJik7CisgICAgfkltYWdlQW5hbHlzaXNRdWV1ZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbnF1ZXVlQWxsSW1hZ2VzKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCByZXN1bWVQcm9jZXNzaW5nKCk7CisKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIFdlYWtQ
dHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOworICAg
IH07CisKKyAgICBXZWFrUHRyPFBhZ2U+IG1fcGFnZTsKKyAgICBUaW1lciBtX3Jlc3VtZVByb2Nl
c3NpbmdUaW1lcjsKKyAgICBEZXF1ZTxUYXNrPiBtX3F1ZXVlOworICAgIHVuc2lnbmVkIG1fcGVu
ZGluZ1JlcXVlc3RDb3VudCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhi
NTZmNGYxOTQ5MjIwZTVjZjE1YTllMjkxY2Q2MDM5YTQwYTBmOTAuLjU3MDZhZDg2MjhmYjliYjJj
NDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNzYsNiArNzYs
NyBAQAogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0
ZW0uaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRlICJJbWFn
ZUFuYWx5c2lzUXVldWUuaCIKICNpbmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJJ
bWFnZU92ZXJsYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCkBA
IC0zMTYsNyArMzE3LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aWd1cmF0aW9uKQogI2lmIFBMQVRGT1JNKE1BQykgJiYgKEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KSB8fCBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pKQogICAgICwgbV9zZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyKG1ha2VVbmlxdWU8U2VydmljZXNPdmVybGF5Q29udHJvbGxlcj4o
KnRoaXMpKQogI2VuZGlmCi0gICAgLCBtX2ltYWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1
ZTxJbWFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3JlY2VudFdoZWVsRXZl
bnREZWx0YUZpbHRlcihXaGVlbEV2ZW50RGVsdGFGaWx0ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9w
YWdlT3ZlcmxheUNvbnRyb2xsZXIobWFrZVVuaXF1ZTxQYWdlT3ZlcmxheUNvbnRyb2xsZXI+KCp0
aGlzKSkKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpAQCAtMzcwNCw4ICszNzA0LDIyIEBAIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBSZW5kZXJpbmdVcGRh
dGVTdGVwIHN0ZXApCiAgICAgcmV0dXJuIHRzOwogfQogCitJbWFnZU92ZXJsYXlDb250cm9sbGVy
JiBQYWdlOjppbWFnZU92ZXJsYXlDb250cm9sbGVyKCkKK3sKKyAgICBpZiAoIW1faW1hZ2VPdmVy
bGF5Q29udHJvbGxlcikKKyAgICAgICAgbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyID0gbWFrZVVu
aXF1ZTxJbWFnZU92ZXJsYXlDb250cm9sbGVyPigqdGhpcyk7CisgICAgcmV0dXJuICptX2ltYWdl
T3ZlcmxheUNvbnRyb2xsZXI7Cit9CisKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK0lt
YWdlQW5hbHlzaXNRdWV1ZSYgUGFnZTo6aW1hZ2VBbmFseXNpc1F1ZXVlKCkKK3sKKyAgICBpZiAo
IW1faW1hZ2VBbmFseXNpc1F1ZXVlKQorICAgICAgICBtX2ltYWdlQW5hbHlzaXNRdWV1ZSA9IG1h
a2VVbmlxdWU8SW1hZ2VBbmFseXNpc1F1ZXVlPigqdGhpcyk7CisgICAgcmV0dXJuICptX2ltYWdl
QW5hbHlzaXNRdWV1ZTsKK30KKwogdm9pZCBQYWdlOjp1cGRhdGVFbGVtZW50c1dpdGhUZXh0UmVj
b2duaXRpb25SZXN1bHRzKCkKIHsKICAgICBpZiAobV90ZXh0UmVjb2duaXRpb25SZXN1bHRzLmlz
RW1wdHlJZ25vcmluZ051bGxSZWZlcmVuY2VzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGMxMjJlYmQ3
YTY2NzBmMTdkZTdiNmM4YTI0YWNkYWM2NzYzN2ZhODAuLmYxZTA4YmM0ZmVjMDc0OTE2YTM3MzNh
ZGZmNjIwNzFkYTRlZDM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xMTUsNiArMTE1LDcgQEAgY2xh
c3MgRnJhbWU7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBj
bGFzcyBIaXN0b3J5SXRlbTsKK2NsYXNzIEltYWdlQW5hbHlzaXNRdWV1ZTsKIGNsYXNzIEltYWdl
T3ZlcmxheUNvbnRyb2xsZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwpAQCAtNTMxLDkgKzUzMiwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
TUFDKSAmJiAoRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpIHx8IEVOQUJMRShURUxFUEhPTkVfTlVN
QkVSX0RFVEVDVElPTikpCiAgICAgU2VydmljZXNPdmVybGF5Q29udHJvbGxlciYgc2VydmljZXNP
dmVybGF5Q29udHJvbGxlcigpIHsgcmV0dXJuICptX3NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI7
IH0KICNlbmRpZgotICAgIEltYWdlT3ZlcmxheUNvbnRyb2xsZXImIGltYWdlT3ZlcmxheUNvbnRy
b2xsZXIoKSB7IHJldHVybiAqbV9pbWFnZU92ZXJsYXlDb250cm9sbGVyOyB9CisgICAgSW1hZ2VP
dmVybGF5Q29udHJvbGxlciYgaW1hZ2VPdmVybGF5Q29udHJvbGxlcigpOwogICAgIEltYWdlT3Zl
cmxheUNvbnRyb2xsZXIqIGltYWdlT3ZlcmxheUNvbnRyb2xsZXJJZkV4aXN0cygpIHsgcmV0dXJu
IG1faW1hZ2VPdmVybGF5Q29udHJvbGxlci5nZXQoKTsgfQogCisjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQorICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlQW5hbHlzaXNRdWV1ZSYgaW1hZ2VBbmFs
eXNpc1F1ZXVlKCk7CisgICAgSW1hZ2VBbmFseXNpc1F1ZXVlKiBpbWFnZUFuYWx5c2lzUXVldWVJ
ZkV4aXN0cygpIHsgcmV0dXJuIG1faW1hZ2VBbmFseXNpc1F1ZXVlLmdldCgpOyB9CisjZW5kaWYK
KwogI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9MQVRDSElORykKICAgICBTY3JvbGxMYXRjaGluZ0Nv
bnRyb2xsZXImIHNjcm9sbExhdGNoaW5nQ29udHJvbGxlcigpOwogICAgIFNjcm9sbExhdGNoaW5n
Q29udHJvbGxlciogc2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVySWZFeGlzdHMoKTsKQEAgLTExOTIs
NiArMTE5OCwxMCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
T3ZlcmxheUNvbnRyb2xsZXI+IG1faW1hZ2VPdmVybGF5Q29udHJvbGxlcjsKIAorI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VBbmFseXNpc1F1ZXVl
PiBtX2ltYWdlQW5hbHlzaXNRdWV1ZTsKKyNlbmRpZgorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdo
ZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2VPdmVybGF5Q29udHJvbGxlcj4gbV9wYWdlT3ZlcmxheUNvbnRy
b2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IDBjM2VkZTY4ZDU3Mzc1ZDhhNDVmMzU3NTgzZmFiZGIwNmY0OTk0NzUuLmNhNTZj
ZDA4MGE5NjhhZDI5YzJhOGZiM2M0NTNlOTQ0ZDA1NjEyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjIwNCw2ICsyMjA0LDE4IEBA
IC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtICo+ICopCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX3N0YXJ0SW1h
Z2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCit7CisjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQorICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKKworICAgIGlmICghX3BhZ2UgfHwgIV9w
YWdlLT5wcmVmZXJlbmNlcygpLnRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c0VuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgX3BhZ2UtPnN0YXJ0SW1hZ2VBbmFseXNpcyhpZGVudGlm
aWVyKTsKKyNlbmRpZgorfQorCiAtICh2b2lkKV90YWtlRmluZFN0cmluZ0Zyb21TZWxlY3Rpb246
KGlkKXNlbmRlcgogewogICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDQ3MDY4
MDEwMzg1ZmJlYjdjMzVhNTQ2ODY0M2RhNzUwZmUxOGU2MDMuLmNjNjExY2VjYmM1NTExMzQ3ZDVi
ODBjNjIxZDc4OTE4NThlODk2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtNDE0LDYgKzQxNCw4IEBAIGZvciB0
aGlzIHByb3BlcnR5LgogLSAodm9pZClfc3VzcGVuZFBhZ2U6KHZvaWQgKF4pKEJPT0wpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAt
ICh2b2lkKV9yZXN1bWVQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogCistICh2b2lkKV9zdGFydElt
YWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmOWY3
N2UwZTZmYWM4MmRjYThmY2IwMDVjNzJlYzFiY2U2MWY0M2ZmLi5iYjg2ZDA3NmVhOTY3NDE1YWQ0
ZTI2YTliMjJlZTIzODRhYTIzZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTg2MzMsNiArODYzMywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRl
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChUZXh0UmVjb2duaXRpb25SZXN1bHQmJiByZXN1bAog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2l0aFRleHRS
ZWNvZ25pdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdHMpLCBjb250ZXh0LCBsb2NhdGlvbiksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0
SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0YXJ0SW1h
Z2VBbmFseXNpcyhpZGVudGlmaWVyKSk7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5B
TFlTSVMpCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBmMDFmMzU0YWU3OGNiNGFmYWIxODM1ZjgxOWExNDU4OWM0
MDg5MjE1Li44N2E0MTU3YmI0OTM4OGE5Mzk3MDkzN2MxNWJhMmRlNmY2Y2RhMjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcwMSw2ICsxNzAxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVxdWVzdFRleHRSZWNvZ25pdGlvbihjb25zdCBVUkwmIGltYWdlVVJM
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VEYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYmKT4mJik7CiAgICAgdm9p
ZCB1cGRhdGVXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0KFdlYkNvcmU6OlRleHRSZWNvZ25pdGlv
blJlc3VsdCYmLCBjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFRleHRSZWNvZ25p
dGlvblVwZGF0ZVJlc3VsdCk+JiYpOwogICAgIHZvaWQgY29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNS
ZXN1bHRzKGNvbnN0IFVSTCYgaW1hZ2VVUkwsIFNoYXJlYWJsZUJpdG1hcCYgaW1hZ2VCaXRtYXAs
IEltYWdlQW5hbHlzaXNUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJ
Q09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDJmYTlhNWUxMDcwMjUxOTNmMjAxNTM3YThlM2M5NzIzMjg4YTMwOTMuLmNlMGY4
MjE4ZTk0OWI3YWU1M2VhNWVkYTZjYTEwMmYyNGU2YjY2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMDIsNiArMjAyLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0hpc3RvcnlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0
b3J5SXRlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSW1hZ2VBbmFseXNpc1F1ZXVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZU92
ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KQEAgLTc2MzEsNiArNzYzMiwx
NSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3Qg
VGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bAogICAgIGNvbXBsZXRpb25IYW5kbGVyKHVwZGF0
ZVJlc3VsdCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3RhcnRJbWFnZUFuYWx5c2lzKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoUmVmUHRyIGRvY3VtZW50ID0gbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpKSB7CisgICAgICAgIC8vIFdlIG9ubHkgY29uc2lk
ZXIgbWFpbiBkb2N1bWVudCBjb250ZW50IGZvciBub3csIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBv
ZiB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlCisgICAgICAgIC8vIHRoYXQgd2lsbCB0cmlnZ2Vy
IHRoaXMgY29kZXBhdGguCisgICAgICAgIGNvcmVQYWdlKCktPmltYWdlQW5hbHlzaXNRdWV1ZSgp
LmVucXVldWVBbGxJbWFnZXMoKmRvY3VtZW50LCBpZGVudGlmaWVyKTsKKyAgICB9Cit9CisKICNl
bmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJP
TFNfQ09OVEVYVF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjE0NTYzZTExM2RjOTgwN2JhY2U3YmRk
NDBjMWZmNDc0NDEyMjllMi4uNjhmMWI5YTQzOWJmNWRlNmMwNjE0NDFlMDdhZjc3MDZhZjUwMzhj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQz
Miw2ICsxNDMyLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB2
b2lkIHJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+JiYpPiYmKTsKICAgICB2b2lkIHVw
ZGF0ZVdpdGhUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgV2ViQ29yZTo6VGV4dFJlY29nbml0
aW9uUmVzdWx0JiwgY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChUZXh0UmVjb2du
aXRpb25VcGRhdGVSZXN1bHQpPiYmKTsKKyAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJ
X1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDNkNjBiODgz
YjI4NjY1YjEzNmExYmQzNzc4Y2MwNWMyZWM0NzNkN2QuLjM3NzE1OTBlZmQyYjZjNWVkNDA5ZDJm
M2M5ZjUxZTUxNWQ1NzM2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjQ0LDYgKzY0NCw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgVXBkYXRl
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdChzdHJ1Y3QgV2ViQ29yZTo6VGV4dFJlY29nbml0aW9u
UmVzdWx0IHJlc3VsdCwgc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnQsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIC0+IChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpUZXh0
UmVjb2duaXRpb25VcGRhdGVSZXN1bHQgcmVzdWx0KSBBc3luYworICAgIFN0YXJ0SW1hZ2VBbmFs
eXNpcyhTdHJpbmcgaWRlbnRpZmllcikKICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNv
cmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikK
</data>

          </attachment>
      

    </bug>

</bugzilla>