<?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>56712</bug_id>
          
          <creation_ts>2011-03-19 11:25:13 -0700</creation_ts>
          <short_desc>[Qt] Remove support for Qt 4.6</short_desc>
          <delta_ts>2011-05-04 12:59:48 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>benjamin</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>370144</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-19 11:25:13 -0700</bug_when>
    <thetext>As discussed on mailing list(s), we should remove support for Qt 4.6 from trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370145</commentid>
    <comment_count>1</comment_count>
      <attachid>86268</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-19 11:26:48 -0700</bug_when>
    <thetext>Created attachment 86268
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370149</commentid>
    <comment_count>2</comment_count>
      <attachid>86268</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-19 11:47:06 -0700</bug_when>
    <thetext>Comment on attachment 86268
Proposed patch

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

&gt; Source/WebCore/platform/graphics/qt/FontQt.cpp:180
&gt; +

Empty line? :)

&gt; Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:44
&gt;  #define SIGNAL_CONN Qt::DirectConnection

Why not replacing all the instance of SIGNAL_CONN by Qt::DirectConnection?

&gt; Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:382
&gt;              response.setHTTPHeaderField(QString::fromAscii(pair.first), QString::fromAscii(pair.second));

for a follow up: QString::fromAscii() should be QString::fromLatin1().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370150</commentid>
    <comment_count>3</comment_count>
      <attachid>86269</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-19 11:54:13 -0700</bug_when>
    <thetext>Created attachment 86269
Proposed patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370151</commentid>
    <comment_count>4</comment_count>
      <attachid>86269</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-19 12:03:05 -0700</bug_when>
    <thetext>Comment on attachment 86269
Proposed patch v2

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

R+ :)
Just update the code to match the coding style before landing.

&gt; Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:553
&gt;      if (m_resourceHandle-&gt;firstRequest().reportUploadProgress()) {
&gt; -        connect(m_reply, SIGNAL(uploadProgress(qint64, qint64)),
&gt; -                this, SLOT(uploadProgress(qint64, qint64)), SIGNAL_CONN);
&gt; +        connect(m_reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(uploadProgress(qint64, qint64)));
&gt;      }

Coding style, you don&apos;t need the brackets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370152</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-03-19 12:08:05 -0700</bug_when>
    <thetext>Committed r81553: &lt;http://trac.webkit.org/changeset/81553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371968</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-22 22:29:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/wiki/BuildingQtOnLinux needs update. It states that minimal Qt version is still 4.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372067</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-03-23 03:53:40 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; http://trac.webkit.org/wiki/BuildingQtOnLinux needs update. It states that minimal Qt version is still 4.6

Thanks for reporting the doc issue, I fixed the wiki.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86268</attachid>
            <date>2011-03-19 11:26:48 -0700</date>
            <delta_ts>2011-03-19 11:54:13 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-56712.diff</filename>
            <type>text/plain</type>
            <size>24300</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkODE0MGNlLi5mYzc4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTEtMDMtMTkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHN1
