<?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>238141</bug_id>
          
          <creation_ts>2022-03-21 07:11:59 -0700</creation_ts>
          <short_desc>[TextureMapper] Split GraphicsContextGLTextureMapper into two classes</short_desc>
          <delta_ts>2022-03-22 14:29:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237649</blocked>
    
    <blocked>238223</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alex</cc>
    
    <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853179</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-21 07:11:59 -0700</bug_when>
    <thetext>[TextureMapper] Split GraphicsContextGLTextureMapper into two classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853185</commentid>
    <comment_count>1</comment_count>
      <attachid>455244</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-21 07:20:05 -0700</bug_when>
    <thetext>Created attachment 455244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853316</commentid>
    <comment_count>2</comment_count>
      <attachid>455244</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-03-21 13:25:40 -0700</bug_when>
    <thetext>Comment on attachment 455244
Patch

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

LGTM! Check the option I pointed out to remove more code and the wincairo failure, I think it is not related but we want to make sure we do not break it.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsContextGLTextureMapperANGLE.cpp:123
&gt; +#if USE(LIBEPOXY) &amp;&amp; USE(OPENGL_ES) &amp;&amp; ENABLE(WEBGL2)
&gt; +    // Bail if GLES3 was requested but cannot be provided.
&gt; +    if (attributes.webGLVersion == GraphicsContextGLWebGLVersion::WebGL2 &amp;&amp; !epoxy_is_desktop_gl() &amp;&amp; epoxy_gl_version() &lt; 30)
&gt; +        return nullptr;
&gt; +#endif

I think we can remove this in the ANGLE case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853551</commentid>
    <comment_count>3</comment_count>
      <attachid>455339</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-21 23:57:15 -0700</bug_when>
    <thetext>Created attachment 455339
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853594</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 03:05:13 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/webstorage/event_case_sensitive.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853595</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 03:19:33 -0700</bug_when>
    <thetext>Committed r291610 (248703@main): &lt;https://commits.webkit.org/248703@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455339.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853596</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-22 03:20:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/90625148&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455244</attachid>
            <date>2022-03-21 07:20:05 -0700</date>
            <delta_ts>2022-03-21 23:57:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238141-20220321152004.patch</filename>
            <type>text/plain</type>
            <size>27912</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3NjgyZjk4ODdiMWRm
