<?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>7210</bug_id>
          
          <creation_ts>2006-02-11 23:19:03 -0800</creation_ts>
          <short_desc>rename FrameTreeNode to FrameTree and treeNode() to tree()</short_desc>
          <delta_ts>2006-02-13 01:09:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Frames</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>32208</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-11 23:19:03 -0800</bug_when>
    <thetext>Renamed FrameTreeNode to FrameTree and treeNode() to tree(). This is slightly less precise but reads better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32210</commentid>
    <comment_count>1</comment_count>
      <attachid>6427</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-11 23:20:37 -0800</bug_when>
    <thetext>Created attachment 6427
do the rename

Simple rename, done w/ search and repla.ce</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32211</commentid>
    <comment_count>2</comment_count>
      <attachid>6427</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-11 23:22:37 -0800</bug_when>
    <thetext>Comment on attachment 6427
do the rename

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6427</attachid>
            <date>2006-02-11 23:20:37 -0800</date>
            <delta_ts>2006-02-11 23:22:37 -0800</delta_ts>
            <desc>do the rename</desc>
            <filename>frame-tree.patch.txt</filename>
            <type>text/plain</type>
            <size>40989</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwv
aHRtbC9odG1sX2hlYWRpbXBsLmNwcAkocmV2aXNpb24gMTI3NjUpCisrKyBraHRtbC9odG1sL2h0
bWxfaGVhZGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVk
ZSAiZG9tX25vZGUuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVUcmVl
Tm9kZS5oIgorI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgog
CiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgpAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgSFRNTExpbmtFbGVtZW50SW1wbDo6cHJvY2VzcygpCiAgICAgRnJhbWUgKmZyYW1lID0gZ2V0
RG9jdW1lbnQoKS0+ZnJhbWUoKTsKIAogICAgIC8vIElFIGV4dGVuc2lvbjogbG9jYXRpb24gb2Yg
c21hbGwgaWNvbiBmb3IgbG9jYXRpb25iYXIgLyBib29rbWFya3MKLSAgICBpZiAoZnJhbWUgJiYg
bV9pc0ljb24gJiYgIW1fdXJsLmlzRW1wdHkoKSAmJiAhZnJhbWUtPnRyZWVOb2RlKCktPnBhcmVu
dCgpKSB7CisgICAgaWYgKGZyYW1lICYmIG1faXNJY29uICYmICFtX3VybC5pc0VtcHR5KCkgJiYg
IWZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgIGlmICghdHlwZS5pc0VtcHR5KCkp
IC8vIE1vemlsbGEgZXh0ZW5zaW9uIHRvIElFIGV4dGVuc2lvbjogaWNvbiBzcGVjaWZpZWQgd2l0
aCB0eXBlCiAgICAgICAgICAgICBmcmFtZS0+YnJvd3NlckV4dGVuc2lvbigpLT5zZXRUeXBlZElj
b25VUkwoS1VSTChtX3VybC5xc3RyaW5nKCkpLCB0eXBlKTsKICAgICAgICAgZWxzZSAKSW5kZXg6
IGtodG1sL2h0bWwvaHRtbF9iYXNlaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvaHRtbC9o
dG1sX2Jhc2VpbXBsLmNwcAkocmV2aXNpb24gMTI3NjQpCisrKyBraHRtbC9odG1sL2h0bWxfYmFz
ZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lVHJlZU5vZGUu
aCIKKyNpbmNsdWRlICJGcmFtZVRyZWUuaCIKIAogI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJf
ZnJhbWVzLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaCIKQEAgLTMwNyw3ICsz
MDcsNyBAQCBib29sIEhUTUxGcmFtZUVsZW1lbnRJbXBsOjppc1VSTEFsbG93ZWQoCiAgICAgLy8g
V2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1c2Ugc29tZSBzaXRlcyBk
ZXBlbmQgb24gdGhhdC4KICAgICAvLyBCdXQgd2UgZG9uJ3QgYWxsb3cgbW9yZSB0aGFuIG9uZS4K
ICAgICBib29sIGZvdW5kU2VsZlJlZmVyZW5jZSA9IGZhbHNlOwotICAgIGZvciAoRnJhbWUgKmZy
YW1lID0gdy0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWVOb2RlKCktPnBhcmVu
dCgpKSB7CisgICAgZm9yIChGcmFtZSAqZnJhbWUgPSB3LT5mcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBLVVJMIGZyYW1lVVJMID0gZnJh
bWUtPnVybCgpOwogICAgICAgICBmcmFtZVVSTC5zZXRSZWYoUVN0cmluZzo6bnVsbCk7CiAgICAg
ICAgIGlmIChmcmFtZVVSTCA9PSBuZXdVUkwpIHsKSW5kZXg6IGtodG1sL2VjbWEva2pzX3dpbmRv
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkocmV2aXNpb24g
MTI3NjQpCisrKyBraHRtbC9lY21hL2tqc193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Nyw3ICs1Nyw3IEBACiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAjaW5jbHVkZSA8a2pzL2NvbGxlY3Rv
ci5oPgogI2luY2x1ZGUgPGtsb2NhbGUuaD4KLSNpbmNsdWRlICJGcmFtZVRyZWVOb2RlLmgiCisj
aW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAKICNpZiBLSFRNTF9YU0xUCiAjaW5jbHVkZSAiWFNMVFBy
b2Nlc3Nvci5oIgpAQCAtNzA4LDcgKzcwOCw3IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0VmFsdWVQ
cm9wZXJ0eShFeGVjU3QKICAgICBjYXNlIF9Mb2NhdGlvbjoKICAgICAgIHJldHVybiBsb2NhdGlv
bigpOwogICAgIGNhc2UgTmFtZToKLSAgICAgIHJldHVybiBqc1N0cmluZyhtX2ZyYW1lLT50cmVl
Tm9kZSgpLT5uYW1lKCkpOworICAgICAgcmV0dXJuIGpzU3RyaW5nKG1fZnJhbWUtPnRyZWUoKS0+
bmFtZSgpKTsKICAgICBjYXNlIF9OYXZpZ2F0b3I6CiAgICAgY2FzZSBDbGllbnRJbmZvcm1hdGlv
bjogewogICAgICAgLy8gU3RvcmUgdGhlIG5hdmlnYXRvciBpbiB0aGUgb2JqZWN0IHNvIHdlIGdl
dCB0aGUgc2FtZSBvbmUgZWFjaCB0aW1lLgpAQCAtNzUwLDcgKzc1MCw3IEBAIEpTVmFsdWUgKldp
bmRvdzo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3QKICAgICAgIHVwZGF0ZUxheW91dCgpOwogICAg
ICAgcmV0dXJuIGpzTnVtYmVyKG1fZnJhbWUtPnZpZXcoKS0+Y29udGVudHNZKCkpOwogICAgIGNh
c2UgUGFyZW50OgotICAgICAgcmV0dXJuIHJldHJpZXZlKG1fZnJhbWUtPnRyZWVOb2RlKCktPnBh
cmVudCgpID8gbV9mcmFtZS0+dHJlZU5vZGUoKS0+cGFyZW50KCkgOiAoRnJhbWUqKW1fZnJhbWUp
OworICAgICAgcmV0dXJuIHJldHJpZXZlKG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPyBtX2Zy
YW1lLT50cmVlKCktPnBhcmVudCgpIDogKEZyYW1lKiltX2ZyYW1lKTsKICAgICBjYXNlIFBlcnNv
bmFsYmFyOgogICAgICAgcmV0dXJuIHBlcnNvbmFsYmFyKGV4ZWMpOwogICAgIGNhc2UgU2NyZWVu
TGVmdDoKQEAgLTc4OCw4ICs3ODgsOCBAQCBKU1ZhbHVlICpXaW5kb3c6OmdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0CiAgICAgICByZXR1cm4gcmV0cmlldmUobV9mcmFtZSk7CiAgICAgY2FzZSBUb3A6
IHsKICAgICAgIEZyYW1lICpwID0gbV9mcmFtZTsKLSAgICAgIHdoaWxlIChwLT50cmVlTm9kZSgp
LT5wYXJlbnQoKSkKLSAgICAgICAgcCA9IHAtPnRyZWVOb2RlKCktPnBhcmVudCgpOworICAgICAg
d2hpbGUgKHAtPnRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIHAgPSBwLT50cmVlKCktPnBhcmVu
dCgpOwogICAgICAgcmV0dXJuIHJldHJpZXZlKHApOwogICAgIH0KICAgICBjYXNlIF9TY3JlZW46
CkBAIC0xMTc5LDcgKzExNzksNyBAQCB2b2lkIFdpbmRvdzo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgCiAgICAgICByZXR1cm47CiAgICAgY2FzZSBOYW1lOgogICAgICAgaWYgKGlzU2FmZVNj
cmlwdChleGVjKSkKLSAgICAgICAgbV9mcmFtZS0+dHJlZU5vZGUoKS0+c2V0TmFtZSh2YWx1ZS0+
dG9TdHJpbmcoZXhlYykucXN0cmluZygpKTsKKyAgICAgICAgbV9mcmFtZS0+dHJlZSgpLT5zZXRO
YW1lKHZhbHVlLT50b1N0cmluZyhleGVjKS5xc3RyaW5nKCkpOwogICAgICAgcmV0dXJuOwogICAg
IGRlZmF1bHQ6CiAgICAgICBicmVhazsKQEAgLTEyNDAsOSArMTI0MCw5IEBAIGJvb2wgV2luZG93
Ojppc1NhZmVTY3JpcHQoY29uc3QgU2NyaXB0SW4KICAgICAvLyBvciBvcGVuZXIsIGFsbG93IGFj
Y2VzcyBmcm9tIGFueSBkb2N1bWVudCBpbiB0aGUgc2FtZSBkb21haW4gYXMKICAgICAvLyB0aGUg
cGFyZW50IG9yIG9wZW5lci4KICAgICBpZiAoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCh0YXJn
ZXRQYXJ0LT51cmwoKSkpIHsKLSAgICAgICAgRnJhbWUgKmFuY2VzdG9yUGFydCA9IHRhcmdldFBh
cnQtPm9wZW5lcigpID8gdGFyZ2V0UGFydC0+b3BlbmVyKCkgOiB0YXJnZXRQYXJ0LT50cmVlTm9k
ZSgpLT5wYXJlbnQoKTsKKyAgICAgICAgRnJhbWUgKmFuY2VzdG9yUGFydCA9IHRhcmdldFBhcnQt
Pm9wZW5lcigpID8gdGFyZ2V0UGFydC0+b3BlbmVyKCkgOiB0YXJnZXRQYXJ0LT50cmVlKCktPnBh
cmVudCgpOwogICAgICAgICB3aGlsZSAoYW5jZXN0b3JQYXJ0ICYmIHNob3VsZExvYWRBc0VtcHR5
RG9jdW1lbnQoYW5jZXN0b3JQYXJ0LT51cmwoKSkpIHsKLSAgICAgICAgICAgIGFuY2VzdG9yUGFy
dCA9IGFuY2VzdG9yUGFydC0+dHJlZU5vZGUoKS0+cGFyZW50KCk7CisgICAgICAgICAgICBhbmNl
c3RvclBhcnQgPSBhbmNlc3RvclBhcnQtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoYW5jZXN0b3JQYXJ0KQpAQCAtMTMwNSw5ICsxMzA1LDkgQEAgYm9vbCBXaW5k
b3c6OmlzU2FmZVNjcmlwdChFeGVjU3RhdGUgKmV4ZQogICAvLyBvciBvcGVuZXIsIGFsbG93IGFj
Y2VzcyBmcm9tIGFueSBkb2N1bWVudCBpbiB0aGUgc2FtZSBkb21haW4gYXMKICAgLy8gdGhlIHBh
cmVudCBvciBvcGVuZXIuCiAgIGlmIChzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KG1fZnJhbWUt
PnVybCgpKSkgewotICAgIEZyYW1lICphbmNlc3RvclBhcnQgPSBtX2ZyYW1lLT5vcGVuZXIoKSA/
IG1fZnJhbWUtPm9wZW5lcigpIDogbV9mcmFtZS0+dHJlZU5vZGUoKS0+cGFyZW50KCk7CisgICAg
RnJhbWUgKmFuY2VzdG9yUGFydCA9IG1fZnJhbWUtPm9wZW5lcigpID8gbV9mcmFtZS0+b3BlbmVy
KCkgOiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgIHdoaWxlIChhbmNlc3RvclBhcnQg
JiYgc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChhbmNlc3RvclBhcnQtPnVybCgpKSkgewotICAg
ICAgYW5jZXN0b3JQYXJ0ID0gYW5jZXN0b3JQYXJ0LT50cmVlTm9kZSgpLT5wYXJlbnQoKTsKKyAg
ICAgIGFuY2VzdG9yUGFydCA9IGFuY2VzdG9yUGFydC0+dHJlZSgpLT5wYXJlbnQoKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKGFuY2VzdG9yUGFydCkKQEAgLTE2MTMsOCArMTYxMyw4IEBAIEpTVmFs
dWUgKldpbmRvd0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4ZWMKICAgICAgIFVSTEFyZ3MgdWFyZ3M7
CiAgICAgICB1YXJncy5mcmFtZU5hbWUgPSBmcmFtZU5hbWU7CiAgICAgICBpZiAodWFyZ3MuZnJh
bWVOYW1lID09ICJfdG9wIikgewotICAgICAgICAgIHdoaWxlIChmcmFtZS0+dHJlZU5vZGUoKS0+
cGFyZW50KCkpCi0gICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWVOb2RlKCktPnBhcmVu
dCgpOworICAgICAgICAgIHdoaWxlIChmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKKyAgICAgICAg
ICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKICAgICAgICAgICAKICAgICAg
ICAgICBjb25zdCBXaW5kb3cqIHdpbmRvdyA9IFdpbmRvdzo6cmV0cmlldmVXaW5kb3coZnJhbWUp
OwogICAgICAgICAgIGlmICghdXJsLnVybCgpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFs
c2UpIHx8ICh3aW5kb3cgJiYgd2luZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpKSB7CkBAIC0xNjI0
LDggKzE2MjQsOCBAQCBKU1ZhbHVlICpXaW5kb3dGdW5jOjpjYWxsQXNGdW5jdGlvbihFeGVjCiAg
ICAgICAgICAgcmV0dXJuIFdpbmRvdzo6cmV0cmlldmUoZnJhbWUpOwogICAgICAgfQogICAgICAg
aWYgKHVhcmdzLmZyYW1lTmFtZSA9PSAiX3BhcmVudCIpIHsKLSAgICAgICAgICBpZiAoZnJhbWUt
PnRyZWVOb2RlKCktPnBhcmVudCgpKQotICAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVl
Tm9kZSgpLT5wYXJlbnQoKTsKKyAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkp
CisgICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgICAg
ICAgCiAgICAgICAgICAgY29uc3QgV2luZG93KiB3aW5kb3cgPSBXaW5kb3c6OnJldHJpZXZlV2lu
ZG93KGZyYW1lKTsKICAgICAgICAgICBpZiAoIXVybC51cmwoKS5zdGFydHNXaXRoKCJqYXZhc2Ny
aXB0OiIsIGZhbHNlKSB8fCAod2luZG93ICYmIHdpbmRvdy0+aXNTYWZlU2NyaXB0KGV4ZWMpKSkg
ewpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRl
cmluZy9yZW5kZXJfZnJhbWVzLmNwcAkocmV2aXNpb24gMTI3NjUpCisrKyByZW5kZXJpbmcvcmVu
ZGVyX2ZyYW1lcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50SW1wbC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVU
cmVlTm9kZS5oIgorI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgImh0bWwvaHRtbF9iYXNlaW1wbC5oIgogI2luY2x1ZGUgImh0bWwvaHRtbF9v
YmplY3RpbXBsLmgiCkBAIC03NDAsNyArNzQwLDcgQEAgc3RhdGljIGJvb2wgaXNVUkxBbGxvd2Vk
KERPTTo6RG9jdW1lbnRJbQogICAgIC8vIFdlIGFsbG93IG9uZSBsZXZlbCBvZiBzZWxmLXJlZmVy
ZW5jZSBiZWNhdXNlIHNvbWUgc2l0ZXMgZGVwZW5kIG9uIHRoYXQuCiAgICAgLy8gQnV0IHdlIGRv
bid0IGFsbG93IG1vcmUgdGhhbiBvbmUuCiAgICAgYm9vbCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBm
YWxzZTsKLSAgICBmb3IgKEZyYW1lICpmcmFtZSA9IGRvYy0+ZnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWVOb2RlKCktPnBhcmVudCgpKSB7CisgICAgZm9yIChGcmFtZSAqZnJhbWUg
PSBkb2MtPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7
CiAgICAgICAgIEtVUkwgZnJhbWVVUkwgPSBmcmFtZS0+dXJsKCk7CiAgICAgICAgIGZyYW1lVVJM
LnNldFJlZihRU3RyaW5nOjpudWxsKTsKICAgICAgICAgaWYgKGZyYW1lVVJMID09IG5ld1VSTCkg
ewpJbmRleDogZG9tL0RvY3VtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0RvY3VtZW50
SW1wbC5jcHAJKHJldmlzaW9uIDEyNzY1KQorKysgZG9tL0RvY3VtZW50SW1wbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudFR5cGVJbXBsLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAi
RnJhbWVUcmVlTm9kZS5oIgorI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJLV1FB
Y2NPYmplY3RDYWNoZS5oIgpAQCAtMjk1Miw3ICsyOTUyLDcgQEAgRG9jdW1lbnRJbXBsICpEb2N1
bWVudEltcGw6OnBhcmVudERvY3VtZQogICAgIEZyYW1lICpjaGlsZFBhcnQgPSBmcmFtZSgpOwog
ICAgIGlmICghY2hpbGRQYXJ0KQogICAgICAgICByZXR1cm4gMDsKLSAgICBGcmFtZSAqcGFyZW50
ID0gY2hpbGRQYXJ0LT50cmVlTm9kZSgpLT5wYXJlbnQoKTsKKyAgICBGcmFtZSAqcGFyZW50ID0g
Y2hpbGRQYXJ0LT50cmVlKCktPnBhcmVudCgpOwogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gcGFyZW50LT5kb2N1bWVudCgpOwpJbmRleDogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI3NjUpCisrKyBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTk3LDggKzk3LDggQEAKIAkJNjU4MkEx
NjQwOTk5OUQ2RDAwQkVFQjZEIC8qIFRpbWVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTU2MDk5OTlENkQwMEJFRUI2RCAvKiBUaW1l
ck1hYy5jcHAgKi87IH07CiAJCTY1ODJBMTc4MDk5OTlFQTAwMEJFRUI2RCAvKiBRU3RyaW5nTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkEx
NzcwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMubW0gKi87IH07CiAJCTY1QTIxNDY4MDk3
QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovOyB9Owot
CQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ4MjA5N0EzRjUzMDBC
OTA1MEEgLyogRnJhbWVUcmVlTm9kZS5jcHAgKi87IH07Ci0JCTY1QTIxNDg1MDk3QTNGNTMwMEI5
MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5o
ICovOyB9OworCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNG
NTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovOyB9OworCQk2NUEyMTQ4NTA5N0EzRjUzMDBC
OTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi87IH07
CiAJCTY1QUM3OUExMDgzMUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OTlGMDgz
MUVENkQwMDkzODVDRSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmNwcCAqLzsgfTsKIAkJNjVBQzc5
QTIwODMxRUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUEwMDgzMUVENkQwMDkzODVD
RSAvKiBhcHBlbmRfbm9kZV9jb21tYW5kLmggKi87IH07CiAJCTY1QUM3OUE5MDgzMUYwMDYwMDkz
ODVDRSAvKiBhcHBseV9zdHlsZV9jb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUE3MDgzMUYwMDYwMDkzODVDRSAvKiBhcHBseV9z
dHlsZV9jb21tYW5kLmNwcCAqLzsgfTsKQEAgLTExOTUsOCArMTE5NSw4IEBACiAJCTY1OTEyQjBE
MDU4NjkyMTAwMDEyM0E2OSAvKiB4bWxzZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHhtbHNlcmlhbGl6ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NjU5MTJCMEUwNTg2OTIxMDAwMTIzQTY5IC8qIHhtbHNlcmlhbGl6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0geG1sc2VyaWFsaXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
NjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVBMjE0
ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVHJlZU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVUcmVlTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJh
bWVUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVRy
ZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NUEyMTQ4MzA5N0EzRjUzMDBC
OTA1MEEgLyogRnJhbWVUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
cmFtZVRyZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVBNjQwRjAwNTMzQkIx
RjAwODVFNzc3IC8qIEtXUUV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dRRXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5OUYwODMxRUQ2
RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFuZC5j
cHA7IHBhdGggPSBlZGl0aW5nL2FwcGVuZF9ub2RlX2NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVBQzc5QTAwODMx
RUQ2RDAwOTM4NUNFIC8qIGFwcGVuZF9ub2RlX2NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYXBwZW5kX25vZGVfY29tbWFuZC5oOyBw
YXRoID0gZWRpdGluZy9hcHBlbmRfbm9kZV9jb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMjM4MSw4ICsyMzgxLDggQEAK
IAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk2NUJGMDIy
OTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovLAogCQkJCTY1QkYwMjJCMDk3NDgxNjMw
MEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCAqLywKLQkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlTm9kZS5oICovLAotCQkJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAv
KiBGcmFtZVRyZWVOb2RlLmNwcCAqLywKKwkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyog
RnJhbWVUcmVlLmggKi8sCisJCQkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJl
ZS5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICov
LAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJ
CTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8sCkBAIC00Mjk1LDcgKzQyOTUs
NyBAQAogCQkJCUE4RkVGQjMyMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkIyRTg0MDk3OUZENEYwMEJBNzAzRCAv
KiBTaGFyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QTIxNDY4MDk3QTMyOTEwMEI5MDUwQSAv
KiBQYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyog
RnJhbWVUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkw
NTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQjJGNDIwOTdBMjRCNTAw
QkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQjJGNzcw
OTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdBRDA5
N0M3MTVGMDAxOUYzRDggLyogRE9NLmggaW4gSGVhZGVycyAqLywKQEAgLTU0MDIsNyArNTQwMiw3
IEBACiAJCQkJQkNGQjJGNDEwOTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEZFRkIwQjA5NzlGNDcyMDA1ODM5RkQgLyogUmVuZGVyRm9y
ZWlnbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5
RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRJbXBsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNGQjJGNzYwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMUEzN0FFMDk3QzcxNUYwMDE5RjNEOCAvKiBET00ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCQzFBMzdCMTA5N0M3MTVGMDAxOUYzRDggLyogRE9NQ1NTLm1tIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMjc2NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBA
CisyMDA2LTAyLTExICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSByZW5hbWUgRnJhbWVU
cmVlTm9kZSB0byBGYW1lVHJlZSBhbmQgdHJlZU5vZGUoKSB0byB0cmVlKCkKKyAgICAgICAgaHR0
cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD03MjEwCisgICAgICAg
IAorICAgICAgICBUaGlzIG1heSBiZSBzbGlnaHRseSBsZXNzIGFjY3VyYXRlLCBidXQgcmVhZHMg
YmV0dGVyLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJyaWRnZS9tYWMvQnJvd3NlckV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkJyb3dzZXJFeHRlbnNpb25NYWM6OmNyZWF0ZU5ld1dpbmRvdyk6CisgICAgICAgICog
YnJpZGdlL21hYy9NYWNGcmFtZS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0ZyYW1lOjpzdWJt
aXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hY0ZyYW1lOjpuZXh0S2V5Vmlld0luRnJhbWVI
aWVyYXJjaHkpOgorICAgICAgICAqIGJyaWRnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgZmlyc3RDaGlsZF0pOgorICAgICAgICAoLVtX
ZWJDb3JlRnJhbWVCcmlkZ2UgbGFzdENoaWxkXSk6CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJy
aWRnZSBjaGlsZENvdW50XSk6CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBwcmV2aW91
c1NpYmxpbmddKToKKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIG5leHRTaWJsaW5nXSk6
CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBhcHBlbmRDaGlsZDpdKToKKyAgICAgICAg
KC1bV2ViQ29yZUZyYW1lQnJpZGdlIHJlbW92ZUNoaWxkOl0pOgorICAgICAgICAoLVtXZWJDb3Jl
RnJhbWVCcmlkZ2Ugc2V0UGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2Ug
cGFyZW50XSk6CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBzZXROYW1lOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgbmFtZV0pOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRJbXBsOjpwYXJlbnREb2N1bWVu
dCk6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcDoKKyAgICAgICAgKEtKUzo6
V2luZG93OjpnZXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKEtKUzo6V2luZG93OjpwdXQpOgor
ICAgICAgICAoS0pTOjpXaW5kb3c6OmlzU2FmZVNjcmlwdCk6CisgICAgICAgIChLSlM6OldpbmRv
d0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfYmFzZWlt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEltcGw6OmlzVVJMQWxs
b3dlZCk6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnN0b3BMb2FkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c3Rv
cEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNoZWNrQ29tcGxldGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjaGVja0VtaXRMb2FkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OnNsb3RDaGlsZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZmluZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRab29tRmFjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpmcmFtZU5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjpmcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmNoaWxkRnJhbWVO
YW1lZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5jcmVtZW50RnJhbWVDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGVjcmVtZW50RnJhbWVDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6dG9wTGV2ZWxGcmFtZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpzZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6dXNlckdlc3R1cmVIaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpjYW5DYWNoZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnVwZGF0ZVBvbGlj
eUJhc2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldFBvbGljeUJhc2VVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OmZyYW1lRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnVwZGF0ZUJhc2VVUkxG
b3JFbXB0eURvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFn
ZS9GcmFtZVByaXZhdGUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjp+RnJhbWVUcmVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVHJlZTo6c2V0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFw
cGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVUcmVlOjpGcmFtZVRyZWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcGFnZS9GcmFtZVRyZWVOb2RlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNVUkxB
bGxvd2VkKToKKwogMjAwNi0wMi0xMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIC0gRml4ZWQgYmFkIGZyZWUgcmVzdWx0aW5nIGZyb20gMCBsZWdudGggU3Ry
aW5nSW1wbApJbmRleDogYnJpZGdlL21hYy9NYWNGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBicmlk
Z2UvbWFjL01hY0ZyYW1lLm1tCShyZXZpc2lvbiAxMjc2NSkKKysrIGJyaWRnZS9tYWMvTWFjRnJh
bWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIE1hY0ZyYW1lOjpz
dWJtaXRGb3JtKGNvbnN0IEtVUkwgJnVyCiAgICAgV2ViQ29yZUZyYW1lQnJpZGdlICp0YXJnZXQg
PSBhcmdzLmZyYW1lTmFtZS5pc0VtcHR5KCkgPyBfYnJpZGdlIDogW19icmlkZ2UgZmluZEZyYW1l
TmFtZWQ6YXJncy5mcmFtZU5hbWUuZ2V0TlNTdHJpbmcoKV07CiAgICAgRnJhbWUgKnRhcmdldFBh
cnQgPSBbdGFyZ2V0IHBhcnRdOwogICAgIGJvb2wgd2lsbFJlcGxhY2VUaGlzRnJhbWUgPSBmYWxz
ZTsKLSAgICBmb3IgKEZyYW1lICpwID0gdGhpczsgcDsgcCA9IHAtPnRyZWVOb2RlKCktPnBhcmVu
dCgpKSB7CisgICAgZm9yIChGcmFtZSAqcCA9IHRoaXM7IHA7IHAgPSBwLT50cmVlKCktPnBhcmVu
dCgpKSB7CiAgICAgICAgIGlmIChwID09IHRhcmdldFBhcnQpIHsKICAgICAgICAgICAgIHdpbGxS
ZXBsYWNlVGhpc0ZyYW1lID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTg1LDcgKzk4
NSw3IEBAIE5TVmlldyAqTWFjRnJhbWU6Om5leHRLZXlWaWV3SW5GcmFtZUhpZXIKIHsKICAgICBO
U1ZpZXcgKm5leHQgPSBuZXh0S2V5Vmlld0luRnJhbWUobm9kZSwgZGlyZWN0aW9uKTsKICAgICBp
ZiAoIW5leHQpIHsKLSAgICAgICAgTWFjRnJhbWUgKnBhcmVudCA9IE1hYyh0cmVlTm9kZSgpLT5w
YXJlbnQoKSk7CisgICAgICAgIE1hY0ZyYW1lICpwYXJlbnQgPSBNYWModHJlZSgpLT5wYXJlbnQo
KSk7CiAgICAgICAgIGlmIChwYXJlbnQpCiAgICAgICAgICAgICBuZXh0ID0gcGFyZW50LT5uZXh0
S2V5Vmlld0luRnJhbWVIaWVyYXJjaHkob3duZXJFbGVtZW50KCksIGRpcmVjdGlvbik7CiAgICAg
fQpJbmRleDogYnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
YnJpZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDEyNzY0KQorKysgYnJp
ZGdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDcgQEAKICNpbXBvcnQgIktXUVRleHRDb2RlYy5oIgogI2ltcG9ydCAiS1dRVmlldy5oIgogI2lt
cG9ydCAiTWFjRnJhbWUuaCIKLSNpbXBvcnQgIkZyYW1lVHJlZU5vZGUuaCIKKyNpbXBvcnQgIkZy
YW1lVHJlZS5oIgogI2ltcG9ydCAiTm9kZUltcGwuaCIKICNpbXBvcnQgIlNlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZU5hbWVzcGFjZXMuaCIKQEAgLTI2OCwyNyAr
MjY4LDI3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpicmlkZ2UKIAogLSAo
V2ViQ29yZUZyYW1lQnJpZGdlICopZmlyc3RDaGlsZAogewotICAgIHJldHVybiBicmlkZ2UobV9m
cmFtZS0+dHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICByZXR1cm4gYnJpZGdlKG1fZnJh
bWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICop
bGFzdENoaWxkCiB7Ci0gICAgcmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlTm9kZSgpLT5sYXN0
Q2hpbGQoKSk7CisgICAgcmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlKCktPmxhc3RDaGlsZCgp
KTsKIH0KIAogLSAodW5zaWduZWQpY2hpbGRDb3VudAogewotICAgIHJldHVybiBtX2ZyYW1lLT50
cmVlTm9kZSgpLT5jaGlsZENvdW50KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+Y2hp
bGRDb3VudCgpOwogfQogCiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKilwcmV2aW91c1NpYmxpbmc7
CiB7Ci0gICAgcmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlTm9kZSgpLT5wcmV2aW91c1NpYmxp
bmcoKSk7CisgICAgcmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlKCktPnByZXZpb3VzU2libGlu
ZygpKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopbmV4dFNpYmxpbmc7CiB7Ci0gICAg
cmV0dXJuIGJyaWRnZShtX2ZyYW1lLT50cmVlTm9kZSgpLT5uZXh0U2libGluZygpKTsKKyAgICBy
ZXR1cm4gYnJpZGdlKG1fZnJhbWUtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSk7CiB9CiAKIC0gKEJP
T0wpaXNEZXNjZW5kYW50T2ZGcmFtZTooV2ViQ29yZUZyYW1lQnJpZGdlICopYW5jZXN0b3IKQEAg
LTMzMywxMiArMzMzLDEyIEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpicmlk
Z2UKIAogLSAodm9pZClhcHBlbmRDaGlsZDooV2ViQ29yZUZyYW1lQnJpZGdlICopY2hpbGQKIHsK
LSAgICBtX2ZyYW1lLT50cmVlTm9kZSgpLT5hcHBlbmRDaGlsZChhZG9wdFJlZihbY2hpbGQgcGFy
dF0pKTsKKyAgICBtX2ZyYW1lLT50cmVlKCktPmFwcGVuZENoaWxkKGFkb3B0UmVmKFtjaGlsZCBw
YXJ0XSkpOwogfQogCiAtICh2b2lkKXJlbW92ZUNoaWxkOihXZWJDb3JlRnJhbWVCcmlkZ2UgKilj
aGlsZAogewotICAgIG1fZnJhbWUtPnRyZWVOb2RlKCktPnJlbW92ZUNoaWxkKFtjaGlsZCBwYXJ0
XSk7CisgICAgbV9mcmFtZS0+dHJlZSgpLT5yZW1vdmVDaGlsZChbY2hpbGQgcGFydF0pOwogfQog
CiAtIChXZWJDb3JlRnJhbWVCcmlkZ2UgKiljaGlsZEZyYW1lTmFtZWQ6KE5TU3RyaW5nICopbmFt
ZQpAQCAtNTk3LDEyICs1OTcsMTIgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlRnJhbWVCcmlkZ2Ug
KmJyaWRnZQogLSAodm9pZClzZXRQYXJlbnQ6KFdlYkNvcmVGcmFtZUJyaWRnZSAqKXBhcmVudAog
ewogICAgIC8vIEZJWE1FOiBmcmFtZXMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgcmlnaHQg
cGFyZW50IGluIHRoZSBmaXJzdCBwbGFjZQotICAgIG1fZnJhbWUtPnRyZWVOb2RlKCktPnNldFBh
cmVudChbcGFyZW50IHBhcnRdKTsKKyAgICBtX2ZyYW1lLT50cmVlKCktPnNldFBhcmVudChbcGFy
ZW50IHBhcnRdKTsKIH0KIAogLSAoV2ViQ29yZUZyYW1lQnJpZGdlICopcGFyZW50CiB7Ci0gICAg
TWFjRnJhbWUgKnBhcmVudEZyYW1lID0gTWFjKG1fZnJhbWUtPnRyZWVOb2RlKCktPnBhcmVudCgp
KTsKKyAgICBNYWNGcmFtZSAqcGFyZW50RnJhbWUgPSBNYWMobV9mcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKSk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBy
ZXR1cm4gcGFyZW50RnJhbWUtPmJyaWRnZSgpOwpAQCAtMTU3MywxMiArMTU3MywxMiBAQCBzdGF0
aWMgSFRNTEZvcm1FbGVtZW50SW1wbCAqZm9ybUVsZW1lbnRGCiAKIC0gKHZvaWQpc2V0TmFtZToo
TlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgbV9mcmFtZS0+dHJlZU5vZGUoKS0+c2V0TmFtZShuYW1l
KTsKKyAgICBtX2ZyYW1lLT50cmVlKCktPnNldE5hbWUobmFtZSk7CiB9CiAKIC0gKE5TU3RyaW5n
ICopbmFtZQogewotICAgIHJldHVybiBtX2ZyYW1lLT50cmVlTm9kZSgpLT5uYW1lKCk7CisgICAg
cmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpOwogfQogCiAtICh2b2lkKV9hZGRGcmFtZVBh
dGhUb1N0cmluZzooTlNNdXRhYmxlU3RyaW5nICopcGF0aApJbmRleDogYnJpZGdlL21hYy9Ccm93
c2VyRXh0ZW5zaW9uTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9tYWMvQnJvd3NlckV4dGVu
c2lvbk1hYy5tbQkocmV2aXNpb24gMTI3NjQpCisrKyBicmlkZ2UvbWFjL0Jyb3dzZXJFeHRlbnNp
b25NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgIk1hY0Zy
YW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVCcmlkZ2UuaCIKICNpbXBvcnQgPGt4bWxjb3Jl
L0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgIkZyYW1lVHJlZU5vZGUuaCIKKyNpbXBvcnQgIkZyYW1l
VHJlZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IEJyb3dzZXJFeHRlbnNpb25NYWM6OmNyZWF0ZU5ld1dpbmRvCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBpZiAoW2JyaWRnZSBwYXJ0XSkKLQlbYnJpZGdlIHBhcnRdLT50cmVlTm9kZSgpLT5z
ZXROYW1lKHVybEFyZ3MuZnJhbWVOYW1lKTsKKwlbYnJpZGdlIHBhcnRdLT50cmVlKCktPnNldE5h
bWUodXJsQXJncy5mcmFtZU5hbWUpOwogICAgIAogICAgIGlmIChwYXJ0UmVzdWx0KQogCSpwYXJ0
UmVzdWx0ID0gW2JyaWRnZSBwYXJ0XTsKSW5kZXg6IHBhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDEyNzY0KQorKysgcGFnZS9GcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgY2xhc3MgTW91
c2VNb3ZlRXZlbnQ7CiAgIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkltcGw7CiAg
IGNsYXNzIEZyYW1lUHJpdmF0ZTsKLSAgY2xhc3MgRnJhbWVUcmVlTm9kZTsKKyAgY2xhc3MgRnJh
bWVUcmVlOwogICBjbGFzcyBQbHVnaW47CiAgIGNsYXNzIEtKU1Byb3h5SW1wbDsKICAgCkBAIC05
ODUsNyArOTg1LDcgQEAgcHVibGljOgogICBLVVJMIHVybCgpIGNvbnN0OwogCiAgIC8vIHNwbGl0
IG91dCBjb250cm9sbGVyIG9iamVjdHMKLSAgRnJhbWVUcmVlTm9kZSogdHJlZU5vZGUoKSBjb25z
dDsKKyAgRnJhbWVUcmVlKiB0cmVlKCkgY29uc3Q7CiAgIFNlbGVjdGlvbkNvbnRyb2xsZXImIHNl
bGVjdGlvbigpIGNvbnN0OwogCiAgcHJpdmF0ZToKSW5kZXg6IHBhZ2UvRnJhbWVUcmVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcGFnZS9GcmFtZVRyZWUuaAkocmV2aXNpb24gMTI3NjQpCisrKyBwYWdlL0Zy
YW1lVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw4ICsxOCw4IEBACiAgKiBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KICAqLwogCi0jaWZuZGVmIEZSQU1FX1RSRUVfTk9ERV9ICi0jZGVm
aW5lIEZSQU1FX1RSRUVfTk9ERV9ICisjaWZuZGVmIEZSQU1FX1RSRUVfSAorI2RlZmluZSBGUkFN
RV9UUkVFX0gKIAogI2luY2x1ZGUgPGt4bWxjb3JlL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
a3htbGNvcmUvUGFzc1JlZlB0ci5oPgpAQCAtMzAsMTAgKzMwLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOwogCi0gICAgY2xhc3MgRnJhbWVUcmVlTm9kZSA6IE5v
bmNvcHlhYmxlCisgICAgY2xhc3MgRnJhbWVUcmVlIDogTm9uY29weWFibGUKICAgICB7CiAgICAg
cHVibGljOgotICAgICAgICBGcmFtZVRyZWVOb2RlKEZyYW1lKiB0aGlzRnJhbWUsIEZyYW1lKiBw
YXJlbnRGcmFtZSkgCisgICAgICAgIEZyYW1lVHJlZShGcmFtZSogdGhpc0ZyYW1lLCBGcmFtZSog
cGFyZW50RnJhbWUpIAogICAgICAgICAgICAgOiBtX3RoaXNGcmFtZSh0aGlzRnJhbWUpCiAgICAg
ICAgICAgICAsIG1fcGFyZW50KHBhcmVudEZyYW1lKQogICAgICAgICAgICAgLCBtX3ByZXZpb3Vz
U2libGluZygwKQpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICAsIG1fY2hpbGRDb3VudCgwKQogICAgICAgICB7CiAgICAgICAgIH0KLSAgICAgICAgfkZy
YW1lVHJlZU5vZGUoKTsKKyAgICAgICAgfkZyYW1lVHJlZSgpOwogICAgICAgICAKICAgICAgICAg
Y29uc3QgRE9NU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgICAg
IHZvaWQgc2V0TmFtZShjb25zdCBET01TdHJpbmcmIG5hbWUpOwpAQCAtNzMsNCArNzMsNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEZSQU1FX1RSRUVfTk9ERV9ICisjZW5kaWYgLy8gRlJBTUVfVFJFRV9ICkluZGV4OiBwYWdlL0Zy
YW1lVHJlZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWVUcmVlTm9kZS5jcHAJKHJl
dmlzaW9uIDEyNzY0KQorKysgcGFnZS9GcmFtZVRyZWVOb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw4OSArMCwwIEBACi0vLyAtKi0gYy1iYXNpYy1vZmZzZXQ6IDQgLSotCi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkZyYW1lVHJlZU5vZGUuaCIKLQotI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIk5vZGVJbXBsLmgiCi0KLSNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0KLXVzaW5nIHN0ZDo6c3dhcDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1GcmFtZVRyZWVOb2RlOjp+RnJhbWVUcmVlTm9kZSgpCi17Ci0gICAgZm9yIChGcmFtZSogY2hp
bGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0
U2libGluZygpKQotICAgICAgICBjaGlsZC0+ZGV0YWNoRnJvbVZpZXcoKTsKLX0KLQotdm9pZCBG
cmFtZVRyZWVOb2RlOjpzZXROYW1lKGNvbnN0IERPTVN0cmluZyYgbmFtZSkgCi17IAotICAgIERP
TVN0cmluZyBuID0gbmFtZTsKLSAgICAgICAgCi0gICAgLy8gRklYTUU6IGlzIHRoZSBibGFuayBy
dWxlIG5lZWRlZCBvciB1c2VmdWw/Ci0gICAgaWYgKHBhcmVudCgpICYmIChuYW1lLmlzRW1wdHko
KSB8fCBwYXJlbnQoKS0+ZnJhbWVFeGlzdHMobmFtZS5xc3RyaW5nKCkpIHx8IG5hbWUgPT0gIl9i
bGFuayIpKQotICAgICAgICBuID0gcGFyZW50KCktPnJlcXVlc3RGcmFtZU5hbWUoKTsKLSAgICAK
LSAgICBtX25hbWUgPSBuOwotfQotCi12b2lkIEZyYW1lVHJlZU5vZGU6OmFwcGVuZENoaWxkKFBh
c3NSZWZQdHI8RnJhbWU+IGNoaWxkKQotewotICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX3BhcmVu
dCA9IG1fdGhpc0ZyYW1lOwotCi0gICAgRnJhbWUqIG9sZExhc3QgPSBtX2xhc3RDaGlsZDsKLSAg
ICBtX2xhc3RDaGlsZCA9IGNoaWxkLmdldCgpOwotCi0gICAgaWYgKG9sZExhc3QpIHsKLSAgICAg
ICAgY2hpbGQtPnRyZWVOb2RlKCktPm1fcHJldmlvdXNTaWJsaW5nID0gb2xkTGFzdDsKLSAgICAg
ICAgb2xkTGFzdC0+dHJlZU5vZGUoKS0+bV9uZXh0U2libGluZyA9IGNoaWxkOwotICAgIH0gZWxz
ZQotICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsKLQotICAgIG1fY2hpbGRDb3VudCsrOwot
Ci0gICAgQVNTRVJUKCFtX2xhc3RDaGlsZC0+dHJlZU5vZGUoKS0+bV9uZXh0U2libGluZyk7Ci19
Ci0KLXZvaWQgRnJhbWVUcmVlTm9kZTo6cmVtb3ZlQ2hpbGQoRnJhbWUqIGNoaWxkKQotewotICAg
IGNoaWxkLT50cmVlTm9kZSgpLT5tX3BhcmVudCA9IDA7Ci0gICAgY2hpbGQtPmRldGFjaEZyb21W
aWV3KCk7Ci0KLSAgICAvLyBTbGlnaHRseSB0cmlja3kgd2F5IHRvIHByZXZlbnQgZGVsZXRpbmcg
dGhlIGNoaWxkIHVudGlsIHdlIGFyZSBkb25lIHdpdGggaXQsIHcvbwotICAgIC8vIGV4dHJhIHJl
ZnMuIFRoZXNlIHN3YXBzIGxlYXZlIHRoZSBjaGlsZCBpbiBhIGNpcmN1bGFyIGxpc3QgYnkgaXRz
ZWxmLiBDbGVhcmluZyBpdHMKLSAgICAvLyBwcmV2aW91cyBhbmQgbmV4dCB3aWxsIHRoZW4gZmlu
YWxseSBkZXJlZiBpdC4KLQotICAgIFJlZlB0cjxGcmFtZT4mIG5ld0xvY2F0aW9uRm9yTmV4dCA9
IG1fZmlyc3RDaGlsZCA9PSBjaGlsZCA/IG1fZmlyc3RDaGlsZCA6IGNoaWxkLT50cmVlTm9kZSgp
LT5tX3ByZXZpb3VzU2libGluZy0+dHJlZU5vZGUoKS0+bV9uZXh0U2libGluZzsKLSAgICBGcmFt
ZSomIG5ld0xvY2F0aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSBjaGlsZCA/IG1fbGFz
dENoaWxkIDogY2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmctPnRyZWVOb2RlKCktPm1f
cHJldmlvdXNTaWJsaW5nOwotICAgIHN3YXAobmV3TG9jYXRpb25Gb3JOZXh0LCBjaGlsZC0+dHJl
ZU5vZGUoKS0+bV9uZXh0U2libGluZyk7Ci0gICAgc3dhcChuZXdMb2NhdGlvbkZvclByZXZpb3Vz
LCBjaGlsZC0+dHJlZU5vZGUoKS0+bV9wcmV2aW91c1NpYmxpbmcpOwotCi0gICAgY2hpbGQtPnRy
ZWVOb2RlKCktPm1fcHJldmlvdXNTaWJsaW5nID0gMDsKLSAgICBjaGlsZC0+dHJlZU5vZGUoKS0+
bV9uZXh0U2libGluZyA9IDA7Ci0KLSAgICBtX2NoaWxkQ291bnQtLTsKLX0KLQotfQpJbmRleDog
cGFnZS9GcmFtZVRyZWVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZVRyZWVOb2RlLmgJ
KHJldmlzaW9uIDEyNzY0KQorKysgcGFnZS9GcmFtZVRyZWVOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNzYgKzAsMCBAQAotLy8gLSotIG1vZGU6IGMrKzsgYy1iYXNpYy1vZmZzZXQ6IDQgLSot
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAotICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBGUkFN
RV9UUkVFX05PREVfSAotI2RlZmluZSBGUkFNRV9UUkVFX05PREVfSAotCi0jaW5jbHVkZSA8a3ht
bGNvcmUvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDxreG1sY29yZS9QYXNzUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8a3htbGNvcmUvUmVmUHRyLmg+Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgRnJhbWU7Ci0KLSAgICBjbGFzcyBG
cmFtZVRyZWVOb2RlIDogTm9uY29weWFibGUKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgICBG
cmFtZVRyZWVOb2RlKEZyYW1lKiB0aGlzRnJhbWUsIEZyYW1lKiBwYXJlbnRGcmFtZSkgCi0gICAg
ICAgICAgICA6IG1fdGhpc0ZyYW1lKHRoaXNGcmFtZSkKLSAgICAgICAgICAgICwgbV9wYXJlbnQo
cGFyZW50RnJhbWUpCi0gICAgICAgICAgICAsIG1fcHJldmlvdXNTaWJsaW5nKDApCi0gICAgICAg
ICAgICAsIG1fbGFzdENoaWxkKDApCi0gICAgICAgICAgICAsIG1fY2hpbGRDb3VudCgwKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgfkZyYW1lVHJlZU5vZGUoKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IERPTVN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQot
ICAgICAgICB2b2lkIHNldE5hbWUoY29uc3QgRE9NU3RyaW5nJiBuYW1lKTsKLSAgICAgICAgRnJh
bWUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9Ci0gICAgICAgIHZvaWQgc2V0
UGFyZW50KEZyYW1lKiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KLSAgICAgICAgCi0g
ICAgICAgIEZyYW1lKiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNpYmxpbmcu
Z2V0KCk7IH0KLSAgICAgICAgRnJhbWUqIHByZXZpb3VzU2libGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJldmlvdXNTaWJsaW5nOyB9Ci0gICAgICAgIEZyYW1lKiBmaXJzdENoaWxkKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdENoaWxkLmdldCgpOyB9Ci0gICAgICAgIEZyYW1lKiBsYXN0Q2hpbGQo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQotICAgICAgICBpbnQgY2hpbGRDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBh
cHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCk7Ci0gICAgICAgIHZvaWQgcmVtb3Zl
Q2hpbGQoRnJhbWUgKmNoaWxkKTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRnJh
bWUqIG1fdGhpc0ZyYW1lOwotICAgICAgICAKLSAgICAgICAgRnJhbWUgKm1fcGFyZW50OwotICAg
ICAgICBET01TdHJpbmcgbV9uYW1lOwotICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IHVzZSBM
aXN0UmVmUHRyPwotICAgICAgICBSZWZQdHI8RnJhbWU+IG1fbmV4dFNpYmxpbmc7Ci0gICAgICAg
IEZyYW1lKiBtX3ByZXZpb3VzU2libGluZzsKLSAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZpcnN0
Q2hpbGQ7Ci0gICAgICAgIEZyYW1lKiBtX2xhc3RDaGlsZDsKLSAgICAgICAgaW50IG1fY2hpbGRD
b3VudDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGUkFN
RV9UUkVFX05PREVfSApJbmRleDogcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDEyNzY1KQorKysgcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEZyYW1lOjpzdG9wTG9hZGluZyhib29sIHNlbmRV
bmxvYWQpCiAgIH0KIAogICAvLyB0ZWxsIGFsbCBzdWJmcmFtZXMgdG8gc3RvcCBhcyB3ZWxsCi0g
IGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgZm9yIChGcmFtZSogY2hp
bGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+
bmV4dFNpYmxpbmcoKSkKICAgICAgIGNoaWxkLT5zdG9wTG9hZGluZyhzZW5kVW5sb2FkKTsKIAog
ICBkLT5tX2JQZW5kaW5nQ2hpbGRSZWRpcmVjdGlvbiA9IGZhbHNlOwpAQCAtNDk3LDcgKzQ5Nyw3
IEBAIHZvaWQgRnJhbWU6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQcm9wZXIKICAgZC0+bV9kb2Mg
PSAwOwogICBkLT5tX2RlY29kZXIgPSAwOwogCi0gIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZU5v
ZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4
dFNpYmxpbmcoKSkKKyAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgIGRpc2Nv
bm5lY3RDaGlsZChjaGlsZCk7CiAgIGQtPm1fcGx1Z2lucy5jbGVhcigpOwogCkBAIC03ODgsNyAr
Nzg4LDcgQEAgdm9pZCBGcmFtZTo6c3RvcEFuaW1hdGlvbnMoKQogICBpZiAoZC0+bV9kb2MpCiAg
ICAgICBkLT5tX2RvYy0+ZG9jTG9hZGVyKCktPnNldFNob3dBbmltYXRpb25zKEtIVE1MU2V0dGlu
Z3M6OktBbmltYXRpb25EaXNhYmxlZCk7CiAKLSAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlTm9k
ZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0
U2libGluZygpKQorICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQogICAgICAgY2hpbGQt
PnN0b3BBbmltYXRpb25zKCk7CiB9CiAKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIEZyYW1lOjpz
bG90TG9hZGVyUmVxdWVzdERvbmUoIERvY0xvCiB2b2lkIEZyYW1lOjpjaGVja0NvbXBsZXRlZCgp
CiB7CiAgIC8vIEFueSBmcmFtZSB0aGF0IGhhc24ndCBjb21wbGV0ZWQgeWV0ID8KLSAgZm9yIChG
cmFtZSogY2hpbGQgPSB0cmVlTm9kZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT50cmVlTm9kZSgpLT5uZXh0U2libGluZygpKQorICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRy
ZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2li
bGluZygpKQogICAgICAgaWYgKCFjaGlsZC0+ZC0+bV9iQ29tcGxldGUpCiAgICAgICAgICAgcmV0
dXJuOwogCkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBGcmFtZTo6Y2hlY2tDb21wbGV0ZWQoKQog
ICBpZiAoZC0+bV9zY2hlZHVsZWRSZWRpcmVjdGlvbiAhPSBub1JlZGlyZWN0aW9uU2NoZWR1bGVk
KSB7CiAgICAgICAvLyBEbyBub3Qgc3RhcnQgcmVkaXJlY3Rpb24gZm9yIGZyYW1lcyBoZXJlISBU
aGF0IGFjdGlvbiBpcwogICAgICAgLy8gZGVmZXJyZWQgdW50aWwgdGhlIHBhcmVudCBlbWl0cyBh
IGNvbXBsZXRlZCBzaWduYWwuCi0gICAgICBpZiAoIXRyZWVOb2RlKCktPnBhcmVudCgpKQorICAg
ICAgaWYgKCF0cmVlKCktPnBhcmVudCgpKQogICAgICAgICAgIHN0YXJ0UmVkaXJlY3Rpb25UaW1l
cigpOwogCiAgICAgICBlbWl0IGNvbXBsZXRlZCh0cnVlKTsKQEAgLTg4OSw3ICs4ODksNyBAQCB2
b2lkIEZyYW1lOjpjaGVja0VtaXRMb2FkRXZlbnQoKQogICAgIGlmIChkLT5tX2JMb2FkRXZlbnRF
bWl0dGVkIHx8ICFkLT5tX2RvYyB8fCBkLT5tX2RvYy0+cGFyc2luZygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWVOb2RlKCktPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWVOb2RlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9y
IChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKCFjaGlsZC0+ZC0+bV9iQ29t
cGxldGUpIC8vIHN0aWxsIGdvdCBhIGZyYW1lIHJ1bm5pbmcgLT4gdG9vIGVhcmx5CiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIEZyYW1lOjpjaGVja0VtaXRM
b2FkRXZlbnQoKQogICAgIC8vIG5vdCB3aGVuIGZvbGxvd2luZyBhIGxpbmsgaW4gYSBmcmFtZSAo
IzQ0MTYyKS4KICAgICBpZiAoZC0+bV9kb2MpIHsKICAgICAgICAgRE9NU3RyaW5nIGRvbWFpbiA9
IGQtPm1fZG9jLT5kb21haW4oKTsKLSAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlTm9k
ZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0
U2libGluZygpKQorICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQogICAgICAg
ICAgICAgaWYgKGNoaWxkLT5kLT5tX2RvYykKICAgICAgICAgICAgICAgICBjaGlsZC0+ZC0+bV9k
b2MtPnNldERvbWFpbihkb21haW4pOwogICAgIH0KQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQg
RnJhbWU6OnNsb3RDaGlsZENvbXBsZXRlZCgpCiAKIHZvaWQgRnJhbWU6OnNsb3RDaGlsZENvbXBs
ZXRlZCggYm9vbCBjb21wbGV0ZSApCiB7Ci0gIGlmIChjb21wbGV0ZSAmJiB0cmVlTm9kZSgpLT5w
YXJlbnQoKSA9PSAwKQorICBpZiAoY29tcGxldGUgJiYgdHJlZSgpLT5wYXJlbnQoKSA9PSAwKQog
ICAgIGQtPm1fYlBlbmRpbmdDaGlsZFJlZGlyZWN0aW9uID0gdHJ1ZTsKIAogICBjaGVja0NvbXBs
ZXRlZCgpOwpAQCAtMTY3MCw4ICsxNjcwLDggQEAgRnJhbWUqIEZyYW1lOjpmaW5kRnJhbWUoY29u
c3QgUVN0cmluZyYgZgogewogICAgIC8vIEZJWE1FOiB0aGlzIG9ubHkgZmluZHMgY2hpbGQgZnJh
bWVzLCBpcyBpdCBldmVyIGFwcHJvcHJpYXRlIHRvIHVzZSB0aGlzPwogICAgIC8vICMjIyBodHRw
Oi8vd3d3LnczLm9yZy9UUi9odG1sNC9hcHBlbmRpeC9ub3Rlcy5odG1sI25vdGVzLWZyYW1lcwot
ICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgaWYgKGNo
aWxkLT50cmVlTm9kZSgpLT5uYW1lKCkgPT0gZikKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRy
ZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2li
bGluZygpKQorICAgICAgICBpZiAoY2hpbGQtPnRyZWUoKS0+bmFtZSgpID09IGYpCiAgICAgICAg
ICAgICByZXR1cm4gY2hpbGQ7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNzMzLDcgKzE3MzMsNyBA
QCB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGludCBwZXJjZW50KQogICBpZihkLT5tX2RvYykK
ICAgICAgIGQtPm1fZG9jLT5yZWNhbGNTdHlsZShOb2RlSW1wbDo6Rm9yY2UpOwogCi0gIGZvciAo
RnJhbWUqIGNoaWxkID0gdHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+dHJlZU5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgZm9yIChGcmFtZSogY2hpbGQgPSB0
cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNp
YmxpbmcoKSkKICAgICAgIGNoaWxkLT5zZXRab29tRmFjdG9yKGQtPm1fem9vbUZhY3Rvcik7CiAK
ICAgaWYgKGQtPm1fZG9jICYmIGQtPm1fZG9jLT5yZW5kZXJlcigpICYmIGQtPm1fZG9jLT5yZW5k
ZXJlcigpLT5uZWVkc0xheW91dCgpKQpAQCAtMTc5Niw4ICsxNzk2LDggQEAgUVN0cmluZ0xpc3Qg
RnJhbWU6OmZyYW1lTmFtZXMoKSBjb25zdAogewogICBRU3RyaW5nTGlzdCByZXM7CiAKLSAgZm9y
IChGcmFtZSogY2hpbGQgPSB0cmVlTm9kZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT50cmVlTm9kZSgpLT5uZXh0U2libGluZygpKQotICAgICAgcmVzICs9IGNoaWxkLT50
cmVlTm9kZSgpLT5uYW1lKCkucXN0cmluZygpOworICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUo
KS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGlu
ZygpKQorICAgICAgcmVzICs9IGNoaWxkLT50cmVlKCktPm5hbWUoKS5xc3RyaW5nKCk7CiAKICAg
cmV0dXJuIHJlczsKIH0KQEAgLTE4MDYsNyArMTgwNiw3IEBAIFFQdHJMaXN0PEZyYW1lPiBGcmFt
ZTo6ZnJhbWVzKCkgY29uc3QKIHsKICAgUVB0ckxpc3Q8RnJhbWU+IHJlczsKIAotICBmb3IgKEZy
YW1lKiBjaGlsZCA9IHRyZWVOb2RlKCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPnRyZWVOb2RlKCktPm5leHRTaWJsaW5nKCkpCisgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJl
ZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJs
aW5nKCkpCiAgICAgICByZXMuYXBwZW5kKGNoaWxkKTsKIAogICByZXR1cm4gcmVzOwpAQCAtMTgx
NCw4ICsxODE0LDggQEAgUVB0ckxpc3Q8RnJhbWU+IEZyYW1lOjpmcmFtZXMoKSBjb25zdAogCiBG
cmFtZSogRnJhbWU6OmNoaWxkRnJhbWVOYW1lZChjb25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAog
ewotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZU5vZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgaWYg
KGNoaWxkLT50cmVlTm9kZSgpLT5uYW1lKCkgPT0gbmFtZSkKKyAgICBmb3IgKEZyYW1lKiBjaGls
ZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQorICAgICAgICBpZiAoY2hpbGQtPnRyZWUoKS0+bmFtZSgpID09IG5hbWUp
CiAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMjU2LDIz
ICsyMjU2LDIzIEBAIHZvaWQgRnJhbWU6OmluY3JlbWVudEZyYW1lQ291bnQoKQogewogICAgIC8v
IEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbiBQYWdlCiAgICAgZnJhbWVDb3VudCsrOwotICAgIGlm
ICh0cmVlTm9kZSgpLT5wYXJlbnQoKSkKLSAgICAgICAgdHJlZU5vZGUoKS0+cGFyZW50KCktPmlu
Y3JlbWVudEZyYW1lQ291bnQoKTsKKyAgICBpZiAodHJlZSgpLT5wYXJlbnQoKSkKKyAgICAgICAg
dHJlZSgpLT5wYXJlbnQoKS0+aW5jcmVtZW50RnJhbWVDb3VudCgpOwogfQogCiB2b2lkIEZyYW1l
OjpkZWNyZW1lbnRGcmFtZUNvdW50KCkKIHsKICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUg
aW4gUGFnZQogICAgIGZyYW1lQ291bnQtLTsKLSAgICBpZiAodHJlZU5vZGUoKS0+cGFyZW50KCkp
Ci0gICAgICAgIHRyZWVOb2RlKCktPnBhcmVudCgpLT5kZWNyZW1lbnRGcmFtZUNvdW50KCk7Cisg
ICAgaWYgKHRyZWUoKS0+cGFyZW50KCkpCisgICAgICAgIHRyZWUoKS0+cGFyZW50KCktPmRlY3Jl
bWVudEZyYW1lQ291bnQoKTsKIH0KIAogaW50IEZyYW1lOjp0b3BMZXZlbEZyYW1lQ291bnQoKQog
ewogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBiZSBpbiBQYWdlCi0gICAgaWYgKHRyZWVOb2Rl
KCktPnBhcmVudCgpKQotICAgICAgICByZXR1cm4gdHJlZU5vZGUoKS0+cGFyZW50KCktPnRvcExl
dmVsRnJhbWVDb3VudCgpOworICAgIGlmICh0cmVlKCktPnBhcmVudCgpKQorICAgICAgICByZXR1
cm4gdHJlZSgpLT5wYXJlbnQoKS0+dG9wTGV2ZWxGcmFtZUNvdW50KCk7CiAgICAgcmV0dXJuIGZy
YW1lQ291bnQ7CiB9CiAKQEAgLTI3MjQsNyArMjcyNCw3IEBAIHZvaWQgRnJhbWU6OmxpZmVTdXBw
b3J0VGltZXJGaXJlZChUaW1lcjwKIHZvaWQgRnJhbWU6OnNlbGVjdEZyYW1lRWxlbWVudEluUGFy
ZW50SWZGdWxseVNlbGVjdGVkKCkKIHsKICAgICAvLyBGaW5kIHRoZSBwYXJlbnQgZnJhbWU7IGlm
IHRoZXJlIGlzIG5vbmUsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIEZyYW1lICpw
YXJlbnQgPSB0cmVlTm9kZSgpLT5wYXJlbnQoKTsKKyAgICBGcmFtZSAqcGFyZW50ID0gdHJlZSgp
LT5wYXJlbnQoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIEZyYW1l
VmlldyAqcGFyZW50VmlldyA9IHBhcmVudC0+dmlldygpOwpAQCAtMjc4Niw4ICsyNzg2LDggQEAg
dm9pZCBGcmFtZTo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiBib29sIEZyYW1lOjp1c2VyR2Vz
dHVyZUhpbnQoKQogewogICAgIEZyYW1lICpyb290RnJhbWUgPSB0aGlzOwotICAgIHdoaWxlIChy
b290RnJhbWUtPnRyZWVOb2RlKCktPnBhcmVudCgpKQotICAgICAgICByb290RnJhbWUgPSByb290
RnJhbWUtPnRyZWVOb2RlKCktPnBhcmVudCgpOworICAgIHdoaWxlIChyb290RnJhbWUtPnRyZWUo
KS0+cGFyZW50KCkpCisgICAgICAgIHJvb3RGcmFtZSA9IHJvb3RGcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKTsKIAogICAgIGlmIChyb290RnJhbWUtPmpTY3JpcHQoKSkKICAgICAgICAgcmV0dXJuIHJv
b3RGcmFtZS0+alNjcmlwdCgpLT5pbnRlcnByZXRlcigpLT53YXNSdW5CeVVzZXJHZXN0dXJlKCk7
CkBAIC0zMDQ4LDggKzMwNDgsOCBAQCBib29sIEZyYW1lOjpjYW5DYWNoZVBhZ2UoKQogICAgIC8v
IDMuICBUaGUgcGFnZSBoYXMgbm8gcGFzc3dvcmQgZmllbGRzLgogICAgIC8vIDQuICBUaGUgVVJM
IGZvciB0aGUgcGFnZSBpcyBub3QgaHR0cHMuCiAgICAgLy8gNS4gIFRoZSBwYWdlIGhhcyBubyBh
cHBsZXRzLgotICAgIGlmICh0cmVlTm9kZSgpLT5jaGlsZENvdW50KCkgfHwgZC0+bV9wbHVnaW5z
LnNpemUoKSB8fAotICAgICAgICB0cmVlTm9kZSgpLT5wYXJlbnQoKSB8fAorICAgIGlmICh0cmVl
KCktPmNoaWxkQ291bnQoKSB8fCBkLT5tX3BsdWdpbnMuc2l6ZSgpIHx8CisgICAgICAgIHRyZWUo
KS0+cGFyZW50KCkgfHwKICAgICAgICAgZC0+bV91cmwucHJvdG9jb2woKS5zdGFydHNXaXRoKCJo
dHRwcyIpIHx8IAogICAgICAgICAoZC0+bV9kb2MgJiYgKGQtPm1fZG9jLT5hcHBsZXRzKCktPmxl
bmd0aCgpICE9IDAgfHwKICAgICAgICAgICAgICAgICAgICAgICBkLT5tX2RvYy0+aGFzV2luZG93
RXZlbnRMaXN0ZW5lcih1bmxvYWRFdmVudCkgfHwKQEAgLTMxNTMsOCArMzE1Myw4IEBAIFFQdHJM
aXN0PEZyYW1lPiAmRnJhbWU6Om11dGFibGVJbnN0YW5jZXMKIAogdm9pZCBGcmFtZTo6dXBkYXRl
UG9saWN5QmFzZVVSTCgpCiB7Ci0gICAgaWYgKHRyZWVOb2RlKCktPnBhcmVudCgpICYmIHRyZWVO
b2RlKCktPnBhcmVudCgpLT5kb2N1bWVudCgpKQotICAgICAgICBzZXRQb2xpY3lCYXNlVVJMKHRy
ZWVOb2RlKCktPnBhcmVudCgpLT5kb2N1bWVudCgpLT5wb2xpY3lCYXNlVVJMKCkpOworICAgIGlm
ICh0cmVlKCktPnBhcmVudCgpICYmIHRyZWUoKS0+cGFyZW50KCktPmRvY3VtZW50KCkpCisgICAg
ICAgIHNldFBvbGljeUJhc2VVUkwodHJlZSgpLT5wYXJlbnQoKS0+ZG9jdW1lbnQoKS0+cG9saWN5
QmFzZVVSTCgpKTsKICAgICBlbHNlCiAgICAgICAgIHNldFBvbGljeUJhc2VVUkwoZC0+bV91cmwu
dXJsKCkpOwogfQpAQCAtMzE2Myw3ICszMTYzLDcgQEAgdm9pZCBGcmFtZTo6c2V0UG9saWN5QmFz
ZVVSTChjb25zdCBET01TdAogewogICAgIGlmIChkb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVu
dCgpLT5zZXRQb2xpY3lCYXNlVVJMKHMpOwotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gdHJlZU5v
ZGUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZU5vZGUoKS0+bmV4
dFNpYmxpbmcoKSkKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRyZWUoKS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQogICAgICAgICBj
aGlsZC0+c2V0UG9saWN5QmFzZVVSTChzKTsKIH0KIApAQCAtMzQ5Myw3ICszNDkzLDcgQEAgYm9v
bCBGcmFtZTo6aXNDb21wbGV0ZSgpCiAgICAgcmV0dXJuIGQtPm1fYkNvbXBsZXRlOwogfQogCi1G
cmFtZVRyZWVOb2RlICpGcmFtZTo6dHJlZU5vZGUoKSBjb25zdAorRnJhbWVUcmVlICpGcmFtZTo6
dHJlZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICZkLT5tX3RyZWVOb2RlOwogfQpAQCAtMzUxOSw3
ICszNTE5LDcgQEAgdm9pZCBGcmFtZTo6c3RvcFJlZGlyZWN0aW9uVGltZXIoKQogCiB2b2lkIEZy
YW1lOjpmcmFtZURldGFjaGVkKCkKIHsKLSAgICBGcmFtZSAqcGFyZW50ID0gdHJlZU5vZGUoKS0+
cGFyZW50KCk7CisgICAgRnJhbWUgKnBhcmVudCA9IHRyZWUoKS0+cGFyZW50KCk7CiAgICAgaWYg
KHBhcmVudCkKICAgICAgICAgcGFyZW50LT5kaXNjb25uZWN0Q2hpbGQodGhpcyk7CiB9CkBAIC0z
NTI5LDcgKzM1MjksNyBAQCB2b2lkIEZyYW1lOjp1cGRhdGVCYXNlVVJMRm9yRW1wdHlEb2N1bWVu
CiAgICAgRWxlbWVudEltcGwqIG93bmVyID0gb3duZXJFbGVtZW50KCk7CiAgICAgLy8gRklYTUU6
IHNob3VsZCBlbWJlZCBiZSBpbmNsdWRlZAogICAgIGlmIChvd25lciAmJiAob3duZXItPmhhc1Rh
Z05hbWUoaWZyYW1lVGFnKSB8fCBvd25lci0+aGFzVGFnTmFtZShvYmplY3RUYWcpIHx8IG93bmVy
LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSkpCi0gICAgICAgIGQtPm1fZG9jLT5zZXRCYXNlVVJMKHRy
ZWVOb2RlKCktPnBhcmVudCgpLT5kLT5tX2RvYy0+YmFzZVVSTCgpKTsKKyAgICAgICAgZC0+bV9k
b2MtPnNldEJhc2VVUkwodHJlZSgpLT5wYXJlbnQoKS0+ZC0+bV9kb2MtPmJhc2VVUkwoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBhZ2UvRnJhbWVQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gcGFnZS9GcmFtZVByaXZhdGUuaAkocmV2aXNpb24gMTI3NjQpCisrKyBwYWdl
L0ZyYW1lUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSAiZWRpdF9jb21tYW5kLmgiCiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSA8a2lv
L2dsb2JhbC5oPgotI2luY2x1ZGUgIkZyYW1lVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJreG1sY29yZS9WZWN0b3IuaCIKIAogbmFtZXNwYWNlIEtJTyB7CkBA
IC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgICAgICBtX3R5cGluZ1N0eWxlLT5kZXJlZigp
OwogICB9CiAKLSAgRnJhbWVUcmVlTm9kZSBtX3RyZWVOb2RlOworICBGcmFtZVRyZWUgbV90cmVl
Tm9kZTsKIAogICAvLyBvbGQgc3R5bGUgZnJhbWUgaW5mbwogICBGcmFtZUxpc3QgbV9mcmFtZXM7
CkluZGV4OiBwYWdlL0ZyYW1lVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9GcmFtZVRyZWUu
Y3BwCShyZXZpc2lvbiAxMjc2NCkKKysrIHBhZ2UvRnJhbWVUcmVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTksNyArMTksNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJGcmFtZVRyZWVOb2RlLmgiCisjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAKICNpbmNsdWRlIDxr
eG1sY29yZS9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTMxLDEzICszMSwx
MyBAQCB1c2luZyBzdGQ6OnN3YXA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRnJhbWVUcmVl
Tm9kZTo6fkZyYW1lVHJlZU5vZGUoKQorRnJhbWVUcmVlOjp+RnJhbWVUcmVlKCkKIHsKLSAgICBm
b3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWVOb2RlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBmaXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCiAgICAg
ICAgIGNoaWxkLT5kZXRhY2hGcm9tVmlldygpOwogfQogCi12b2lkIEZyYW1lVHJlZU5vZGU6OnNl
dE5hbWUoY29uc3QgRE9NU3RyaW5nJiBuYW1lKSAKK3ZvaWQgRnJhbWVUcmVlOjpzZXROYW1lKGNv
bnN0IERPTVN0cmluZyYgbmFtZSkgCiB7IAogICAgIERPTVN0cmluZyBuID0gbmFtZTsKICAgICAg
ICAgCkBAIC00OCw0MCArNDgsNDAgQEAgdm9pZCBGcmFtZVRyZWVOb2RlOjpzZXROYW1lKGNvbnN0
IERPTVN0cgogICAgIG1fbmFtZSA9IG47CiB9CiAKLXZvaWQgRnJhbWVUcmVlTm9kZTo6YXBwZW5k
Q2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpCit2b2lkIEZyYW1lVHJlZTo6YXBwZW5kQ2hp
bGQoUGFzc1JlZlB0cjxGcmFtZT4gY2hpbGQpCiB7Ci0gICAgY2hpbGQtPnRyZWVOb2RlKCktPm1f
cGFyZW50ID0gbV90aGlzRnJhbWU7CisgICAgY2hpbGQtPnRyZWUoKS0+bV9wYXJlbnQgPSBtX3Ro
aXNGcmFtZTsKIAogICAgIEZyYW1lKiBvbGRMYXN0ID0gbV9sYXN0Q2hpbGQ7CiAgICAgbV9sYXN0
Q2hpbGQgPSBjaGlsZC5nZXQoKTsKIAogICAgIGlmIChvbGRMYXN0KSB7Ci0gICAgICAgIGNoaWxk
LT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZyA9IG9sZExhc3Q7Ci0gICAgICAgIG9sZExh
c3QtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcgPSBjaGlsZDsKKyAgICAgICAgY2hpbGQtPnRy
ZWUoKS0+bV9wcmV2aW91c1NpYmxpbmcgPSBvbGRMYXN0OworICAgICAgICBvbGRMYXN0LT50cmVl
KCktPm1fbmV4dFNpYmxpbmcgPSBjaGlsZDsKICAgICB9IGVsc2UKICAgICAgICAgbV9maXJzdENo
aWxkID0gY2hpbGQ7CiAKICAgICBtX2NoaWxkQ291bnQrKzsKIAotICAgIEFTU0VSVCghbV9sYXN0
Q2hpbGQtPnRyZWVOb2RlKCktPm1fbmV4dFNpYmxpbmcpOworICAgIEFTU0VSVCghbV9sYXN0Q2hp
bGQtPnRyZWUoKS0+bV9uZXh0U2libGluZyk7CiB9CiAKLXZvaWQgRnJhbWVUcmVlTm9kZTo6cmVt
b3ZlQ2hpbGQoRnJhbWUqIGNoaWxkKQordm9pZCBGcmFtZVRyZWU6OnJlbW92ZUNoaWxkKEZyYW1l
KiBjaGlsZCkKIHsKLSAgICBjaGlsZC0+dHJlZU5vZGUoKS0+bV9wYXJlbnQgPSAwOworICAgIGNo
aWxkLT50cmVlKCktPm1fcGFyZW50ID0gMDsKICAgICBjaGlsZC0+ZGV0YWNoRnJvbVZpZXcoKTsK
IAogICAgIC8vIFNsaWdodGx5IHRyaWNreSB3YXkgdG8gcHJldmVudCBkZWxldGluZyB0aGUgY2hp
bGQgdW50aWwgd2UgYXJlIGRvbmUgd2l0aCBpdCwgdy9vCiAgICAgLy8gZXh0cmEgcmVmcy4gVGhl
c2Ugc3dhcHMgbGVhdmUgdGhlIGNoaWxkIGluIGEgY2lyY3VsYXIgbGlzdCBieSBpdHNlbGYuIENs
ZWFyaW5nIGl0cwogICAgIC8vIHByZXZpb3VzIGFuZCBuZXh0IHdpbGwgdGhlbiBmaW5hbGx5IGRl
cmVmIGl0LgogCi0gICAgUmVmUHRyPEZyYW1lPiYgbmV3TG9jYXRpb25Gb3JOZXh0ID0gbV9maXJz
dENoaWxkID09IGNoaWxkID8gbV9maXJzdENoaWxkIDogY2hpbGQtPnRyZWVOb2RlKCktPm1fcHJl
dmlvdXNTaWJsaW5nLT50cmVlTm9kZSgpLT5tX25leHRTaWJsaW5nOwotICAgIEZyYW1lKiYgbmV3
TG9jYXRpb25Gb3JQcmV2aW91cyA9IG1fbGFzdENoaWxkID09IGNoaWxkID8gbV9sYXN0Q2hpbGQg
OiBjaGlsZC0+dHJlZU5vZGUoKS0+bV9uZXh0U2libGluZy0+dHJlZU5vZGUoKS0+bV9wcmV2aW91
c1NpYmxpbmc7Ci0gICAgc3dhcChuZXdMb2NhdGlvbkZvck5leHQsIGNoaWxkLT50cmVlTm9kZSgp
LT5tX25leHRTaWJsaW5nKTsKLSAgICBzd2FwKG5ld0xvY2F0aW9uRm9yUHJldmlvdXMsIGNoaWxk
LT50cmVlTm9kZSgpLT5tX3ByZXZpb3VzU2libGluZyk7CisgICAgUmVmUHRyPEZyYW1lPiYgbmV3
TG9jYXRpb25Gb3JOZXh0ID0gbV9maXJzdENoaWxkID09IGNoaWxkID8gbV9maXJzdENoaWxkIDog
Y2hpbGQtPnRyZWUoKS0+bV9wcmV2aW91c1NpYmxpbmctPnRyZWUoKS0+bV9uZXh0U2libGluZzsK
KyAgICBGcmFtZSomIG5ld0xvY2F0aW9uRm9yUHJldmlvdXMgPSBtX2xhc3RDaGlsZCA9PSBjaGls
ZCA/IG1fbGFzdENoaWxkIDogY2hpbGQtPnRyZWUoKS0+bV9uZXh0U2libGluZy0+dHJlZSgpLT5t
X3ByZXZpb3VzU2libGluZzsKKyAgICBzd2FwKG5ld0xvY2F0aW9uRm9yTmV4dCwgY2hpbGQtPnRy
ZWUoKS0+bV9uZXh0U2libGluZyk7CisgICAgc3dhcChuZXdMb2NhdGlvbkZvclByZXZpb3VzLCBj
aGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyk7CiAKLSAgICBjaGlsZC0+dHJlZU5vZGUo
KS0+bV9wcmV2aW91c1NpYmxpbmcgPSAwOwotICAgIGNoaWxkLT50cmVlTm9kZSgpLT5tX25leHRT
aWJsaW5nID0gMDsKKyAgICBjaGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyA9IDA7Cisg
ICAgY2hpbGQtPnRyZWUoKS0+bV9uZXh0U2libGluZyA9IDA7CiAKICAgICBtX2NoaWxkQ291bnQt
LTsKIH0K
</data>
<flag name="review"
          id="1587"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>