cHBvcnQgZm9yIFF0IDQuNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY3MTIKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0
Zm9ybURhdGFRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1RleHRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd1NpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0
aEZvclNpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6b2Zmc2V0Rm9yUG9zaXRp
b25Gb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnNlbGVjdGlvblJlY3RG
b3JTaW1wbGVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJh
bnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1ByZWZldGNoSGVscGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEbnNQcmVmZXRjaEhlbHBlcjo6RG5zUHJlZmV0Y2hIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG5zUHJlZmV0Y2hIZWxwZXI6Omxvb2t1cCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUXQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6Omh0dHBNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9u
c2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3Rh
cnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisKIDIwMTEtMDMtMTkg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0LmNwcAppbmRleCAxODVhZTg1Li45NWRh
YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
UGxhdGZvcm1EYXRhUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRQbGF0Zm9ybURhdGFRdC5jcHAKQEAgLTczLDkgKzczLDcgQEAgRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBjb25zdCBBdG8KICAgICBmb250LnNldExldHRlclNwYWNpbmcoUUZvbnQ6OkFic29sdXRlU3Bh
Y2luZywgbGV0dGVyU3BhY2luZyk7CiAgICAgY29uc3QgYm9vbCBzbWFsbENhcHMgPSBkZXNjcmlw
dGlvbi5zbWFsbENhcHMoKTsKICAgICBmb250LnNldENhcGl0YWxpemF0aW9uKHNtYWxsQ2FwcyA/
IFFGb250OjpTbWFsbENhcHMgOiBRRm9udDo6TWl4ZWRDYXNlKTsKLSNpZiBRVF9WRVJTSU9OID49
IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICBmb250LnNldFN0eWxlU3RyYXRlZ3koUUZv
bnQ6OkZvcmNlSW50ZWdlck1ldHJpY3MpOwotI2VuZGlmCiAKICAgICBtX2RhdGEtPmJvbGQgPSBm
b250LmJvbGQoKTsKICAgICAvLyBXZWJLaXQgYWxsb3dzIGZvbnQgc2l6ZSB6ZXJvIGJ1dCBRRm9u
dCBkb2VzIG5vdC4gV2Ugd2lsbCByZXR1cm4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4IDY0NmNkMGUuLjgxZjNiMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAtMTY5LDIxICsx
NjksMTcgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAgICAgICAgICAgIHAtPnJlc3RvcmUo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2lmIFFUX1ZFUlNJT04gPj0gUVRf
VkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgICAgICBpbnQgc2tpcFdpZHRoID0gUUZvbnRNZXRy
aWNzKGZvbnQpLndpZHRoKHN0cmluZywgZnJvbSwgUXQ6OlRleHRCeXBhc3NTaGFwaW5nKTsKICAg
ICAgICAgcHQuc2V0WChwdC54KCkgKyBza2lwV2lkdGgpOwogICAgICAgICBzdHJpbmcgPSBmcm9t
UmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkLCBmcm9tLCB0byAtIGZyb20pOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgcC0+c2V0Rm9udChmb250KTsKIAogICAgIGludCBmbGFncyA9IHJ1bi5ydGwo
KSA/IFF0OjpUZXh0Rm9yY2VSaWdodFRvTGVmdCA6IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdodDsK
LSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKLSAgICAvLyBTZWUg
UVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoKSB3aGVyZSB0aGUgZGVmYXVsdCBwYXRo
IGlzIHNldCB0byBDb21wbGV4IGZvciBRdCA0LjYgYW5kIGVhcmxpZXIuCisKICAgICBpZiAoIWlz
Q29tcGxleFRleHQgJiYgIShjdHgtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2Up
KQogICAgICAgICBmbGFncyB8PSBRdDo6VGV4dEJ5cGFzc1NoYXBpbmc7Ci0jZW5kaWYKIAogICAg
IFFQYWludGVyUGF0aCB0ZXh0U3Ryb2tlUGF0aDsKICAgICBpZiAoY3R4LT50ZXh0RHJhd2luZ01v
ZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQpAQCAtMjAwLDExICsxOTYsNyBAQCBzdGF0aWMgdm9pZCBk
cmF3VGV4dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBGbG9hdAogICAgICAgICAgICAgICAgIHAtPnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgUUZvbnRNZXRyaWNzIGZtKGZvbnQpOwotI2lmIFFUX1ZF
UlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgICAgICAgICAgICAgIFFSZWN0
RiBib3VuZGluZ1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0ud2lkdGgo
c3RyaW5nLCAtMSwgZmxhZ3MpLCBmbS5oZWlnaHQoKSk7Ci0jZWxzZQotICAgICAgICAgICAgICAg
IFFSZWN0RiBib3VuZGluZ1JlY3QocHQueCgpLCBwb2ludC55KCkgLSBmbS5hc2NlbnQoKSwgZm0u
d2lkdGgoc3RyaW5nKSwgZm0uaGVpZ2h0KCkpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgUVBh
aW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBjdHhTaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4LCBi
b3VuZGluZ1JlY3QpOwogICAgICAgICAgICAgICAgIGlmIChzaGFkb3dQYWludGVyKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFNpbmNlIGl0IHdpbGwgYmUgYmx1cnJlZCBhbnl3YXksIHdlIGRv
bid0IGNhcmUgYWJvdXQgcmVuZGVyIGhpbnRzLgpAQCAtMjIxLDExICsyMTMsNyBAQCBzdGF0aWMg
dm9pZCBkcmF3VGV4dENvbW1vbihHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBGbG9hdAogICAgICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZSgtY3R4U2hhZG93
LT5vZmZzZXQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFFGb250
TWV0cmljcyBmbShmb250KTsKLSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwg
NywgMCkKICAgICAgICAgICAgICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KHB0LngoKSwgcG9pbnQu
eSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0cmluZywgLTEsIGZsYWdzKSwgZm0uaGVpZ2h0
KCkpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KHB0LngoKSwg
cG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0cmluZyksIGZtLmhlaWdodCgpKTsK
LSNlbmRpZgogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAg
ICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3
aWxsIGJlIGJsdXJyZWQgYW55d2F5LCB3ZSBkb24ndCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4K
QEAgLTI1MCwxMSArMjM4LDcgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3ND
b250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKIAogdm9pZCBGb250
OjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKLSNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICBkcmF3VGV4dENv
bW1vbihjdHgsIHJ1biwgcG9pbnQsIGZyb20sIHRvLCBmb250KCksIC8qIGlzQ29tcGxleFRleHQg
PSAqL2ZhbHNlKTsKLSNlbHNlCi0gICAgUV9BU1NFUlQoZmFsc2UpOwotI2VuZGlmCiB9CiAKIHZv
aWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY3R4LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dApAQCAtMjk1LDcgKzI3OSw2IEBAIGZsb2F0IEZvbnQ6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyCiAgICAgaWYgKCFw
cmltYXJ5Rm9udCgpLT5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAgaWYgKCFy
dW4ubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zMDksMTAgKzI5Miw2IEBAIGZs
b2F0IEZvbnQ6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgR2x5
cGhCdWZmZXIqIGdseXBoQnVmZmVyCiAgICAgICAgIHcgLT0gbV93b3JkU3BhY2luZzsKIAogICAg
IHJldHVybiB3ICsgcnVuLmV4cGFuc2lvbigpOwotI2Vsc2UKLSAgICBRX0FTU0VSVChmYWxzZSk7
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKIH0KIAogZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0
YSo+KiwgR2x5cGhPdmVyZmxvdyopIGNvbnN0CkBAIC0zMzksNyArMzE4LDYgQEAgZmxvYXQgRm9u
dDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxj
b25zdCBTaW1wbGVGb24KIAogaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yU2ltcGxlVGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKSBjb25zdAogewotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3
LCAwKQogICAgIFN0cmluZyBzYW5pdGl6ZWQgPSBGb250Ojpub3JtYWxpemVTcGFjZXMocnVuLmNo
YXJhY3RlcnMoKSwgcnVuLmxlbmd0aCgpKTsKICAgICBRU3RyaW5nIHN0cmluZyA9IGZyb21SYXdE
YXRhV2l0aG91dFJlZihzYW5pdGl6ZWQpOwogCkBAIC0zNTksMTAgKzMzNyw2IEBAIGludCBGb250
OjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9h
dCBwb3NpdGlvbiwgYm9vCiAgICAgfSB3aGlsZSAoKytjdXJQb3MgPCBzdHJpbmcuc2l6ZSgpKTsK
IAogICAgIHJldHVybiBjdXJQb3M7Ci0jZWxzZQotICAgIFFfQVNTRVJUKGZhbHNlKTsKLSAgICBy
ZXR1cm4gMDsKLSNlbmRpZgogfQogCiBpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHBvc2l0aW9uLCBib29sKSBjb25zdApA
QCAtMzc3LDcgKzM1MSw2IEBAIGludCBGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQgcG9zaXRpb24sIGJvCiAKIEZsb2F0UmVjdCBG
b250OjpzZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEZsb2F0UG9pbnQmIHB0LCBpbnQgaCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKLSNpZiBR
VF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICBTdHJpbmcgc2FuaXRp
emVkID0gRm9udDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgo
KSk7CiAgICAgUVN0cmluZyB3aG9sZVRleHQgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRp
emVkKTsKICAgICBRU3RyaW5nIHNlbGVjdGVkVGV4dCA9IGZyb21SYXdEYXRhV2l0aG91dFJlZihz
YW5pdGl6ZWQsIGZyb20sIHFNaW4odG8gLSBmcm9tLCB3aG9sZVRleHQubGVuZ3RoKCkgLSBmcm9t
KSk7CkBAIC0zODYsMTAgKzM1OSw2IEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9y
U2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaW50
IHdpZHRoID0gUUZvbnRNZXRyaWNzKGZvbnQoKSkud2lkdGgoc2VsZWN0ZWRUZXh0LCAtMSwgUXQ6
OlRleHRCeXBhc3NTaGFwaW5nKTsKIAogICAgIHJldHVybiBGbG9hdFJlY3QocHQueCgpICsgc3Rh
cnRYLCBwdC55KCksIHdpZHRoLCBoKTsKLSNlbHNlCi0gICAgUV9BU1NFUlQoZmFsc2UpOwotICAg
IHJldHVybiBGbG9hdFJlY3QoKTsKLSNlbmRpZgogfQogCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0
aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcHQsIGludCBoLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAppbmRleCA4NTA0MDVkLi44ZDM1NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNDc5
LDcgKzQ3OSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50
ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAKICAgICBRUmVjdEYgcmVjdCA9
IG9wdGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCi0jaWYgUVRfVkVSU0lP
TiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAgLy8gVXNlIGRpcmVjdCB0ZXh0dXJl
IG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAogICAg
IC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCiAgICAgUUdMV2lkZ2V0KiB2aWV3cG9y
dEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwpAQCAtNDg3LDcgKzQ4Niw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNv
bnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0
dXJlKHJlY3QsIG1fdGV4dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYKIAog
ICAgIC8vIEFsdGVybmF0aXZlbHkgcmVhZCBwaXhlbHMgdG8gYSBtZW1vcnkgYnVmZmVyLgogICAg
IG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCmluZGV4IDYyZjVjM2UuLmQyNjBi
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
QnVmZmVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwCkBAIC0yMTksMTEgKzIxOSw3IEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5
PiBnZXRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW1hZ2VCdWZmZXJEYXRh
JiBpCiAgICAgQVNTRVJUKCFpbWFnZS5pc051bGwoKSk7CiAKICAgICBjb25zdCBpbnQgYnl0ZXNQ
ZXJMaW5lID0gaW1hZ2UuYnl0ZXNQZXJMaW5lKCk7Ci0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDQsIDcsIDApCiAgICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5jb25zdEJp
dHMoKTsKLSNlbHNlCi0gICAgY29uc3QgdWNoYXIqIGJpdHMgPSBpbWFnZS5iaXRzKCk7Ci0jZW5k
aWYKIAogICAgIHF1aW50MzIqIGRlc3RSb3dzID0gcmVpbnRlcnByZXRfY2FzdF9wdHI8cXVpbnQz
Mio+KCZkYXRhW2Rlc3R5ICogcmVjdC53aWR0aCgpICogNCArIGRlc3R4ICogNF0pOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJR
dC5jcHAKaW5kZXggMzU0MDk5NC4uOGNkYTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcApAQCAtMTk0LDE1ICsx
OTQsNyBAQCB2b2lkIEltYWdlRGVjb2RlclF0OjppbnRlcm5hbFJlYWRJbWFnZShzaXplX3QgZnJh
bWVJbmRleCkKIAogYm9vbCBJbWFnZURlY29kZXJRdDo6aW50ZXJuYWxIYW5kbGVDdXJyZW50SW1h
Z2Uoc2l6ZV90IGZyYW1lSW5kZXgpCiB7Ci0gICAgUVBpeG1hcCBwaXhtYXA7Ci0KLSNpZiBRVF9W
RVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKLSAgICBwaXhtYXAgPSBRUGl4bWFw
Ojpmcm9tSW1hZ2VSZWFkZXIobV9yZWFkZXIuZ2V0KCkpOwotI2Vsc2UKLSAgICBRSW1hZ2UgaW1n
OwotICAgIGlmIChtX3JlYWRlci0+cmVhZCgmaW1nKSkKLSAgICAgICAgcGl4bWFwID0gUVBpeG1h
cDo6ZnJvbUltYWdlKGltZyk7Ci0jZW5kaWYKKyAgICBRUGl4bWFwIHBpeG1hcCA9IFFQaXhtYXA6
OmZyb21JbWFnZVJlYWRlcihtX3JlYWRlci5nZXQoKSk7CiAKICAgICBpZiAocGl4bWFwLmlzTnVs
bCgpKSB7CiAgICAgICAgIGZyYW1lQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCmluZGV4IDZiMzBmZGYuLmNjYzdmM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcApAQCAtMzk4LDE1
ICszOTgsNyBAQCB2b2lkIFBhdGg6OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rp
b24gZnVuY3Rpb24pIGNvbnN0CiB2b2lkIFBhdGg6OnRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICBRVHJhbnNmb3JtIHFUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKLSNpZiBRVF9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQotICAgIC8vIFdv
cmthcm91bmQgZm9yIGh0dHA6Ly9idWdyZXBvcnRzLnF0Lm5va2lhLmNvbS9icm93c2UvUVRCVUct
MTEyNjQKLSAgICAvLyBRVHJhbnNmb3JtLm1hcCBkb2Vzbid0IGhhbmRsZSB0aGUgTW92ZVRvIGVs
ZW1lbnQgYmVjYXVzZSBvZiB0aGUgaXNFbXB0eSBpc3N1ZQotICAgIGlmIChtX3BhdGguaXNFbXB0
eSgpICYmIG1fcGF0aC5lbGVtZW50Q291bnQoKSkgewotICAgICAgICBRUG9pbnRGIHBvaW50ID0g
cVRyYW5zZm9ybS5tYXAobV9wYXRoLmN1cnJlbnRQb3NpdGlvbigpKTsKLSAgICAgICAgbW92ZVRv
KHBvaW50KTsKLSAgICB9IGVsc2UgCi0jZW5kaWYKLSAgICAgICAgbV9wYXRoID0gcVRyYW5zZm9y
bS5tYXAobV9wYXRoKTsKKyAgICBtX3BhdGggPSBxVHJhbnNmb3JtLm1hcChtX3BhdGgpOwogfQog
CiBmbG9hdCBQYXRoOjpsZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVmZXRjaEhlbHBlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9EbnNQcmVmZXRjaEhlbHBlci5oCmluZGV4IDg5MmEzZmIuLjRm
Y2QxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvRG5z
UHJlZmV0Y2hIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L0Ruc1ByZWZldGNoSGVscGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIERuc1ByZWZldGNoSGVscGVyIDogcHVibGljIFFPYmplY3QgewogICAgICAg
ICBRX09CSkVDVAogICAgIHB1YmxpYzoKLSAgICAgICAgRG5zUHJlZmV0Y2hIZWxwZXIoKSA6IFFP
YmplY3QoKSwgY3VycmVudExvb2t1cHMoMCkge307CisgICAgICAgIERuc1ByZWZldGNoSGVscGVy
KCkgOiBRT2JqZWN0KCksIGN1cnJlbnRMb29rdXBzKDApIHsgfQogCiAgICAgcHVibGljIHNsb3Rz
OgogICAgICAgICB2b2lkIGxvb2t1cChRU3RyaW5nIGhvc3RuYW1lKQpAQCAtNDIsMjYgKzQyLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaWYgKGN1cnJlbnRMb29rdXBzID49
IDEwKQogICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZG8gbm90IGxhdW5jaCBtb3JlIHRoYW4g
MTAgbG9va3VwcyBhdCB0aGUgc2FtZSB0aW1lCiAKLSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJ
T05fQ0hFQ0soNCwgNiwgMykKICAgICAgICAgICAgIGN1cnJlbnRMb29rdXBzKys7CiAgICAgICAg
ICAgICBRSG9zdEluZm86Omxvb2t1cEhvc3QoaG9zdG5hbWUsIHRoaXMsIFNMT1QobG9va2VkVXAo
UUhvc3RJbmZvKSkpOwotI2Vsc2UKLSAgICAgICAgICAgIC8vIFRoaXMgY29kZSBpcyBvbmx5IG5l
ZWRlZCBmb3IgUXQgdmVyc2lvbnMgdGhhdCBkbyBub3QgaGF2ZQotICAgICAgICAgICAgLy8gdGhl
IHNtYWxsIFF0IEROUyBjYWNoZSB5ZXQuCi0KLSAgICAgICAgICAgIFFUaW1lKiBlbnRyeVRpbWUg
PSBsb29rdXBDYWNoZS5vYmplY3QoaG9zdG5hbWUpOwotICAgICAgICAgICAgaWYgKGVudHJ5VGlt
ZSAmJiBlbnRyeVRpbWUtPmVsYXBzZWQoKSA+IDMwMCoxMDAwKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gZGVsZXRlIGtub3dsZWRnZSBhYm91dCBsb29rdXAgaWYgaXQgaXMgYWxyZWFkeSAzMDAgc2Vj
b25kcyBvbGQKLSAgICAgICAgICAgICAgICBsb29rdXBDYWNoZS5yZW1vdmUoaG9zdG5hbWUpOwot
ICAgICAgICAgICAgfSBlbHNlIGlmICghZW50cnlUaW1lKSB7Ci0gICAgICAgICAgICAgICAgLy8g
bm90IGluIGNhY2hlIHlldCwgY2FuIGxvb2sgaXQgdXAKLSAgICAgICAgICAgICAgICBRVGltZSAq
dG1wVGltZSA9IG5ldyBRVGltZSgpOwotICAgICAgICAgICAgICAgICp0bXBUaW1lID0gUVRpbWU6
OmN1cnJlbnRUaW1lKCk7Ci0gICAgICAgICAgICAgICAgbG9va3VwQ2FjaGUuaW5zZXJ0KGhvc3Ru
YW1lLCB0bXBUaW1lKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50TG9va3VwcysrOwotICAgICAg
ICAgICAgICAgIFFIb3N0SW5mbzo6bG9va3VwSG9zdChob3N0bmFtZSwgdGhpcywgU0xPVChsb29r
ZWRVcChRSG9zdEluZm8pKSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgbG9va2VkVXAoY29uc3QgUUhvc3RJbmZvJikKQEAgLTc0LDkgKzU2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0jaWYgUVRf
VkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMykKLSAgICAgICAgUUNhY2hlPFFTdHJp
bmcsIFFUaW1lPiBsb29rdXBDYWNoZTsgLy8gMTAwIGVudHJpZXMKLSNlbmRpZgogICAgICAgICBp
bnQgY3VycmVudExvb2t1cHM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRl
LmgKaW5kZXggNzY2ZGM5MC4uNGI4MjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0
ZS5oCkBAIC0yMiwxNSArMjIsOSBAQAogCiAjaW5jbHVkZSA8UU9iamVjdD4KIAotI2lmIFFUX1ZF
UlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCi1uYW1lc3BhY2UgUXRNb2JpbGl0eSB7
Ci1jbGFzcyBRTmV0d29ya0NvbmZpZ3VyYXRpb25NYW5hZ2VyOwotfQotI2Vsc2UKIFFUX0JFR0lO
X05BTUVTUEFDRQogY2xhc3MgUU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlcjsKIFFUX0VORF9O
QU1FU1BBQ0UKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDExICs0MCw3
IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIG5ldHdvcmtBY2Nlc3NQZXJtaXNzaW9uQ2hhbmdl
ZChib29sKTsKIAogcHVibGljOgotI2lmIFFUX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDQs
IDcsIDApCi0gICAgUXRNb2JpbGl0eTo6UU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlciogbV9j
b25maWd1cmF0aW9uTWFuYWdlcjsKLSNlbHNlCiAgICAgUU5ldHdvcmtDb25maWd1cmF0aW9uTWFu
YWdlciogbV9jb25maWd1cmF0aW9uTWFuYWdlcjsKLSNlbmRpZgogICAgIGJvb2wgbV9vbmxpbmU7
CiAgICAgYm9vbCBtX25ldHdvcmtBY2Nlc3NBbGxvd2VkOwogICAgIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyKiBtX25vdGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJRdC5jcHAKaW5kZXggZjNlNzAyMy4u
Y2VkNTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9O
ZXR3b3JrU3RhdGVOb3RpZmllclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUXQuY3BwCkBAIC0yNSwxMCArMjUsNiBAQAog
I2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgInFuZXR3
b3JrY29uZmlnbWFuYWdlci5oIgogCi0jaWYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0so
NCwgNywgMCkKLXVzaW5nIG5hbWVzcGFjZSBRdE1vYmlsaXR5OwotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlOjpOZXR3b3JrU3RhdGVO
b3RpZmllclByaXZhdGUoTmV0d29ya1N0YXRlTm90aWZpZXIqIG5vdGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcAppbmRleCA2MWZlOTZjLi5hMjIwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cApAQCAtNDEsMTUgKzQxLDcgQEAKICNpbmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUNvcmVB
cHBsaWNhdGlvbj4KIAotLy8gV2hhdCB0eXBlIG9mIGNvbm5lY3Rpb24gc2hvdWxkIGJlIHVzZWQg
Zm9yIHRoZSBzaWduYWxzIG9mIHRoZQotLy8gUU5ldHdvcmtSZXBseT8gVGhpcyBkZXBlbmRzIG9u
IGlmIFF0IGhhcyBhIGJ1Z2ZpeCBmb3IgdGhpcyBvciBub3QuCi0vLyBJdCBpcyBmaXhlZCBpbiBR
dCA0LjYuMy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjEx
MwotLy8gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjc1NQot
I2lmIFFUX1ZFUlNJT04gPiBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDIpCiAjZGVmaW5lIFNJR05B
TF9DT05OIFF0OjpEaXJlY3RDb25uZWN0aW9uCi0jZWxzZQotI2RlZmluZSBTSUdOQUxfQ09OTiBR
dDo6UXVldWVkQ29ubmVjdGlvbgotI2VuZGlmCiAKIC8vIEluIFF0IDQuOCwgdGhlIGF0dHJpYnV0
ZSBmb3Igc2VuZGluZyBhIHJlcXVlc3Qgc3luY2hyb25vdXNseSB3aWxsIGJlIG1hZGUgcHVibGlj
LAogLy8gZm9yIG5vdywgdXNlIHRoaXMgaGFja2lzaCBzb2x1dGlvbiBmb3Igc2V0dGluZyB0aGUg
aW50ZXJuYWwgYXR0cmlidXRlLgpAQCAtMTcyLDEwICsxNjQsOCBAQCBTdHJpbmcgUU5ldHdvcmtS
ZXBseUhhbmRsZXI6Omh0dHBNZXRob2QoKSBjb25zdAogICAgICAgICByZXR1cm4gIlBVVCI7CiAg
ICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkRlbGV0ZU9wZXJhdGlvbjoKICAgICAgICAg
cmV0dXJuICJERUxFVEUiOwotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3
LCAwKQogICAgIGNhc2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpDdXN0b21PcGVyYXRpb246CiAg
ICAgICAgIHJldHVybiBtX3Jlc291cmNlSGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwTWV0aG9k
KCk7Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuICJHRVQiOwpAQCAtMjA4LDEzICsxOTgsOCBAQCBRTmV0d29ya1JlcGx5
SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTG9h
ZE1vZGUgbG9hZAogICAgICAgICBtX21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6UHV0
T3BlcmF0aW9uOwogICAgIGVsc2UgaWYgKHIuaHR0cE1ldGhvZCgpID09ICJERUxFVEUiKQogICAg
ICAgICBtX21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6RGVsZXRlT3BlcmF0aW9uOwot
I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGVsc2UKICAg
ICAgICAgbV9tZXRob2QgPSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkN1c3RvbU9wZXJhdGlvbjsK
LSNlbHNlCi0gICAgZWxzZQotICAgICAgICBtX21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdl
cjo6VW5rbm93bk9wZXJhdGlvbjsKLSNlbmRpZgogCiAgICAgUU9iamVjdCogb3JpZ2luYXRpbmdP
YmplY3QgPSAwOwogICAgIGlmIChtX3Jlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX2Nv
bnRleHQpCkBAIC0zOTMsMTMgKzM3OCw4IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNl
bmRSZXNwb25zZUlmTmVlZGVkKCkKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
bV9yZXBseS0+YXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6SHR0cFJlYXNvblBocmFzZUF0dHJp
YnV0ZSkudG9CeXRlQXJyYXkoKS5jb25zdERhdGEoKSk7CiAKICAgICAgICAgLy8gQWRkIHJlbWFp
bmluZyBoZWFkZXJzLgotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAw
KQogICAgICAgICBmb3JlYWNoIChjb25zdCBRTmV0d29ya1JlcGx5OjpSYXdIZWFkZXJQYWlyJiBw
YWlyLCBtX3JlcGx5LT5yYXdIZWFkZXJQYWlycygpKQogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0
SFRUUEhlYWRlckZpZWxkKFFTdHJpbmc6OmZyb21Bc2NpaShwYWlyLmZpcnN0KSwgUVN0cmluZzo6
ZnJvbUFzY2lpKHBhaXIuc2Vjb25kKSk7Ci0jZWxzZQotICAgICAgICBmb3JlYWNoIChjb25zdCBR
Qnl0ZUFycmF5JiBoZWFkZXJOYW1lLCBtX3JlcGx5LT5yYXdIZWFkZXJMaXN0KCkpCi0gICAgICAg
ICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoUVN0cmluZzo6ZnJvbUFzY2lpKGhlYWRl
ck5hbWUpLCBRU3RyaW5nOjpmcm9tQXNjaWkobV9yZXBseS0+cmF3SGVhZGVyKGhlYWRlck5hbWUp
KSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBRVXJsIHJlZGlyZWN0aW9uID0gbV9yZXBseS0+YXR0
cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6UmVkaXJlY3Rpb25UYXJnZXRBdHRyaWJ1dGUpLnRvVXJs
KCk7CkBAIC01MzgsMTEgKzUxOCw5IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0
KCkKICAgICAgICAgICAgIG1fcmVwbHkgPSBtYW5hZ2VyLT5kZWxldGVSZXNvdXJjZShtX3JlcXVl
c3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNpZiBRVF9WRVJTSU9OID49IFFU
X1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICAgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFn
ZXI6OkN1c3RvbU9wZXJhdGlvbjoKICAgICAgICAgICAgIG1fcmVwbHkgPSBtYW5hZ2VyLT5zZW5k
Q3VzdG9tUmVxdWVzdChtX3JlcXVlc3QsIG1fcmVzb3VyY2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgp
Lmh0dHBNZXRob2QoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKICAgICAgICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OlVua25vd25PcGVyYXRpb246
IHsKICAgICAgICAgICAgIG1fcmVwbHkgPSAwOwogICAgICAgICAgICAgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCA9IG1fcmVzb3VyY2VIYW5kbGUtPmNsaWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNw
cAppbmRleCA3ZTE2MmVkLi40OThjOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcApAQCAtODMsMTMgKzgz
LDExIEBAIFFOZXR3b3JrUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3Qo
UU9iamVjdCogb3JpZ2luYXRpbmdGcmFtZSkgY29uCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAot
I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGlmICghYWxs
b3dDb29raWVzKCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1
ZXN0OjpDb29raWVMb2FkQ29udHJvbEF0dHJpYnV0ZSwgUU5ldHdvcmtSZXF1ZXN0OjpNYW51YWwp
OwogICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNvb2tpZVNh
dmVDb250cm9sQXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6Ok1hbnVhbCk7CiAgICAgICAgIHJl
cXVlc3Quc2V0QXR0cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6QXV0aGVudGljYXRpb25SZXVzZUF0
dHJpYnV0ZSwgUU5ldHdvcmtSZXF1ZXN0OjpNYW51YWwpOwogICAgIH0KLSNlbmRpZgogCiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9SZW5kZXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRo
ZW1lUXQuY3BwCmluZGV4IGNhOGM2ZGQuLmNjNjU0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCkBAIC0xMzY4LDcgKzEzNjgsNiBAQCBib29sIFJl
bmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGFpbgogCiAgICAgcGFpbnRNZWRpYUJhY2tncm91bmQocC5wYWludGVyLCBy
KTsKIAotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGlm
IChNZWRpYVBsYXllciogcGxheWVyID0gbWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkgewogICAgICAg
ICAvLyBHZXQgdGhlIGJ1ZmZlcmVkIHBhcnRzIG9mIHRoZSBtZWRpYQogICAgICAgICBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkID0gcGxheWVyLT5idWZmZXJlZCgpOwpAQCAtMTM4Niw3
ICsxMzg1LDYgQEAgYm9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KLSNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5jcHAKaW5kZXggNzRhMmJkMi4uYjRkYWFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCkBAIC04NzcsMTEgKzg3Nyw5IEBAIHZvaWQgUVdlYkZyYW1lOjpsb2FkKGNv
bnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxLAogICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFu
YWdlcjo6RGVsZXRlT3BlcmF0aW9uOgogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJERUxFVEUiKTsKICAgICAgICAgICAgIGJyZWFrOwotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg0LCA3LCAwKQogICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6
Q3VzdG9tT3BlcmF0aW9uOgogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHJlcS5h
dHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDdXN0b21WZXJiQXR0cmlidXRlKS50b0J5dGVBcnJh
eSgpLmNvbnN0RGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIGNh
c2UgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpVbmtub3duT3BlcmF0aW9uOgogICAgICAgICAgICAg
Ly8gZWg/CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRl
eCBlMWI3YjllLi4zNTViMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0zMTUs
OSArMzE1LDYgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFx
KQogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNl
dExvY2FsTG9hZFBvbGljeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRz
Rm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7Ci0jaWYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05f
Q0hFQ0soNCwgNywgMCkKLSAgICBXZWJDb3JlOjpGb250OjpzZXRDb2RlUGF0aChXZWJDb3JlOjpG
b250OjpDb21wbGV4KTsKLSNlbmRpZgogCiAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0
aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDUzMTA0
MjYuLmQ5YmIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtNDc3
LDI1ICs0NzcsMTYgQEAgUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MoKQogICAgIGQtPmZvbnRG
YW1pbGllcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpTdGFuZGFyZEZvbnQsIGRlZmF1bHRGb250LmRl
ZmF1bHRGYW1pbHkoKSk7CiAgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6
OlNlcmlmRm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKIAotI2lmIFFUX1ZFUlNJ
T04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGRlZmF1bHRGb250LnNldFN0eWxl
SGludChRRm9udDo6RmFudGFzeSk7CiAgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0
dGluZ3M6OkZhbnRhc3lGb250LCBkZWZhdWx0Rm9udC5kZWZhdWx0RmFtaWx5KCkpOwogCiAgICAg
ZGVmYXVsdEZvbnQuc2V0U3R5bGVIaW50KFFGb250OjpDdXJzaXZlKTsKICAgICBkLT5mb250RmFt
aWxpZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsIGRlZmF1bHRGb250LmRlZmF1
bHRGYW1pbHkoKSk7Ci0jZWxzZQotICAgIGQtPmZvbnRGYW1pbGllcy5pbnNlcnQoUVdlYlNldHRp
bmdzOjpGYW50YXN5Rm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKLSAgICBkLT5m
b250RmFtaWxpZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsIGRlZmF1bHRGb250
LmRlZmF1bHRGYW1pbHkoKSk7Ci0jZW5kaWYKIAogICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGlu
dChRRm9udDo6U2Fuc1NlcmlmKTsKICAgICBkLT5mb250RmFtaWxpZXMuaW5zZXJ0KFFXZWJTZXR0
aW5nczo6U2Fuc1NlcmlmRm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKIAotI2lm
IFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGRlZmF1bHRGb250
LnNldFN0eWxlSGludChRRm9udDo6TW9ub3NwYWNlKTsKLSNlbHNlCi0gICAgZGVmYXVsdEZvbnQu
c2V0U3R5bGVIaW50KFFGb250OjpUeXBlV3JpdGVyKTsKLSNlbmRpZgogICAgIGQtPmZvbnRGYW1p
bGllcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpGaXhlZEZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRG
YW1pbHkoKSk7CiAKICAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OkF1dG9M
b2FkSW1hZ2VzLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZThhMjNkZi4uMjQ1YWJmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wMy0xOSAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1F0XSBSZW1vdmUgc3VwcG9ydCBmb3IgUXQgNC42CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjcxMgorCisgICAgICAgICogQXBp
L3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25D
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0Ojpwb3Np
dGlvblVwZGF0ZWQpOgorCiAyMDExLTAzLTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHAKaW5k
ZXggMTA4YjcwNS4uM2MzODJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwCkBAIC04MiwxMiArODIsNyBAQCB2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50UXQ6OnBvc2l0aW9uVXBkYXRlZChjb25zdCBRR2VvUG9zaXRp
b25JbmZvICZnZW9Qb3NpdGlvbikKICAgICBib29sIHByb3ZpZGVzU3BlZWQgPSBnZW9Qb3NpdGlv
bi5oYXNBdHRyaWJ1dGUoUUdlb1Bvc2l0aW9uSW5mbzo6R3JvdW5kU3BlZWQpOwogICAgIGRvdWJs
ZSBzcGVlZCA9IGdlb1Bvc2l0aW9uLmF0dHJpYnV0ZShRR2VvUG9zaXRpb25JbmZvOjpHcm91bmRT
cGVlZCk7CiAKLSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAg
ICBkb3VibGUgdGltZVN0YW1wSW5TZWNvbmRzID0gZ2VvUG9zaXRpb24udGltZXN0YW1wKCkudG9N
U2Vjc1NpbmNlRXBvY2goKSAvIDEwMDA7Ci0jZWxzZQotICAgIFFEYXRlVGltZSBkYXRldGltZSA9
IGdlb1Bvc2l0aW9uLnRpbWVzdGFtcCgpOwotICAgIGRvdWJsZSB0aW1lU3RhbXBJblNlY29uZHMg
PSAoZGF0ZXRpbWUudG9UaW1lX3QoKSArIGRhdGV0aW1lLnRpbWUoKS5tc2VjKCkpIC8gMTAwMDsK
LSNlbmRpZgogCiAgICAgbV9sYXN0UG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGUodGltZVN0YW1wSW5TZWNvbmRzLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5LCBwcm92aWRlc0Fs
dGl0dWRlLCBhbHRpdHVkZSwK
</data>
<flag name="review"
          id="78504"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86269</attachid>
            <date>2011-03-19 11:54:13 -0700</date>
            <delta_ts>2011-03-19 12:03:05 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-56712-v2.diff</filename>
            <type>text/plain</type>
            <size>25941</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkODE0MGNlLi5mYzc4ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTEtMDMtMTkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gUmVtb3ZlIHN1
