<?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>122715</bug_id>
          
          <creation_ts>2013-10-12 23:28:21 -0700</creation_ts>
          <short_desc>Use nullptr in Document.cpp</short_desc>
          <delta_ts>2019-02-06 09:03:45 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939199</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:28:21 -0700</bug_when>
    <thetext>Use nullptr in Document.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939200</commentid>
    <comment_count>1</comment_count>
      <attachid>214084</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:28:52 -0700</bug_when>
    <thetext>Created attachment 214084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939208</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-12 23:54:10 -0700</bug_when>
    <thetext>Committed r157358: &lt;http://trac.webkit.org/changeset/157358&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939215</commentid>
    <comment_count>3</comment_count>
      <attachid>214084</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-13 00:13:21 -0700</bug_when>
    <thetext>Comment on attachment 214084
Patch

Landed it on my own, so I’m trying to tell the commit queue that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503029</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:45 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214084</attachid>
            <date>2013-10-12 23:28:52 -0700</date>
            <delta_ts>2013-10-13 00:13:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122715-20131012232851.patch</filename>
            <type>text/plain</type>
            <size>38677</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTdmMDZhOTkyN2I1NjE4
YmJmMDNlNGI1MDI1NGRkMGZiN2JkM2QwZi4uZmVkNjcwMTU2OGViODIyNDk1YTBhMjFmNWM2NGEw
NmZjYWY2MTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc3IEBACiAyMDEzLTEwLTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBVc2UgbnVsbHB0ciBpbiBEb2N1
bWVudC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMjcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndpZGdldEZvckVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRy
b3BDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNj
ZXNzS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb2N0eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVFbGVtZW50TlMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJl
Z2lzdGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ0RBVEFT
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVudGl0eVJlZmVy
ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wb3J0Tm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRvcHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3ZWJraXRHZXROYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpl
bGVtZW50RnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYXJldFJhbmdl
RnJvbVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRUaXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjcmVhdGVOb2RlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmNyZWF0ZVRyZWVXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVN0
eWxlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0eWxlRm9yRWxlbWVu
dElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpkaXNjb25uZWN0RnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXN0
cm95UmVuZGVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZXhpc3RpbmdBWE9i
amVjdENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpheE9iamVjdENhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZmluZFVuc2FmZVBhcmVudFNjcm9s
bFByb3BhZ2F0aW9uQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsb25l
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVSZXNvbHZlckNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmdldE92ZXJyaWRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6Om93bmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SW5Q
YWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcmVudERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGVOUyk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVzZXRIaWRkZW5Gb2N1c0VsZW1lbnRUaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZW5xdWV1ZVBvcHN0YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmZ1bGxTY3JlZW5SZW5kZXJlckRlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UG9pbnRlckxvY2tFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZWFtbGVzc1BhcmVudElGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmV2ZW50VGFy
Z2V0RWxlbWVudEZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Om5lYXJlc3RDb21tb25I
b3ZlckFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnN1cmVUZW1wbGF0
ZURvY3VtZW50KToKKyAgICAgICAgVXNlIG51bGxwdHIgaW4gbWFueSBwbGFjZXMgd2Ugd2VyZSB1
c2luZyAwLgorCisyMDEzLTEwLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwog
ICAgICAgICBSZW1vdmUgdGhlIG5vdC1tdWNoLXVzZWQgaXNTaGFkb3dIb3N0IGZ1bmN0aW9uIGZy
b20gRWxlbWVudC5oCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI3MTAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNWM5OTgyNWRiNTg0ZDlm
YzA3M2VkZDM1YTVkNjE1MWY5N2QwYjJmYS4uOGZlNjE3OTZiNWE3MzVhNDE0ZjAxMTBkMmJlNmZk
ODk3NTJkMTIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMjgsMTAgKzMyOCwxMCBA
QCBzdGF0aWMgYm9vbCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3Qg
VVJMJiB1cmwpCiBzdGF0aWMgV2lkZ2V0KiB3aWRnZXRGb3JFbGVtZW50KEVsZW1lbnQqIGZvY3Vz
ZWRFbGVtZW50KQogewogICAgIGlmICghZm9jdXNlZEVsZW1lbnQpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHJlbmRlcmVyID0gZm9jdXNlZEVs
ZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lk
Z2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKTsKIH0KIApAQCAtNDAxLDcg
KzQwMSw3IEBAIGJvb2wgVGV4dEF1dG9TaXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKGNvbnN0
IFRleHRBdXRvU2l6aW5nS2V5JiB2YWx1ZSkKICNlbmRpZgogCiBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQot
ICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKKyAgICA6IENvbnRhaW5lck5v
ZGUobnVsbHB0ciwgQ3JlYXRlRG9jdW1lbnQpCiAgICAgLCBUcmVlU2NvcGUodGhpcykKICAgICAs
IG1fc3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZXNv
bHZlclRocm93YXdheVRpbWVyRmlyZWQsIHRpbWVCZWZvcmVUaHJvd2luZ0F3YXlTdHlsZVJlc29s
dmVyQWZ0ZXJMYXN0VXNlSW5TZWNvbmRzKQogICAgICwgbV9kaWRDYWxjdWxhdGVTdHlsZVJlc29s
dmVyKGZhbHNlKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMpCiAgICAgLCBt
X21hcmtlcnMoYWRvcHRQdHIobmV3IERvY3VtZW50TWFya2VyQ29udHJvbGxlcikpCiAgICAgLCBt
X3VwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyKHRoaXMsICZEb2N1bWVudDo6dXBkYXRlRm9jdXNB
cHBlYXJhbmNlVGltZXJGaXJlZCkKICAgICAsIG1fcmVzZXRIaWRkZW5Gb2N1c0VsZW1lbnRUaW1l
cih0aGlzLCAmRG9jdW1lbnQ6OnJlc2V0SGlkZGVuRm9jdXNFbGVtZW50VGltZXIpCi0gICAgLCBt
X2Nzc1RhcmdldCgwKQorICAgICwgbV9jc3NUYXJnZXQobnVsbHB0cikKICAgICAsIG1fcHJvY2Vz
c2luZ0xvYWRFdmVudChmYWxzZSkKICAgICAsIG1fbG9hZEV2ZW50RmluaXNoZWQoZmFsc2UpCiAg
ICAgLCBtX3N0YXJ0VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWVNUygpKQpAQCAtNDQ4
LDggKzQ0OCw4IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihzdGQ6
Om1ha2VfdW5pcXVlPFNjcmlwdFJ1bm5lcj4oKnRoaXMpKQogICAgICwgbV94bWxWZXJzaW9uKEFT
Q0lJTGl0ZXJhbCgiMS4wIikpCiAgICAgLCBtX3htbFN0YW5kYWxvbmUoU3RhbmRhbG9uZVVuc3Bl
Y2lmaWVkKQotICAgICwgbV9oYXNYTUxEZWNsYXJhdGlvbigwKQotICAgICwgbV9zYXZlZFJlbmRl
clZpZXcoMCkKKyAgICAsIG1faGFzWE1MRGVjbGFyYXRpb24oZmFsc2UpCisgICAgLCBtX3NhdmVk
UmVuZGVyVmlldyhudWxscHRyKQogICAgICwgbV9kZXNpZ25Nb2RlKGluaGVyaXQpCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKSB8fCBFTkFCTEUoRFJBR0dBQkxFX1JFR0lPTikKICAgICAs
IG1faGFzQW5ub3RhdGVkUmVnaW9ucyhmYWxzZSkKQEAgLTQ2MiwxMyArNDYyLDEzIEBAIERvY3Vt
ZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1
bWVudENsYXNzZXMpCiAgICAgLCBtX2lzVmlld1NvdXJjZShmYWxzZSkKICAgICAsIG1fc2F3RWxl
bWVudHNJbktub3duTmFtZXNwYWNlcyhmYWxzZSkKICAgICAsIG1faXNTcmNkb2NEb2N1bWVudChm
YWxzZSkKLSAgICAsIG1fcmVuZGVyVmlldygwKQorICAgICwgbV9yZW5kZXJWaWV3KG51bGxwdHIp
CiAgICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCiAgICAgLCBtX3dlYWtGYWN0b3J5KHRoaXMpCiAg
ICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigwKQotICAgICwgbV9mdWxsU2Ny
ZWVuUmVuZGVyZXIoMCkKKyAgICAsIG1fZnVsbFNjcmVlblJlbmRlcmVyKG51bGxwdHIpCiAgICAg
LCBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyKHRoaXMsICZEb2N1bWVudDo6ZnVsbFNjcmVl
bkNoYW5nZURlbGF5VGltZXJGaXJlZCkKICAgICAsIG1faXNBbmltYXRpbmdGdWxsU2NyZWVuKGZh
bHNlKQogI2VuZGlmCkBAIC00OTAsMTAgKzQ5MCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMpCiAgICAg
LCBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZChmYWxzZSkKICNlbmRpZgog
I2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQotICAgICwgbV90ZW1wbGF0ZURvY3VtZW50SG9z
dCgwKQotI2VuZGlmCi0jaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgLCBtX2ZvbnRs
b2FkZXIoMCkKKyAgICAsIG1fdGVtcGxhdGVEb2N1bWVudEhvc3QobnVsbHB0cikKICNlbmRpZgog
ICAgICwgbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRp
ZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAgICAgLCBtX2hhc0luamVjdGVkUGx1
Z0luc1NjcmlwdChmYWxzZSkKQEAgLTUxMCw3ICs1MDcsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQog
ICAgIGlmIChtX2ZyYW1lKQogICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0gbV9mcmFt
ZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KTsKICAgICBpZiAoIW1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpCi0gICAgICAgIG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXIgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKDApOworICAgICAgICBt
X2NhY2hlZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShudWxs
cHRyKTsKICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCh0aGlzKTsKIAog
I2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC01NjQsMTEgKzU2MSwxMSBAQCBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgIGlmICht
X3RlbXBsYXRlRG9jdW1lbnQpCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVtcGxh
dGVEb2N1bWVudEhvc3QoMCk7IC8vIGJhbGFuY2VkIGluIHRlbXBsYXRlRG9jdW1lbnQoKS4KKyAg
ICAgICAgbV90ZW1wbGF0ZURvY3VtZW50LT5zZXRUZW1wbGF0ZURvY3VtZW50SG9zdChudWxscHRy
KTsgLy8gYmFsYW5jZWQgaW4gdGVtcGxhdGVEb2N1bWVudCgpLgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRfVFJBQ0tJTkcpCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgZGVhZCBjb2Rl
LiBUaGUgb3duZXJEb2N1bWVudCBmdW5jdGlvbiByZXR1cm5zIDAgd2hlbiBjYWxsZWQgb24gYSBk
b2N1bWVudC4KKyAgICAvLyBGSVhNRTogVGhpcyBpcyBkZWFkIGNvZGUuIFRoZSBvd25lckRvY3Vt
ZW50IGZ1bmN0aW9uIHJldHVybnMgbnVsbCB3aGVuIGNhbGxlZCBvbiBhIGRvY3VtZW50LgogICAg
IGlmIChEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IHRoaXMtPm93bmVyRG9jdW1lbnQoKSkKICAg
ICAgICAgb3duZXJEb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRUYXJnZXROb2RlKHRoaXMpOwogI2Vu
ZGlmCkBAIC01OTcsNyArNTk0LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgaWYgKHRo
aXMgPT0gdG9wRG9jdW1lbnQoKSkKICAgICAgICAgY2xlYXJBWE9iamVjdENhY2hlKCk7CiAKLSAg
ICBtX2RlY29kZXIgPSAwOworICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAKICAgICBpZiAobV9z
dHlsZVNoZWV0TGlzdCkKICAgICAgICAgbV9zdHlsZVNoZWV0TGlzdC0+ZGV0YWNoRnJvbURvY3Vt
ZW50KCk7CkBAIC02MTEsNyArNjA4LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgLy8g
SXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgRG9jdW1lbnRzIHRvIGVuZCB1cCByZWZlcmVuY2lu
ZyB0aGUgc2FtZSBDYWNoZWRSZXNvdXJjZUxvYWRlciAoZS5nLiwgU1ZHSW1hZ2VzCiAgICAgLy8g
bG9hZCB0aGUgaW5pdGlhbCBlbXB0eSBkb2N1bWVudCBhbmQgdGhlIFNWR0RvY3VtZW50IHdpdGgg
dGhlIHNhbWUgRG9jdW1lbnRMb2FkZXIpLgogICAgIGlmIChtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5kb2N1bWVudCgpID09IHRoaXMpCi0gICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNl
dERvY3VtZW50KDApOworICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVu
dChudWxscHRyKTsKICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICAv
LyBXZSBtdXN0IGNhbGwgY2xlYXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBjbGFz
cyBpbmhlcml0cyBUcmVlU2NvcGUKQEAgLTYzNSwxNCArNjMyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6
OmRyb3BDaGlsZHJlbigpCiAKICAgICAvLyBXZSBtdXN0IG1ha2Ugc3VyZSBub3QgdG8gYmUgcmV0
YWluaW5nIGFueSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAogICAgIC8vIHRoZXNlIGV4dHJhIHBv
aW50ZXJzIG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgotICAgIG1fZm9jdXNl
ZEVsZW1lbnQgPSAwOwotICAgIG1faG92ZXJlZEVsZW1lbnQgPSAwOwotICAgIG1fYWN0aXZlRWxl
bWVudCA9IDA7Ci0gICAgbV90aXRsZUVsZW1lbnQgPSAwOwotICAgIG1fZG9jdW1lbnRFbGVtZW50
ID0gMDsKKyAgICBtX2ZvY3VzZWRFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2hvdmVyZWRFbGVt
ZW50ID0gbnVsbHB0cjsKKyAgICBtX2FjdGl2ZUVsZW1lbnQgPSBudWxscHRyOworICAgIG1fdGl0
bGVFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX2RvY3VtZW50RWxlbWVudCA9IG51bGxwdHI7CiAg
ICAgbV91c2VyQWN0aW9uRWxlbWVudHMuZG9jdW1lbnREaWRSZW1vdmVMYXN0UmVmKCk7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBudWxscHRyOwogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRT
dGFjay5jbGVhcigpOwogI2VuZGlmCiAKQEAgLTY3Nyw3ICs2NzQsNyBAQCBFbGVtZW50KiBEb2N1
bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKIEVsZW1l
bnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiB7
CiAgICAgaWYgKGtleS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAoIW1fYWNjZXNzS2V5TWFwVmFsaWQpIHsKICAgICAgICAgYnVp
bGRBY2Nlc3NLZXlNYXAodGhpcyk7CiAgICAgICAgIG1fYWNjZXNzS2V5TWFwVmFsaWQgPSB0cnVl
OwpAQCAtNzg5LDcgKzc4Niw3IEBAIERvY3VtZW50VHlwZSogRG9jdW1lbnQ6OmRvY3R5cGUoKSBj
b25zdAogICAgICAgICBpZiAobm9kZS0+aXNEb2N1bWVudFR5cGVOb2RlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4obm9kZSk7CiAgICAgfQotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIERvY3VtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKQEAgLTgyMiw3ICs4MTksNyBAQCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQwogewogICAgIGlmICghaXNWYWxpZE5hbWUobmFtZSkpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoaXNYSFRNTERvY3VtZW50
KCkpCkBAIC04MzYsNyArODMzLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QKIHsKICAgICBp
ZiAoIWlzVmFsaWROYW1lKGxvY2FsTmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJB
Q1RFUl9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAobV9yZWdpc3RyeSkgewpAQCAtODUxLDEyICs4NDgsMTIgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJLAogewogICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKICAgICBp
ZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2FsTmFtZSwg
ZWMpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBR
dWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogICAg
IGlmICghaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSkpIHsKICAgICAgICAgZWMg
PSBOQU1FU1BBQ0VfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgaWYgKG1fcmVnaXN0cnkpIHsKQEAgLTg3Niw3ICs4NzMsNyBAQCBQ
YXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4gRG9jdW1lbnQ6OnJlZ2lzdGVyRWxl
bWVudChKU0M6OkV4ZWNTdGF0ZSogcwogewogICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSAmJiAh
aXNYSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlm
ICghbV9yZWdpc3RyeSkKQEAgLTkxMSw3ICs5MDgsNyBAQCBQYXNzUmVmUHRyPENEQVRBU2VjdGlv
bj4gRG9jdW1lbnQ6OmNyZWF0ZUNEQVRBU2VjdGlvbihjb25zdCBTdHJpbmcmIGRhdGEsIEV4Y2Vw
dAogewogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAgICAgcmV0dXJuIENEQVRBU2VjdGlvbjo6Y3JlYXRlKCp0aGlzLCBkYXRhKTsKIH0KQEAg
LTkyMCwxMSArOTE3LDExIEBAIFBhc3NSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBEb2N1
bWVudDo6Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IFN0CiB7CiAgICAgaWYgKCFp
c1ZhbGlkTmFtZSh0YXJnZXQpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJS
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IGlmIChpc0hUTUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
cmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKCp0aGlzLCB0YXJnZXQsIGRhdGEp
OwogfQpAQCAtOTMzLDExICs5MzAsMTEgQEAgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IERv
Y3VtZW50OjpjcmVhdGVFbnRpdHlSZWZlcmVuY2UoY29uc3QgU3RyaW5nJiBuYW1lLAogewogICAg
IGlmICghaXNWYWxpZE5hbWUobmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgaWYgKGlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVE
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICByZXR1cm4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUoKnRoaXMsIG5hbWUpOwogfQpAQCAt
OTU4LDcgKzk1NSw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9k
ZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiAgICAgCiAgICAgaWYgKCFp
bXBvcnRlZE5vZGUpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHN3aXRjaCAo
aW1wb3J0ZWROb2RlLT5ub2RlVHlwZSgpKSB7CkBAIC05NzgsNyArOTc1LDcgQEAgUGFzc1JlZlB0
cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUsIGJvb2wgZGVl
cCwgRXhjZXB0aW9uQ28KICAgICAgICAgLy8gb2xkRWxlbWVudCBoYXMgbWlzbWF0Y2hlZCBwcmVm
aXgvbmFtZXNwYWNlPwogICAgICAgICBpZiAoIWhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVudHMo
b2xkRWxlbWVudC0+dGFnUU5hbWUoKSkpIHsKICAgICAgICAgICAgIGVjID0gTkFNRVNQQUNFX0VS
UjsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0VsZW1lbnQgPSBjcmVhdGVFbGVt
ZW50KG9sZEVsZW1lbnQtPnRhZ1FOYW1lKCksIGZhbHNlKTsKIApAQCAtOTg4LDEwICs5ODUsMTAg
QEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5v
ZGUsIGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICAgICAgICAgIGZvciAoTm9kZSogb2xkQ2hp
bGQgPSBvbGRFbGVtZW50LT5maXJzdENoaWxkKCk7IG9sZENoaWxkOyBvbGRDaGlsZCA9IG9sZENo
aWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld0No
aWxkID0gaW1wb3J0Tm9kZShvbGRDaGlsZCwgdHJ1ZSwgZWMpOwogICAgICAgICAgICAgICAgIGlm
IChlYykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQtPmFwcGVuZENoaWxk
KG5ld0NoaWxkLnJlbGVhc2UoKSwgZWMpOwogICAgICAgICAgICAgICAgIGlmIChlYykKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEwMTEsMTAgKzEwMDgsMTAgQEAg
UGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlKiBpbXBvcnRlZE5vZGUs
IGJvb2wgZGVlcCwgRXhjZXB0aW9uQ28KICAgICAgICAgICAgIGZvciAoTm9kZSogb2xkQ2hpbGQg
PSBvbGRGcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBvbGRDaGlsZDsgb2xkQ2hpbGQgPSBvbGRDaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdDaGls
ZCA9IGltcG9ydE5vZGUob2xkQ2hpbGQsIHRydWUsIGVjKTsKICAgICAgICAgICAgICAgICBpZiAo
ZWMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBuZXdGcmFnbWVudC0+YXBwZW5kQ2hpbGQo
bmV3Q2hpbGQucmVsZWFzZSgpLCBlYyk7CiAgICAgICAgICAgICAgICAgaWYgKGVjKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDMwLDcgKzEwMjcs
NyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUqIGltcG9ydGVk
Tm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogCkBAIC0xMDM4LDEyICsxMDM1LDEyIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1l
bnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFzb3VyY2UpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IGlmIChzb3VyY2UtPmlzUmVhZE9ubHlOb2RlKCkpIHsKICAgICAgICAgZWMgPSBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7CkBAIC0xMDU1LDcgKzEw
NTIsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzc1JlZlB0cjxO
b2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9O
T0RFOgogICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6CiAgICAgICAgIGVjID0gTk9UX1NV
UFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybiAwOyAgICAgICAgICAgIAorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBjYXNlIEFUVFJJQlVURV9OT0RFOiB7ICAgICAgICAgICAgICAgICAg
IAogICAgICAgICBBdHRyKiBhdHRyID0gc3RhdGljX2Nhc3Q8QXR0cio+KHNvdXJjZS5nZXQoKSk7
CiAgICAgICAgIGlmIChhdHRyLT5vd25lckVsZW1lbnQoKSkKQEAgLTEwNjcsMjQgKzEwNjQsMjQg
QEAgUGFzc1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4g
c291cmNlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgaWYgKHNvdXJjZS0+aXNTaGFkb3dS
b290KCkpIHsKICAgICAgICAgICAgIC8vIFNoYWRvd1Jvb3QgY2Fubm90IGRpc2Nvbm5lY3QgaXRz
ZWxmIGZyb20gdGhlIGhvc3Qgbm9kZS4KICAgICAgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzb3VyY2UtPmlzRnJhbWVPd25lckVsZW1lbnQo
KSkgewogICAgICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93bmVyRWxlbWVu
dCA9IHRvRnJhbWVPd25lckVsZW1lbnQoc291cmNlLmdldCgpKTsKICAgICAgICAgICAgIGlmIChm
cmFtZSgpICYmIGZyYW1lKCktPnRyZWUoKS5pc0Rlc2NlbmRhbnRPZihmcmFtZU93bmVyRWxlbWVu
dC0+Y29udGVudEZyYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVR
VUVTVF9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNvdXJj
ZS0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICBzb3VyY2UtPnBhcmVudE5vZGUoKS0+cmVt
b3ZlQ2hpbGQoc291cmNlLmdldCgpLCBlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICB0aGlzLT5hZG9wdElmTmVlZGVkKHNvdXJjZS5nZXQoKSk7Cisg
ICAgYWRvcHRJZk5lZWRlZChzb3VyY2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0K
QEAgLTExNzYsNyArMTE3Myw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNzc0dyaWRMYXlvdXRFbmFibGVk
KCkgY29uc3QKIFBhc3NSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6Ondl
YmtpdEdldE5hbWVkRmxvd3MoKQogewogICAgIGlmICghY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCAh
cmVuZGVyVmlldygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKQEAgLTExOTcsMTIgKzExOTQsMTIgQEAg
UGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmlu
ZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogewogICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsK
ICAgICBpZiAoIXBhcnNlUXVhbGlmaWVkTmFtZShxdWFsaWZpZWROYW1lLCBwcmVmaXgsIGxvY2Fs
TmFtZSwgZWMpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkp
OwogICAgIGlmICghaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50cyhxTmFtZSkpIHsKICAgICAg
ICAgZWMgPSBOQU1FU1BBQ0VfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocU5hbWUsIGZhbHNl
KTsKQEAgLTE0NDEsNyArMTQzOCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5
cGUoKSBjb25zdAogRWxlbWVudCogRG9jdW1lbnQ6OmVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGlu
dCB5KSBjb25zdAogewogICAgIGlmICghaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gVHJlZVNjb3Bl
OjplbGVtZW50RnJvbVBvaW50KHgsIHkpOwogfQpAQCAtMTQ0OSwxMSArMTQ0NiwxMSBAQCBFbGVt
ZW50KiBEb2N1bWVudDo6ZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0CiBQYXNz
UmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkp
CiB7CiAgICAgaWYgKCFoYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50OwogICAg
IE5vZGUqIG5vZGUgPSBub2RlRnJvbVBvaW50KHRoaXMsIHgsIHksICZsb2NhbFBvaW50KTsKICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSA9IGFuY2VzdG9ySW5UaGlzU2NvcGUobm9k
ZSk7CiAgICAgaWYgKHNoYWRvd0FuY2VzdG9yTm9kZSAhPSBub2RlKSB7CkBAIC0xNDY0LDEwICsx
NDYxLDEwIEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50
KGludCB4LCBpbnQgeSkKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gcmVu
ZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQobG9jYWxQb2ludCk7CiAgICAgaWYgKHZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUG9zaXRpb24gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIHJldHVy
biBSYW5nZTo6Y3JlYXRlKCp0aGlzLCByYW5nZUNvbXBsaWFudFBvc2l0aW9uLCByYW5nZUNvbXBs
aWFudFBvc2l0aW9uKTsKQEAgLTE1NTcsNyArMTU1NCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLy8gVGl0bGUgc2V0IGJ5IEphdmFTY3JpcHQg
LS0gb3ZlcnJpZGVzIGFueSB0aXRsZSBlbGVtZW50cy4KICAgICBtX3RpdGxlU2V0RXhwbGljaXRs
eSA9IHRydWU7CiAgICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpICYmICFpc1hIVE1MRG9jdW1lbnQo
KSkKLSAgICAgICAgbV90aXRsZUVsZW1lbnQgPSAwOworICAgICAgICBtX3RpdGxlRWxlbWVudCA9
IG51bGxwdHI7CiAgICAgZWxzZSBpZiAoIW1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlmIChI
VE1MRWxlbWVudCogaGVhZEVsZW1lbnQgPSBoZWFkKCkpIHsKICAgICAgICAgICAgIG1fdGl0bGVF
bGVtZW50ID0gY3JlYXRlRWxlbWVudCh0aXRsZVRhZywgZmFsc2UpOwpAQCAtMTU5Myw3ICsxNTkw
LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlVGl0bGUoRWxlbWVudCogdGl0bGVFbGVtZW50KQog
ICAgIGlmIChtX3RpdGxlRWxlbWVudCAhPSB0aXRsZUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fdGl0bGVFbGVtZW50ID0gMDsKKyAgICBtX3RpdGxlRWxlbWVudCA9IG51bGxwdHI7
CiAgICAgbV90aXRsZVNldEV4cGxpY2l0bHkgPSBmYWxzZTsKIAogICAgIC8vIFVwZGF0ZSB0aXRs
ZSBiYXNlZCBvbiBmaXJzdCB0aXRsZSBlbGVtZW50IGluIHRoZSBoZWFkLCBpZiBvbmUgZXhpc3Rz
LgpAQCAtMTY3MSwxNyArMTY2OCwxNyBAQCB2b2lkIERvY3VtZW50OjpzZXRTdGF0ZUZvck5ld0Zv
cm1FbGVtZW50cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IpCiAKIEZyYW1lVmll
dyogRG9jdW1lbnQ6OnZpZXcoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFt
ZS0+dmlldygpIDogMDsKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPnZpZXcoKSA6IG51
bGxwdHI7CiB9CiAKIFBhZ2UqIERvY3VtZW50OjpwYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IDA7ICAgIAorICAgIHJldHVybiBtX2ZyYW1lID8g
bV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIH0KIAogU2V0dGluZ3MqIERvY3VtZW50OjpzZXR0
aW5ncygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUgPyAmbV9mcmFtZS0+c2V0dGluZ3Mo
KSA6IDA7CisgICAgcmV0dXJuIG1fZnJhbWUgPyAmbV9mcmFtZS0+c2V0dGluZ3MoKSA6IG51bGxw
dHI7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjcmVhdGVSYW5nZSgpCkBAIC0x
Njk0LDcgKzE2OTEsNyBAQCBQYXNzUmVmUHRyPE5vZGVJdGVyYXRvcj4gRG9jdW1lbnQ6OmNyZWF0
ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VAogewogICAgIGlmICghcm9v
dCkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBOb2RlSXRlcmF0b3I6
OmNyZWF0ZShyb290LCB3aGF0VG9TaG93LCBmaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMp
OwogfQpAQCAtMTcwNCw3ICsxNzAxLDcgQEAgUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBEb2N1bWVu
dDo6Y3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG8KIHsKICAg
ICBpZiAoIXJvb3QpIHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gVHJl
ZVdhbGtlcjo6Y3JlYXRlKHJvb3QsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcyk7CiB9CkBAIC0xODU0LDcgKzE4NTEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVT
dHlsZUlmTmVlZGVkKCkKICAgICBpZiAoKCFtX3BlbmRpbmdTdHlsZVJlY2FsY1Nob3VsZEZvcmNl
ICYmICFjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkgfHwgaW5QYWdlQ2FjaGUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2so
bV9mcmFtZSA/ICZtX2ZyYW1lLT5hbmltYXRpb24oKSA6IDApOworICAgIEFuaW1hdGlvblVwZGF0
ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKG1fZnJhbWUgPyAmbV9mcmFtZS0+YW5pbWF0aW9u
KCkgOiBudWxscHRyKTsKICAgICByZWNhbGNTdHlsZShTdHlsZTo6Tm9DaGFuZ2UpOwogfQogCkBA
IC0xOTI0LDcgKzE5MjEsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5
bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxlbQogCiAgICAgYm9vbCBv
bGRJZ25vcmUgPSBtX2lnbm9yZVBlbmRpbmdTdHlsZXNoZWV0czsKICAgICBtX2lnbm9yZVBlbmRp
bmdTdHlsZXNoZWV0cyA9IHRydWU7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGVu
c3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoZWxlbWVudCwgZWxlbWVudC0+cGFy
ZW50Tm9kZSgpID8gZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5jb21wdXRlZFN0eWxlKCkgOiAwKTsK
KyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0
eWxlRm9yRWxlbWVudChlbGVtZW50LCBlbGVtZW50LT5wYXJlbnROb2RlKCkgPyBlbGVtZW50LT5w
YXJlbnROb2RlKCktPmNvbXB1dGVkU3R5bGUoKSA6IG51bGxwdHIpOwogICAgIG1faWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzID0gb2xkSWdub3JlOwogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7
CiB9CkBAIC0yMDcyLDcgKzIwNjksNyBAQCB2b2lkIERvY3VtZW50OjpkaWRCZWNvbWVDdXJyZW50
RG9jdW1lbnRJbkZyYW1lKCkKIAogdm9pZCBEb2N1bWVudDo6ZGlzY29ubmVjdEZyb21GcmFtZSgp
CiB7Ci0gICAgbV9mcmFtZSA9IDA7CisgICAgbV9mcmFtZSA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmRlc3Ryb3lSZW5kZXJUcmVlKCkKQEAgLTIwOTIsMTIgKzIwODksMTIgQEAgdm9p
ZCBEb2N1bWVudDo6ZGVzdHJveVJlbmRlclRyZWUoKQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJlcikKLSAgICAgICAgc2V0RnVsbFNjcmVl
blJlbmRlcmVyKDApOworICAgICAgICBzZXRGdWxsU2NyZWVuUmVuZGVyZXIobnVsbHB0cik7CiAj
ZW5kaWYKIAotICAgIG1faG92ZXJlZEVsZW1lbnQgPSAwOwotICAgIG1fZm9jdXNlZEVsZW1lbnQg
PSAwOwotICAgIG1fYWN0aXZlRWxlbWVudCA9IDA7CisgICAgbV9ob3ZlcmVkRWxlbWVudCA9IG51
bGxwdHI7CisgICAgbV9mb2N1c2VkRWxlbWVudCA9IG51bGxwdHI7CisgICAgbV9hY3RpdmVFbGVt
ZW50ID0gbnVsbHB0cjsKIAogICAgIGlmIChtX2RvY3VtZW50RWxlbWVudCkKICAgICAgICAgU3R5
bGU6OmRldGFjaFJlbmRlclRyZWUoKm1fZG9jdW1lbnRFbGVtZW50KTsKQEAgLTIxMDksNyArMjEw
Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRlc3Ryb3lSZW5kZXJUcmVlKCkKIAogICAgIGlmIChyZW5k
ZXJWaWV3KCkpCiAgICAgICAgIHJlbmRlclZpZXcoKS0+ZGVzdHJveSgpOwotICAgIHNldFJlbmRl
clZpZXcoMCk7CisgICAgc2V0UmVuZGVyVmlldyhudWxscHRyKTsKIAogI2lmIEVOQUJMRShJT1Nf
VEVYVF9BVVRPU0laSU5HKQogICAgIC8vIERvIHRoaXMgYmVmb3JlIHRoZSBhcmVuYSBpcyBjbGVh
cmVkLCB3aGljaCBpcyBuZWVkZWQgdG8gZGVyZWYgdGhlIFJlbmRlclN0eWxlIG9uIFRleHRBdXRv
U2l6aW5nS2V5LgpAQCAtMjE5MiwxMCArMjE4OSwxMCBAQCB2b2lkIERvY3VtZW50OjpjbGVhckFY
T2JqZWN0Q2FjaGUoKQogQVhPYmplY3RDYWNoZSogRG9jdW1lbnQ6OmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5h
YmxlZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoIXRvcERvY3VtZW50KCktPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIHRvcERvY3VtZW50
KCktPm1fYXhPYmplY3RDYWNoZS5nZXQoKTsKIH0KQEAgLTIyMDMsNyArMjIwMCw3IEBAIEFYT2Jq
ZWN0Q2FjaGUqIERvY3VtZW50OjpleGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSBjb25zdAogQVhPYmpl
Y3RDYWNoZSogRG9jdW1lbnQ6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogewogICAgIGlmICghQVhP
YmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIC8vIFRoZSBvbmx5IGRvY3VtZW50IHRo
YXQgYWN0dWFsbHkgaGFzIGEgQVhPYmplY3RDYWNoZSBpcyB0aGUgdG9wLWxldmVsCiAgICAgLy8g
ZG9jdW1lbnQuICBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCB0byBiZSBhYmxlIHRvIGdldCBmcm9t
IGFueSBXZWJDb3JlQVhPYmplY3QKQEAgLTIyMTMsNyArMjIxMCw3IEBAIEFYT2JqZWN0Q2FjaGUq
IERvY3VtZW50OjpheE9iamVjdENhY2hlKCkgY29uc3QKIAogICAgIC8vIElmIHRoZSBkb2N1bWVu
dCBoYXMgYWxyZWFkeSBiZWVuIGRldGFjaGVkLCBkbyBub3QgbWFrZSBhIG5ldyBheE9iamVjdENh
Y2hlLgogICAgIGlmICghdG9wRG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQVNTRVJUKHRvcERv
Y3VtZW50ID09IHRoaXMgfHwgIW1fYXhPYmplY3RDYWNoZSk7CiAgICAgaWYgKCF0b3BEb2N1bWVu
dC0+bV9heE9iamVjdENhY2hlKQpAQCAtMjIzNiw3ICsyMjMzLDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudFBhcnNlcj4gRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAKIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlciogRG9jdW1lbnQ6OnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHBhcnNlcigpID8gcGFyc2VyKCktPmFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2Vy
KCkgOiAwOworICAgIHJldHVybiBwYXJzZXIoKSA/IHBhcnNlcigpLT5hc1NjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBEb2N1bWVudDo6b3BlbihEb2N1bWVu
dCogb3duZXJEb2N1bWVudCkKQEAgLTIzMTYsMTAgKzIzMTMsMTAgQEAgSFRNTEVsZW1lbnQqIERv
Y3VtZW50Ojpib2R5KCkgY29uc3QKIHsKICAgICBOb2RlKiBkZSA9IGRvY3VtZW50RWxlbWVudCgp
OwogICAgIGlmICghZGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICAvLyB0cnkgdG8gcHJlZmVyIGEgRlJBTUVTRVQgZWxlbWVudCBvdmVyIEJP
RFkKLSAgICBOb2RlKiBib2R5ID0gMDsKKyAgICBOb2RlKiBib2R5ID0gbnVsbHB0cjsKICAgICBm
b3IgKE5vZGUqIGkgPSBkZS0+Zmlyc3RDaGlsZCgpOyBpOyBpID0gaS0+bmV4dFNpYmxpbmcoKSkg
ewogICAgICAgICBpZiAoaS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykpCiAgICAgICAgICAgICBy
ZXR1cm4gdG9IVE1MRWxlbWVudChpKTsKQEAgLTIzNTksMTMgKzIzNTYsMTMgQEAgSFRNTEhlYWRF
bGVtZW50KiBEb2N1bWVudDo6aGVhZCgpCiB7CiAgICAgTm9kZSogZGUgPSBkb2N1bWVudEVsZW1l
bnQoKTsKICAgICBpZiAoIWRlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBmb3IgKE5vZGUqIGUgPSBkZS0+Zmlyc3RDaGlsZCgpOyBlOyBlID0gZS0+
bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUoaGVhZFRhZykpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEhlYWRFbGVtZW50Kj4oZSk7CiAKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y2xvc2Uo
KQpAQCAtMjY5NSw4ICsyNjkyLDggQEAgdm9pZCBEb2N1bWVudDo6c2V0QmFzZVVSTE92ZXJyaWRl
KGNvbnN0IFVSTCYgdXJsKQogdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0Jhc2VFbGVtZW50KCkKIHsK
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBocmVmIGF0dHJpYnV0ZSBpbiBhIGJhc2UgZWxlbWVudCBh
bmQgdGhlIGZpcnN0IHRhcmdldCBhdHRyaWJ1dGUgaW4gYSBiYXNlIGVsZW1lbnQuCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nKiBocmVmID0gMDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcqIHRhcmdl
dCA9IDA7CisgICAgY29uc3QgQXRvbWljU3RyaW5nKiBocmVmID0gbnVsbHB0cjsKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcqIHRhcmdldCA9IG51bGxwdHI7CiAgICAgYXV0byBiYXNlRGVzY2VuZGFu
dHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MQmFzZUVsZW1lbnQ+KHRoaXMpOwogICAgIGZvciAo
YXV0byBiYXNlID0gYmFzZURlc2NlbmRhbnRzLmJlZ2luKCksIGVuZCA9IGJhc2VEZXNjZW5kYW50
cy5lbmQoKTsgYmFzZSAhPSBlbmQgJiYgKCFocmVmIHx8ICF0YXJnZXQpOyArK2Jhc2UpIHsKICAg
ICAgICAgaWYgKCFocmVmKSB7CkBAIC0yODAzLDcgKzI4MDAsNyBAQCBGcmFtZSogRG9jdW1lbnQ6
OmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5KCkKIHsKICAgICBGcmFt
ZSogY3VycmVudEZyYW1lID0gbV9mcmFtZTsKICAgICBpZiAoIWN1cnJlbnRGcmFtZSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRnJhbWUqIGFuY2Vz
dG9yRnJhbWUgPSBjdXJyZW50RnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKIApAQCAtMjgxMyw3ICsy
ODEwLDcgQEAgRnJhbWUqIERvY3VtZW50OjpmaW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRp
b25Cb3VuZGFyeSgpCiAgICAgICAgIGN1cnJlbnRGcmFtZSA9IGFuY2VzdG9yRnJhbWU7CiAgICAg
ICAgIGFuY2VzdG9yRnJhbWUgPSBhbmNlc3RvckZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAg
fQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAKQEAgLTMxMjgsOSAr
MzEyNSw4IEBAIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwg
Tm9kZSogb2xkQ2hpbGQpCiAKIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmNsb25lTm9kZShi
b29sIC8qZGVlcCovKQogewotICAgIC8vIFNwZWMgc2F5cyBjbG9uaW5nIERvY3VtZW50IG5vZGVz
IGlzICJpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQiCi0gICAgLy8gc28gd2UgZG8gbm90IHN1cHBv
cnQgaXQuLi4KLSAgICByZXR1cm4gMDsKKyAgICAvLyBTcGVjIHNheXMgY2xvbmluZyBEb2N1bWVu
dCBub2RlcyBpcyAiaW1wbGVtZW50YXRpb24gZGVwZW5kZW50IiBhbmQgd2UgZG8gbm90IHN1cHBv
cnQgaXQuCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFN0eWxlU2hlZXRMaXN0KiBEb2N1bWVu
dDo6c3R5bGVTaGVldHMoKQpAQCAtMzIyMSw3ICszMjE3LDcgQEAgdm9pZCBEb2N1bWVudDo6c3R5
bGVSZXNvbHZlckNoYW5nZWQoU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKICAg
ICAvLyBUaGlzIHJlY2FsY1N0eWxlIGluaXRpYXRlcyBhIG5ldyByZWNhbGMgY3ljbGUuIFdlIG5l
ZWQgdG8gYnJhY2tldCBpdCB0bwogICAgIC8vIG1ha2Ugc3VyZSBhbmltYXRpb25zIGdldCB0aGUg
Y29ycmVjdCB1cGRhdGUgdGltZQogICAgIHsKLSAgICAgICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sg
YW5pbWF0aW9uVXBkYXRlQmxvY2sobV9mcmFtZSA/ICZtX2ZyYW1lLT5hbmltYXRpb24oKSA6IDAp
OworICAgICAgICBBbmltYXRpb25VcGRhdGVCbG9jayBhbmltYXRpb25VcGRhdGVCbG9jayhtX2Zy
YW1lID8gJm1fZnJhbWUtPmFuaW1hdGlvbigpIDogbnVsbHB0cik7CiAgICAgICAgIHJlY2FsY1N0
eWxlKFN0eWxlOjpGb3JjZSk7CiAgICAgfQogCkBAIC0zMjcxLDcgKzMyNjcsNyBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShOb2RlKiBub2RlLCBib29sIGFtb25n
Q2hpbGRyZW5Pbmx5KQogICAgICAgICBub2RlSW5TdWJ0cmVlID0gKGZvY3VzZWRFbGVtZW50ID09
IG5vZGUpIHx8IGZvY3VzZWRFbGVtZW50LT5pc0Rlc2NlbmRhbnRPZihub2RlKTsKICAgICAKICAg
ICBpZiAobm9kZUluU3VidHJlZSkKLSAgICAgICAgc2V0Rm9jdXNlZEVsZW1lbnQoMCk7CisgICAg
ICAgIHNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwogfQogCiB2b2lkIERvY3VtZW50Ojpob3Zl
cmVkRWxlbWVudERpZERldGFjaChFbGVtZW50KiBlbGVtZW50KQpAQCAtMzM0Niw3ICszMzQyLDcg
QEAgYm9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZEVsZW1lbnQoUGFzc1JlZlB0cjxFbGVtZW50PiBw
cnBOZXdGb2N1c2VkRWxlbWVudCwgRm9jdXMKICAgICAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQp
IHsKICAgICAgICAgICAgIC8vIGhhbmRsZXIgc2hpZnRlZCBmb2N1cwogICAgICAgICAgICAgZm9j
dXNDaGFuZ2VCbG9ja2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIG5ld0ZvY3VzZWRFbGVtZW50ID0g
MDsKKyAgICAgICAgICAgIG5ld0ZvY3VzZWRFbGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgb2xkRm9jdXNlZEVsZW1lbnQtPmRpc3BhdGNoRm9jdXNPdXRFdmVu
dChldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgbmV3Rm9jdXNlZEVsZW1lbnQpOyAvLyBET00g
bGV2ZWwgMyBuYW1lIGZvciB0aGUgYnViYmxpbmcgYmx1ciBldmVudC4KQEAgLTMzNTcsNyArMzM1
Myw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNldEZvY3VzZWRFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVu
dD4gcHJwTmV3Rm9jdXNlZEVsZW1lbnQsIEZvY3VzCiAgICAgICAgIGlmIChtX2ZvY3VzZWRFbGVt
ZW50KSB7CiAgICAgICAgICAgICAvLyBoYW5kbGVyIHNoaWZ0ZWQgZm9jdXMKICAgICAgICAgICAg
IGZvY3VzQ2hhbmdlQmxvY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICBuZXdGb2N1c2VkRWxlbWVu
dCA9IDA7CisgICAgICAgICAgICBuZXdGb2N1c2VkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBpZiAob2xkRm9jdXNlZEVsZW1lbnQtPmlzUm9vdEVk
aXRhYmxlRWxlbWVudCgpKQpAQCAtMzYzNyw3ICszNjMzLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgY28KIEV2ZW50TGlzdGVuZXIqIERvY3VtZW50OjpnZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGlmICghbV9kb21X
aW5kb3cpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gbV9kb21XaW5kb3ctPmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlKTsK
IH0KIApAQCAtMzY3Nyw3ICszNjczLDcgQEAgUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNy
ZWF0ZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRUeXBlLCBFeGNlcHRpb25Db2RlJgogICAgICAg
ICByZXR1cm4gZXZlbnQucmVsZWFzZSgpOwogCiAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBEb2N1bWVudDo6
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCkBA
IC0zNzEyLDEzICszNzA4LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVl
ZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogCiBDU1NTdHlsZURlY2xhcmF0aW9u
KiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBEb2N1bWVudDo6b3duZXJFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIWZyYW1l
KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1
cm4gZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CiB9CiAKQEAgLTQwMzYsNyArNDAzMiw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldEluUGFnZUNhY2hlKGJvb2wgZmxhZykKICAgICAgICAgQVNTRVJUKCFy
ZW5kZXJWaWV3KCkgfHwgcmVuZGVyVmlldygpID09IG1fc2F2ZWRSZW5kZXJWaWV3KTsKICAgICAg
ICAgQVNTRVJUKG1fcmVuZGVyQXJlbmEpOwogICAgICAgICBzZXRSZW5kZXJWaWV3KG1fc2F2ZWRS
ZW5kZXJWaWV3KTsKLSAgICAgICAgbV9zYXZlZFJlbmRlclZpZXcgPSAwOworICAgICAgICBtX3Nh
dmVkUmVuZGVyVmlldyA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKGNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpKQogICAgICAgICAgICAgc2NoZWR1bGVTdHlsZVJlY2FsYygpOwpAQCAtNDMwMywxMCAr
NDI5OSwxMCBAQCBib29sIERvY3VtZW50OjppbkRlc2lnbk1vZGUoKSBjb25zdAogRG9jdW1lbnQq
IERvY3VtZW50OjpwYXJlbnREb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgRnJhbWUqIHBh
cmVudCA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBwYXJlbnQt
PmRvY3VtZW50KCk7CiB9CiAKQEAgLTQzMjksMTMgKzQzMjUsMTMgQEAgUGFzc1JlZlB0cjxBdHRy
PiBEb2N1bWVudDo6Y3JlYXRlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFMKIHsKICAgICBTdHJpbmcgcHJlZml4LCBsb2NhbE5hbWU7CiAgICAgaWYgKCFwYXJz
ZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUXVhbGlmaWVk
TmFtZSBxTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKTsKIAogICAgIGlmICgh
c2hvdWxkSWdub3JlTmFtZXNwYWNlQ2hlY2tzICYmICFoYXNWYWxpZE5hbWVzcGFjZUZvckF0dHJp
YnV0ZXMocU5hbWUpKSB7CiAgICAgICAgIGVjID0gTkFNRVNQQUNFX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHJldHVybiBBdHRy
OjpjcmVhdGUoKnRoaXMsIHFOYW1lLCBlbXB0eVN0cmluZygpKTsKQEAgLTQ2MTEsNyArNDYwNyw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgICAgICBzZWN1cml0
eU9yaWdpbigpLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MtPnN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgpKTsKICAgICB9CiAKLSAgICBEb2N1bWVudCogcGFyZW50RG9jdW1lbnQgPSBv
d25lckVsZW1lbnQoKSA/ICZvd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgRG9j
dW1lbnQqIHBhcmVudERvY3VtZW50ID0gb3duZXJFbGVtZW50KCkgPyAmb3duZXJFbGVtZW50KCkt
PmRvY3VtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChwYXJlbnREb2N1bWVudCAmJiBtX2ZyYW1l
LT5sb2FkZXIoKS5zaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKCkpKSB7CiAgICAg
ICAgIG1faXNTcmNkb2NEb2N1bWVudCA9IHRydWU7CiAgICAgICAgIHNldEJhc2VVUkxPdmVycmlk
ZShwYXJlbnREb2N1bWVudC0+YmFzZVVSTCgpKTsKQEAgLTQ3MjYsNyArNDcyMiw3IEBAIHZvaWQg
RG9jdW1lbnQ6OnJlc2V0SGlkZGVuRm9jdXNFbGVtZW50VGltZXIoVGltZXI8RG9jdW1lbnQ+KikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQgJiYgIW1fZm9jdXNl
ZEVsZW1lbnQtPmlzRm9jdXNhYmxlKCkpCi0gICAgICAgIHNldEZvY3VzZWRFbGVtZW50KDApOwor
ICAgICAgICBzZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
YXR0YWNoUmFuZ2UoUmFuZ2UqIHJhbmdlKQpAQCAtNDc0Niw3ICs0NzQyLDcgQEAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCogRG9jdW1lbnQ6OmdldENTU0NhbnZhc0NvbnRleHQoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdAogewogICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gZ2V0Q1NT
Q2FudmFzRWxlbWVudChuYW1lKTsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBlbGVtZW50LT5zZXRTaXplKEludFNpemUo
d2lkdGgsIGhlaWdodCkpOwogICAgIHJldHVybiBlbGVtZW50LT5nZXRDb250ZXh0KHR5cGUpOwog
fQpAQCAtNTAxNiw3ICs1MDEyLDcgQEAgdm9pZCBEb2N1bWVudDo6ZW5xdWV1ZUhhc2hjaGFuZ2VF
dmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3QgU3RyaW5nJiBuZXdVUkwKIHZvaWQgRG9j
dW1lbnQ6OmVucXVldWVQb3BzdGF0ZUV2ZW50KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzdGF0ZU9iamVjdCkKIHsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM2MjAyIFBvcHN0YXRlIGV2ZW50IG5lZWRzIHRvIGZpcmUgYXN5
bmNocm9ub3VzbHkKLSAgICBkaXNwYXRjaFdpbmRvd0V2ZW50KFBvcFN0YXRlRXZlbnQ6OmNyZWF0
ZShzdGF0ZU9iamVjdCwgbV9kb21XaW5kb3cgPyBtX2RvbVdpbmRvdy0+aGlzdG9yeSgpIDogMCkp
OworICAgIGRpc3BhdGNoV2luZG93RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2Jq
ZWN0LCBtX2RvbVdpbmRvdyA/IG1fZG9tV2luZG93LT5oaXN0b3J5KCkgOiBudWxscHRyKSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcihNZWRpYUNhblN0YXJ0
TGlzdGVuZXIqIGxpc3RlbmVyKQpAQCAtNTAzNSw3ICs1MDMxLDcgQEAgTWVkaWFDYW5TdGFydExp
c3RlbmVyKiBEb2N1bWVudDo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpCiB7CiAgICAg
SGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPjo6aXRlcmF0b3Igc2xvdCA9IG1fbWVkaWFD
YW5TdGFydExpc3RlbmVycy5iZWdpbigpOwogICAgIGlmIChzbG90ID09IG1fbWVkaWFDYW5TdGFy
dExpc3RlbmVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIgPSAqc2xvdDsKICAgICBt
X21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnMucmVtb3ZlKHNsb3QpOwogICAgIHJldHVybiBsaXN0ZW5l
cjsKQEAgLTUwNzksNyArNTA3NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcXVlc3RGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9ydCBmbGFnCiAKICAgICAg
ICAgLy8gQSBkZXNjZW5kYW50IGJyb3dzaW5nIGNvbnRleHQncyBkb2N1bWVudCBoYXMgYSBub24t
ZW1wdHkgZnVsbHNjcmVlbiBlbGVtZW50IHN0YWNrLgogICAgICAgICBib29sIGRlc2NlbmRlbnRI
YXNOb25FbXB0eVN0YWNrID0gZmFsc2U7Ci0gICAgICAgIGZvciAoRnJhbWUqIGRlc2NlbmRhbnQg
PSBmcmFtZSgpID8gZnJhbWUoKS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpIDogMDsgZGVzY2VuZGFu
dDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAg
ICAgICBmb3IgKEZyYW1lKiBkZXNjZW5kYW50ID0gZnJhbWUoKSA/IGZyYW1lKCktPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSA6IG51bGxwdHI7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBkZXNjZW5k
YW50LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChkZXNjZW5kYW50
LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAg
ICAgZGVzY2VuZGVudEhhc05vbkVtcHR5U3RhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNTExOCw3ICs1MTE0LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHNob3J0IGZsYWcKIAogICAg
ICAgICBkbyB7CiAgICAgICAgICAgICBkb2NzLnByZXBlbmQoY3VycmVudERvYyk7Ci0gICAgICAg
ICAgICBjdXJyZW50RG9jID0gY3VycmVudERvYy0+b3duZXJFbGVtZW50KCkgPyAmY3VycmVudERv
Yy0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50KCkgOiAwOworICAgICAgICAgICAgY3VycmVudERv
YyA9IGN1cnJlbnREb2MtPm93bmVyRWxlbWVudCgpID8gJmN1cnJlbnREb2MtPm93bmVyRWxlbWVu
dCgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICAgICAgfSB3aGlsZSAoY3VycmVudERvYyk7
CiAKICAgICAgICAgLy8gNC4gRm9yIGVhY2ggZG9jdW1lbnQgaW4gZG9jcywgcnVuIHRoZXNlIHN1
YnN0ZXBzOgpAQCAtNTEzMCw3ICs1MTI2LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVxdWVzdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHNob3J0IGZsYWcKICAg
ICAgICAgICAgIC8vIDEuIExldCBmb2xsb3dpbmcgZG9jdW1lbnQgYmUgdGhlIGRvY3VtZW50IGFm
dGVyIGRvY3VtZW50IGluIGRvY3MsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8KICAgICAgICAgICAg
IC8vIHN1Y2ggZG9jdW1lbnQuCiAgICAgICAgICAgICBEb2N1bWVudCogY3VycmVudERvYyA9ICpj
dXJyZW50OwotICAgICAgICAgICAgRG9jdW1lbnQqIGZvbGxvd2luZ0RvYyA9IGZvbGxvd2luZyAh
PSBkb2NzLmVuZCgpID8gKmZvbGxvd2luZyA6IDA7CisgICAgICAgICAgICBEb2N1bWVudCogZm9s
bG93aW5nRG9jID0gZm9sbG93aW5nICE9IGRvY3MuZW5kKCkgPyAqZm9sbG93aW5nIDogbnVsbHB0
cjsKIAogICAgICAgICAgICAgLy8gMi4gSWYgZm9sbG93aW5nIGRvY3VtZW50IGlzIG51bGwsIHB1
c2ggY29udGV4dCBvYmplY3Qgb24gZG9jdW1lbnQncyBmdWxsc2NyZWVuIGVsZW1lbnQKICAgICAg
ICAgICAgIC8vIHN0YWNrLCBhbmQgcXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQg
ZnVsbHNjcmVlbmNoYW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZQpAQCAtNTIwMiw3ICs1
MTk4LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RXhpdEZ1bGxzY3JlZW4oKQogICAgIC8vIGVs
ZW1lbnQgc3RhY2sgKGlmIGFueSksIG9yZGVyZWQgc28gdGhhdCB0aGUgY2hpbGQgb2YgdGhlIGRv
YyBpcyBsYXN0IGFuZCB0aGUgZG9jdW1lbnQgZnVydGhlc3QKICAgICAvLyBhd2F5IGZyb20gdGhl
IGRvYyBpcyBmaXJzdC4KICAgICBEZXF1ZTxSZWZQdHI8RG9jdW1lbnQ+ID4gZGVzY2VuZGFudHM7
Ci0gICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZyYW1lKCkgPyBmcmFtZSgpLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkgOiAwOyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZy
YW1lKCkgPyBmcmFtZSgpLT50cmVlKCkudHJhdmVyc2VOZXh0KCkgOiBudWxscHRyOyBkZXNjZW5k
YW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAg
ICAgICAgIGlmIChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVu
dCgpKQogICAgICAgICAgICAgZGVzY2VuZGFudHMucHJlcGVuZChkZXNjZW5kYW50LT5kb2N1bWVu
dCgpKTsKICAgICB9CkBAIC01MjE1LDcgKzUyMTEsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRF
eGl0RnVsbHNjcmVlbigpCiAgICAgfQogCiAgICAgLy8gNS4gV2hpbGUgZG9jIGlzIG5vdCBudWxs
LCBydW4gdGhlc2Ugc3Vic3RlcHM6Ci0gICAgRWxlbWVudCogbmV3VG9wID0gMDsKKyAgICBFbGVt
ZW50KiBuZXdUb3AgPSBudWxscHRyOwogICAgIHdoaWxlIChjdXJyZW50RG9jKSB7CiAgICAgICAg
IC8vIDEuIFBvcCB0aGUgdG9wIGVsZW1lbnQgb2YgZG9jJ3MgZnVsbHNjcmVlbiBlbGVtZW50IHN0
YWNrLgogICAgICAgICBjdXJyZW50RG9jLT5wb3BGdWxsc2NyZWVuRWxlbWVudFN0YWNrKCk7CkBA
IC01MjM4LDcgKzUyMzQsNyBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigp
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA0LiBPdGhlcndpc2UsIHNldCBkb2MgdG8gbnVsbC4K
LSAgICAgICAgY3VycmVudERvYyA9IDA7CisgICAgICAgIGN1cnJlbnREb2MgPSBudWxscHRyOwog
ICAgIH0KIAogICAgIC8vIDYuIFJldHVybiwgYW5kIHJ1biB0aGUgcmVtYWluaW5nIHN0ZXBzIGFz
eW5jaHJvbm91c2x5LgpAQCAtNTMwMiw3ICs1Mjk4LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0
V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKICAgICB9CiAK
ICAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCAhPSBkb2N1bWVudEVsZW1lbnQoKSkKLSAgICAg
ICAgUmVuZGVyRnVsbFNjcmVlbjo6d3JhcFJlbmRlcmVyKHJlbmRlcmVyLCByZW5kZXJlciA/IHJl
bmRlcmVyLT5wYXJlbnQoKSA6IDAsICp0aGlzKTsKKyAgICAgICAgUmVuZGVyRnVsbFNjcmVlbjo6
d3JhcFJlbmRlcmVyKHJlbmRlcmVyLCByZW5kZXJlciA/IHJlbmRlcmVyLT5wYXJlbnQoKSA6IG51
bGxwdHIsICp0aGlzKTsKIAogICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldENvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnRPbkFuY2VzdG9yc0Nyb3NzaW5nRnJhbWVCb3VuZGFyaWVzKHRydWUpOwog
ICAgIApAQCAtNTM0OCw3ICs1MzQ0LDcgQEAgdm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJl
cikKICAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnVud3JhcFJlbmRlcmVyKCk7CiAKLSAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gbnVs
bHB0cjsKICAgICBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgCiAgICAgLy8gV2hl
biB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuIGlzIGNhbGxlZCwgd2UgY2FsbCB3ZWJraXRFeGl0RnVs
bFNjcmVlbiBvbiB0aGUgdG9wRG9jdW1lbnQoKS4gVGhhdApAQCAtNTM4NSwxMCArNTM4MSwxMCBA
QCB2b2lkIERvY3VtZW50OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXIoUmVuZGVyRnVsbFNjcmVlbiog
cmVuZGVyZXIpCiAKIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5SZW5kZXJlckRlc3Ryb3llZCgp
CiB7Ci0gICAgbV9mdWxsU2NyZWVuUmVuZGVyZXIgPSAwOworICAgIG1fZnVsbFNjcmVlblJlbmRl
cmVyID0gbnVsbHB0cjsKIAogICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZCgwKTsKKyAgICAgICAgcGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2VkKG51bGxwdHIpOwog
fQogCiB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lckZpcmVkKFRpbWVy
PERvY3VtZW50PiopCkBAIC01NTExLDEyICs1NTA3LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtp
dEV4aXRQb2ludGVyTG9jaygpCiBFbGVtZW50KiBEb2N1bWVudDo6d2Via2l0UG9pbnRlckxvY2tF
bGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoIXBhZ2UoKSB8fCBwYWdlKCktPnBvaW50ZXJMb2Nr
Q29udHJvbGxlcigpLT5sb2NrUGVuZGluZygpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBwYWdlKCktPnBvaW50
ZXJMb2NrQ29udHJvbGxlcigpLT5lbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQtPmRv
Y3VtZW50KCkgPT0gdGhpcykKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH0KLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgogCkBAIC01Njg3LDcg
KzU2ODMsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNldExhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1l
c3RhbXAoKQogSFRNTElGcmFtZUVsZW1lbnQqIERvY3VtZW50OjpzZWFtbGVzc1BhcmVudElGcmFt
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJlbnQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIHRvSFRNTElGcmFtZUVsZW1lbnQob3duZXJFbGVtZW50KCkpOwogfQpAQCAtNTcwOSwxNCAr
NTcwNSwxNCBAQCBib29sIERvY3VtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJl
bnQoKSBjb25zdAogRG9jdW1lbnRMb2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogewog
ICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50
KCkgIT0gdGhpcykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIAogICAgIHJldHVybiBsb2FkZXI7CiB9CkBAIC01NzMzLDcgKzU3MjksNyBAQCBJbnRTaXpl
IERvY3VtZW50Ojppbml0aWFsVmlld3BvcnRTaXplKCkgY29uc3QKIEVsZW1lbnQqIGV2ZW50VGFy
Z2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50KiBkb2MpCiB7CiAgICAgaWYgKCFkb2MpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBFbGVtZW50KiBl
bGVtZW50ID0gZG9jLT5mb2N1c2VkRWxlbWVudCgpOwogICAgIGlmICghZWxlbWVudCAmJiBkb2Mt
PmlzUGx1Z2luRG9jdW1lbnQoKSkgewogICAgICAgICBQbHVnaW5Eb2N1bWVudCogcGx1Z2luRG9j
dW1lbnQgPSB0b1BsdWdpbkRvY3VtZW50KGRvYyk7CkBAIC01ODAyLDcgKzU3OTgsNyBAQCB2b2lk
IERvY3VtZW50OjpkZWNyZW1lbnRBY3RpdmVQYXJzZXJDb3VudCgpCiBzdGF0aWMgUmVuZGVyRWxl
bWVudCogbmVhcmVzdENvbW1vbkhvdmVyQW5jZXN0b3IoUmVuZGVyRWxlbWVudCogb2JqMSwgUmVu
ZGVyRWxlbWVudCogb2JqMikKIHsKICAgICBpZiAoIW9iajEgfHwgIW9iajIpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoUmVuZGVyRWxlbWVu
dCogY3Vyck9iajEgPSBvYmoxOyBjdXJyT2JqMTsgY3Vyck9iajEgPSBjdXJyT2JqMS0+aG92ZXJB
bmNlc3RvcigpKSB7CiAgICAgICAgIGZvciAoUmVuZGVyRWxlbWVudCogY3Vyck9iajIgPSBvYmoy
OyBjdXJyT2JqMjsgY3Vyck9iajIgPSBjdXJyT2JqMi0+aG92ZXJBbmNlc3RvcigpKSB7CkBAIC01
ODExLDcgKzU4MDcsNyBAQCBzdGF0aWMgUmVuZGVyRWxlbWVudCogbmVhcmVzdENvbW1vbkhvdmVy
QW5jZXN0b3IoUmVuZGVyRWxlbWVudCogb2JqMSwgUmVuZGVyRWxlbQogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgRG9jdW1l
bnQ6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEVsZW1lbnQqIGlubmVyRWxlbWVudCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50KiBldmVudCwg
U3R5bGVSZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZykKQEAgLTU5ODgsOSArNTk4NCw5IEBA
IERvY3VtZW50KiBEb2N1bWVudDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpCiAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PERvY3VtZW50Kj4oZG9jdW1lbnQpOwogCiAgICAgaWYgKGlzSFRNTERv
Y3VtZW50KCkpCi0gICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3Jl
YXRlKDAsIGJsYW5rVVJMKCkpOworICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQgPSBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZShudWxscHRyLCBibGFua1VSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
dGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgYmxhbmtVUkwoKSk7CisgICAg
ICAgIG1fdGVtcGxhdGVEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgYmxhbmtV
UkwoKSk7CiAKICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9jdW1lbnRIb3N0
KHRoaXMpOyAvLyBiYWxhbmNlZCBpbiBkdG9yLgogCg==
</data>
<flag name="review"
          id="236582"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="236583"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>