<?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>182465</bug_id>
          
          <creation_ts>2018-02-04 01:20:42 -0800</creation_ts>
          <short_desc>[Cairo] Split TexMap functionality out of GraphicsContext3DCairo</short_desc>
          <delta_ts>2018-02-04 23:34:34 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1396178</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-04 01:20:42 -0800</bug_when>
    <thetext>[Cairo] Split TexMap functionality out of GraphicsContext3DCairo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396179</commentid>
    <comment_count>1</comment_count>
      <attachid>333048</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-04 01:32:38 -0800</bug_when>
    <thetext>Created attachment 333048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396180</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-04 01:34:48 -0800</bug_when>
    <thetext>Attachment 333048 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:259:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396224</commentid>
    <comment_count>3</comment_count>
      <attachid>333048</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-04 23:33:46 -0800</bug_when>
    <thetext>Comment on attachment 333048
Patch

Clearing flags on attachment: 333048

Committed r228084: &lt;https://trac.webkit.org/changeset/228084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396225</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-02-04 23:33:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396226</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-04 23:34:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/37226210&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333048</attachid>
            <date>2018-02-04 01:32:38 -0800</date>
            <delta_ts>2018-02-04 23:33:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182465-20180204103237.patch</filename>
            <type>text/plain</type>
            <size>28973</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNiN2EyODY1MzczZWM0