cHBvcnQgZm9yIFF0IDQuNgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTY3MTIKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRQbGF0
Zm9ybURhdGFRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1RleHRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd1NpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0
aEZvclNpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6b2Zmc2V0Rm9yUG9zaXRp
b25Gb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnNlbGVjdGlvblJlY3RG
b3JTaW1wbGVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJh
bnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1ByZWZldGNoSGVscGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEbnNQcmVmZXRjaEhlbHBlcjo6RG5zUHJlZmV0Y2hIZWxw
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG5zUHJlZmV0Y2hIZWxwZXI6Omxvb2t1cCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUXQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6Omh0dHBNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OlFOZXR3b3JrUmVwbHlIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9u
c2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3Rh
cnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lUXQ6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisKIDIwMTEtMDMtMTkg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UGxhdGZvcm1EYXRhUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udFBsYXRmb3JtRGF0YVF0LmNwcAppbmRleCAxODVhZTg1Li45NWRh
YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
UGxhdGZvcm1EYXRhUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0ZvbnRQbGF0Zm9ybURhdGFRdC5jcHAKQEAgLTczLDkgKzczLDcgQEAgRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBjb25zdCBBdG8KICAgICBmb250LnNldExldHRlclNwYWNpbmcoUUZvbnQ6OkFic29sdXRlU3Bh
Y2luZywgbGV0dGVyU3BhY2luZyk7CiAgICAgY29uc3QgYm9vbCBzbWFsbENhcHMgPSBkZXNjcmlw
dGlvbi5zbWFsbENhcHMoKTsKICAgICBmb250LnNldENhcGl0YWxpemF0aW9uKHNtYWxsQ2FwcyA/
IFFGb250OjpTbWFsbENhcHMgOiBRRm9udDo6TWl4ZWRDYXNlKTsKLSNpZiBRVF9WRVJTSU9OID49
IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICBmb250LnNldFN0eWxlU3RyYXRlZ3koUUZv
bnQ6OkZvcmNlSW50ZWdlck1ldHJpY3MpOwotI2VuZGlmCiAKICAgICBtX2RhdGEtPmJvbGQgPSBm
b250LmJvbGQoKTsKICAgICAvLyBXZWJLaXQgYWxsb3dzIGZvbnQgc2l6ZSB6ZXJvIGJ1dCBRRm9u
dCBkb2VzIG5vdC4gV2Ugd2lsbCByZXR1cm4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4IDY0NmNkMGUuLjNmZTkwYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcApAQCAtMTY5LDIxICsx
NjksMTYgQEAgc3RhdGljIHZvaWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgs
IGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAgICAgICAgICAgIHAtPnJlc3RvcmUo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2lmIFFUX1ZFUlNJT04gPj0gUVRf
VkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgICAgICBpbnQgc2tpcFdpZHRoID0gUUZvbnRNZXRy
aWNzKGZvbnQpLndpZHRoKHN0cmluZywgZnJvbSwgUXQ6OlRleHRCeXBhc3NTaGFwaW5nKTsKICAg
ICAgICAgcHQuc2V0WChwdC54KCkgKyBza2lwV2lkdGgpOwogICAgICAgICBzdHJpbmcgPSBmcm9t
UmF3RGF0YVdpdGhvdXRSZWYoc2FuaXRpemVkLCBmcm9tLCB0byAtIGZyb20pOwotI2VuZGlmCiAg
ICAgfQogCiAgICAgcC0+c2V0Rm9udChmb250KTsKIAogICAgIGludCBmbGFncyA9IHJ1bi5ydGwo
KSA/IFF0OjpUZXh0Rm9yY2VSaWdodFRvTGVmdCA6IFF0OjpUZXh0Rm9yY2VMZWZ0VG9SaWdodDsK
LSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKLSAgICAvLyBTZWUg
UVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoKSB3aGVyZSB0aGUgZGVmYXVsdCBwYXRo
IGlzIHNldCB0byBDb21wbGV4IGZvciBRdCA0LjYgYW5kIGVhcmxpZXIuCiAgICAgaWYgKCFpc0Nv
bXBsZXhUZXh0ICYmICEoY3R4LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKSkK
ICAgICAgICAgZmxhZ3MgfD0gUXQ6OlRleHRCeXBhc3NTaGFwaW5nOwotI2VuZGlmCiAKICAgICBR
UGFpbnRlclBhdGggdGV4dFN0cm9rZVBhdGg7CiAgICAgaWYgKGN0eC0+dGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZVN0cm9rZSkKQEAgLTIwMCwxMSArMTk1LDcgQEAgc3RhdGljIHZvaWQgZHJh
d1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXQKICAgICAgICAgICAgICAgICBwLT5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIFFGb250TWV0cmljcyBmbShmb250KTsKLSNpZiBRVF9WRVJT
SU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICAgICAgICAgICAgICBRUmVjdEYg
Ym91bmRpbmdSZWN0KHB0LngoKSwgcG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndpZHRoKHN0
cmluZywgLTEsIGZsYWdzKSwgZm0uaGVpZ2h0KCkpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBR
UmVjdEYgYm91bmRpbmdSZWN0KHB0LngoKSwgcG9pbnQueSgpIC0gZm0uYXNjZW50KCksIGZtLndp
ZHRoKHN0cmluZyksIGZtLmhlaWdodCgpKTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIFFQYWlu
dGVyKiBzaGFkb3dQYWludGVyID0gY3R4U2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eCwgYm91
bmRpbmdSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2hhZG93UGFpbnRlcikgewogICAgICAg
ICAgICAgICAgICAgICAvLyBTaW5jZSBpdCB3aWxsIGJlIGJsdXJyZWQgYW55d2F5LCB3ZSBkb24n
dCBjYXJlIGFib3V0IHJlbmRlciBoaW50cy4KQEAgLTIyMSwxMSArMjEyLDcgQEAgc3RhdGljIHZv
aWQgZHJhd1RleHRDb21tb24oR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgRmxvYXQKICAgICAgICAgICAgICAgICBwLT50cmFuc2xhdGUoLWN0eFNoYWRvdy0+
b2Zmc2V0KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBRRm9udE1l
dHJpY3MgZm0oZm9udCk7Ci0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcs
IDApCiAgICAgICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChwdC54KCksIHBvaW50Lnko
KSAtIGZtLmFzY2VudCgpLCBmbS53aWR0aChzdHJpbmcsIC0xLCBmbGFncyksIGZtLmhlaWdodCgp
KTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdChwdC54KCksIHBv
aW50LnkoKSAtIGZtLmFzY2VudCgpLCBmbS53aWR0aChzdHJpbmcpLCBmbS5oZWlnaHQoKSk7Ci0j
ZW5kaWYKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IGN0eFNoYWRv
dy0+YmVnaW5TaGFkb3dMYXllcihjdHgsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICAgICAg
aWYgKHNoYWRvd1BhaW50ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaXQgd2ls
bCBiZSBibHVycmVkIGFueXdheSwgd2UgZG9uJ3QgY2FyZSBhYm91dCByZW5kZXIgaGludHMuCkBA
IC0yNTAsMTEgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0Q29tbW9uKEdyYXBoaWNzQ29u
dGV4dCogY3R4LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0CiAKIHZvaWQgRm9udDo6
ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7Ci0jaWYg
UVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAgZHJhd1RleHRDb21t
b24oY3R4LCBydW4sIHBvaW50LCBmcm9tLCB0bywgZm9udCgpLCAvKiBpc0NvbXBsZXhUZXh0ID0g
Ki9mYWxzZSk7Ci0jZWxzZQotICAgIFFfQVNTRVJUKGZhbHNlKTsKLSNlbmRpZgogfQogCiB2b2lk
IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QK
QEAgLTI5NSw3ICsyNzgsNiBAQCBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiBydW4sIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcgogICAgIGlmICghcHJp
bWFyeUZvbnQoKS0+cGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKIAot
I2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGlmICghcnVu
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMzA5LDEwICsyOTEsNiBAQCBmbG9h
dCBGb250OjpmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEdseXBo
QnVmZmVyKiBnbHlwaEJ1ZmZlcgogICAgICAgICB3IC09IG1fd29yZFNwYWNpbmc7CiAKICAgICBy
ZXR1cm4gdyArIHJ1bi5leHBhbnNpb24oKTsKLSNlbHNlCi0gICAgUV9BU1NFUlQoZmFsc2UpOwot
ICAgIHJldHVybiAwOwotI2VuZGlmCiB9CiAKIGZsb2F0IEZvbnQ6OmZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEq
PiosIEdseXBoT3ZlcmZsb3cqKSBjb25zdApAQCAtMzM5LDcgKzMxNyw2IEBAIGZsb2F0IEZvbnQ6
OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29u
c3QgU2ltcGxlRm9uCiAKIGludCBGb250OjpvZmZzZXRGb3JQb3NpdGlvbkZvclNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEds
eXBocykgY29uc3QKIHsKLSNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywg
MCkKICAgICBTdHJpbmcgc2FuaXRpemVkID0gRm9udDo6bm9ybWFsaXplU3BhY2VzKHJ1bi5jaGFy
YWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSk7CiAgICAgUVN0cmluZyBzdHJpbmcgPSBmcm9tUmF3RGF0
YVdpdGhvdXRSZWYoc2FuaXRpemVkKTsKIApAQCAtMzU5LDEwICszMzYsNiBAQCBpbnQgRm9udDo6
b2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgZmxvYXQg
cG9zaXRpb24sIGJvbwogICAgIH0gd2hpbGUgKCsrY3VyUG9zIDwgc3RyaW5nLnNpemUoKSk7CiAK
ICAgICByZXR1cm4gY3VyUG9zOwotI2Vsc2UKLSAgICBRX0FTU0VSVChmYWxzZSk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKIH0KIAogaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCkgY29uc3QKQEAg
LTM3Nyw3ICszNTAsNiBAQCBpbnQgRm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4
dChjb25zdCBUZXh0UnVuJiBydW4sIGZsb2F0IHBvc2l0aW9uLCBibwogCiBGbG9hdFJlY3QgRm9u
dDo6c2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
bG9hdFBvaW50JiBwdCwgaW50IGgsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7Ci0jaWYgUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAgU3RyaW5nIHNhbml0aXpl
ZCA9IEZvbnQ6Om5vcm1hbGl6ZVNwYWNlcyhydW4uY2hhcmFjdGVycygpLCBydW4ubGVuZ3RoKCkp
OwogICAgIFFTdHJpbmcgd2hvbGVUZXh0ID0gZnJvbVJhd0RhdGFXaXRob3V0UmVmKHNhbml0aXpl
ZCk7CiAgICAgUVN0cmluZyBzZWxlY3RlZFRleHQgPSBmcm9tUmF3RGF0YVdpdGhvdXRSZWYoc2Fu
aXRpemVkLCBmcm9tLCBxTWluKHRvIC0gZnJvbSwgd2hvbGVUZXh0Lmxlbmd0aCgpIC0gZnJvbSkp
OwpAQCAtMzg2LDEwICszNTgsNiBAQCBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvclNp
bXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JgogICAgIGludCB3
aWR0aCA9IFFGb250TWV0cmljcyhmb250KCkpLndpZHRoKHNlbGVjdGVkVGV4dCwgLTEsIFF0OjpU
ZXh0QnlwYXNzU2hhcGluZyk7CiAKICAgICByZXR1cm4gRmxvYXRSZWN0KHB0LngoKSArIHN0YXJ0
WCwgcHQueSgpLCB3aWR0aCwgaCk7Ci0jZWxzZQotICAgIFFfQVNTRVJUKGZhbHNlKTsKLSAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7Ci0jZW5kaWYKIH0KIAogRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlv
blJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQm
IHB0LCBpbnQgaCwgaW50IGZyb20sIGludCB0bykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
aW5kZXggODUwNDA1ZC4uOGQzNTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTQ3OSw3
ICs0NzksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVy
KiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogCiAgICAgUVJlY3RGIHJlY3QgPSBv
cHRpb24gPyBvcHRpb24tPnJlY3QgOiBib3VuZGluZ1JlY3QoKTsKIAotI2lmIFFUX1ZFUlNJT04g
Pj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIC8vIFVzZSBkaXJlY3QgdGV4dHVyZSBt
YXBwaW5nIGlmIFdlYkdMIGNhbnZhcyBoYXMgYSBzaGFyZWQgT3BlbkdMIGNvbnRleHQKICAgICAv
LyB3aXRoIGJyb3dzZXJzIE9wZW5HTCBjb250ZXh0LgogICAgIFFHTFdpZGdldCogdmlld3BvcnRH
TFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKQEAgLTQ4Nyw3ICs0ODYsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25z
dCBRU3R5bGVPcHRpb25HcmFwaAogICAgICAgICB2aWV3cG9ydEdMV2lkZ2V0LT5kcmF3VGV4dHVy
ZShyZWN0LCBtX3RleHR1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2VuZGlmCiAKICAg
ICAvLyBBbHRlcm5hdGl2ZWx5IHJlYWQgcGl4ZWxzIHRvIGEgbWVtb3J5IGJ1ZmZlci4KICAgICBt
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAppbmRleCA2MmY1YzNlLi5kMjYwYjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1
ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFn
ZUJ1ZmZlclF0LmNwcApAQCAtMjE5LDExICsyMTksNyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4g
Z2V0SW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEltYWdlQnVmZmVyRGF0YSYg
aQogICAgIEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCiAgICAgY29uc3QgaW50IGJ5dGVzUGVy
TGluZSA9IGltYWdlLmJ5dGVzUGVyTGluZSgpOwotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg0LCA3LCAwKQogICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuY29uc3RCaXRz
KCk7Ci0jZWxzZQotICAgIGNvbnN0IHVjaGFyKiBiaXRzID0gaW1hZ2UuYml0cygpOwotI2VuZGlm
CiAKICAgICBxdWludDMyKiBkZXN0Um93cyA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPHF1aW50MzIq
PigmZGF0YVtkZXN0eSAqIHJlY3Qud2lkdGgoKSAqIDQgKyBkZXN0eCAqIDRdKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VEZWNvZGVyUXQu
Y3BwCmluZGV4IDM1NDA5OTQuLjhjZGEyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZURlY29kZXJRdC5jcHAKQEAgLTE5NCwxNSArMTk0
LDcgQEAgdm9pZCBJbWFnZURlY29kZXJRdDo6aW50ZXJuYWxSZWFkSW1hZ2Uoc2l6ZV90IGZyYW1l
SW5kZXgpCiAKIGJvb2wgSW1hZ2VEZWNvZGVyUXQ6OmludGVybmFsSGFuZGxlQ3VycmVudEltYWdl
KHNpemVfdCBmcmFtZUluZGV4KQogewotICAgIFFQaXhtYXAgcGl4bWFwOwotCi0jaWYgUVRfVkVS
U0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCi0gICAgcGl4bWFwID0gUVBpeG1hcDo6
ZnJvbUltYWdlUmVhZGVyKG1fcmVhZGVyLmdldCgpKTsKLSNlbHNlCi0gICAgUUltYWdlIGltZzsK
LSAgICBpZiAobV9yZWFkZXItPnJlYWQoJmltZykpCi0gICAgICAgIHBpeG1hcCA9IFFQaXhtYXA6
OmZyb21JbWFnZShpbWcpOwotI2VuZGlmCisgICAgUVBpeG1hcCBwaXhtYXAgPSBRUGl4bWFwOjpm
cm9tSW1hZ2VSZWFkZXIobV9yZWFkZXIuZ2V0KCkpOwogCiAgICAgaWYgKHBpeG1hcC5pc051bGwo
KSkgewogICAgICAgICBmcmFtZUNvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvUGF0aFF0LmNwcAppbmRleCA2YjMwZmRmLi5jY2M3ZjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKQEAgLTM5OCwxNSAr
Mzk4LDcgQEAgdm9pZCBQYXRoOjphcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1bmN0aW9u
IGZ1bmN0aW9uKSBjb25zdAogdm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgUVRyYW5zZm9ybSBxVHJhbnNmb3JtKHRyYW5zZm9ybSk7
Ci0jaWYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKLSAgICAvLyBXb3Jr
YXJvdW5kIGZvciBodHRwOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJvd3NlL1FUQlVHLTEx
MjY0Ci0gICAgLy8gUVRyYW5zZm9ybS5tYXAgZG9lc24ndCBoYW5kbGUgdGhlIE1vdmVUbyBlbGVt
ZW50IGJlY2F1c2Ugb2YgdGhlIGlzRW1wdHkgaXNzdWUKLSAgICBpZiAobV9wYXRoLmlzRW1wdHko
KSAmJiBtX3BhdGguZWxlbWVudENvdW50KCkpIHsKLSAgICAgICAgUVBvaW50RiBwb2ludCA9IHFU
cmFuc2Zvcm0ubWFwKG1fcGF0aC5jdXJyZW50UG9zaXRpb24oKSk7Ci0gICAgICAgIG1vdmVUbyhw
b2ludCk7Ci0gICAgfSBlbHNlIAotI2VuZGlmCi0gICAgICAgIG1fcGF0aCA9IHFUcmFuc2Zvcm0u
bWFwKG1fcGF0aCk7CisgICAgbV9wYXRoID0gcVRyYW5zZm9ybS5tYXAobV9wYXRoKTsKIH0KIAog
ZmxvYXQgUGF0aDo6bGVuZ3RoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvRG5zUHJlZmV0Y2hIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvRG5zUHJlZmV0Y2hIZWxwZXIuaAppbmRleCA4OTJhM2ZiLi40ZmNk
MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Ruc1By
ZWZldGNoSGVscGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9E
bnNQcmVmZXRjaEhlbHBlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBEbnNQcmVmZXRjaEhlbHBlciA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICAgICAg
UV9PQkpFQ1QKICAgICBwdWJsaWM6Ci0gICAgICAgIERuc1ByZWZldGNoSGVscGVyKCkgOiBRT2Jq
ZWN0KCksIGN1cnJlbnRMb29rdXBzKDApIHt9OworICAgICAgICBEbnNQcmVmZXRjaEhlbHBlcigp
IDogUU9iamVjdCgpLCBjdXJyZW50TG9va3VwcygwKSB7IH0KIAogICAgIHB1YmxpYyBzbG90czoK
ICAgICAgICAgdm9pZCBsb29rdXAoUVN0cmluZyBob3N0bmFtZSkKQEAgLTQyLDI2ICs0Miw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50TG9va3VwcyA+PSAx
MCkKICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGRvIG5vdCBsYXVuY2ggbW9yZSB0aGFuIDEw
IGxvb2t1cHMgYXQgdGhlIHNhbWUgdGltZQogCi0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9O
X0NIRUNLKDQsIDYsIDMpCiAgICAgICAgICAgICBjdXJyZW50TG9va3VwcysrOwogICAgICAgICAg
ICAgUUhvc3RJbmZvOjpsb29rdXBIb3N0KGhvc3RuYW1lLCB0aGlzLCBTTE9UKGxvb2tlZFVwKFFI
b3N0SW5mbykpKTsKLSNlbHNlCi0gICAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMgb25seSBuZWVk
ZWQgZm9yIFF0IHZlcnNpb25zIHRoYXQgZG8gbm90IGhhdmUKLSAgICAgICAgICAgIC8vIHRoZSBz
bWFsbCBRdCBETlMgY2FjaGUgeWV0LgotCi0gICAgICAgICAgICBRVGltZSogZW50cnlUaW1lID0g
bG9va3VwQ2FjaGUub2JqZWN0KGhvc3RuYW1lKTsKLSAgICAgICAgICAgIGlmIChlbnRyeVRpbWUg
JiYgZW50cnlUaW1lLT5lbGFwc2VkKCkgPiAzMDAqMTAwMCkgewotICAgICAgICAgICAgICAgIC8v
IGRlbGV0ZSBrbm93bGVkZ2UgYWJvdXQgbG9va3VwIGlmIGl0IGlzIGFscmVhZHkgMzAwIHNlY29u
ZHMgb2xkCi0gICAgICAgICAgICAgICAgbG9va3VwQ2FjaGUucmVtb3ZlKGhvc3RuYW1lKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIWVudHJ5VGltZSkgewotICAgICAgICAgICAgICAgIC8vIG5v
dCBpbiBjYWNoZSB5ZXQsIGNhbiBsb29rIGl0IHVwCi0gICAgICAgICAgICAgICAgUVRpbWUgKnRt
cFRpbWUgPSBuZXcgUVRpbWUoKTsKLSAgICAgICAgICAgICAgICAqdG1wVGltZSA9IFFUaW1lOjpj
dXJyZW50VGltZSgpOwotICAgICAgICAgICAgICAgIGxvb2t1cENhY2hlLmluc2VydChob3N0bmFt
ZSwgdG1wVGltZSk7Ci0gICAgICAgICAgICAgICAgY3VycmVudExvb2t1cHMrKzsKLSAgICAgICAg
ICAgICAgICBRSG9zdEluZm86Omxvb2t1cEhvc3QoaG9zdG5hbWUsIHRoaXMsIFNMT1QobG9va2Vk
VXAoUUhvc3RJbmZvKSkpOwotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGxvb2tlZFVwKGNvbnN0IFFIb3N0SW5mbyYpCkBAIC03NCw5ICs1Niw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotI2lmIFFUX1ZF
UlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDQsIDYsIDMpCi0gICAgICAgIFFDYWNoZTxRU3RyaW5n
LCBRVGltZT4gbG9va3VwQ2FjaGU7IC8vIDEwMCBlbnRyaWVzCi0jZW5kaWYKICAgICAgICAgaW50
IGN1cnJlbnRMb29rdXBzOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZS5o
CmluZGV4IDc2NmRjOTAuLjRiODI1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUu
aApAQCAtMjIsMTUgKzIyLDkgQEAKIAogI2luY2x1ZGUgPFFPYmplY3Q+CiAKLSNpZiBRVF9WRVJT
SU9OIDwgUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQotbmFtZXNwYWNlIFF0TW9iaWxpdHkgewot
Y2xhc3MgUU5ldHdvcmtDb25maWd1cmF0aW9uTWFuYWdlcjsKLX0KLSNlbHNlCiBRVF9CRUdJTl9O
QU1FU1BBQ0UKIGNsYXNzIFFOZXR3b3JrQ29uZmlndXJhdGlvbk1hbmFnZXI7CiBRVF9FTkRfTkFN
RVNQQUNFCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NiwxMSArNDAsNyBA
QCBwdWJsaWMgc2xvdHM6CiAgICAgdm9pZCBuZXR3b3JrQWNjZXNzUGVybWlzc2lvbkNoYW5nZWQo
Ym9vbCk7CiAKIHB1YmxpYzoKLSNpZiBRVF9WRVJTSU9OIDwgUVRfVkVSU0lPTl9DSEVDSyg0LCA3
LCAwKQotICAgIFF0TW9iaWxpdHk6OlFOZXR3b3JrQ29uZmlndXJhdGlvbk1hbmFnZXIqIG1fY29u
ZmlndXJhdGlvbk1hbmFnZXI7Ci0jZWxzZQogICAgIFFOZXR3b3JrQ29uZmlndXJhdGlvbk1hbmFn
ZXIqIG1fY29uZmlndXJhdGlvbk1hbmFnZXI7Ci0jZW5kaWYKICAgICBib29sIG1fb25saW5lOwog
ICAgIGJvb2wgbV9uZXR3b3JrQWNjZXNzQWxsb3dlZDsKICAgICBOZXR3b3JrU3RhdGVOb3RpZmll
ciogbV9ub3RpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvTmV0d29ya1N0YXRlTm90aWZpZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L05ldHdvcmtTdGF0ZU5vdGlmaWVyUXQuY3BwCmluZGV4IGYzZTcwMjMuLmNl
ZDUyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvTmV0
d29ya1N0YXRlTm90aWZpZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9OZXR3b3JrU3RhdGVOb3RpZmllclF0LmNwcApAQCAtMjUsMTAgKzI1LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllclByaXZhdGUuaCIKICNpbmNsdWRlICJxbmV0d29y
a2NvbmZpZ21hbmFnZXIuaCIKIAotI2lmIFFUX1ZFUlNJT04gPCBRVF9WRVJTSU9OX0NIRUNLKDQs
IDcsIDApCi11c2luZyBuYW1lc3BhY2UgUXRNb2JpbGl0eTsKLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIE5ldHdvcmtTdGF0ZU5vdGlmaWVyUHJpdmF0ZTo6TmV0d29ya1N0YXRlTm90
aWZpZXJQcml2YXRlKE5ldHdvcmtTdGF0ZU5vdGlmaWVyKiBub3RpZmllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFu
ZGxlci5jcHAKaW5kZXggNjFmZTk2Yy4uYmMxODI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTQxLDE2ICs0MSw2IEBACiAjaW5jbHVkZSA8UURlYnVnPgogI2luY2x1ZGUgPFFDb3JlQXBw
bGljYXRpb24+CiAKLS8vIFdoYXQgdHlwZSBvZiBjb25uZWN0aW9uIHNob3VsZCBiZSB1c2VkIGZv
ciB0aGUgc2lnbmFscyBvZiB0aGUKLS8vIFFOZXR3b3JrUmVwbHk/IFRoaXMgZGVwZW5kcyBvbiBp
ZiBRdCBoYXMgYSBidWdmaXggZm9yIHRoaXMgb3Igbm90LgotLy8gSXQgaXMgZml4ZWQgaW4gUXQg
NC42LjMuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTMK
LS8vIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY3NTUKLSNp
ZiBRVF9WRVJTSU9OID4gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAyKQotI2RlZmluZSBTSUdOQUxf
Q09OTiBRdDo6RGlyZWN0Q29ubmVjdGlvbgotI2Vsc2UKLSNkZWZpbmUgU0lHTkFMX0NPTk4gUXQ6
OlF1ZXVlZENvbm5lY3Rpb24KLSNlbmRpZgotCiAvLyBJbiBRdCA0LjgsIHRoZSBhdHRyaWJ1dGUg
Zm9yIHNlbmRpbmcgYSByZXF1ZXN0IHN5bmNocm9ub3VzbHkgd2lsbCBiZSBtYWRlIHB1YmxpYywK
IC8vIGZvciBub3csIHVzZSB0aGlzIGhhY2tpc2ggc29sdXRpb24gZm9yIHNldHRpbmcgdGhlIGlu
dGVybmFsIGF0dHJpYnV0ZS4KIGNvbnN0IFFOZXR3b3JrUmVxdWVzdDo6QXR0cmlidXRlIGdTeW5j
aHJvbm91c05ldHdvcmtSZXF1ZXN0QXR0cmlidXRlID0gc3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXF1
ZXN0OjpBdHRyaWJ1dGU+KFFOZXR3b3JrUmVxdWVzdDo6SHR0cFBpcGVsaW5pbmdXYXNVc2VkQXR0
cmlidXRlICsgNyk7CkBAIC0xNzIsMTAgKzE2Miw4IEBAIFN0cmluZyBRTmV0d29ya1JlcGx5SGFu
ZGxlcjo6aHR0cE1ldGhvZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiUFVUIjsKICAgICBjYXNl
IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6RGVsZXRlT3BlcmF0aW9uOgogICAgICAgICByZXR1cm4g
IkRFTEVURSI7Ci0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAg
ICAgY2FzZSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkN1c3RvbU9wZXJhdGlvbjoKICAgICAgICAg
cmV0dXJuIG1fcmVzb3VyY2VIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBNZXRob2QoKTsKLSNl
bmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm4gIkdFVCI7CkBAIC0yMDgsMTMgKzE5Niw4IEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVy
OjpRTmV0d29ya1JlcGx5SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBs
b2FkCiAgICAgICAgIG1fbWV0aG9kID0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpQdXRPcGVyYXRp
b247CiAgICAgZWxzZSBpZiAoci5odHRwTWV0aG9kKCkgPT0gIkRFTEVURSIpCiAgICAgICAgIG1f
bWV0aG9kID0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpEZWxldGVPcGVyYXRpb247Ci0jaWYgUVRf
VkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAgZWxzZQogICAgICAgICBt
X21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Q3VzdG9tT3BlcmF0aW9uOwotI2Vsc2UK
LSAgICBlbHNlCi0gICAgICAgIG1fbWV0aG9kID0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpVbmtu
b3duT3BlcmF0aW9uOwotI2VuZGlmCiAKICAgICBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCA9
IDA7CiAgICAgaWYgKG1fcmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCktPm1fY29udGV4dCkK
QEAgLTM5MywxMyArMzc2LDggQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3Bv
bnNlSWZOZWVkZWQoKQogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChtX3JlcGx5
LT5hdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIdHRwUmVhc29uUGhyYXNlQXR0cmlidXRlKS50
b0J5dGVBcnJheSgpLmNvbnN0RGF0YSgpKTsKIAogICAgICAgICAvLyBBZGQgcmVtYWluaW5nIGhl
YWRlcnMuCi0jaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJTSU9OX0NIRUNLKDQsIDcsIDApCiAgICAg
ICAgIGZvcmVhY2ggKGNvbnN0IFFOZXR3b3JrUmVwbHk6OlJhd0hlYWRlclBhaXImIHBhaXIsIG1f
cmVwbHktPnJhd0hlYWRlclBhaXJzKCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGQoUVN0cmluZzo6ZnJvbUFzY2lpKHBhaXIuZmlyc3QpLCBRU3RyaW5nOjpmcm9tQXNj
aWkocGFpci5zZWNvbmQpKTsKLSNlbHNlCi0gICAgICAgIGZvcmVhY2ggKGNvbnN0IFFCeXRlQXJy
YXkmIGhlYWRlck5hbWUsIG1fcmVwbHktPnJhd0hlYWRlckxpc3QoKSkKLSAgICAgICAgICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChRU3RyaW5nOjpmcm9tQXNjaWkoaGVhZGVyTmFtZSks
IFFTdHJpbmc6OmZyb21Bc2NpaShtX3JlcGx5LT5yYXdIZWFkZXIoaGVhZGVyTmFtZSkpKTsKLSNl
bmRpZgogICAgIH0KIAogICAgIFFVcmwgcmVkaXJlY3Rpb24gPSBtX3JlcGx5LT5hdHRyaWJ1dGUo
UU5ldHdvcmtSZXF1ZXN0OjpSZWRpcmVjdGlvblRhcmdldEF0dHJpYnV0ZSkudG9VcmwoKTsKQEAg
LTUzOCwxMSArNTE2LDkgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQoKQogICAg
ICAgICAgICAgbV9yZXBseSA9IG1hbmFnZXItPmRlbGV0ZVJlc291cmNlKG1fcmVxdWVzdCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lP
Tl9DSEVDSyg0LCA3LCAwKQogICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Q3Vz
dG9tT3BlcmF0aW9uOgogICAgICAgICAgICAgbV9yZXBseSA9IG1hbmFnZXItPnNlbmRDdXN0b21S
ZXF1ZXN0KG1fcmVxdWVzdCwgbV9yZXNvdXJjZUhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cE1l
dGhvZCgpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgogICAg
ICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6VW5rbm93bk9wZXJhdGlvbjogewogICAg
ICAgICAgICAgbV9yZXBseSA9IDA7CiAgICAgICAgICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCog
Y2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CkBAIC01NjMsMjYgKzUzOSwyMSBA
QCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzdGFydCgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChmaW5pc2hlZCgpKSwKLSAgICAgICAg
ICAgIHRoaXMsIFNMT1QoZmluaXNoKCkpLCBTSUdOQUxfQ09OTik7CisgICAgY29ubmVjdChtX3Jl
cGx5LCBTSUdOQUwoZmluaXNoZWQoKSksIHRoaXMsIFNMT1QoZmluaXNoKCkpKTsKIAogICAgIC8v
IEZvciBodHRwKHMpIHdlIGtub3cgdGhhdCB0aGUgaGVhZGVycyBhcmUgY29tcGxldGUgdXBvbiBt
ZXRhRGF0YUNoYW5nZWQoKSBlbWlzc2lvbiwgc28gd2UKICAgICAvLyBjYW4gc2VuZCB0aGUgcmVz
cG9uc2UgYXMgZWFybHkgYXMgcG9zc2libGUKICAgICBpZiAoc2NoZW1lID09IFFMYXRpbjFTdHJp
bmcoImh0dHAiKSB8fCBzY2hlbWUgPT0gUUxhdGluMVN0cmluZygiaHR0cHMiKSkKLSAgICAgICAg
Y29ubmVjdChtX3JlcGx5LCBTSUdOQUwobWV0YURhdGFDaGFuZ2VkKCkpLAotICAgICAgICAgICAg
ICAgIHRoaXMsIFNMT1Qoc2VuZFJlc3BvbnNlSWZOZWVkZWQoKSksIFNJR05BTF9DT05OKTsKKyAg
ICAgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwobWV0YURhdGFDaGFuZ2VkKCkpLCB0aGlzLCBT
TE9UKHNlbmRSZXNwb25zZUlmTmVlZGVkKCkpKTsKIAotICAgIGNvbm5lY3QobV9yZXBseSwgU0lH
TkFMKHJlYWR5UmVhZCgpKSwKLSAgICAgICAgICAgIHRoaXMsIFNMT1QoZm9yd2FyZERhdGEoKSks
IFNJR05BTF9DT05OKTsKKyAgICBjb25uZWN0KG1fcmVwbHksIFNJR05BTChyZWFkeVJlYWQoKSks
IHRoaXMsIFNMT1QoZm9yd2FyZERhdGEoKSkpOwogCiAgICAgaWYgKG1fcmVzb3VyY2VIYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnJlcG9ydFVwbG9hZFByb2dyZXNzKCkpIHsKLSAgICAgICAgY29ubmVj
dChtX3JlcGx5LCBTSUdOQUwodXBsb2FkUHJvZ3Jlc3MocWludDY0LCBxaW50NjQpKSwKLSAgICAg
ICAgICAgICAgICB0aGlzLCBTTE9UKHVwbG9hZFByb2dyZXNzKHFpbnQ2NCwgcWludDY0KSksIFNJ
R05BTF9DT05OKTsKKyAgICAgICAgY29ubmVjdChtX3JlcGx5LCBTSUdOQUwodXBsb2FkUHJvZ3Jl
c3MocWludDY0LCBxaW50NjQpKSwgdGhpcywgU0xPVCh1cGxvYWRQcm9ncmVzcyhxaW50NjQsIHFp
bnQ2NCkpKTsKICAgICB9CiAKICAgICAvLyBNYWtlIHRoaXMgYSBkaXJlY3QgZnVuY3Rpb24gY2Fs
bCBvbmNlIHdlIHJlcXVpcmUgNC42LjErLgotICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHByb2Nl
c3NRdWV1ZWRJdGVtcygpKSwKLSAgICAgICAgICAgIHRoaXMsIFNMT1Qoc2VuZFF1ZXVlZEl0ZW1z
KCkpLCBTSUdOQUxfQ09OTik7CisgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwocHJvY2Vzc1F1ZXVl
ZEl0ZW1zKCkpLCB0aGlzLCBTTE9UKHNlbmRRdWV1ZWRJdGVtcygpKSk7CiB9CiAKIHZvaWQgUU5l
dHdvcmtSZXBseUhhbmRsZXI6OnJlc2V0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3RRdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcAppbmRleCA3ZTE2
MmVkLi40OThjOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcApAQCAtODMsMTMgKzgzLDExIEBAIFFOZXR3
b3JrUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVlc3QoUU9iamVjdCogb3Jp
Z2luYXRpbmdGcmFtZSkgY29uCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotI2lmIFFUX1ZFUlNJ
T04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGlmICghYWxsb3dDb29raWVzKCkp
IHsKICAgICAgICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpDb29raWVM
b2FkQ29udHJvbEF0dHJpYnV0ZSwgUU5ldHdvcmtSZXF1ZXN0OjpNYW51YWwpOwogICAgICAgICBy
ZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNvb2tpZVNhdmVDb250cm9sQXR0
cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6Ok1hbnVhbCk7CiAgICAgICAgIHJlcXVlc3Quc2V0QXR0
cmlidXRlKFFOZXR3b3JrUmVxdWVzdDo6QXV0aGVudGljYXRpb25SZXVzZUF0dHJpYnV0ZSwgUU5l
dHdvcmtSZXF1ZXN0OjpNYW51YWwpOwogICAgIH0KLSNlbmRpZgogCiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwCmlu
ZGV4IGNhOGM2ZGQuLmNjNjU0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Jl
bmRlclRoZW1lUXQuY3BwCkBAIC0xMzY4LDcgKzEzNjgsNiBAQCBib29sIFJlbmRlclRoZW1lUXQ6
OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbgogCiAgICAgcGFpbnRNZWRpYUJhY2tncm91bmQocC5wYWludGVyLCByKTsKIAotI2lmIFFU
X1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGlmIChNZWRpYVBsYXll
ciogcGxheWVyID0gbWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkgewogICAgICAgICAvLyBHZXQgdGhl
IGJ1ZmZlcmVkIHBhcnRzIG9mIHRoZSBtZWRpYQogICAgICAgICBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkID0gcGxheWVyLT5idWZmZXJlZCgpOwpAQCAtMTM4Niw3ICsxMzg1LDYgQEAg
Ym9vbCBSZW5kZXJUaGVtZVF0OjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5j
cHAKaW5kZXggNzRhMmJkMi4uYjRkYWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3Bw
CkBAIC04NzcsMTEgKzg3Nyw5IEBAIHZvaWQgUVdlYkZyYW1lOjpsb2FkKGNvbnN0IFFOZXR3b3Jr
UmVxdWVzdCAmcmVxLAogICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6RGVsZXRl
T3BlcmF0aW9uOgogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJERUxFVEUiKTsK
ICAgICAgICAgICAgIGJyZWFrOwotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0
LCA3LCAwKQogICAgICAgICBjYXNlIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6Q3VzdG9tT3BlcmF0
aW9uOgogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHJlcS5hdHRyaWJ1dGUoUU5l
dHdvcmtSZXF1ZXN0OjpDdXN0b21WZXJiQXR0cmlidXRlKS50b0J5dGVBcnJheSgpLmNvbnN0RGF0
YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCiAgICAgICAgIGNhc2UgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyOjpVbmtub3duT3BlcmF0aW9uOgogICAgICAgICAgICAgLy8gZWg/CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBlMWI3YjllLi4z
NTViMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0zMTUsOSArMzE1LDYgQEAg
UVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgIFNjcmlw
dENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9hZFBv
bGljeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRT
dWJzdGl0dXRlRGF0YSk7Ci0jaWYgUVRfVkVSU0lPTiA8IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywg
MCkKLSAgICBXZWJDb3JlOjpGb250OjpzZXRDb2RlUGF0aChXZWJDb3JlOjpGb250OjpDb21wbGV4
KTsKLSNlbmRpZgogCiAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4IDUzMTA0MjYuLmQ5YmIxNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtNDc3LDI1ICs0NzcsMTYg
QEAgUVdlYlNldHRpbmdzOjpRV2ViU2V0dGluZ3MoKQogICAgIGQtPmZvbnRGYW1pbGllcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpTdGFuZGFyZEZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1pbHko
KSk7CiAgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OlNlcmlmRm9udCwg
ZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKIAotI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVS
U0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGludChRRm9udDo6
RmFudGFzeSk7CiAgICAgZC0+Zm9udEZhbWlsaWVzLmluc2VydChRV2ViU2V0dGluZ3M6OkZhbnRh
c3lGb250LCBkZWZhdWx0Rm9udC5kZWZhdWx0RmFtaWx5KCkpOwogCiAgICAgZGVmYXVsdEZvbnQu
c2V0U3R5bGVIaW50KFFGb250OjpDdXJzaXZlKTsKICAgICBkLT5mb250RmFtaWxpZXMuaW5zZXJ0
KFFXZWJTZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1pbHkoKSk7
Ci0jZWxzZQotICAgIGQtPmZvbnRGYW1pbGllcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpGYW50YXN5
Rm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKLSAgICBkLT5mb250RmFtaWxpZXMu
aW5zZXJ0KFFXZWJTZXR0aW5nczo6Q3Vyc2l2ZUZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1p
bHkoKSk7Ci0jZW5kaWYKIAogICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGludChRRm9udDo6U2Fu
c1NlcmlmKTsKICAgICBkLT5mb250RmFtaWxpZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6U2Fuc1Nl
cmlmRm9udCwgZGVmYXVsdEZvbnQuZGVmYXVsdEZhbWlseSgpKTsKIAotI2lmIFFUX1ZFUlNJT04g
Pj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA3LCAwKQogICAgIGRlZmF1bHRGb250LnNldFN0eWxlSGlu
dChRRm9udDo6TW9ub3NwYWNlKTsKLSNlbHNlCi0gICAgZGVmYXVsdEZvbnQuc2V0U3R5bGVIaW50
KFFGb250OjpUeXBlV3JpdGVyKTsKLSNlbmRpZgogICAgIGQtPmZvbnRGYW1pbGllcy5pbnNlcnQo
UVdlYlNldHRpbmdzOjpGaXhlZEZvbnQsIGRlZmF1bHRGb250LmRlZmF1bHRGYW1pbHkoKSk7CiAK
ICAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OkF1dG9Mb2FkSW1hZ2VzLCB0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZThhMjNkZi4uMjQ1YWJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMS0wMy0xOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBSZW1vdmUgc3VwcG9ydCBmb3IgUXQgNC42CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjcxMgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5j
cHA6CisgICAgICAgIChRV2ViRnJhbWU6OmxvYWQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OlFXZWJTZXR0
aW5ncyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudFF0Ojpwb3NpdGlvblVwZGF0ZWQp
OgorCiAyMDExLTAzLTE3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRRdC5jcHAKaW5kZXggMTA4YjcwNS4u
M2MzODJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9s
b2NhdGlvbkNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0dlb2xvY2F0aW9uQ2xpZW50UXQuY3BwCkBAIC04MiwxMiArODIsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50UXQ6OnBvc2l0aW9uVXBkYXRlZChjb25zdCBRR2VvUG9zaXRpb25JbmZvICZnZW9Q
b3NpdGlvbikKICAgICBib29sIHByb3ZpZGVzU3BlZWQgPSBnZW9Qb3NpdGlvbi5oYXNBdHRyaWJ1
dGUoUUdlb1Bvc2l0aW9uSW5mbzo6R3JvdW5kU3BlZWQpOwogICAgIGRvdWJsZSBzcGVlZCA9IGdl
b1Bvc2l0aW9uLmF0dHJpYnV0ZShRR2VvUG9zaXRpb25JbmZvOjpHcm91bmRTcGVlZCk7CiAKLSNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNywgMCkKICAgICBkb3VibGUgdGlt
ZVN0YW1wSW5TZWNvbmRzID0gZ2VvUG9zaXRpb24udGltZXN0YW1wKCkudG9NU2Vjc1NpbmNlRXBv
Y2goKSAvIDEwMDA7Ci0jZWxzZQotICAgIFFEYXRlVGltZSBkYXRldGltZSA9IGdlb1Bvc2l0aW9u
LnRpbWVzdGFtcCgpOwotICAgIGRvdWJsZSB0aW1lU3RhbXBJblNlY29uZHMgPSAoZGF0ZXRpbWUu
dG9UaW1lX3QoKSArIGRhdGV0aW1lLnRpbWUoKS5tc2VjKCkpIC8gMTAwMDsKLSNlbmRpZgogCiAg
ICAgbV9sYXN0UG9zaXRpb24gPSBHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGUodGltZVN0YW1w
SW5TZWNvbmRzLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5LCBwcm92aWRlc0FsdGl0dWRlLCBhbHRp
dHVkZSwK
</data>
<flag name="review"
          id="78505"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>