<?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>123168</bug_id>
          
          <creation_ts>2013-10-22 12:40:54 -0700</creation_ts>
          <short_desc>Rename some line box functions to be just about lines</short_desc>
          <delta_ts>2013-10-22 14:02:21 -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>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942381</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-22 12:40:54 -0700</bug_when>
    <thetext>firstLineBoxBaseline -&gt; firstLineBaseline
hasInlineBoxChildren -&gt; hasLines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942387</commentid>
    <comment_count>1</comment_count>
      <attachid>214878</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-22 13:10:54 -0700</bug_when>
    <thetext>Created attachment 214878
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942394</commentid>
    <comment_count>2</comment_count>
      <attachid>214878</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2013-10-22 13:31:32 -0700</bug_when>
    <thetext>Comment on attachment 214878
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942403</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-22 14:02:21 -0700</bug_when>
    <thetext>https://trac.webkit.org/r157810</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214878</attachid>
            <date>2013-10-22 13:10:54 -0700</date>
            <delta_ts>2013-10-22 13:31:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>has-lines.patch</filename>
            <type>text/plain</type>
            <size>33594</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTEwLTIyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgc29tZSBsaW5lIGJv
eCBmdW5jdGlvbnMgdG8gYmUganVzdCBhYm91dCBsaW5lcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZmlyc3RMaW5lQm94QmFzZWxpbmUgLT4gZmlyc3RM
aW5lQmFzZWxpbmUKKyAgICAgICAgaGFzSW5saW5lQm94Q2hpbGRyZW4gLT4gaGFzTGluZXMKKyAg
ICAgICAgCisgICAgICAgIEFsc28gdXNlIGhhc0xpbmVzIGluIGEgYnVuY2ggb2YgcGxhY2VzIHdo
ZXJlIGZpcnN0TGluZUJveCgpIHdhcyB1c2VkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAg
ICAgCisgICAgICAgICAgICBBbHNvIHVzZSBoYXNSZW5kZXJlZFRleHQoKSBpbnN0ZWFkIG9mIGZp
cnN0VGV4dEJveCgpCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6
CisgICAgICAgIAorICAgICAgICAgICAgRml4IG5hbWVzcGFjZS4KKwogMjAxMy0xMC0yMiAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGUgTGF5
ZXIgVHJlZTogU3VwcG9ydCBoYXJkd2FyZSBhY2NlbGVyYXRlZCBmaWx0ZXJzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNjYsOCArMTE2Niw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0
ZUEKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CiAgICAgICAgIGlmIChwYXJlbnQgJiYgKHBhcmVudC0+aXNNZW51SXRlbSgpIHx8
IHBhcmVudC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBNZW51QnV0dG9uUm9sZSkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgUmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVu
ZGVyVGV4dChtX3JlbmRlcmVyKTsKLSAgICAgICAgaWYgKCFyZW5kZXJUZXh0LT5maXJzdFRleHRC
b3goKSkKKyAgICAgICAgYXV0byYgcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dCgqbV9yZW5kZXJl
cik7CisgICAgICAgIGlmICghcmVuZGVyVGV4dC5oYXNSZW5kZXJlZFRleHQoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIC8vIHN0YXRpYyB0ZXh0IGJlbmVhdGggVGV4dENv
bnRyb2xzIGlzIHJlcG9ydGVkIGFsb25nIHdpdGggdGhlIHRleHQgY29udHJvbCB0ZXh0IHNvIGl0
J3MgaWdub3JlZC4KQEAgLTExNzcsNyArMTE3Nyw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y29tcHV0ZUEKICAgICAgICAgfQogCiAgICAgICAgIC8vIHRleHQgZWxlbWVudHMg
dGhhdCBhcmUganVzdCBlbXB0eSB3aGl0ZXNwYWNlIHNob3VsZCBub3QgYmUgcmV0dXJuZWQKLSAg
ICAgICAgcmV0dXJuIHJlbmRlclRleHQtPnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
OworICAgICAgICByZXR1cm4gcmVuZGVyVGV4dC50ZXh0KCktPmNvbnRhaW5zT25seVdoaXRlc3Bh
Y2UoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzSGVhZGluZygpKQpAQCAtMTIzMSw3ICsxMjMx
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobV9yZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zsb3co
KSAmJiBtX3JlbmRlcmVyLT5jaGlsZHJlbklubGluZSgpICYmICFjYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpKQotICAgICAgICByZXR1cm4gIXRvUmVuZGVyQmxvY2tGbG93KG1fcmVuZGVyZXIpLT5maXJz
dExpbmVCb3goKSAmJiAhbW91c2VCdXR0b25MaXN0ZW5lcigpOworICAgICAgICByZXR1cm4gIXRv
UmVuZGVyQmxvY2tGbG93KG1fcmVuZGVyZXIpLT5oYXNMaW5lcygpICYmICFtb3VzZUJ1dHRvbkxp
c3RlbmVyKCk7CiAgICAgCiAgICAgLy8gaWdub3JlIGltYWdlcyBzZWVtaW5nbHkgdXNlZCBhcyBz
cGFjZXJzCiAgICAgaWYgKGlzSW1hZ2UoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMTU3ODA1KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUsNyAr
NDY1LDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94OjpnZXRFbXBoYXNpc01hcmtQb3NpdAogICAgIFJl
bmRlclJ1YnlUZXh0KiBydWJ5VGV4dCA9IHRvUmVuZGVyUnVieVJ1bihjb250YWluaW5nQmxvY2st
PnBhcmVudCgpKS0+cnVieVRleHQoKTsKIAogICAgIC8vIFRoZSBlbXBoYXNpcyBtYXJrcyBvdmVy
IGFyZSBzdXBwcmVzc2VkIG9ubHkgaWYgdGhlcmUgaXMgYSBydWJ5IHRleHQgYm94IGFuZCBpdCBu
b3QgZW1wdHkuCi0gICAgcmV0dXJuICFydWJ5VGV4dCB8fCAhcnVieVRleHQtPmZpcnN0TGluZUJv
eCgpOworICAgIHJldHVybiAhcnVieVRleHQgfHwgIXJ1YnlUZXh0LT5oYXNMaW5lcygpOwogfQog
CiBlbnVtIFJvdGF0aW9uRGlyZWN0aW9uIHsgQ291bnRlcmNsb2Nrd2lzZSwgQ2xvY2t3aXNlIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9u
IDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOTUsNyArMTE5NSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6OmlzU2Vs
ZkNvbGxhcHNpbmdCbG9jaygKICAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGhhcyBpbmxpbmUgY2hp
bGRyZW4sIHNlZSBpZiB3ZSBnZW5lcmF0ZWQgYW55IGxpbmUgYm94ZXMuICBJZiB3ZSBoYXZlIGFu
eQogICAgICAgICAvLyBsaW5lIGJveGVzLCB0aGVuIHdlIGNhbid0IGJlIHNlbGYtY29sbGFwc2lu
Zywgc2luY2Ugd2UgaGF2ZSBjb250ZW50LgogICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkK
LSAgICAgICAgICAgIHJldHVybiAhaGFzSW5saW5lQm94Q2hpbGRyZW4oKTsKKyAgICAgICAgICAg
IHJldHVybiAhaGFzTGluZXMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdoZXRoZXIgb3Igbm90
IHdlIGNvbGxhcHNlIGlzIGRlcGVuZGVudCBvbiB3aGV0aGVyIGFsbCBvdXIgbm9ybWFsIGZsb3cg
Y2hpbGRyZW4KICAgICAgICAgLy8gYXJlIGFsc28gc2VsZi1jb2xsYXBzaW5nLgpAQCAtNDYxNywx
NCArNDYxNywxNCBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjptaW5MaW5lSGVpZ2h0Rm9yCiAg
ICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0
KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1pbnQg
UmVuZGVyQmxvY2s6OmZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QKK2ludCBSZW5kZXJCbG9j
azo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9v
dCgpICYmICFpc1J1YnlSdW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgZm9yIChSZW5k
ZXJCb3gqIGN1cnIgPSBmaXJzdENoaWxkQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0U2li
bGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghY3Vyci0+aXNGbG9hdGluZ09yT3V0T2ZGbG93UG9z
aXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQm94
QmFzZWxpbmUoKTsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBjdXJyLT5maXJzdExpbmVCYXNl
bGluZSgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3Vyci0+bG9naWNhbFRvcCgpICsgcmVzdWx0OyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNv
b3JkaW5hdGUgc3BhY2UuCiAgICAgICAgIH0KQEAgLTQ2MzksMTcgKzQ2MzksMTcgQEAgaW50IFJl
bmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbgogICAgICAgICByZXR1cm4gLTE7CiAK
ICAgICBib29sIGhhdmVOb3JtYWxGbG93Q2hpbGQgPSBmYWxzZTsKLSAgICBmb3IgKFJlbmRlckJv
eCogY3VyciA9IGxhc3RDaGlsZEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldmlvdXNTaWJs
aW5nQm94KCkpIHsKLSAgICAgICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGhhdmVOb3JtYWxGbG93Q2hpbGQgPSB0cnVlOwotICAg
ICAgICAgICAgaW50IHJlc3VsdCA9IGN1cnItPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVj
dGlvbik7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ICE9IC0xKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQ7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29v
cmRpbmF0ZSBzcGFjZS4KLSAgICAgICAgfQorICAgIGZvciAoYXV0byBib3ggPSBsYXN0Q2hpbGRC
b3goKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzU2libGluZ0JveCgpKSB7CisgICAgICAgIGlm
IChib3gtPmlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBoYXZlTm9ybWFsRmxvd0NoaWxkID0gdHJ1ZTsKKyAgICAgICAgaW50
IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPSAtMSkKKyAgICAgICAgICAgIHJldHVybiBib3gtPmxvZ2ljYWxUb3Ao
KSArIHJlc3VsdDsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNlLgogICAgIH0K
IAogICAgIGlmICghaGF2ZU5vcm1hbEZsb3dDaGlsZCAmJiBoYXNMaW5lSWZFbXB0eSgpKSB7Ci0g
ICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkt
PmZvbnRNZXRyaWNzKCk7CisgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5
bGUoKS0+Zm9udE1ldHJpY3MoKTsKICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudCgp
CiAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlv
bk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgogICAgICAg
ICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSAr
IHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTU3ODA1KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1OCw3ICs0NTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgT1ZFUlJJREU7CiAgICAgdm9pZCBhZGp1c3RJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzRm9yQ29sdW1ucyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGludCBmaXJzdExp
bmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBEZWxh
eSB1cGRhdGUgc2Nyb2xsYmFyIHVudGlsIGZpbmlzaERlbGF5UmVwYWludCgpIHdpbGwgYmUKQEAg
LTU0MSw3ICs1NDEsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGZD
b2xsYXBzaW5nQmxvY2soKSBjb25zdCBPVkVSUklERSBGSU5BTDsKICAgICAvLyBGSVhNRS1CTE9D
S0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0
byBSZW5kZXJCbG9ja0Zsb3cKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSW5saW5lQm94Q2hpbGRyZW4o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVy
ZXJNYXBzKFJlbmRlckJveCogZGVzY2VuZGFudCwgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiYsIFRy
YWNrZWRDb250YWluZXJNYXAqJik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVRyYWNrZWRS
ZW5kZXJlck1hcHMoUmVuZGVyQm94KiBkZXNjZW5kYW50LCBUcmFja2VkRGVzY2VuZGFudHNNYXAq
JiwgVHJhY2tlZENvbnRhaW5lck1hcComKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4
OCwxMyArMjQ4OCwxMyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bWFya0xpbmVzRGlydHlJbkJs
CiAgICAgfQogfQogCi1pbnQgUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCb3hCYXNlbGluZSgp
IGNvbnN0CitpbnQgUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7
CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsKKyAgICAgICAgcmV0dXJuIFJlbmRl
ckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogCiAgICAgaWYgKGZpcnN0TGluZUJveCgpKQog
ICAgICAgICByZXR1cm4gZmlyc3RMaW5lQm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0
eWxlKCktPmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUo
KSk7CkBAIC0yNTEwLDE5ICsyNTEwLDE4IEBAIGludCBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJs
b2NrQmFzZWxpbmUKICAgICBpZiAoIWNoaWxkcmVuSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKIAotICAgIGlm
ICghZmlyc3RMaW5lQm94KCkgJiYgaGFzTGluZUlmRW1wdHkoKSkgeworICAgIGlmICghaGFzTGlu
ZXMoKSkgeworICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCisgICAgICAgICAgICByZXR1
cm4gLTE7CiAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZpcnN0TGlu
ZVN0eWxlKCktPmZvbnRNZXRyaWNzKCk7CiAgICAgICAgIHJldHVybiBmb250TWV0cmljcy5hc2Nl
bnQoKQogICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKICAg
ICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpOwogICAg
IH0KIAotICAgIGlmIChsYXN0TGluZUJveCgpKSB7Ci0gICAgICAgIGJvb2wgaXNGaXJzdExpbmUg
PSBsYXN0TGluZUJveCgpID09IGZpcnN0TGluZUJveCgpOwotICAgICAgICBSZW5kZXJTdHlsZSog
c3R5bGUgPSBpc0ZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwot
ICAgICAgICByZXR1cm4gbGFzdExpbmVCb3goKS0+bG9naWNhbFRvcCgpICsgc3R5bGUtPmZvbnRN
ZXRyaWNzKCkuYXNjZW50KGxhc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIC0xOworICAgIGJvb2wgaXNGaXJzdExpbmUgPSBsYXN0TGluZUJveCgpID09IGZp
cnN0TGluZUJveCgpOworICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGlzRmlyc3RMaW5lID8gZmly
c3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7CisgICAgcmV0dXJuIGxhc3RMaW5lQm94KCkt
PmxvZ2ljYWxUb3AoKSArIHN0eWxlLT5mb250TWV0cmljcygpLmFzY2VudChsYXN0Um9vdEJveCgp
LT5iYXNlbGluZVR5cGUoKSk7CiB9CiAKIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxvdzo6aW5saW5l
U2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYg
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJv
b3RCbG9jaywKQEAgLTI1MzIsNyArMjUzMSw3IEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrRmxvdzo6
aW5saW5lU2VsZWN0aW8KIAogICAgIGJvb2wgY29udGFpbnNTdGFydCA9IHNlbGVjdGlvblN0YXRl
KCkgPT0gU2VsZWN0aW9uU3RhcnQgfHwgc2VsZWN0aW9uU3RhdGUoKSA9PSBTZWxlY3Rpb25Cb3Ro
OwogCi0gICAgaWYgKCFmaXJzdExpbmVCb3goKSkgeworICAgIGlmICghaGFzTGluZXMoKSkgewog
ICAgICAgICBpZiAoY29udGFpbnNTdGFydCkgewogICAgICAgICAgICAgLy8gR28gYWhlYWQgYW5k
IHVwZGF0ZSBvdXIgbGFzdExvZ2ljYWxUb3AgdG8gYmUgdGhlIGJvdHRvbSBvZiB0aGUgYmxvY2su
ICA8aHI+cyBvciBlbXB0eSBibG9ja3Mgd2l0aCBoZWlnaHQgY2FuIHRyaXAgdGhpcwogICAgICAg
ICAgICAgLy8gY2FzZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmgJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDcgKzMwNyw3IEBAIHB1Ymxp
YzoKICAgICBSb290SW5saW5lQm94KiBmaXJzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxSb290SW5saW5lQm94Kj4oZmlyc3RMaW5lQm94KCkpOyB9CiAgICAgUm9vdElubGlu
ZUJveCogbGFzdFJvb3RCb3goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSb290SW5saW5l
Qm94Kj4obGFzdExpbmVCb3goKSk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbmxpbmVCb3hD
aGlsZHJlbigpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIGZpcnN0TGluZUJveCgpOyB9
CisgICAgdmlydHVhbCBib29sIGhhc0xpbmVzKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gZmlyc3RMaW5lQm94KCk7IH0KIAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBjb21wdXRp
bmcgbGluZSBjb3VudHMgYW5kIGhlaWdodHMgZm9yIGxpbmUgY291bnRzLgogICAgIFJvb3RJbmxp
bmVCb3gqIGxpbmVBdEluZGV4KGludCkgY29uc3Q7CkBAIC0zNjQsNyArMzY0LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKIAotICAgIHZpcnR1YWwg
aW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBp
bnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGludCBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBPVkVSUklERTsKIAog
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9u
IDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBSZW5kZXJMYXll
ciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiAtMTsgfQorICAgIHZp
cnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gLTE7IH0KICAgICB2
aXJ0dWFsIGludCBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7
IHJldHVybiAtMTsgfSAvLyBSZXR1cm5zIC0xIGlmIHdlIHNob3VsZCBza2lwIHRoaXMgYm94IHdo
ZW4gY29tcHV0aW5nIHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCiAKICAgICBib29s
IHNocmlua1RvQXZvaWRGbG9hdHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZp
c2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKIAogICAgICAgICAgICAgLy8gVXBk
YXRlIG91ciBoZWlnaHQgYW5kIG92ZXJmbG93IGhlaWdodC4KICAgICAgICAgICAgIGlmIChzdHls
ZSgpLT5ib3hBbGlnbigpID09IEJCQVNFTElORSkgewotICAgICAgICAgICAgICAgIExheW91dFVu
aXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICAg
ICAgICAgICAgICBpZiAoYXNjZW50ID09IC0xKQogICAgICAgICAgICAgICAgICAgICBhc2NlbnQg
PSBjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCk7CiAgICAgICAgICAgICAg
ICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lk
IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0CiAgICAgICAgICAgICAgICAgICAg
IGNoaWxkWSArPSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBtYXg8TGF5b3V0VW5pdD4oMCwgKGNvbnRl
bnRIZWlnaHQoKSAtIChjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luSGVpZ2h0KCkpKSAv
IDIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEJC
QVNFTElORTogewotICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxk
LT5maXJzdExpbmVCb3hCYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGFzY2VudCA9IGNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoYXNjZW50ID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgYXNjZW50ID0gY2hp
bGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRvbSgpOwogICAgICAgICAgICAgICAgICAg
ICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAxNTc4MDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplZEJhc2VsaW5lRnJv
bUNvbnRlbgogCiBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1v
ZGUpIGNvbnN0CiB7Ci0gICAgaW50IGJhc2VsaW5lID0gZmlyc3RMaW5lQm94QmFzZWxpbmUoKTsK
KyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmIChiYXNlbGlu
ZSA9PSAtMSkKICAgICAgICAgYmFzZWxpbmUgPSBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRl
bnRCb3godGhpcywgZGlyZWN0aW9uKTsKIApAQCAtMjQ5LDcgKzI0OSw3IEBAIGludCBSZW5kZXJG
bGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbigKICAgICByZXR1cm4gYmFzZWxpbmUgKyBtYXJn
aW5Bc2NlbnQ7CiB9CiAKLWludCBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQm94QmFzZWxp
bmUoKSBjb25zdAoraW50IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgfHwgbV9udW1iZXJPZkluRmxvd0No
aWxkcmVuT25GaXJzdExpbmUgPD0gMCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjc4LDcgKzI3
OCw3IEBAIGludCBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQm94QmFzZWwKICAgICBpZiAo
aXNDb2x1bW5GbG93KCkgJiYgIWhhc09ydGhvZ29uYWxGbG93KGJhc2VsaW5lQ2hpbGQpKQogICAg
ICAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnRGb3JDaGlsZChiYXNlbGluZUNoaWxkKSArIGJhc2Vs
aW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKTsKIAotICAgIGludCBiYXNlbGluZSA9IGJhc2VsaW5lQ2hp
bGQtPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAgaW50IGJhc2VsaW5lID0gYmFzZWxpbmVD
aGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICBpZiAoYmFzZWxpbmUgPT0gLTEpIHsKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5l
Qm94QmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUg
cm9vdC4KICAgICAgICAgLy8gVGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRo
ZSBmbGV4Ym94IGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5lci4KQEAgLTI5MSw3ICsyOTEs
NyBAQCBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJveEJhc2VsCiAKIGludCBSZW5k
ZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24pIGNvbnN0CiB7Ci0gICAgaW50IGJhc2VsaW5lID0gZmlyc3RMaW5lQm94QmFzZWxpbmUo
KTsKKyAgICBpbnQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmIChiYXNl
bGluZSAhPSAtMSkKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lOwogCkBAIC04OTQsNyArODk0LDcg
QEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdpbgogCiBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5Cb3hBc2NlbnRGb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkKQogewotICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJveEJhc2Vs
aW5lKCk7CisgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUo
KTsKICAgICBpZiAoYXNjZW50ID09IC0xKQogICAgICAgICBhc2NlbnQgPSBjcm9zc0F4aXNFeHRl
bnRGb3JDaGlsZChjaGlsZCk7CiAgICAgcmV0dXJuIGFzY2VudCArIGZsb3dBd2FyZU1hcmdpbkJl
Zm9yZUZvckNoaWxkKGNoaWxkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oCShyZXZpc2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIE9WRVJSSURFIEZJTkFM
OwogCiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBpbnQgZmlyc3RM
aW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBPVkVSUklERTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJKHJl
dmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJGdWxsU2NyZWVuUGxhY2Vob2xkZXIg
RklOQUwgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKQEAgLTE4NSw0ICsxODUs
NiBAQCB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyCiAgICAgICAgIG1f
cGxhY2Vob2xkZXItPnNldFN0eWxlKCpzdHlsZSk7CiB9CiAKK30KKwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAkocmV2aXNpb24gMTU3ODA1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVj
dGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNl
bGluZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCb3hC
YXNlbGluZSgpOyB9CisgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQogICAg
IHZpcnR1YWwgaW50IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNl
bGluZShkaXJlY3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5z
aWduZWQgbGlzdEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29s
b3IpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CShyZXZpc2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzM1LDcgKzEzMzUsNyBAQCB2b2lkIFJlbmRlclRh
YmxlOjp1cGRhdGVGaXJzdExldHRlcigpCiAKIGludCBSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJveEJhc2VsaW5lKCk7
CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCk7CiAgICAgaWYg
KGJhc2VsaW5lICE9IC0xKQogICAgICAgICByZXR1cm4gYmFzZWxpbmU7CiAKQEAgLTEzNDgsNyAr
MTM0OCw3IEBAIGludCBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW4KICAgICBy
ZXR1cm4gLTE7CiB9CiAKLWludCBSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQm94QmFzZWxpbmUoKSBj
b25zdAoraW50IFJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAg
Ly8gVGhlIGJhc2VsaW5lIG9mIGEgJ3RhYmxlJyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10
YWJsZScgYmFzZWxpbmUgcGVyIENTUyAzIEZsZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0
IGRlZmluZSB0aGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScp
LgpAQCAtMTM2Myw3ICsxMzYzLDcgQEAgaW50IFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hCYXNl
bGluZSgpIAogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQogICAgICAgICByZXR1cm4gLTE7
CiAKLSAgICBpbnQgYmFzZWxpbmUgPSB0b3BOb25FbXB0eVNlY3Rpb24tPmZpcnN0TGluZUJveEJh
c2VsaW5lKCk7CisgICAgaW50IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExp
bmVCYXNlbGluZSgpOwogICAgIGlmIChiYXNlbGluZSA+IDApCiAgICAgICAgIHJldHVybiB0b3BO
b25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gMTU3ODA1KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3
ICsyODQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBPVkVSUklERSBG
SU5BTDsKLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBpbnQgaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkg
Y29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICBSZW5kZXJUYWJsZUNvbCogc2xvd0NvbEVsZW1l
bnQodW5zaWduZWQgY29sLCBib29sKiBzdGFydEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJl
dmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsOSArMzk3LDkgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUYWJsZUNlbGw6OmNlbGxCYXNlbGluZQogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFz
ZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1m
bG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cg
aW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBu
byBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20g
b2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJveC4KLSAgICBMYXlvdXRVbml0IGZpcnN0TGlu
ZUJhc2VsaW5lID0gZmlyc3RMaW5lQm94QmFzZWxpbmUoKTsKLSAgICBpZiAoZmlyc3RMaW5lQmFz
ZWxpbmUgIT0gLTEpCi0gICAgICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZTsKKyAgICBMYXlv
dXRVbml0IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKTsKKyAgICBpZiAoYmFzZWxpbmUg
IT0gLTEpCisgICAgICAgIHJldHVybiBiYXNlbGluZTsKICAgICByZXR1cm4gYm9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9u
IDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OnJlY2FsY091dGVyQm9yZAogICAgIG1fb3V0ZXJCb3JkZXJFbmQgPSBjYWxjT3V0ZXJC
b3JkZXJFbmQoKTsKIH0KIAotaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQm94QmFz
ZWxpbmUoKSBjb25zdAoraW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAogewogICAgIGlmICghbV9ncmlkLnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0xOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAko
cmV2aXNpb24gMTU3ODA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkID0gMCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVC
b3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIGFkZENlbGwoUmVuZGVyVGFibGVD
ZWxsKiwgUmVuZGVyVGFibGVSb3cqIHJvdyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCShyZXZpc2lvbiAxNTc4MDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9j
azo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0
aW9uKTsKICAgICB9Ci0gICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQm94QmFzZWxpbmUoKTsg
fQorICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KICAgICB2aXJ0dWFsIGlu
dCBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0
aW9uKTsgfQogCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGludCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbigKICAgICBpZiAobGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JM
aW5lQm94ZXMpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIExheW91dFVuaXQgYmFzZWxp
bmUgPSBmaXJzdExpbmVCb3hCYXNlbGluZSgpOyAvLyBGSVhNRTogVGhpcyBtYXkgYmUgdW5uZWNl
c3NhcnkgYWZ0ZXIgZmxleCBiYXNlbGluZXMgYXJlIGltcGxlbWVudGVkIChodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxODgpLgorICAgIExheW91dFVuaXQgYmFzZWxp
bmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOyAvLyBGSVhNRTogVGhpcyBtYXkgYmUgdW5uZWNlc3Nh
cnkgYWZ0ZXIgZmxleCBiYXNlbGluZXMgYXJlIGltcGxlbWVudGVkIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYxODgpLgogICAgIGlmIChiYXNlbGluZSAhPSAtMSkK
ICAgICAgICAgcmV0dXJuIGJhc2VsaW5lOwogICAgIApAQCAtMzAxLDkgKzMwMSw5IEBAIGJvb2wg
cGFyc2VNYXRoTUxOYW1lZFNwYWNlKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWludCBSZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdAor
aW50IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAg
Ly8gSW4gbGVnYWwgTWF0aE1MLCB3ZSdsbCBoYXZlIGEgTWF0aE1MIHBhcmVudC4gVGhhdCBSZW5k
ZXJGbGV4aWJsZUJveCBwYXJlbnQgd2lsbCB1c2Ugb3VyIGZpcnN0TGluZUJveEJhc2VsaW5lKCkg
Zm9yIGJhc2VsaW5lIGFsaWdubWVudCwgcGVyCisgICAgLy8gSW4gbGVnYWwgTWF0aE1MLCB3ZSds
bCBoYXZlIGEgTWF0aE1MIHBhcmVudC4gVGhhdCBSZW5kZXJGbGV4aWJsZUJveCBwYXJlbnQgd2ls
bCB1c2Ugb3VyIGZpcnN0TGluZUJhc2VsaW5lKCkgZm9yIGJhc2VsaW5lIGFsaWdubWVudCwgcGVy
CiAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1mbGV4Ym94LyNmbGV4LWJhc2Vs
aW5lcy4gV2Ugd2FudCB0byB2ZXJ0aWNhbGx5IGNlbnRlciBhbiA8bXRhYmxlPiwgc3VjaCBhcyBh
IG1hdHJpeC4gRXNzZW50aWFsbHkgdGhlIHdob2xlIDxtdGFibGU+IGVsZW1lbnQgZml0cyBvbiBh
CiAgICAgLy8gc2luZ2xlIGxpbmUsIHdob3NlIGJhc2VsaW5lIGdpdmVzIHRoaXMgY2VudGVyaW5n
LiBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIFJlbmRlclRhYmxlOjpmaXJzdExpbmVCb3hCYXNlbGlu
ZSwgd2hpY2ggcmV0dXJucyB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJvdyBvZiBhIDx0YWJs
ZT4uCiAgICAgcmV0dXJuIChsb2dpY2FsSGVpZ2h0KCkgKyBzdHlsZSgpLT5mb250TWV0cmljcygp
LnhIZWlnaHQoKSkgLyAyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkocmV2aXNpb24gMTU3ODA1KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
dmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGludCBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAko
cmV2aXNpb24gMTU3ODA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMSArMTU5LDExIEBA
IHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW4KICAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogfQogCi1pbnQgUmVuZGVyTWF0aE1MRnJhY3Rp
b246OmZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QKK2ludCBSZW5kZXJNYXRoTUxGcmFjdGlv
bjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJCb3gqIGRlbm9t
aW5hdG9yV3JhcHBlciA9IGxhc3RDaGlsZEJveCgpKQogICAgICAgICByZXR1cm4gZGVub21pbmF0
b3JXcmFwcGVyLT5sb2dpY2FsVG9wKCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoKG1fbGlu
ZVRoaWNrbmVzcyArIHN0eWxlKCktPmZvbnRNZXRyaWNzKCkueEhlaWdodCgpKSAvIDIpKTsKLSAg
ICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAg
cmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5oCShyZXZpc2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJP
YmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGlu
dCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMTEgKzI2NSwx
MSBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSgpCiAgICAgICAgIG1f
aXNTdHJldGNoZWQgPSBmYWxzZTsKIH0KIAotaW50IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJz
dExpbmVCb3hCYXNlbGluZSgpIGNvbnN0CitpbnQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAobV9pc1N0cmV0Y2hlZCkKICAgICAgICAg
cmV0dXJuIGV4cGFuZGVkU3RyZXRjaEhlaWdodCgpICogMiAvIDMgLSAoZXhwYW5kZWRTdHJldGNo
SGVpZ2h0KCkgLSBtX3N0cmV0Y2hIZWlnaHQpIC8gMjsKLSAgICByZXR1cm4gUmVuZGVyTWF0aE1M
QmxvY2s6OmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9y
Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVu
aXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVl
cykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJldmlzaW9uIDE1NzgwNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxk
QWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBpbnQgZmlyc3RMaW5l
Qm94QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0
b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KIAog
ICAgIGJvb2wgc2hvdWxkQWxsb3dTdHJldGNoaW5nKFVDaGFyJiBjaGFyYWN0ZXJGb3JTdHJldGNo
aW5nKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAkocmV2aXNpb24gMTU3ODA1KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0
KCkKICAgICAvLyBiZWxvdyB0aGUgYmFzZSdzIHRvcCBlZGdlLCBvciB0aGUgc3Vic2NyaXB0J3Mg
Ym90dG9tIGVkZ2UgYWJvdmUgdGhlIGJhc2UncyBib3R0b20gZWRnZS4KIAogICAgIExheW91dFVu
aXQgYmFzZUhlaWdodCA9IGJhc2UtPmxvZ2ljYWxIZWlnaHQoKTsKLSAgICBMYXlvdXRVbml0IGJh
c2VCYXNlbGluZSA9IGJhc2UtPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAgTGF5b3V0VW5p
dCBiYXNlQmFzZWxpbmUgPSBiYXNlLT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmIChiYXNl
QmFzZWxpbmUgPT0gLTEpCiAgICAgICAgIGJhc2VCYXNlbGluZSA9IGJhc2VIZWlnaHQ7CiAgICAg
TGF5b3V0VW5pdCBheGlzID0gc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwpA
QCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0KCkKIAog
ICAgICAgICBpZiAoUmVuZGVyQm94KiBzdXBlcnNjcmlwdCA9IG1fa2luZCA9PSBTdWIgPyAwIDog
c3ViU3VwUGFpci0+bGFzdENoaWxkQm94KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQgc3Vw
ZXJzY3JpcHRIZWlnaHQgPSBzdXBlcnNjcmlwdC0+bG9naWNhbEhlaWdodCgpOwotICAgICAgICAg
ICAgTGF5b3V0VW5pdCBzdXBlcnNjcmlwdEJhc2VsaW5lID0gc3VwZXJzY3JpcHQtPmZpcnN0TGlu
ZUJveEJhc2VsaW5lKCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHN1cGVyc2NyaXB0QmFzZWxp
bmUgPSBzdXBlcnNjcmlwdC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICAgICAgICAgIGlmIChz
dXBlcnNjcmlwdEJhc2VsaW5lID09IC0xKQogICAgICAgICAgICAgICAgIHN1cGVyc2NyaXB0QmFz
ZWxpbmUgPSBzdXBlcnNjcmlwdEhlaWdodDsKICAgICAgICAgICAgIExheW91dFVuaXQgbWluQmFz
ZWxpbmUgPSBtYXg8TGF5b3V0VW5pdD4oZm9udFNpemUgLyAzICsgMSArIHN1cGVyc2NyaXB0QmFz
ZWxpbmUsIHN1cGVyc2NyaXB0SGVpZ2h0ICsgYXhpcyArIHN1cGVyc2NyaXB0U2hpZnRWYWx1ZSk7
CkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQog
CiAgICAgICAgIGlmIChSZW5kZXJCb3gqIHN1YnNjcmlwdCA9IG1fa2luZCA9PSBTdXBlciA/IDAg
OiBzdWJTdXBQYWlyLT5maXJzdENoaWxkQm94KCkpIHsKICAgICAgICAgICAgIExheW91dFVuaXQg
c3Vic2NyaXB0SGVpZ2h0ID0gc3Vic2NyaXB0LT5sb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAg
ICBMYXlvdXRVbml0IHN1YnNjcmlwdEJhc2VsaW5lID0gc3Vic2NyaXB0LT5maXJzdExpbmVCb3hC
YXNlbGluZSgpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzdWJzY3JpcHRCYXNlbGluZSA9IHN1
YnNjcmlwdC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICAgICAgICAgIGlmIChzdWJzY3JpcHRC
YXNlbGluZSA9PSAtMSkKICAgICAgICAgICAgICAgICBzdWJzY3JpcHRCYXNlbGluZSA9IHN1YnNj
cmlwdEhlaWdodDsKICAgICAgICAgICAgIExheW91dFVuaXQgYmFzZUV4dGVuZFVuZGVyQmFzZWxp
bmUgPSBiYXNlSGVpZ2h0IC0gYmFzZUJhc2VsaW5lOwpAQCAtMzU1LDE0ICszNTUsMTQgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXQoKQogICAgIFJlbmRlck1hdGhNTEJsb2NrOjps
YXlvdXQoKTsKIH0KIAotaW50IFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpcnN0TGluZUJveEJhc2Vs
aW5lKCkgY29uc3QKK2ludCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fYmFzZVdyYXBwZXIpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBi
YXNlbGluZSA9IG1fYmFzZVdyYXBwZXItPmZpcnN0TGluZUJveEJhc2VsaW5lKCk7CisgICAgICAg
IExheW91dFVuaXQgYmFzZWxpbmUgPSBtX2Jhc2VXcmFwcGVyLT5maXJzdExpbmVCYXNlbGluZSgp
OwogICAgICAgICBpZiAoYmFzZWxpbmUgIT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWxp
bmU7CiAgICAgfQotICAgIHJldHVybiBSZW5kZXJNYXRoTUxCbG9jazo6Zmlyc3RMaW5lQm94QmFz
ZWxpbmUoKTsKKyAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5l
KCk7CiB9CiAKIFJlbmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKiBSZW5kZXJNYXRoTUxTY3JpcHRz
V3JhcHBlcjo6Y3JlYXRlQW5vbnltb3VzV3JhcHBlcihSZW5kZXJNYXRoTUxTY3JpcHRzKiByZW5k
ZXJPYmplY3QsIFdyYXBwZXJUeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAkocmV2aXNpb24gMTU3
ODA1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIE9WRVJSSURFOwogICAgIAogICAg
IHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwot
ICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKIAogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCShyZXZp
c2lvbiAxNTc4MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTFNwYWNlOjpzdHlsZURpZENoYW5nZShTCiAgICAgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
IH0KIAotaW50IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0
CitpbnQgUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9oZWlnaHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCShyZXZpc2lvbiAxNTc4MDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXND
aGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVu
aXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94
QmFzZWxpbmUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsV2lk
dGgoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIE9W
RVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAxNTc4MDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1NywxMiBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvciog
UmVuZGVyTWF0aE1MVW5kZXJPCiAgICAgcmV0dXJuIHRvUmVuZGVyTWF0aE1MQmxvY2soYmFzZSkt
PnVuZW1iZWxsaXNoZWRPcGVyYXRvcigpOwogfQogCi1pbnQgUmVuZGVyTWF0aE1MVW5kZXJPdmVy
OjpmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0CitpbnQgUmVuZGVyTWF0aE1MVW5kZXJPdmVy
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgUmVuZGVyQm94KiBiYXNlID0gZmly
c3RDaGlsZEJveCgpOwogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIExh
eW91dFVuaXQgYmFzZWxpbmUgPSBiYXNlLT5maXJzdExpbmVCb3hCYXNlbGluZSgpOworICAgIExh
eW91dFVuaXQgYmFzZWxpbmUgPSBiYXNlLT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmIChi
YXNlbGluZSAhPSAtMSkKICAgICAgICAgYmFzZWxpbmUgKz0gYmFzZS0+bG9naWNhbFRvcCgpOwog
ICAgIHJldHVybiBiYXNlbGluZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaAkocmV2aXNpb24gMTU3ODA1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCk7CiAK
LSAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3ZlcigpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0K
</data>
<flag name="review"
          id="237488"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>