MjAxZmM0M2Q2MTM2ZjEzYWNkZjcyZjk4My4uMTY5YWQwMGM4YzFhYTNjZGFmYjllZDVhMmZmYjEz
YjJiZjAzMzk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDE4LTAyLTA0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbQ2Fpcm9dIFNwbGl0
IFRleE1hcCBmdW5jdGlvbmFsaXR5IG91dCBvZiBHcmFwaGljc0NvbnRleHQzRENhaXJvCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI0NjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUYWtlIHRoZSBOb24t
Q2Fpcm8gR3JhcGhpY3NDb250ZXh0M0QgZnVuY3Rpb25hbGl0eSB0aGF0J3Mgc3Rhc2hlZCBpbgor
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRENhaXJvIGFuZCBtb3ZlIGl0IGludG8gdGhlIEdyYXBo
aWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlcgorICAgICAgICBmaWxlLgorCisgICAgICAgIEluIEdy
YXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwLCBvbmx5IHRoZSBDYWlyby1zcGVjaWZpYyBHcmFwaGlj
c0NvbnRleHQzRAorICAgICAgICBmdW5jdGlvbmFsaXR5IHJlbWFpbnMsIHNwZWNpZmljYWxseSBJ
bWFnZUV4dHJhY3RvciBhbmQgcGFpbnRUb0NhbnZhcygpLgorCisgICAgICAgIEV2ZXJ5dGhpbmcg
ZWxzZSBpcyBtb3ZlZCBpbnRvIEdyYXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAuIFRo
aXMKKyAgICAgICAgZmlsZW5hbWUgYW5kIGl0cyBsb2NhdGlvbiB1bmRlciBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvIHdhcyBjaG9zZW4KKyAgICAgICAgc2luY2UgYWxsIHRoZSBwb3J0cyB1c2lu
ZyB0aGlzIGZpbGUgKEdUSywgV1BFLCBXaW5DYWlybykgYXJlIGFsc28gdXNpbmcKKyAgICAgICAg
dGhlIFRleHR1cmVNYXBwZXIgbW9kdWxlLiBWYXJpb3VzICNpZi1ndWFyZHMgYXJlIHNpbXBsaWZp
ZWQgaW4gdGhlCisgICAgICAgIG1vdmVkLW92ZXIgY29kZSB0byByZWZsZWN0IHRoaXMuCisKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgbm93IGJldHRlciByZWZsZWN0cyBHcmFw
aGljc0NvbnRleHQzRENHLmNwcCwKKyAgICAgICAgd2l0aCBib3RoIGltcGxlbWVudGluZyBmdW5j
dGlvbmFsaXR5IHNwZWNpZmljIHRvIGEgMkQgcGFpbnRpbmcgbGlicmFyeSwKKyAgICAgICAgd2hl
cmVhcyBHcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIuY3BwIHJlZmxlY3RzCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEQ29jb2EuY3BwIGluIGNvdmVyaW5nIGZ1bmN0aW9uYWxpdHkgbmVl
ZGVkIHRvIGludGVncmF0ZQorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0M0Qgb3V0cHV0IGlu
dG8gdGhlIHBsYXRmb3JtLXNwZWNpZmljIGNvbXBvc2l0aW9uCisgICAgICAgIHN5c3RlbS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFjdGl2ZUNvbnRleHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjptYWtlQ29udGV4dEN1cnJlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xF
UzJDb21wbGlhbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHQzRFRleHR1cmVNYXBwZXIu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2ZUNvbnRl
eHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2Fn
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29u
dGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNr
R1BVU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpwbGF0Zm9ybVRleHR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorCisyMDE4LTAyLTA0ICBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBTaW1wbGlmeSBHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcygpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODI0NTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1
cmVNYXBwZXIuY21ha2UKaW5kZXggNWY2YjdmMzRjZTg1ZTFlNjJkMjFlMmMzZWJmYmFkNzQ2OGI3
NTJlNi4uMjQyZDQzMDQzNTRlMjE3NmI2OWJjYTU5MzhhOGUzNDc2NWE0ZTIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC00LDYgKzQsNyBAQCBs
aXN0KEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVy
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAppbmRleCAxZGI3OWZhMDdlZjMzNGZiYmI3
ZDIxNjQ2ZGFmMzZiMmVkOWE3MGRmLi5jYThlNGY4YmY5MWVhNmFiNTM0YjZkZWRkOGFkNmRmNWFh
NDYyM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtMjYsMjU5ICsy
NiwyMCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShDQUlSTykKLQot
I2lmIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAKKyNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYgVVNFKENBSVJPKQor
CiAjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRD
YWlyby5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJvLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KLSNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQot
I2lmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxHTFNMQU5HL1NoYWRlckxhbmcuaD4KLSNlbHNl
Ci0jaW5jbHVkZSA8QU5HTEUvU2hhZGVyTGFuZy5oPgotI2VuZGlmCi0KLSNpZiBVU0UoTElCRVBP
WFkpCi0jaW5jbHVkZSA8ZXBveHkvZ2wuaD4KLSNlbGlmICFVU0UoT1BFTkdMX0VTXzIpCi0jaW5j
bHVkZSAiT3BlbkdMU2hpbXMuaCIKLSNlbmRpZgotCi0jaWYgVVNFKE9QRU5HTF9FU18yKQotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTEVTLmgiCi0jZWxzZQotI2luY2x1ZGUgIkV4dGVuc2lv
bnMzRE9wZW5HTC5oIgotI2VuZGlmCi0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgiCi0jZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IE1heEFjdGl2ZUNvbnRleHRzID0gMTY7
Ci1zdGF0aWMgRGVxdWU8R3JhcGhpY3NDb250ZXh0M0QqLCBNYXhBY3RpdmVDb250ZXh0cz4mIGFj
dGl2ZUNvbnRleHRzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGVxdWU8R3JhcGhp
Y3NDb250ZXh0M0QqLCBNYXhBY3RpdmVDb250ZXh0cz4+IHNfYWN0aXZlQ29udGV4dHM7Ci0gICAg
cmV0dXJuIHNfYWN0aXZlQ29udGV4dHM7Ci19Ci0KLVJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4g
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlIHJlbmRlclN0eWxlKQotewotICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24n
dCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cu
Ci0gICAgaWYgKHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFs
c2U7Ci0gICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgaWYgKCFpbml0aWFsaXpl
ZCkgewotI2lmICFVU0UoT1BFTkdMX0VTXzIpICYmICFVU0UoTElCRVBPWFkpCi0gICAgICAgIHN1
Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKLSNlbmRpZgotICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgfQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBhdXRvJiBjb250ZXh0cyA9IGFjdGl2ZUNvbnRleHRzKCk7Ci0gICAgaWYg
KGNvbnRleHRzLnNpemUoKSA+PSBNYXhBY3RpdmVDb250ZXh0cykKLSAgICAgICAgY29udGV4dHMu
Zmlyc3QoKS0+cmVjeWNsZUNvbnRleHQoKTsKLQotICAgIC8vIENhbGxpbmcgcmVjeWNsZUNvbnRl
eHQoKSBhYm92ZSBzaG91bGQgaGF2ZSBsZWFkIHRvIHRoZSBncmFwaGljcyBjb250ZXh0IGJlaW5n
Ci0gICAgLy8gZGVzdHJveWVkIGFuZCB0aHVzIHJlbW92ZWQgZnJvbSB0aGUgYWN0aXZlIGNvbnRl
eHRzIGxpc3QuCi0gICAgaWYgKGNvbnRleHRzLnNpemUoKSA+PSBNYXhBY3RpdmVDb250ZXh0cykK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEdyYXBoaWNzQ29u
dGV4dDNEIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3RhYmxpc3QgYSBjdXJyZW50IGNvbnRl
eHQgb24gdGhpcyB0aHJlYWQuCi0gICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYobmV3IEdyYXBo
aWNzQ29udGV4dDNEKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3csIHJlbmRlclN0eWxlKSk7Ci0KLSNp
ZiBVU0UoTElCRVBPWFkpICYmIFVTRShPUEVOR0xfRVNfMikKLSAgICAvLyBCYWlsIGlmIEdMRVMz
IHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRlZC4KLSAgICBpZiAoYXR0cmlidXRl
cy51c2VHTEVTMyAmJiAhZXBveHlfaXNfZGVza3RvcF9nbCgpICYmIGVwb3h5X2dsX3ZlcnNpb24o
KSA8IDMwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCi0gICAgY29udGV4dHMu
YXBwZW5kKGNvbnRleHQuZ2V0KCkpOwotICAgIHJldHVybiBjb250ZXh0OwotfQotCi1HcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUg
cmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFyZWRDb250ZXh0KQotICAgIDogbV9h
dHRycyhhdHRyaWJ1dGVzKQotewotICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNo
YXJlZENvbnRleHQpOwotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICBtX3RleG1hcExheWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlz
LCByZW5kZXJTdHlsZSk7Ci0jZWxzZQotICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSk7Ci0jZW5kaWYKLQot
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7Ci0K
LSAgICBpZiAocmVuZGVyU3R5bGUgPT0gUmVuZGVyT2Zmc2NyZWVuKSB7Ci0gICAgICAgIC8vIENy
ZWF0ZSBhIHRleHR1cmUgdG8gcmVuZGVyIGludG8uCi0gICAgICAgIDo6Z2xHZW5UZXh0dXJlcygx
LCAmbV90ZXh0dXJlKTsKLSAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1f
dGV4dHVyZSk7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFtZXRlcmYo
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAg
ICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xf
Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgOjpnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotCi0gICAgICAgIC8vIENyZWF0ZSBhbiBGQk8uCi0g
ICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKLSAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOwotCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQotICAgICAgICA6OmdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9z
aXRvclRleHR1cmUpOwotICAgICAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9j
b21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLQotICAgICAg
ICA6OmdsR2VuVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIDo6
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAg
ICAgICA6OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0Up
OwotICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KLSAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIDApOwotI2VuZGlmCi0KLQotICAgICAgICAvLyBDcmVhdGUgYSBtdWx0aXNhbXBs
ZSBGQk8uCi0gICAgICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICAgICAgOjpn
bEdlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAg
ICAgICAgIG1fc3RhdGUuYm91bmRGQk8gPSBtX211bHRpc2FtcGxlRkJPOwotICAgICAgICAgICAg
OjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAg
ICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAg
ICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxC
dWZmZXIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQmluZCBjYW52YXMgRkJP
LgotICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX2Zibyk7Ci0gICAgICAgICAgICBtX3N0YXRlLmJvdW5kRkJPID0gbV9mYm87Ci0j
aWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAg
ICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVyKTsKLSAgICAg
ICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICAgICAgZ2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtX3N0ZW5jaWxCdWZmZXIpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAobV9h
dHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgZ2xHZW5SZW5k
ZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAgIDo6Z2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1f
UE9JTlRfU0laRSk7Ci0KLSAgICBpZiAoR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+
PSAzMjApIHsKLSAgICAgICAgbV91c2luZ0NvcmVQcm9maWxlID0gdHJ1ZTsKLQotICAgICAgICAv
LyBGcm9tIHZlcnNpb24gMy4yIG9uIHdlIHVzZSB0aGUgT3BlbkdMIENvcmUgcHJvZmlsZSwgc28g
cmVxdWVzdCB0aGF0IG91cHV0IHRvIHRoZSBzaGFkZXIgY29tcGlsZXIuCi0gICAgICAgIC8vIE9w
ZW5HTCB2ZXJzaW9uIDMuMiB1c2VzIEdMU0wgdmVyc2lvbiAxLjUwLgotICAgICAgICBtX2NvbXBp
bGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQpOwotCi0gICAg
ICAgIC8vIEZyb20gdmVyc2lvbiAzLjIgb24gd2UgdXNlIHRoZSBPcGVuR0wgQ29yZSBwcm9maWxl
LCBhbmQgd2UgbmVlZCBhIFZBTyBmb3IgcmVuZGVyaW5nLgotICAgICAgICAvLyBBIFZBTyBjb3Vs
ZCBiZSBjcmVhdGVkIGFuZCBib3VuZCBieSBlYWNoIGNvbXBvbmVudCB1c2luZyBHTCByZW5kZXJp
bmcgKFRleHR1cmVNYXBwZXIsIFdlYkdMLCBldGMpLiBUaGlzIGlzCi0gICAgICAgIC8vIGEgc2lt
cGxlciBzb2x1dGlvbjogdGhlIGZpcnN0IEdyYXBoaWNzQ29udGV4dDNEIGNyZWF0ZWQgb24gYSBH
TENvbnRleHQgd2lsbCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8gZm9yIHRoYXQgY29udGV4dC4KLSAg
ICAgICAgR0MzRGludCBjdXJyZW50VkFPID0gMDsKLSAgICAgICAgZ2V0SW50ZWdlcnYoR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9BUlJBWV9CSU5ESU5HLCAmY3VycmVudFZBTyk7Ci0gICAgICAg
IGlmICghY3VycmVudFZBTykgewotICAgICAgICAgICAgbV92YW8gPSBjcmVhdGVWZXJ0ZXhBcnJh
eSgpOwotICAgICAgICAgICAgYmluZFZlcnRleEFycmF5KG1fdmFvKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIEZvciBsb3dlciB2ZXJzaW9ucyByZXF1ZXN0IHRoZSBjb21w
YXRpYmlsaXR5IG91dHB1dCB0byB0aGUgc2hhZGVyIGNvbXBpbGVyLgotICAgICAgICBtX2NvbXBp
bGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCk7Ci0K
LSAgICAgICAgLy8gR0xfUE9JTlRfU1BSSVRFIGlzIG5lZWRlZCBpbiBsb3dlciB2ZXJzaW9ucy4K
LSAgICAgICAgOjpnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwotICAgIH0KLSNlbHNlCi0gICAg
Ly8gQWRqdXN0IHRoZSBzaGFkZXIgc3BlY2lmaWNhdGlvbiBkZXBlbmRpbmcgb24gd2hldGhlciBH
TEVTMyAoaS5lLiBXZWJHTDIgc3VwcG9ydCkgd2FzIHJlcXVlc3RlZC4KLSAgICBtX2NvbXBpbGVy
ID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfRVNTTF9PVVRQVVQsIG1fYXR0cnMudXNlR0xFUzMgPyBT
SF9XRUJHTDJfU1BFQyA6IFNIX1dFQkdMX1NQRUMpOwotI2VuZGlmCi0KLSAgICAvLyBBTkdMRSBp
bml0aWFsaXphdGlvbi4KLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7Ci0g
ICAgc2g6OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7Ci0KLSAgICBnZXRJ
bnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRSSUJTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4QXR0cmlicyk7Ci0gICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4
VW5pZm9ybVZlY3RvcnMpOwotICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhf
VkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMpOwotICAg
IGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0Vf
VU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAg
Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdF
X1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0g
ICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
LCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIGdldEludGVnZXJ2
KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVS
ZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7Ci0KLSAgICAvLyBBbHdheXMgc2V0
IHRvIDEgZm9yIE9wZW5HTCBFUy4KLSAgICBBTkdMRVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9
IDE7Ci0KLSAgICBHQzNEaW50IHJhbmdlWzJdLCBwcmVjaXNpb247Ci0gICAgZ2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpISUdIX0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7Ci0gICAgQU5HTEVSZXNv
dXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8IHJhbmdlWzFdIHx8IHBy
ZWNpc2lvbik7Ci0KLSAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7
Ci0KLSAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLX0KLQotR3JhcGhpY3NDb250ZXh0
M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCi17Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgaWYgKG1fdGV4dHVyZSkKLSAgICAgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1
cmUpOwotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICBpZiAobV9j
b21wb3NpdG9yVGV4dHVyZSkKLSAgICAgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX2NvbXBv
c2l0b3JUZXh0dXJlKTsKLSNlbmRpZgotCi0gICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0g
ICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlQ29sb3JCdWZm
ZXIpOwotICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCi0gICAg
ICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZURlcHRoU3Rl
bmNpbEJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fbXVsdGlz
YW1wbGVGQk8pOwotICAgIH0gZWxzZSBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVw
dGgpIHsKLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0gICAgICAgIGlmIChtX2RlcHRoQnVmZmVyKQot
ICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVyKTsKLQot
ICAgICAgICBpZiAobV9zdGVuY2lsQnVmZmVyKQotICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKDEsICZtX3N0ZW5jaWxCdWZmZXIpOwotI2VuZGlmCi0gICAgICAgIGlmIChtX2RlcHRo
U3RlbmNpbEJ1ZmZlcikKLSAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZt
X2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgfQotICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZlcnMo
MSwgJm1fZmJvKTsKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAg
OjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotI2VuZGlmCi0K
LSAgICBpZiAobV92YW8pCi0gICAgICAgIGRlbGV0ZVZlcnRleEFycmF5KG1fdmFvKTsKLQotICAg
IGF1dG8qIGFjdGl2ZUNvbnRleHQgPSBhY3RpdmVDb250ZXh0cygpLnRha2VMYXN0KFt0aGlzXShh
dXRvKiBpdCkgeyByZXR1cm4gaXQgPT0gdGhpczsgfSk7Ci0gICAgQVNTRVJUX1VOVVNFRChhY3Rp
dmVDb250ZXh0LCAhIWFjdGl2ZUNvbnRleHQpOwotfQotCi1HcmFwaGljc0NvbnRleHQzRDo6SW1h
Z2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpCi17Ci19CitHcmFwaGljc0NvbnRleHQzRDo6
SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpID0gZGVmYXVsdDsKIAogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpCiB7CkBAIC0zNzQsODAg
KzEzNSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEluCiAgICAgcGxhdGZvcm1Db250ZXh0LT5y
ZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2Fs
bGJhY2soc3RkOjp1bmlxdWVfcHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+KQotewotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6OnVuaXF1ZV9w
dHI8RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KQotewotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNE
OjptYWtlQ29udGV4dEN1cnJlbnQoKQotewotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICBp
ZiAobV90ZXhtYXBMYXllcikKLSAgICAgICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXItPm1ha2VDb250
ZXh0Q3VycmVudCgpOwotI2Vsc2UKLSAgICBpZiAobV9wcml2YXRlKQotICAgICAgICByZXR1cm4g
bV9wcml2YXRlLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNlbmRpZgotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXMoKQotewotfQot
Ci1QbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEKCkKLXsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgcmV0dXJu
IG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29udGV4dCgpOwotI2Vsc2UKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5wbGF0Zm9ybUNvbnRleHQoKTsKLSNlbmRpZgotfQotCi1QbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3RleHR1cmU7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdAotewotI2lmIFVTRShPUEVOR0xfRVNfMikKLSAgICByZXR1cm4gdHJ1ZTsKLSNl
bHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLVBsYXRmb3JtTGF5ZXIqIEdyYXBo
aWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCi0gICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXIuZ2V0KCk7Ci0jZWxzZQotICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQotI2lmIFBMQVRGT1JNKEdUSykKLUV4dGVu
c2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQotewotICAgIGlmICgh
bV9leHRlbnNpb25zKSB7Ci0jaWYgVVNFKE9QRU5HTF9FU18yKQotICAgICAgICAvLyBnbEdldFN0
cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KLSAgICAgICAgbV9leHRlbnNpb25zID0g
c3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgIGZhbHNlKTsKLSNl
bHNlCi0gICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhlIENvcmUgcHJvZmls
ZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KLSAgICAgICAgbV9leHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIEdMQ29udGV4
dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1
cm4gKm1fZXh0ZW5zaW9uczsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkKLQotI2VuZGlmIC8vIFVTRShD
QUlSTykKKyNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYgVVNFKENBSVJP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0M0RUZXh0dXJlTWFwcGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZjEwN2Y2Nzg1ODQyYzFkMmI5ZjdlZTk5YjQxYTUzY2FhODQwNzUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzQ29udGV4dDNEVGV4dHVyZU1hcHBlci5jcHAKQEAgLTAsMCArMSwzMjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgorCisjaWYgRU5BQkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpICYmIFVTRShURVhU
VVJFX01BUFBFUikKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZPUk0o
V0lOKQorI2luY2x1ZGUgPEdMU0xBTkcvU2hhZGVyTGFuZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxB
TkdMRS9TaGFkZXJMYW5nLmg+CisjZW5kaWYKKworI2lmIFVTRShMSUJFUE9YWSkKKyNpbmNsdWRl
IDxlcG94eS9nbC5oPgorI2VsaWYgIVVTRShPUEVOR0xfRVNfMikKKyNpbmNsdWRlICJPcGVuR0xT
aGltcy5oIgorI2VuZGlmCisKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisjaW5jbHVkZSAiRXh0ZW5z
aW9uczNET3BlbkdMRVMuaCIKKyNlbHNlCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgi
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3Qgc2l6ZV90IE1h
eEFjdGl2ZUNvbnRleHRzID0gMTY7CitzdGF0aWMgRGVxdWU8R3JhcGhpY3NDb250ZXh0M0QqLCBN
YXhBY3RpdmVDb250ZXh0cz4mIGFjdGl2ZUNvbnRleHRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RGVxdWU8R3JhcGhpY3NDb250ZXh0M0QqLCBNYXhBY3RpdmVDb250ZXh0cz4+IHNf
YWN0aXZlQ29udGV4dHM7CisgICAgcmV0dXJuIHNfYWN0aXZlQ29udGV4dHM7Cit9CisKK1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQoreworICAgIC8vIFRoaXMg
aW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0
bHkgdG8gdGhlIEhvc3RXaW5kb3cuCisgICAgaWYgKHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVj
dGx5VG9Ib3N0V2luZG93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBi
b29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7
CisgICAgaWYgKCFpbml0aWFsaXplZCkgeworI2lmICFVU0UoT1BFTkdMX0VTXzIpICYmICFVU0Uo
TElCRVBPWFkpCisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyNl
bmRpZgorICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorICAgIGlmICghc3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBjb250ZXh0cyA9IGFjdGl2
ZUNvbnRleHRzKCk7CisgICAgaWYgKGNvbnRleHRzLnNpemUoKSA+PSBNYXhBY3RpdmVDb250ZXh0
cykKKyAgICAgICAgY29udGV4dHMuZmlyc3QoKS0+cmVjeWNsZUNvbnRleHQoKTsKKworICAgIC8v
IENhbGxpbmcgcmVjeWNsZUNvbnRleHQoKSBhYm92ZSBzaG91bGQgaGF2ZSBsZWFkIHRvIHRoZSBn
cmFwaGljcyBjb250ZXh0IGJlaW5nCisgICAgLy8gZGVzdHJveWVkIGFuZCB0aHVzIHJlbW92ZWQg
ZnJvbSB0aGUgYWN0aXZlIGNvbnRleHRzIGxpc3QuCisgICAgaWYgKGNvbnRleHRzLnNpemUoKSA+
PSBNYXhBY3RpdmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBD
cmVhdGUgdGhlIEdyYXBoaWNzQ29udGV4dDNEIG9iamVjdCBmaXJzdCBpbiBvcmRlciB0byBlc3Rh
Ymxpc3QgYSBjdXJyZW50IGNvbnRleHQgb24gdGhpcyB0aHJlYWQuCisgICAgYXV0byBjb250ZXh0
ID0gYWRvcHRSZWYobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJpYnV0ZXMsIGhvc3RXaW5kb3cs
IHJlbmRlclN0eWxlKSk7CisKKyNpZiBVU0UoTElCRVBPWFkpICYmIFVTRShPUEVOR0xfRVNfMikK
KyAgICAvLyBCYWlsIGlmIEdMRVMzIHdhcyByZXF1ZXN0ZWQgYnV0IGNhbm5vdCBiZSBwcm92aWRl
ZC4KKyAgICBpZiAoYXR0cmlidXRlcy51c2VHTEVTMyAmJiAhZXBveHlfaXNfZGVza3RvcF9nbCgp
ICYmIGVwb3h5X2dsX3ZlcnNpb24oKSA8IDMwKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNl
bmRpZgorCisgICAgY29udGV4dHMuYXBwZW5kKGNvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBj
b250ZXh0OworfQorCitHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5kb3cqLCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUsIEdyYXBoaWNzQ29udGV4dDNEKiBzaGFy
ZWRDb250ZXh0KQorICAgIDogbV9hdHRycyhhdHRyaWJ1dGVzKQoreworICAgIEFTU0VSVF9VTlVT
RUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOworICAgIG1fdGV4bWFwTGF5ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJl
bmRlclN0eWxlKTsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgdmFsaWRhdGVB
dHRyaWJ1dGVzKCk7CisKKyAgICBpZiAocmVuZGVyU3R5bGUgPT0gUmVuZGVyT2Zmc2NyZWVuKSB7
CisgICAgICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgdG8gcmVuZGVyIGludG8uCisgICAgICAgIDo6
Z2xHZW5UZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKKyAgICAgICAgOjpnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJmKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgOjpn
bFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworCisgICAgICAgIC8vIENy
ZWF0ZSBhbiBGQk8uCisgICAgICAgIDo6Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pOworCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICAgICA6OmdsR2VuVGV4dHVy
ZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOworICAgICAgICA6OmdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIDo6Z2xUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAg
ICAgICAgOjpnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIDo6Z2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19F
REdFKTsKKworICAgICAgICA6OmdsR2VuVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVy
ZSk7CisgICAgICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2ludGVybWVkaWF0
ZVRleHR1cmUpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIDo6Z2xUZXhQYXJhbWV0ZXJm
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAg
ICAgOjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdM
X0NMQU1QX1RPX0VER0UpOworICAgICAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworI2VuZGlmCisKKworICAgICAgICAvLyBDcmVh
dGUgYSBtdWx0aXNhbXBsZSBGQk8uCisgICAgICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewor
ICAgICAgICAgICAgOjpnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9tdWx0aXNhbXBsZUZCTyk7Cisg
ICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX211bHRpc2Ft
cGxlRkJPKTsKKyAgICAgICAgICAgIG1fc3RhdGUuYm91bmRGQk8gPSBtX211bHRpc2FtcGxlRkJP
OworICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1wbGVDb2xv
ckJ1ZmZlcik7CisgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVw
dGgpCisgICAgICAgICAgICAgICAgOjpnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
QmluZCBjYW52YXMgRkJPLgorICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgICAgICAgICBtX3N0YXRlLmJvdW5k
RkJPID0gbV9mYm87CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAgICAgICAgaWYgKG1fYXR0
cnMuZGVwdGgpCisgICAgICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRo
QnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3N0ZW5jaWxCdWZmZXIpOworI2VuZGlmCisgICAg
ICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAg
ICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAg
ICAgIH0KKyAgICB9CisKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIDo6Z2xFbmFibGUoR0xf
VkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7CisKKyAgICBpZiAoR0xDb250ZXh0OjpjdXJyZW50
KCktPnZlcnNpb24oKSA+PSAzMjApIHsKKyAgICAgICAgbV91c2luZ0NvcmVQcm9maWxlID0gdHJ1
ZTsKKworICAgICAgICAvLyBGcm9tIHZlcnNpb24gMy4yIG9uIHdlIHVzZSB0aGUgT3BlbkdMIENv
cmUgcHJvZmlsZSwgc28gcmVxdWVzdCB0aGF0IG91cHV0IHRvIHRoZSBzaGFkZXIgY29tcGlsZXIu
CisgICAgICAgIC8vIE9wZW5HTCB2ZXJzaW9uIDMuMiB1c2VzIEdMU0wgdmVyc2lvbiAxLjUwLgor
ICAgICAgICBtX2NvbXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfR0xTTF8xNTBfQ09SRV9P
VVRQVVQpOworCisgICAgICAgIC8vIEZyb20gdmVyc2lvbiAzLjIgb24gd2UgdXNlIHRoZSBPcGVu
R0wgQ29yZSBwcm9maWxlLCBhbmQgd2UgbmVlZCBhIFZBTyBmb3IgcmVuZGVyaW5nLgorICAgICAg
ICAvLyBBIFZBTyBjb3VsZCBiZSBjcmVhdGVkIGFuZCBib3VuZCBieSBlYWNoIGNvbXBvbmVudCB1
c2luZyBHTCByZW5kZXJpbmcgKFRleHR1cmVNYXBwZXIsIFdlYkdMLCBldGMpLiBUaGlzIGlzCisg
ICAgICAgIC8vIGEgc2ltcGxlciBzb2x1dGlvbjogdGhlIGZpcnN0IEdyYXBoaWNzQ29udGV4dDNE
IGNyZWF0ZWQgb24gYSBHTENvbnRleHQgd2lsbCBjcmVhdGUgYW5kIGJpbmQgYSBWQU8gZm9yIHRo
YXQgY29udGV4dC4KKyAgICAgICAgR0MzRGludCBjdXJyZW50VkFPID0gMDsKKyAgICAgICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BUlJBWV9CSU5ESU5HLCAmY3VycmVu
dFZBTyk7CisgICAgICAgIGlmICghY3VycmVudFZBTykgeworICAgICAgICAgICAgbV92YW8gPSBj
cmVhdGVWZXJ0ZXhBcnJheSgpOworICAgICAgICAgICAgYmluZFZlcnRleEFycmF5KG1fdmFvKTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZvciBsb3dlciB2ZXJzaW9ucyBy
ZXF1ZXN0IHRoZSBjb21wYXRpYmlsaXR5IG91dHB1dCB0byB0aGUgc2hhZGVyIGNvbXBpbGVyLgor
ICAgICAgICBtX2NvbXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfR0xTTF9DT01QQVRJQklM
SVRZX09VVFBVVCk7CisKKyAgICAgICAgLy8gR0xfUE9JTlRfU1BSSVRFIGlzIG5lZWRlZCBpbiBs
b3dlciB2ZXJzaW9ucy4KKyAgICAgICAgOjpnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOworICAg
IH0KKyNlbHNlCisgICAgLy8gQWRqdXN0IHRoZSBzaGFkZXIgc3BlY2lmaWNhdGlvbiBkZXBlbmRp
bmcgb24gd2hldGhlciBHTEVTMyAoaS5lLiBXZWJHTDIgc3VwcG9ydCkgd2FzIHJlcXVlc3RlZC4K
KyAgICBtX2NvbXBpbGVyID0gQU5HTEVXZWJLaXRCcmlkZ2UoU0hfRVNTTF9PVVRQVVQsIG1fYXR0
cnMudXNlR0xFUzMgPyBTSF9XRUJHTDJfU1BFQyA6IFNIX1dFQkdMX1NQRUMpOworI2VuZGlmCisK
KyAgICAvLyBBTkdMRSBpbml0aWFsaXphdGlvbi4KKyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5H
TEVSZXNvdXJjZXM7CisgICAgc2g6OkluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNl
cyk7CisKKyAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRS
SUJTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyk7CisgICAgZ2V0SW50ZWdlcnYo
R3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOworICAgIGdldEludGVnZXJ2KEdyYXBoaWNz
Q29udGV4dDNEOjpNQVhfVkFSWUlOR19WRUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmFyeWlu
Z1ZlY3RvcnMpOworICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1h
Z2VVbml0cyk7CisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9DT01CSU5F
RF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJl
SW1hZ2VVbml0cyk7CisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhU
VVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdlVW5pdHMpOwor
ICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfRlJBR01FTlRfVU5JRk9STV9W
RUNUT1JTLCAmQU5HTEVSZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyk7CisKKyAg
ICAvLyBBbHdheXMgc2V0IHRvIDEgZm9yIE9wZW5HTCBFUy4KKyAgICBBTkdMRVJlc291cmNlcy5N
YXhEcmF3QnVmZmVycyA9IDE7CisKKyAgICBHQzNEaW50IHJhbmdlWzJdLCBwcmVjaXNpb247Cisg
ICAgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9T
SEFERVIsIEdyYXBoaWNzQ29udGV4dDNEOjpISUdIX0ZMT0FULCByYW5nZSwgJnByZWNpc2lvbik7
CisgICAgQU5HTEVSZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gKHJhbmdlWzBdIHx8
IHJhbmdlWzFdIHx8IHByZWNpc2lvbik7CisKKyAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhB
TkdMRVJlc291cmNlcyk7CisKKyAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKK30KKwor
R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCit7CisgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisgICAgaWYgKG1fdGV4dHVyZSkKKyAgICAgICAgOjpnbERlbGV0ZVRleHR1
cmVzKDEsICZtX3RleHR1cmUpOworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkKKyAgICAgICAgOjpnbERlbGV0ZVRleHR1
cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyNlbmRpZgorCisgICAgaWYgKG1fYXR0cnMu
YW50aWFsaWFzKSB7CisgICAgICAgIDo6Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0
cnMuZGVwdGgpCisgICAgICAgICAgICA6OmdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0
aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIDo6Z2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fbXVsdGlzYW1wbGVGQk8pOworICAgIH0gZWxzZSBpZiAobV9hdHRycy5zdGVuY2ls
IHx8IG1fYXR0cnMuZGVwdGgpIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIGlmICht
X2RlcHRoQnVmZmVyKQorICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2Rl
cHRoQnVmZmVyKTsKKworICAgICAgICBpZiAobV9zdGVuY2lsQnVmZmVyKQorICAgICAgICAgICAg
Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX3N0ZW5jaWxCdWZmZXIpOworI2VuZGlmCisgICAg
ICAgIGlmIChtX2RlcHRoU3RlbmNpbEJ1ZmZlcikKKyAgICAgICAgICAgIDo6Z2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgfQorICAgIDo6Z2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1
cmUpOworI2VuZGlmCisKKyAgICBpZiAobV92YW8pCisgICAgICAgIGRlbGV0ZVZlcnRleEFycmF5
KG1fdmFvKTsKKworICAgIGF1dG8qIGFjdGl2ZUNvbnRleHQgPSBhY3RpdmVDb250ZXh0cygpLnRh
a2VMYXN0KFt0aGlzXShhdXRvKiBpdCkgeyByZXR1cm4gaXQgPT0gdGhpczsgfSk7CisgICAgQVNT
RVJUX1VOVVNFRChhY3RpdmVDb250ZXh0LCAhIWFjdGl2ZUNvbnRleHQpOworfQorCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxD
b250ZXh0TG9zdENhbGxiYWNrPikKK3sKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0
RXJyb3JNZXNzYWdlQ2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEVycm9yTWVzc2FnZUNhbGxiYWNr
PikKK3sKK30KKworYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkK
K3sKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzKCkKK3sKK30KKworUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCgpCit7CisgICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29udGV4dCgp
OworfQorCitQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1
cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisKK2Jvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAoreworI2lmIFVTRShPUEVOR0xfRVNf
MikKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9
CisKK1BsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci5nZXQoKTsKK30KKworI2lmIFBMQVRGT1JN
KEdUSykKK0V4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQor
eworICAgIGlmICghbV9leHRlbnNpb25zKSB7CisjaWYgVVNFKE9QRU5HTF9FU18yKQorICAgICAg
ICAvLyBnbEdldFN0cmluZ2kgaXMgbm90IGF2YWlsYWJsZSBvbiBHTEVTMi4KKyAgICAgICAgbV9l
eHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywg
IGZhbHNlKTsKKyNlbHNlCisgICAgICAgIC8vIEZyb20gT3BlbkdMIDMuMiBvbiB3ZSB1c2UgdGhl
IENvcmUgcHJvZmlsZSwgYW5kIHRoZXJlIHdlIG11c3QgdXNlIGdsR2V0U3RyaW5naS4KKyAgICAg
ICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRo
aXMsIEdMQ29udGV4dDo6Y3VycmVudCgpLT52ZXJzaW9uKCkgPj0gMzIwKTsKKyNlbmRpZgorICAg
IH0KKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVYVF8zRCkgJiYgVVNF
KFRFWFRVUkVfTUFQUEVSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>