ZmI4YTkyNGY3YTZlNzE2YmI2N2Q0ZWRmMC4uZjllMjAzOWY3NjRhM2I2MzVkNTYwNDNiNWE0N2I0
NjNkNzNmZDBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAzLTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4dHVyZU1hcHBl
cl0gU3BsaXQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGludG8gdHdvIGNsYXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlciBpbnRvIHR3byBkaXN0aW5jdCBjbGFzc2VzLiBU
aGUKKyAgICAgICAgY3VycmVudCBjbGFzcyB1bmNvbmRpdGlvbmFsbHkgaW5oZXJpdHMgZnJvbSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCwgYW5kCisgICAgICAgIHRoZSBuZXcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUgaW5oZXJpdHMgZnJvbQorICAgICAgICBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFLiBUaGlzIHJlZHVjZXMgY29tcGxleGl0eSBhbmQgYXZvaWRzIHRoZQorICAg
ICAgICBpbXBsZW1lbnRhdGlvbiB0byBzcGFuIGFjcm9zcyB0d28gc2VwYXJhdGUgZmlsZXMuIFRo
ZSB0d28gY2xhc3NlcyBjYW4KKyAgICAgICAgYWxzbyBiZSBkZXZlbG9wZWQgaW5kZXBlbmRlbnRs
eSwgd2l0aCBtb3JlIGNoYW5nZXMgYW5kIGNsZWFudXBzIGFscmVhZHkKKyAgICAgICAgcGxhbm5l
ZCBmb3IgdGhlIEFOR0xFIHZhcmlhbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGR1ZSB0byBu
byBhY3R1YWwgY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVy
ZU1hcHBlci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdl
YlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVy
Q29udGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBhaW50Q29tcG9zaXRlZFJlc3Vs
dHNUb1ZpZGVvRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6fkdyYXBo
aWNzQ29udGV4dEdMQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6cGxhdGZvcm1EaXNwbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnBsYXRmb3JtQ29uZmlnIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpjaGVja0dQVVN0YXR1cyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVh
ZENvbXBvc2l0ZWRSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdlYlByb2Nlc3NH
cmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJB
TkdMRTo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpsYXllckNvbnRlbnRz
RGlzcGxheURlbGVnYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyOjpzZXRDb250ZXh0VmlzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnByZXBhcmVGb3JEaXNwbGF5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcjo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oLgorCiAyMDIyLTAzLTIwICBEaWVnbyBQ
aW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gVW5yZXZpZXdl
ZCwgZml4IG5vbi11bmlmaWVkIGJ1aWxkIGFmdGVyIHIyOTE0NzQgYW5kIHIyOTE1MDgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IDk1NTNiYmRhOGU3
ZDhkNGQ2ZjhiZTY4ZmEwMDNlODBlOTM1OTZjZjUuLmI2MzI0NDg0MzlmMGVmODY3Y2E0OWJlZmJj
MzZhMzFjY2JmY2IwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBl
ci5jbWFrZQpAQCAtMjQsNiArMjQsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0NsaXBTdGFjay5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGNj
NWQ5Y2QzZDNkNzc1MDM4NWE1ZmVlYmNjOThhZTk2OTczNjYxNTMuLjExOTA1OTBlMjRjODA5YmE3
OTQyOWJlNDdlNGU5NzcyZDM2MWRlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0yOSwzNCArMjksMjYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCIKIAotI2lm
IEVOQUJMRShXRUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIEVOQUJMRShXRUJHTCkg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKEFOR0xFKQogCiAjaW5jbHVkZSAiUGl4ZWxC
dWZmZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAot
I2lmIFVTRShBTkdMRSkKLSNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKLSNlbGlmIFVTRShMSUJF
UE9YWSkKKyNpZiBVU0UoTElCRVBPWFkpCiAjaW5jbHVkZSA8ZXBveHkvZ2wuaD4KICNlbGlmICFV
U0UoT1BFTkdMX0VTKQogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIk9wZW5HTFNo
aW1zLmgiCiAjZW5kaWYKIAotI2lmICFVU0UoQU5HTEUpCiAjaW5jbHVkZSA8QU5HTEUvU2hhZGVy
TGFuZy5oPgotI2VuZGlmCiAKICNpZiBVU0UoTklDT1NJQSkKLSNpZiBVU0UoQU5HTEUpCi0jaW5j
bHVkZSAiTmljb3NpYUdDR0xBTkdMRUxheWVyLmgiCi0jZWxzZQogI2luY2x1ZGUgIk5pY29zaWFH
Q0dMTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlLmgiCiAj
ZW5kaWYKLSNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJWaWRl
b0ZyYW1lLmgiCkBAIC03MiwzMiArNjQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzKQotewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0UmVmKCpuZXcgR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyKFdURk1vdmUoYXR0cmlidXRlcykpKTsKLSAgICBpZiAoIWNvbnRleHQt
PmluaXRpYWxpemUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbnRl
eHQ7Ci19Ci0KLUdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcigpID0gZGVmYXVsdDsKLQotR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKLSAgICA6IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckJhc2UoV1RGTW92ZShhdHRyaWJ1dGVzKSkKLXsKLX0KLQotUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
OjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkKLXsKLSAgICByZXR1cm4gbV9sYXllckNv
bnRlbnRzRGlzcGxheURlbGVnYXRlOwotfQotCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNy
ZWF0ZVdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKICAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7Ci0jaWYgIVVTRShPUEVOR0xfRVMpICYmICFVU0UoTElCRVBPWFkpICYmICFVU0UoQU5H
TEUpCisjaWYgIVVTRShPUEVOR0xfRVMpICYmICFVU0UoTElCRVBPWFkpCiAgICAgICAgIHN1Y2Nl
c3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKICNlbmRpZgogICAgICAgICBpbml0aWFsaXpl
ZCA9IHRydWU7CkBAIC0xMTcsNDggKzg5LDUxIEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4g
Y3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotUmVmUHRy
PFZpZGVvRnJhbWU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3Np
dGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgaWYgKGF1dG8gcGl4ZWxCdWZmZXIgPSByZWFkQ29tcG9zaXRlZFJlc3VsdHMoKSkKLSAgICAg
ICAgcmV0dXJuIFZpZGVvRnJhbWVHU3RyZWFtZXI6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihXVEZN
b3ZlKCpwaXhlbEJ1ZmZlcikpOwotI2VuZGlmCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
V1RGTW92ZShhdHRyaWJ1dGVzKSkpOworICAgIGlmICghY29udGV4dC0+aW5pdGlhbGl6ZSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICA6IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMKFdURk1vdmUoYXR0cmlidXRlcykpCit7Cit9CisKK0dyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcjo6fkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpID0g
ZGVmYXVsdDsKKworUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlKCkKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfQot
I2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCiBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlcjo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXllciwgUGxhdGZv
cm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSNpZiBVU0UoQU5H
TEUpICYmIFVTRShHU1RSRUFNRVJfR0wpCi0gICAgVU5VU0VEX1BBUkFNKHBsYXllcik7Ci0gICAg
VU5VU0VEX1BBUkFNKG91dHB1dFRleHR1cmUpOwotICAgIFVOVVNFRF9QQVJBTShvdXRwdXRUYXJn
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVybmFs
Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0oZm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0odHlw
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHByZW11bHRpcGx5QWxwaGEpOwotICAgIFVOVVNFRF9QQVJB
TShmbGlwWSk7Ci0KLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvcHktZnJlZSAob3IgYXQgbGVh
c3QsIHNvZnR3YXJlIGNvcHktZnJlZSkgdGV4dHVyZSB0cmFuc2ZlciB2aWEgZG1hYnVmLgotICAg
IHJldHVybiBmYWxzZTsKLSNlbHNlCiAgICAgcmV0dXJuIHBsYXllci5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUodGhpcywgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkp
OworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorUmVmUHRyPFZpZGVvRnJh
bWU+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0
c1RvVmlkZW9GcmFtZSgpCit7CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBpZiAoYXV0byBwaXhl
bEJ1ZmZlciA9IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpKQorICAgICAgICByZXR1cm4gVmlkZW9G
cmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFdURk1vdmUoKnBpeGVsQnVmZmVy
KSk7CiAjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgogCi0jaWYgVVNFKE5J
Q09TSUEpICYmICFVU0UoQU5HTEUpCiBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
cjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICAgICBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVs
ZWdhdGUgPSBQbGF0Zm9ybUxheWVyRGlzcGxheURlbGVnYXRlOjpjcmVhdGUoJm1fbmljb3NpYUxh
eWVyLT5jb250ZW50TGF5ZXIoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShU
RVhUVVJFX01BUFBFUikKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShURVhUVVJFX01B
UFBFUikgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuaAppbmRleCA2MzAwY2UwNmNmNmQ2M2Q1NGVjODNiOWNhZGRlMDg4OTFmZDhjMTI3
Li5iMjEwMWUxNjFkNWNjM2ViNjg4OGRiY2IwMGU0NDZmMTRhYmZmZDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oCkBAIC0yNSwyOCArMjUsMTggQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoV0VCR0wpCisjaWYgRU5BQkxFKFdFQkdMKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQU5HTEUpCiAKLSNpZiBVU0UoQU5HTEUpCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIgotI2Vsc2UKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
I2lmIFVTRShBTkdMRSkKLXVzaW5nIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ug
PSBHcmFwaGljc0NvbnRleHRHTEFOR0xFOwotI2Vsc2UKLXVzaW5nIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckJhc2UgPSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKLSNlbmRpZgotCi1j
bGFzcyBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSB7CitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyPiBjcmVhdGUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiYpOwogICAgIH5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIoKTsKIAotICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckJhc2Ugb3ZlcnJpZGVzLgorICAgIC8vIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMIG92ZXJyaWRlcy4KICAgICBSZWZQdHI8R3JhcGhpY3NMYXll
ckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlKCkg
ZmluYWw7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEo
TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
QEAgLTU0LDIxICs0NCwxNSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBSZWZQdHI8VmlkZW9GcmFtZT4gcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgp
IGZpbmFsOwogI2VuZGlmCi0jaWYgVVNFKEFOR0xFKQotICAgIHZvaWQgc2V0Q29udGV4dFZpc2li
aWxpdHkoYm9vbCkgZmluYWw7Ci0gICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmco
KSBmaW5hbDsKLSAgICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KCkgZmluYWw7Ci0jZW5kaWYKIAog
cHJpdmF0ZToKLSNpZiBVU0UoQU5HTEUpCi0gICAgYm9vbCBwbGF0Zm9ybUluaXRpYWxpemVDb250
ZXh0KCkgZmluYWw7Ci0jZW5kaWYKLSAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIGZpbmFs
OwogICAgIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJik7CisKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIGZp
bmFsOworCiAgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4g
bV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpICYmIFVTRShURVhUVVJF
X01BUFBFUikgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCmluZGV4IDYzNzBjZmJmMzQyMjIzOTU0ZTc3MTk0
M2YwYjQwOGYwNWYwOGVjOTUuLmU5NzA0MDBiZmYwMjAxNjRjOTMwMDNlN2Y3MWQ1N2NhOWRhMTdm
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFLmNwcApAQCAtMjUsOSArMjUsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oIgogCi0jaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQU5HTEUpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBFTkFCTEUoV0VCR0wp
ICYmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKQogCiAjaW5jbHVkZSAiQU5HTEVI
ZWFkZXJzLmgiCiAjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKQEAgLTU0LDcgKzU0LDEyNyBA
QCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFKEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyBhdHRyaQogewogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCgpCitHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCit7CisgICAgYm9vbCBzdWNjZXNz
ID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKKyAgICBpZiAobV90ZXh0dXJlKQorICAgICAgICBHTF9EZWxldGVUZXh0dXJlcygxLCAm
bV90ZXh0dXJlKTsKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkKKyAgICAgICAgR0xfRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOworCisgICAgYXV0byBhdHRyaWJ1
dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlh
cykgeworICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29s
b3JCdWZmZXIpOworICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMu
ZGVwdGgpCisgICAgICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2Ft
cGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgR0xfRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZXMuc3RlbmNpbCB8
fCBhdHRyaWJ1dGVzLmRlcHRoKSB7CisgICAgICAgIGlmIChtX2RlcHRoU3RlbmNpbEJ1ZmZlcikK
KyAgICAgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKyAgICB9CisgICAgR0xfRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7CisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2lu
dGVybWVkaWF0ZVRleHR1cmUpOworI2VuZGlmCit9CisKK0dDR0xEaXNwbGF5IEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlz
cGxheU9iajsKK30KKworR0NHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9y
bUNvbmZpZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29uZmlnT2JqOworfQorCitib29sIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgaWYgKEVH
TF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVHTF9OT19TVVJG
QUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTEFOR0xFOjpjaGVja0dQVVN0YXR1cygpCit7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKworc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZENvbXBv
c2l0ZWRSZXN1bHRzKCkKK3sKKyAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKK30K
KworUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250
ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQorewor
ICAgIC8vIENyZWF0ZSB0aGUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb2JqZWN0IGZpcnN0IGlu
IG9yZGVyIHRvIGVzdGFibGlzdCBhIGN1cnJlbnQgY29udGV4dCBvbiB0aGlzIHRocmVhZC4KKyAg
ICBhdXRvIGNvbnRleHQgPSBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyB7IGF0dHJpYnV0ZXMgfSk7CisgICAgaWYg
KCFjb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNpZiBVU0UoTElCRVBPWFkpICYm
IFVTRShPUEVOR0xfRVMpICYmIEVOQUJMRShXRUJHTDIpCisgICAgLy8gQmFpbCBpZiBHTEVTMyB3
YXMgcmVxdWVzdGVkIGJ1dCBjYW5ub3QgYmUgcHJvdmlkZWQuCisgICAgaWYgKGF0dHJpYnV0ZXMu
d2ViR0xWZXJzaW9uID09IEdyYXBoaWNzQ29udGV4dEdMV2ViR0xWZXJzaW9uOjpXZWJHTDIgJiYg
IWVwb3h5X2lzX2Rlc2t0b3BfZ2woKSAmJiBlcG94eV9nbF92ZXJzaW9uKCkgPCAzMCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFPiBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
IGF0dHJpYnV0ZXMpCit7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRShXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAg
aWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBjb250ZXh0OworfQorCitHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RG
TW92ZShhdHRyaWJ1dGVzKSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSgpCit7CisgICAgYm9v
bCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKKworICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQorICAgICAgICBH
TF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmUpCisgICAgICAg
IEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOworI2VuZGlmCit9
CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOworfQorCisj
aWYgRU5BQkxFKFZJREVPKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvcHktZnJlZSAob3IgYXQgbGVhc3QsIHNv
ZnR3YXJlIGNvcHktZnJlZSkgdGV4dHVyZSB0cmFuc2ZlciB2aWEgZG1hYnVmLgorICAgIHJldHVy
biBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxW
aWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpCit7CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBp
ZiAoYXV0byBwaXhlbEJ1ZmZlciA9IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpKQorICAgICAgICBy
ZXR1cm4gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFdURk1vdmUo
KnBpeGVsQnVmZmVyKSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRp
YWxpemVDb250ZXh0KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE1Nyw3
ICsyNzcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICNp
ZiBVU0UoTklDT1NJQSkKICAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6
R0NHTEFOR0xFTGF5ZXI+KCp0aGlzKTsKQEAgLTIzNiw2ICszNTYsNjMgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpzZXRDb250ZXh0VmlzaWJpbGl0
eShib29sKQoreworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
OjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGNvbnN0IGF1dG8gc2l6ZSA9IGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCk7CisgICAgY29uc3QgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGNv
bnN0IGludCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOworICAgIEdMdWludCBjb2xvckZvcm1hdCA9
IGF0dHJzLmFscGhhID8gR0xfUkdCQSA6IEdMX1JHQjsKKyAgICBHTGVudW0gdGV4dHVyZVRhcmdl
dCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgR0x1aW50IGludGVybmFsQ29s
b3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBjb2xvckZvcm1hdCA6
IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
KyAgICBpZiAobV90ZXh0dXJlQmFja2luZykKKyAgICAgICAgbV90ZXh0dXJlQmFja2luZy0+cmVz
ZXQod2lkdGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZykKKyAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdp
ZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKKyAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0dXJl
QmFja2luZykKKyAgICAgICAgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+cmVzZXQod2lk
dGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworI2VuZGlmCisKKyAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVy
eUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVU
YXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisgICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsKKyAgICAgICAgR0xfQmluZFRl
eHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIGlmICht
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyAmJiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSkKKyAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1
cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5h
bENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgMCk7CisgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5n
ICYmIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCisgICAgICAgICAgICBH
TF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0
ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgR0xf
VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgfQorICAg
IEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisgICAgaWYgKG1fdGV4
dHVyZUJhY2tpbmcgJiYgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAgICAgICAgR0xfRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSk7CisgICAgZWxzZQorICAgICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKyNlbHNlCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFy
Z2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgbV90ZXh0dXJlKTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKKyNlbmRpZgorICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlLCAw
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit7Cit9CisKICNpZiBVU0UoTklDT1NJ
QSkKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNr
aW5nKEdDR0xEaXNwbGF5IGRpc3BsYXkpCiAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKQEAgLTMx
NSwxMTkgKzQ5Miw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNr
aW5nOjpyZXNldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wKIH0KICNlbmRpZgogCi1HcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCi17Ci0gICAgYm9v
bCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLSAgICBpZiAobV90ZXh0dXJlKQotICAgICAgICBHTF9EZWxldGVUZXh0
dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkKLSAgICAg
ICAgR0xfRGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotCi0gICAgYXV0
byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLQotICAgIGlmIChhdHRyaWJ1dGVz
LmFudGlhbGlhcykgewotICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0
dHJpYnV0ZXMuZGVwdGgpCi0gICAgICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZt
X211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgR0xfRGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZXMu
c3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSB7Ci0gICAgICAgIGlmIChtX2RlcHRoU3RlbmNp
bEJ1ZmZlcikKLSAgICAgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKLSAgICB9Ci0gICAgR0xfRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zi
byk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIEdMX0RlbGV0ZVRleHR1cmVz
KDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotI2VuZGlmCi19Ci0KLUdDR0xEaXNwbGF5IEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGlzcGxheU9iajsKLX0KLQotR0NHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29uZmlnT2JqOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCgpCi17Ci0g
ICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpjaGVja0dQVVN0YXR1cygpCi17Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQot
ewotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3BsYXkoKQotewotfQotCi1ib29sIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKLXsKLSAg
ICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBjb25zdCBhdXRvIHNpemUg
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwotICAgIGNvbnN0IGludCB3aWR0aCA9IHNp
emUud2lkdGgoKTsKLSAgICBjb25zdCBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBH
THVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7Ci0gICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAg
IEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJF
XzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0KLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1f
dGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBp
ZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fY29tcG9zaXRvclRleHR1
cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7Ci0gICAgaWYgKG1f
aW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVy
ZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSNlbmRpZgotCi0g
ICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0
dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7Ci0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7
Ci0gICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1
cmUpOwotICAgICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3Np
dG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVy
ZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JG
b3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBpZiAobV9pbnRlcm1l
ZGlhdGVUZXh0dXJlQmFja2luZyAmJiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFn
ZSgpKQotICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRh
cmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxD
b2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOwotICAgIH0KLSAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1
cmUpOwotICAgIGlmIChtX3RleHR1cmVCYWNraW5nICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdl
KCkpCi0gICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQs
IG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOwotICAgIGVsc2UKLSAgICAgICAgR0xfVGV4SW1h
Z2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0jZWxzZQotICAgIEdMX0Jp
bmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgIEdMX1Rl
eEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIEdMX0JpbmRU
ZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgR0xfVGV4SW1hZ2UyRCh0ZXh0
dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xv
ckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0jZW5kaWYKLSAgICBHTF9GcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVU
YXJnZXQsIG1fdGV4dHVyZSwgMCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQotewot
fQotCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQotewotICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwotfQotCi19Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZWVjYzk3MGUxZGMwY2Y4
Y2E1MTE1MzIwZTdjZmY0YTc3OWM1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEU+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJik7CisgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKCk7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkgZmluYWw7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRy
PFZpZGVvRnJhbWU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVvRnJhbWUoKSBmaW5hbDsK
KyNlbmRpZgorCisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAg
ICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
Jik7CisKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKSBmaW5hbDsKKyAgICBi
b29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIGZpbmFsOworCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShBTkdMRSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455339</attachid>
            <date>2022-03-21 23:57:15 -0700</date>
            <delta_ts>2022-03-22 03:19:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238141-20220322075714.patch</filename>
            <type>text/plain</type>
            <size>27456</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3NjgyZjk4ODdiMWRm
ZmI4YTkyNGY3YTZlNzE2YmI2N2Q0ZWRmMC4uODZlNGEyNWRkOTE3ZjRhNmYyOGFjMTkwYjBjNGVm
YjA1ZjdkODZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAzLTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4dHVyZU1hcHBl
cl0gU3BsaXQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGludG8gdHdvIGNsYXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZWphbmRybyBHLiBDYXN0cm8uCisKKyAgICAgICAgU3Bs
aXQgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyIGludG8gdHdvIGRpc3RpbmN0IGNsYXNz
ZXMuIFRoZQorICAgICAgICBjdXJyZW50IGNsYXNzIHVuY29uZGl0aW9uYWxseSBpbmhlcml0cyBm
cm9tIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLCBhbmQKKyAgICAgICAgdGhlIG5ldyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSBpbmhlcml0cyBmcm9tCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEUuIFRoaXMgcmVkdWNlcyBjb21wbGV4aXR5IGFuZCBhdm9pZHMgdGhl
CisgICAgICAgIGltcGxlbWVudGF0aW9uIHRvIHNwYW4gYWNyb3NzIHR3byBzZXBhcmF0ZSBmaWxl
cy4gVGhlIHR3byBjbGFzc2VzIGNhbgorICAgICAgICBhbHNvIGJlIGRldmVsb3BlZCBpbmRlcGVu
ZGVudGx5LCB3aXRoIG1vcmUgY2hhbmdlcyBhbmQgY2xlYW51cHMgYWxyZWFkeQorICAgICAgICBw
bGFubmVkIGZvciB0aGUgQU5HTEUgdmFyaWFudC4KKworICAgICAgICBObyBuZXcgdGVzdHMgZHVl
IHRvIG5vIGFjdHVhbCBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
ZXh0dXJlTWFwcGVyLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6
bGF5ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp+
R3JhcGhpY3NDb250ZXh0R0xBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjpwbGF0Zm9ybURpc3BsYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1Db25maWcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmNoZWNrR1BVU3RhdHVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtUmVsZWFzZVRo
cmVhZFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViUHJv
Y2Vzc0dyYXBoaWNzQ29udGV4dEdMKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlckFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OmxheWVyQ29u
dGVudHNEaXNwbGF5RGVsZWdhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEU6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9WaWRlb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9y
bUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OnNldENvbnRleHRWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJh
Y2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1Jbml0aWFsaXplQ29udGV4dCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXI6OnNldENvbnRleHRWaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRp
c3BsYXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXJBTkdMRS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmguCisKIDIwMjItMDMtMjAgIERp
ZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBVbnJl
dmlld2VkLCBmaXggbm9uLXVuaWZpZWQgYnVpbGQgYWZ0ZXIgcjI5MTQ3NCBhbmQgcjI5MTUwOApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXggOTU1M2Ji
ZGE4ZTdkOGQ0ZDZmOGJlNjhmYTAwM2U4MGU5MzU5NmNmNS4uYjYzMjQ0ODQzOWYwZWY4NjdjYTQ5
YmVmYmMzNmEzMWNjYmZjYjBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlCkBAIC0yNCw2ICsyNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFU
RV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQ2xpcFN0YWNrLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggY2M1ZDljZDNkM2Q3NzUwMzg1YTVmZWViY2M5OGFlOTY5NzM2NjE1My4uMTE5MDU5MGUyNGM4
MDliYTc5NDI5YmU0N2U0ZTk3NzJkMzYxZGVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI5LDM0ICsyOSwyNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIgog
Ci0jaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgRU5BQkxFKFdF
QkdMKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQU5HTEUpCiAKICNpbmNsdWRlICJQ
aXhlbEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5o
IgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCi0jaWYgVVNFKEFOR0xFKQotI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2VsaWYgVVNF
KExJQkVQT1hZKQorI2lmIFVTRShMSUJFUE9YWSkKICNpbmNsdWRlIDxlcG94eS9nbC5oPgogI2Vs
aWYgIVVTRShPUEVOR0xfRVMpCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiT3Bl
bkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYgIVVTRShBTkdMRSkKICNpbmNsdWRlIDxBTkdMRS9T
aGFkZXJMYW5nLmg+Ci0jZW5kaWYKIAogI2lmIFVTRShOSUNPU0lBKQotI2lmIFVTRShBTkdMRSkK
LSNpbmNsdWRlICJOaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaCIKLSNlbHNlCiAjaW5jbHVkZSAiTmlj
b3NpYUdDR0xMYXllci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGUu
aCIKICNlbmRpZgotI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUg
IlZpZGVvRnJhbWUuaCIKQEAgLTcyLDMyICs2NCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCi17Ci0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIoV1RGTW92ZShhdHRyaWJ1dGVzKSkpOwotICAgIGlmICghY29u
dGV4dC0+aW5pdGlhbGl6ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
Y29udGV4dDsKLX0KLQotR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjp+R3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyKCkgPSBkZWZhdWx0OwotCi1HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcihHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQotICAgIDogR3JhcGhpY3NDb250ZXh0R0xUZXh0
dXJlTWFwcGVyQmFzZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKQotewotfQotCi1SZWZQdHI8R3JhcGhp
Y3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGUoKQotewotICAgIHJldHVybiBtX2xh
eWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7Ci19Ci0KIFJlZlB0cjxHcmFwaGljc0NvbnRleHRH
TD4gY3JlYXRlV2ViUHJvY2Vzc0dyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXpl
ZCA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGlmICghaW5p
dGlhbGl6ZWQpIHsKLSNpZiAhVVNFKE9QRU5HTF9FUykgJiYgIVVTRShMSUJFUE9YWSkgJiYgIVVT
RShBTkdMRSkKKyNpZiAhVVNFKE9QRU5HTF9FUykgJiYgIVVTRShMSUJFUE9YWSkKICAgICAgICAg
c3VjY2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwogI2VuZGlmCiAgICAgICAgIGluaXRp
YWxpemVkID0gdHJ1ZTsKQEAgLTExNyw0OCArODksNTEgQEAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250
ZXgKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1S
ZWZQdHI8VmlkZW9GcmFtZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9WaWRlb0ZyYW1lKCkKK1JlZlB0cjxHcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXI+IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7Ci0jaWYgVVNFKEdTVFJFQU1F
UikKLSAgICBpZiAoYXV0byBwaXhlbEJ1ZmZlciA9IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpKQot
ICAgICAgICByZXR1cm4gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVy
KFdURk1vdmUoKnBpeGVsQnVmZmVyKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcihXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAgaWYgKCFjb250ZXh0LT5pbml0aWFsaXpl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb250ZXh0OworfQorCitH
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlcihHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQorICAgIDogR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woV1RGTW92ZShhdHRyaWJ1dGVzKSkKK3sKK30KKworR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjp+R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
KCkgPSBkZWZhdWx0OworCitSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OmxheWVyQ29udGVudHNEaXNwbGF5
RGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7
CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xU
ZXh0dXJlTWFwcGVyOjpjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewotI2lmIFVT
RShBTkdMRSkgJiYgVVNFKEdTVFJFQU1FUl9HTCkKLSAgICBVTlVTRURfUEFSQU0ocGxheWVyKTsK
LSAgICBVTlVTRURfUEFSQU0ob3V0cHV0VGV4dHVyZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1
dFRhcmdldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGxldmVsKTsKLSAgICBVTlVTRURfUEFSQU0oaW50
ZXJuYWxGb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXQpOwotICAgIFVOVVNFRF9QQVJB
TSh0eXBlKTsKLSAgICBVTlVTRURfUEFSQU0ocHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGZsaXBZKTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgY29weS1mcmVlIChvciBh
dCBsZWFzdCwgc29mdHdhcmUgY29weS1mcmVlKSB0ZXh0dXJlIHRyYW5zZmVyIHZpYSBkbWFidWYu
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKICAgICByZXR1cm4gcGxheWVyLmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJlLCBvdXRwdXRUYXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBm
bGlwWSk7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCitSZWZQdHI8Vmlk
ZW9GcmFtZT4gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9WaWRlb0ZyYW1lKCkKK3sKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlmIChhdXRv
IHBpeGVsQnVmZmVyID0gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkpCisgICAgICAgIHJldHVybiBW
aWRlb0ZyYW1lR1N0cmVhbWVyOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoV1RGTW92ZSgqcGl4ZWxC
dWZmZXIpKTsKICNlbmRpZgorICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKLSNpZiBV
U0UoTklDT1NJQSkgJiYgIVVTRShBTkdMRSkKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewogICAgIG1fbGF5ZXJDb250ZW50c0Rpc3Bs
YXlEZWxlZ2F0ZSA9IFBsYXRmb3JtTGF5ZXJEaXNwbGF5RGVsZWdhdGU6OmNyZWF0ZSgmbV9uaWNv
c2lhTGF5ZXItPmNvbnRlbnRMYXllcigpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYg
VVNFKFRFWFRVUkVfTUFQUEVSKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSKSAmJiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5oCmluZGV4IDYzMDBjZTA2Y2Y2ZDYzZDU0ZWM4M2I5Y2FkZGUwODg5MWZk
OGMxMjcuLmIyMTAxZTE2MWQ1Y2MzZWI2ODg4ZGJjYjAwZTQ0NmYxNGFiZmZkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgKQEAgLTI1LDI4ICsyNSwx
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIEVOQUJMRShXRUJHTCkKKyNpZiBFTkFCTEUoV0VC
R0wpICYmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShBTkdMRSkKIAotI2lmIFVTRShBTkdM
RSkKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTEFOR0xFLmgiCi0jZWxzZQogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0jaWYgVVNFKEFOR0xFKQotdXNpbmcgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QmFzZSA9IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU7Ci0jZWxzZQotdXNpbmcgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwotI2VuZGlm
Ci0KLWNsYXNzIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlciA6
IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJCYXNlIHsKK2NsYXNzIFdFQkNP
UkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlciA6IHB1YmxpYyBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXI+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJik7CiAgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcigpOwogCi0g
ICAgLy8gR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQmFzZSBvdmVycmlkZXMuCisgICAg
Ly8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgb3ZlcnJpZGVzLgogICAgIFJlZlB0cjxHcmFwaGlj
c0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IGxheWVyQ29udGVudHNEaXNwbGF5RGVsZWdh
dGUoKSBmaW5hbDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21N
ZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZp
bmFsOwpAQCAtNTQsMjEgKzQ0LDE1IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgIFJlZlB0cjxWaWRlb0ZyYW1lPiBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9WaWRlb0Zy
YW1lKCkgZmluYWw7CiAjZW5kaWYKLSNpZiBVU0UoQU5HTEUpCi0gICAgdm9pZCBzZXRDb250ZXh0
VmlzaWJpbGl0eShib29sKSBmaW5hbDsKLSAgICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFj
a2luZygpIGZpbmFsOwotICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKLSNlbmRp
ZgogCiBwcml2YXRlOgotI2lmIFVTRShBTkdMRSkKLSAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6
ZUNvbnRleHQoKSBmaW5hbDsKLSNlbmRpZgotICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXplKCkg
ZmluYWw7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKworICAgIGJvb2wgcGxhdGZvcm1Jbml0aWFsaXpl
KCkgZmluYWw7CisKICAgICBSZWZQdHI8R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVn
YXRlPiBtX2xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU7CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSKSAmJiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggNjM3MGNmYmYzNDIyMjM5NTRl
NzcxOTQzZjBiNDA4ZjA1ZjA4ZWM5NS4uNWI2MjUxNWUyODJmODczN2EyNTJiZmM5YmI2MDYzMWI3
ZWU5NGMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCkBAIC0yNSw5ICsyNSw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmgiCiAKLSNpZiBFTkFCTEUo
V0VCR0wpICYmIFVTRShBTkdMRSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIEVOQUJMRShX
RUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoQU5HTEUpCiAKICNpbmNsdWRlICJB
TkdMRUhlYWRlcnMuaCIKICNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgpAQCAtNTQsNyArNTQs
MTE4IEBAIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEUoR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpCiB7CiB9CiAKLWJvb2wgR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemVDb250ZXh0KCkKK0dyYXBoaWNz
Q29udGV4dEdMQU5HTEU6On5HcmFwaGljc0NvbnRleHRHTEFOR0xFKCkKK3sKKyAgICBib29sIHN1
Y2Nlc3MgPSBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3Ms
IHN1Y2Nlc3MpOworICAgIGlmIChtX3RleHR1cmUpCisgICAgICAgIEdMX0RlbGV0ZVRleHR1cmVz
KDEsICZtX3RleHR1cmUpOworICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQorICAgICAgICBH
TF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisKKyAgICBhdXRvIGF0
dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOworCisgICAgaWYgKGF0dHJpYnV0ZXMuYW50
aWFsaWFzKSB7CisgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVDb2xvckJ1ZmZlcik7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmli
dXRlcy5kZXB0aCkKKyAgICAgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBHTF9EZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpIHsKKyAgICAgICAgaWYgKG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKQorICAgICAgICAgICAgR0xfRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOworICAgIH0KKyAgICBHTF9EZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgR0xfRGVsZXRlVGV4dHVyZXMoMSwg
Jm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CisjZW5kaWYKK30KKworR0NHTERpc3BsYXkgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kaXNwbGF5T2JqOworfQorCitHQ0dMQ29uZmlnIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBs
YXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWdPYmo7Cit9CisKK2Jv
b2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICBp
ZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgPT0gbV9jb250ZXh0T2JqKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gRUdMX01ha2VDdXJyZW50KG1fZGlzcGxheU9iaiwgRUdMX05P
X1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBtX2NvbnRleHRPYmopOworfQorCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEU6OmNoZWNrR1BVU3RhdHVzKCkKK3sKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQor
CitzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFk
Q29tcG9zaXRlZFJlc3VsdHMoKQoreworICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygp
OworfQorCitSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZVdlYlByb2Nlc3NHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMp
Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpjcmVh
dGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIHsgYXR0cmlidXRlcyB9KTsKK30KKworUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFPiBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
IGF0dHJpYnV0ZXMpCit7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRShXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CisgICAg
aWYgKCFjb250ZXh0LT5pbml0aWFsaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBjb250ZXh0OworfQorCitHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUoR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKKyAgICA6IEdyYXBoaWNzQ29udGV4dEdMQU5HTEUoV1RG
TW92ZShhdHRyaWJ1dGVzKSkKK3sKK30KKworR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEU6On5HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRSgpCit7CisgICAgYm9v
bCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKKworICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKQorICAgICAgICBH
TF9EZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmUpCisgICAgICAg
IEdMX0RlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOworI2VuZGlmCit9
CisKK1JlZlB0cjxHcmFwaGljc0xheWVyQ29udGVudHNEaXNwbGF5RGVsZWdhdGU+IEdyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpsYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
KCkKK3sKKyAgICByZXR1cm4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlOworfQorCisj
aWYgRU5BQkxFKFZJREVPKQorYm9vbCBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdM
RTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGNvcHktZnJlZSAob3IgYXQgbGVhc3QsIHNv
ZnR3YXJlIGNvcHktZnJlZSkgdGV4dHVyZSB0cmFuc2ZlciB2aWEgZG1hYnVmLgorICAgIHJldHVy
biBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK1JlZlB0cjxW
aWRlb0ZyYW1lPiBHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGFpbnRDb21w
b3NpdGVkUmVzdWx0c1RvVmlkZW9GcmFtZSgpCit7CisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBp
ZiAoYXV0byBwaXhlbEJ1ZmZlciA9IHJlYWRDb21wb3NpdGVkUmVzdWx0cygpKQorICAgICAgICBy
ZXR1cm4gVmlkZW9GcmFtZUdTdHJlYW1lcjo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKFdURk1vdmUo
KnBpeGVsQnVmZmVyKSk7CisjZW5kaWYKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbmRpZgor
Citib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRp
YWxpemVDb250ZXh0KCkKIHsKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAjaWYgRU5BQkxFKFdFQkdMMikKQEAgLTE1Nyw3
ICsyNjgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1J
bml0aWFsaXplQ29udGV4dCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKIHsKICNp
ZiBVU0UoTklDT1NJQSkKICAgICBtX25pY29zaWFMYXllciA9IG1ha2VVbmlxdWU8Tmljb3NpYTo6
R0NHTEFOR0xFTGF5ZXI+KCp0aGlzKTsKQEAgLTIzNiw2ICszNDcsNjMgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQogCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpzZXRDb250ZXh0VmlzaWJpbGl0
eShib29sKQoreworfQorCitib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xF
OjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOworICAgIGNvbnN0IGF1dG8gc2l6ZSA9IGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCk7CisgICAgY29uc3QgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGNv
bnN0IGludCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOworICAgIEdMdWludCBjb2xvckZvcm1hdCA9
IGF0dHJzLmFscGhhID8gR0xfUkdCQSA6IEdMX1JHQjsKKyAgICBHTGVudW0gdGV4dHVyZVRhcmdl
dCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgR0x1aW50IGludGVybmFsQ29s
b3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBjb2xvckZvcm1hdCA6
IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
KyAgICBpZiAobV90ZXh0dXJlQmFja2luZykKKyAgICAgICAgbV90ZXh0dXJlQmFja2luZy0+cmVz
ZXQod2lkdGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0
dXJlQmFja2luZykKKyAgICAgICAgbV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmctPnJlc2V0KHdp
ZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKKyAgICBpZiAobV9pbnRlcm1lZGlhdGVUZXh0dXJl
QmFja2luZykKKyAgICAgICAgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+cmVzZXQod2lk
dGgsIGhlaWdodCwgYXR0cnMuYWxwaGEpOworI2VuZGlmCisKKyAgICBTY29wZWRSZXN0b3JlVGV4
dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVy
eUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVU
YXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisgICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsKKyAgICAgICAgR0xfQmluZFRl
eHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIGlmICht
X2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZyAmJiBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSkKKyAgICAgICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1
cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5h
bENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgMCk7CisgICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGlmIChtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5n
ICYmIG1faW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCisgICAgICAgICAgICBH
TF9FR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0
ZVRleHR1cmVCYWNraW5nLT5pbWFnZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgR0xf
VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgfQorICAg
IEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisgICAgaWYgKG1fdGV4
dHVyZUJhY2tpbmcgJiYgbV90ZXh0dXJlQmFja2luZy0+aW1hZ2UoKSkKKyAgICAgICAgR0xfRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSk7CisgICAgZWxzZQorICAgICAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKyNlbHNlCisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgR0xfVGV4SW1hZ2UyRCh0ZXh0dXJlVGFy
Z2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgR0xfQmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgbV90ZXh0dXJlKTsKKyAgICBHTF9UZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVy
bmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKKyNlbmRpZgorICAgIEdMX0ZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlLCAw
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFOjpwcmVwYXJlRm9yRGlzcGxheSgpCit7Cit9CisKICNpZiBVU0UoTklDT1NJ
QSkKIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OkVHTEltYWdlQmFja2luZzo6RUdMSW1hZ2VCYWNr
aW5nKEdDR0xEaXNwbGF5IGRpc3BsYXkpCiAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKQEAgLTMx
NSwxMTkgKzQ4Myw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6RUdMSW1hZ2VCYWNr
aW5nOjpyZXNldChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wKIH0KICNlbmRpZgogCi1HcmFw
aGljc0NvbnRleHRHTEFOR0xFOjp+R3JhcGhpY3NDb250ZXh0R0xBTkdMRSgpCi17Ci0gICAgYm9v
bCBzdWNjZXNzID0gbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLSAgICBpZiAobV90ZXh0dXJlKQotICAgICAgICBHTF9EZWxldGVUZXh0
dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkKLSAgICAg
ICAgR0xfRGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotCi0gICAgYXV0
byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLQotICAgIGlmIChhdHRyaWJ1dGVz
LmFudGlhbGlhcykgewotICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0
dHJpYnV0ZXMuZGVwdGgpCi0gICAgICAgICAgICBHTF9EZWxldGVSZW5kZXJidWZmZXJzKDEsICZt
X211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgR0xfRGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZXMu
c3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSB7Ci0gICAgICAgIGlmIChtX2RlcHRoU3RlbmNp
bEJ1ZmZlcikKLSAgICAgICAgICAgIEdMX0RlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKLSAgICB9Ci0gICAgR0xfRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zi
byk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIEdMX0RlbGV0ZVRleHR1cmVz
KDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotI2VuZGlmCi19Ci0KLUdDR0xEaXNwbGF5IEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fZGlzcGxheU9iajsKLX0KLQotR0NHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29uZmlnT2JqOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6Om1ha2VDb250ZXh0Q3VycmVudCgpCi17Ci0g
ICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4dE9iaikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXlPYmosIEVH
TF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgbV9jb250ZXh0T2JqKTsKLX0KLQotdm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjpjaGVja0dQVVN0YXR1cygpCi17Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyOjpzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKQot
ewotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlcjo6cHJlcGFyZUZvckRpc3BsYXkoKQotewotfQotCi1ib29sIEdyYXBoaWNzQ29u
dGV4dEdMVGV4dHVyZU1hcHBlcjo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKLXsKLSAg
ICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICBjb25zdCBhdXRvIHNpemUg
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOwotICAgIGNvbnN0IGludCB3aWR0aCA9IHNp
emUud2lkdGgoKTsKLSAgICBjb25zdCBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKLSAgICBH
THVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7Ci0gICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAg
IEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJF
XzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0KLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fdGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1f
dGV4dHVyZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSAgICBp
ZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1fY29tcG9zaXRvclRleHR1
cmVCYWNraW5nLT5yZXNldCh3aWR0aCwgaGVpZ2h0LCBhdHRycy5hbHBoYSk7Ci0gICAgaWYgKG1f
aW50ZXJtZWRpYXRlVGV4dHVyZUJhY2tpbmcpCi0gICAgICAgIG1faW50ZXJtZWRpYXRlVGV4dHVy
ZUJhY2tpbmctPnJlc2V0KHdpZHRoLCBoZWlnaHQsIGF0dHJzLmFscGhhKTsKLSNlbmRpZgotCi0g
ICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0
dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7Ci0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7
Ci0gICAgICAgIEdMX0JpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1
cmUpOwotICAgICAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZUJhY2tpbmcgJiYgbV9jb21wb3Np
dG9yVGV4dHVyZUJhY2tpbmctPmltYWdlKCkpCi0gICAgICAgICAgICBHTF9FR0xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlQmFja2luZy0+
aW1hZ2UoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVy
ZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JG
b3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBpZiAobV9pbnRlcm1l
ZGlhdGVUZXh0dXJlQmFja2luZyAmJiBtX2ludGVybWVkaWF0ZVRleHR1cmVCYWNraW5nLT5pbWFn
ZSgpKQotICAgICAgICAgICAgR0xfRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVModGV4dHVyZVRh
cmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlQmFja2luZy0+aW1hZ2UoKSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIEdMX1RleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxD
b2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOwotICAgIH0KLSAgICBHTF9CaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1
cmUpOwotICAgIGlmIChtX3RleHR1cmVCYWNraW5nICYmIG1fdGV4dHVyZUJhY2tpbmctPmltYWdl
KCkpCi0gICAgICAgIEdMX0VHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRleHR1cmVUYXJnZXQs
IG1fdGV4dHVyZUJhY2tpbmctPmltYWdlKCkpOwotICAgIGVsc2UKLSAgICAgICAgR0xfVGV4SW1h
Z2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0jZWxzZQotICAgIEdMX0Jp
bmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOwotICAgIEdMX1Rl
eEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIEdMX0JpbmRU
ZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgR0xfVGV4SW1hZ2UyRCh0ZXh0
dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xv
ckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0jZW5kaWYKLSAgICBHTF9GcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVU
YXJnZXQsIG1fdGV4dHVyZSwgMCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFw
aGljc0NvbnRleHRHTEFOR0xFOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQotewot
fQotCi1zdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQotewotICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwotfQotCi19Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRF
WFRVUkVfTUFQUEVSKSAmJiBVU0UoQU5HTEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjZWVjYzk3MGUxZGMwY2Y4
Y2E1MTE1MzIwZTdjZmY0YTc3OWM1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JU
IEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFIDogcHVibGljIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyQU5HTEU+IGNyZWF0ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJik7CisgICAgfkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFKCk7
CisKKyAgICAvLyBHcmFwaGljc0NvbnRleHRHTEFOR0xFIG92ZXJyaWRlcy4KKyAgICBSZWZQdHI8
R3JhcGhpY3NMYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRlPiBsYXllckNvbnRlbnRzRGlzcGxh
eURlbGVnYXRlKCkgZmluYWw7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJvb2wgY29weVRleHR1
cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKSBmaW5hbDsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgUmVmUHRy
PFZpZGVvRnJhbWU+IHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb1ZpZGVvRnJhbWUoKSBmaW5hbDsK
KyNlbmRpZgorCisgICAgdm9pZCBzZXRDb250ZXh0VmlzaWJpbGl0eShib29sKSBmaW5hbDsKKyAg
ICBib29sIHJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpIGZpbmFsOworICAgIHZvaWQgcHJl
cGFyZUZvckRpc3BsYXkoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
Jik7CisKKyAgICBib29sIHBsYXRmb3JtSW5pdGlhbGl6ZUNvbnRleHQoKSBmaW5hbDsKKyAgICBi
b29sIHBsYXRmb3JtSW5pdGlhbGl6ZSgpIGZpbmFsOworCisgICAgUmVmUHRyPEdyYXBoaWNzTGF5
ZXJDb250ZW50c0Rpc3BsYXlEZWxlZ2F0ZT4gbV9sYXllckNvbnRlbnRzRGlzcGxheURlbGVnYXRl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdM
KSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShBTkdMRSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>