<?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>62803</bug_id>
          
          <creation_ts>2011-06-16 10:34:46 -0700</creation_ts>
          <short_desc>Cleanup ResourceRequest, ResourceResponse and ResourceError argument coders</short_desc>
          <delta_ts>2011-06-16 13:01:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422038</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-06-16 10:34:46 -0700</bug_when>
    <thetext>Cleanup ResourceRequest, ResourceResponse and ResourceError argument coders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422040</commentid>
    <comment_count>1</comment_count>
      <attachid>97458</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-06-16 10:35:35 -0700</bug_when>
    <thetext>Created attachment 97458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422150</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-06-16 13:01:19 -0700</bug_when>
    <thetext>Committed r89060: &lt;http://trac.webkit.org/changeset/89060&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97458</attachid>
            <date>2011-06-16 10:35:35 -0700</date>
            <delta_ts>2011-06-16 10:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62803-20110616103534.patch</filename>
            <type>text/plain</type>
            <size>28925</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MDM5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDYtMTYgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbnVwIFJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSBhbmQgUmVzb3VyY2VFcnJvciBhcmd1bWVudCBjb2RlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODAzCisKKyAgICAgICAgR2V0IHJp
ZCBvZiB0aGUgZnJlZSBlbmNvZGUvZGVjb2RlIGZ1bmN0aW9ucyBhbmQgbW92ZSB0aGUgdGVtcGxh
dGUgc3BlY2lhbGl6YXRpb25zIHRvIHRoZWlyCisgICAgICAgIHJlc3BlY3RpdmUgaW1wbGVtZW50
YXRpb24gZmlsZXMgaW5zdGVhZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYkNvcmVBcmd1bWVudENvZGVyc0d0ay5j
cHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06
CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcDoKKyAg
ICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAg
ICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisK
IDIwMTEtMDYtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gODkwMzgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw1MiArMTMwLDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZToKIH07CiAjZW5kaWYKIAotLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQg
aW4gYSBwbGF0Zm9ybSBzcGVjaWZpYyBtYW5uZXIuCi12b2lkIGVuY29kZVJlc291cmNlUmVxdWVz
dChBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLWJv
b2wgZGVjb2RlUmVzb3VyY2VSZXF1ZXN0KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KQotICAgIHsKLSAgICAgICAgZW5jb2RlUmVzb3VyY2VSZXF1ZXN0KGVuY29kZXIsIHJlc291
cmNlUmVxdWVzdCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZVJlc291cmNlUmVxdWVzdChkZWNvZGVy
LCByZXNvdXJjZVJlcXVlc3QpOwotICAgIH0KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogfTsKIAotLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgaW4gYSBwbGF0
Zm9ybSBzcGVjaWZpYyBtYW5uZXIuCi12b2lkIGVuY29kZVJlc291cmNlUmVzcG9uc2UoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotYm9vbCBkZWNv
ZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25z
ZSkKLSAgICB7Ci0gICAgICAgIGVuY29kZVJlc291cmNlUmVzcG9uc2UoZW5jb2RlciwgcmVzb3Vy
Y2VSZXNwb25zZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25z
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVSZXNvdXJjZVJlc3BvbnNlKGRlY29kZXIs
IHJlc291cmNlUmVzcG9uc2UpOwotICAgIH0KKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CiB9OwotCi0vLyBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBpbiBhIHBs
YXRmb3JtIHNwZWNpZmljIG1hbm5lci4KLXZvaWQgZW5jb2RlUmVzb3VyY2VFcnJvcihBcmd1bWVu
dEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci1ib29sIGRlY29kZVJl
c291cmNlRXJyb3IoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwot
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQotICAgIHsKLSAgICAgICAg
ZW5jb2RlUmVzb3VyY2VFcnJvcihlbmNvZGVyLCByZXNvdXJjZUVycm9yKTsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBk
ZWNvZGVSZXNvdXJjZUVycm9yKGRlY29kZXIsIHJlc291cmNlRXJyb3IpOwotICAgIH0KKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzPiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1dlYkNvcmVBcmd1bWVudENvZGVyc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9XZWJDb3JlQXJndW1lbnRDb2RlcnNHdGsuY3BwCShyZXZpc2lv
biA4OTAzNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNzQgKzI4LDYzIEBACiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKLXZvaWQg
ZW5jb2RlUmVzb3VyY2VSZXF1ZXN0KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgZW5jb2Rlci0+ZW5j
b2RlKENvcmVJUEM6OkluKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSkpOwotICAgIGVu
Y29kZXItPmVuY29kZShDb3JlSVBDOjpJbihyZXNvdXJjZVJlcXVlc3QuaHR0cE1ldGhvZCgpKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Cisg
ICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlUmVxdWVzdC5odHRwTWV0aG9kKCkpOwogCi0gICAg
Y29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291cmNlUmVxdWVzdC5o
dHRwSGVhZGVyRmllbGRzKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihoZWFkZXJzLnNpemUoKSkpKTsKLSAgICBpZiAoIWhlYWRlcnMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGhlYWRlcnMuZW5kKCk7Ci0gICAgICAgIGZvciAoV2ViQ29yZTo6SFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
LSAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihpdC0+Zmlyc3QsIGl0LT5z
ZWNvbmQpKTsKLSAgICB9CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291
cmNlUmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGhlYWRl
cnMpOwogCi0gICAgV2ViQ29yZTo6Rm9ybURhdGEqIGh0dHBCb2R5ID0gcmVzb3VyY2VSZXF1ZXN0
Lmh0dHBCb2R5KCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0
PGJvb2w+KGh0dHBCb2R5KSkpOworICAgIEZvcm1EYXRhKiBodHRwQm9keSA9IHJlc291cmNlUmVx
dWVzdC5odHRwQm9keSgpOworICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxib29sPiho
dHRwQm9keSkpOwogICAgIGlmIChodHRwQm9keSkKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKENv
cmVJUEM6OkluKGh0dHBCb2R5LT5mbGF0dGVuVG9TdHJpbmcoKSkpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoaHR0cEJvZHktPmZsYXR0ZW5Ub1N0cmluZygpKTsKIAotICAgIGVuY29kZXItPmVu
Y29kZShDb3JlSVBDOjpJbihyZXNvdXJjZVJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5z
dHJpbmcoKSkpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocmVzb3VyY2VSZXF1ZXN0LnNvdXBNZXNzYWdlRmxhZ3MoKSkpKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGUocmVzb3VyY2VSZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkuc3RyaW5n
KCkpOworICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzb3VyY2VS
ZXF1ZXN0LnNvdXBNZXNzYWdlRmxhZ3MoKSkpOwogfQogCi1ib29sIGRlY29kZVJlc291cmNlUmVx
dWVzdChBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogewotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0OwogCiAgICAgU3RyaW5nIHVybDsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShDb3JlSVBDOjpPdXQodXJsKSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
dXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlcXVlc3Quc2V0VVJMKFdlYkNvcmU6
OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB1cmwpKTsKKyAgICByZXF1ZXN0LnNldFVSTChLVVJMKEtV
UkwoKSwgdXJsKSk7CiAKICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShDb3JlSVBDOjpPdXQoaHR0cE1ldGhvZCkpKQorICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGh0dHBNZXRob2QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKGh0dHBNZXRob2QpOwogCi0gICAgdWludDMyX3Qgc2l6ZTsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoc2l6ZSkpKQorICAgIEhUVFBIZWFkZXJNYXAgaGVh
ZGVyczsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoZWFkZXJzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChzaXplKSB7Ci0gICAgICAgIEF0b21pY1N0cmluZyBuYW1lOwotICAg
ICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChu
YW1lLCB2YWx1ZSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgfQotICAg
IH0KKyAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZHMoaGVhZGVycyk7CiAKICAgICBib29s
IGhhc0hUVFBCb2R5OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChoYXNI
VFRQQm9keSkpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhc0hUVFBCb2R5KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChoYXNIVFRQQm9keSkgewogICAgICAgICBTdHJpbmcg
aHR0cEJvZHk7Ci0gICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChodHRw
Qm9keSkpKQorICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwQm9keSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV2ViQ29yZTo6
Rm9ybURhdGE6OmNyZWF0ZShodHRwQm9keS51dGY4KCkpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRI
VFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKGh0dHBCb2R5LnV0ZjgoKSkpOwogICAgIH0KIAogICAg
IFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29va2llczsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShD
b3JlSVBDOjpPdXQoZmlyc3RQYXJ0eUZvckNvb2tpZXMpKSkKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShmaXJzdFBhcnR5Rm9yQ29va2llcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VS
TCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOworICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMoS1VSTChLVVJMKCksIGZpcnN0UGFydHlGb3JDb29raWVzKSk7CiAKICAgICB1aW50
MzJfdCBzb3VwTWVzc2FnZUZsYWdzOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6
Ok91dChzb3VwTWVzc2FnZUZsYWdzKSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc291cE1l
c3NhZ2VGbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXF1ZXN0LnNldFNvdXBN
ZXNzYWdlRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cE1lc3NhZ2VGbGFn
cykpOwogCkBAIC0xMDMsODEgKzkyLDY5IEBAIGJvb2wgZGVjb2RlUmVzb3VyY2VSZXF1ZXN0KEFy
Z3VtZW50RGVjb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBlbmNvZGVSZXNvdXJjZVJl
c3BvbnNlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKKwordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNl
UmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewotICAgIGVuY29kZXItPmVuY29kZShDb3Jl
SVBDOjpJbihyZXNvdXJjZVJlc3BvbnNlLnVybCgpLnN0cmluZygpKSk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc291cmNlUmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSkpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25z
ZS51cmwoKS5zdHJpbmcoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGludDMy
X3Q+KHJlc291cmNlUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpOwogCi0gICAgY29uc3QgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IHJlc291cmNlUmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkcygpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oaGVhZGVycy5zaXplKCkpKSk7Ci0gICAgaWYgKCFoZWFkZXJzLmlzRW1wdHkoKSkg
ewotICAgICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBo
ZWFkZXJzLmVuZCgpOwotICAgICAgICBmb3IgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oaXQtPmZpcnN0LCBpdC0+c2Vjb25kKSk7
Ci0gICAgfQorICAgIGVuY29kZXItPmVuY29kZShoZWFkZXJzKTsKIAotICAgIGVuY29kZXItPmVu
Y29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzb3VyY2VSZXNwb25zZS5z
b3VwTWVzc2FnZUZsYWdzKCkpKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHJl
c291cmNlUmVzcG9uc2UubWltZVR5cGUoKSkpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBD
OjpJbihyZXNvdXJjZVJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSkpOwotICAgIGVuY29kZXIt
PmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDxpbnQ2NF90PihyZXNvdXJjZVJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSkpOwotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBD
OjpJbihyZXNvdXJjZVJlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCkpKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGUoQ29yZUlQQzo6SW4ocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXNvdXJjZVJlc3Bv
bnNlLnNvdXBNZXNzYWdlRmxhZ3MoKSkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJl
c3BvbnNlLm1pbWVUeXBlKCkpOworICAgIGVuY29kZXItPmVuY29kZShyZXNvdXJjZVJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGlu
dDY0X3Q+KHJlc291cmNlUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUocmVzb3VyY2VSZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0K
IAotYm9vbCBkZWNvZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1l
bnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKLSAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CiAKICAgICBTdHJpbmcgdXJsOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91
dCh1cmwpKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZSh1cmwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmVzcG9uc2Uuc2V0VVJMKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgp
LCB1cmwpKTsKKyAgICByZXNwb25zZS5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOwogCiAgICAg
aW50MzJfdCBodHRwU3RhdHVzQ29kZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBD
OjpPdXQoaHR0cFN0YXR1c0NvZGUpKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3Rh
dHVzQ29kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZShodHRwU3RhdHVzQ29kZSk7CiAKLSAgICB1aW50MzJfdCBzaXplOwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChzaXplKSkpCisgICAgSFRUUEhlYWRlck1hcCBo
ZWFkZXJzOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhlYWRlcnMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHNpemUpIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIG5hbWU7Ci0g
ICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0
KG5hbWUsIHZhbHVlKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgfQot
ICAgIH0KKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVy
cy5iZWdpbigpLCBlbmQgPSBoZWFkZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAg
IHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOwogCiAg
ICAgdWludDMyX3Qgc291cE1lc3NhZ2VGbGFnczsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShD
b3JlSVBDOjpPdXQoc291cE1lc3NhZ2VGbGFncykpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHNvdXBNZXNzYWdlRmxhZ3MpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2Uu
c2V0U291cE1lc3NhZ2VGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPihzb3VwTWVz
c2FnZUZsYWdzKSk7CiAKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KG1pbWVUeXBlKSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
bWltZVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzcG9uc2Uuc2V0TWltZVR5
cGUobWltZVR5cGUpOwogCiAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHRleHRFbmNvZGluZ05hbWUpKSkKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZSh0ZXh0RW5jb2RpbmdOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSk7CiAK
ICAgICBpbnQ2NF90IGNvbnRlbnRMZW5ndGg7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29y
ZUlQQzo6T3V0KGNvbnRlbnRMZW5ndGgpKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShjb250
ZW50TGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3BvbnNlLnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChjb250ZW50TGVuZ3RoKTsKIAogICAgIFN0cmluZyBodHRwU3RhdHVz
VGV4dDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaHR0cFN0YXR1c1Rl
eHQpKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShodHRwU3RhdHVzVGV4dCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVz
VGV4dCk7CiAKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoQ29yZUlQQzo6T3V0KHN1Z2dlc3RlZEZpbGVuYW1lKSkpCisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoc3VnZ2VzdGVkRmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmVzcG9uc2Uuc2V0U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpOwogCkBA
IC0xODUsMjAgKzE2MiwzNCBAQCBib29sIGRlY29kZVJlc291cmNlUmVzcG9uc2UoQXJndW1lbnRE
ZWNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5jb2RlUmVzb3VyY2VFcnJvcihBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291
cmNlRXJyb3IpCisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJv
cikKIHsKLSAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4ocmVzb3VyY2VFcnJvci5kb21h
aW4oKSwgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKSwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJM
KCksIHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkpOworICAgIGVuY29kZXIt
PmVuY29kZShyZXNvdXJjZUVycm9yLmRvbWFpbigpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVz
b3VyY2VFcnJvci5lcnJvckNvZGUoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJy
b3IuZmFpbGluZ1VSTCgpKTsgCisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24oKSk7CiB9CiAKLWJvb2wgZGVjb2RlUmVzb3VyY2VFcnJvcihBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAgICAgU3Ry
aW5nIGRvbWFpbjsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkb21haW4pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBpbnQgZXJyb3JDb2RlOworICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGVycm9yQ29kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFN0cmluZyBmYWls
aW5nVVJMOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKICAgICBTdHJpbmcgbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxv
Y2FsaXplZERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc291cmNl
RXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CisgICAgCisgICAgcmVzb3VyY2VFcnJvciA9IFJl
c291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2Ny
aXB0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHJldmlzaW9u
IDg5MDM4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogbmFtZXNwYWNlIENvcmVJUEMgewogCi12b2lkIGVuY29kZVJlc291cmNlUmVx
dWVzdChBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogewogICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlc291cmNlUmVxdWVz
dC5uc1VSTFJlcXVlc3QoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocmVxdWVzdElzUHJlc2VudCk7
CkBAIC00NCwxMCArNDQsMTAgQEAgdm9pZCBlbmNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnRF
bmNvZAogICAgICAgICByZXR1cm47CiAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBk
aWN0aW9uYXJ5KEFkb3B0Q0YsIFdLTlNVUkxSZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVz
ZW50YXRpb24ocmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpLCBDb3JlSVBDOjp0b2tlbk51
bGxUeXBlUmVmKCkpKTsKLSAgICBlbmNvZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7Cisg
ICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogfQogCi1ib29s
IGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVx
dWVzdD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQogewogICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudDsKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShyZXF1ZXN0SXNQcmVzZW50KSkKQEAgLTU5LDcgKzU5LDcgQEAgYm9v
bCBkZWNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnREZWNvZAogICAgIH0KIAogICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnk7Ci0gICAgaWYgKCFkZWNvZGUoZGVjb2Rl
ciwgZGljdGlvbmFyeSkpCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlv
bmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxS
ZXF1ZXN0ID0gV0tOU1VSTFJlcXVlc3RGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24oZGlj
dGlvbmFyeS5nZXQoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKQEAgLTcwLDcgKzcw
LDcgQEAgYm9vbCBkZWNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnREZWNvZAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIGVuY29kZVJlc291cmNlUmVzcG9uc2UoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQordm9p
ZCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewog
ICAgIGJvb2wgcmVzcG9uc2VJc1ByZXNlbnQgPSByZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUocmVzcG9uc2VJc1ByZXNlbnQpOwpAQCAtNzksMTAg
Kzc5LDEwIEBAIHZvaWQgZW5jb2RlUmVzb3VyY2VSZXNwb25zZShBcmd1bWVudEVuY28KICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShB
ZG9wdENGLCBXS05TVVJMUmVzcG9uc2VDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihy
ZXNvdXJjZVJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJl
ZigpKSk7Ci0gICAgZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIENvcmVJ
UEM6OmVuY29kZShlbmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKIH0KIAotYm9vbCBkZWNvZGVS
ZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzb3VyY2VSZXNwb25zZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNl
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
b3VyY2VSZXNwb25zZSkKIHsKICAgICBib29sIHJlc3BvbnNlSXNQcmVzZW50OwogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHJlc3BvbnNlSXNQcmVzZW50KSkKQEAgLTk0LDcgKzk0LDcgQEAgYm9v
bCBkZWNvZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RGVjbwogICAgIH0KIAogICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnk7Ci0gICAgaWYgKCFkZWNvZGUoZGVjb2Rl
ciwgZGljdGlvbmFyeSkpCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlv
bmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE5TVVJMUmVzcG9uc2UqIG5zVVJM
UmVzcG9uc2UgPSBXS05TVVJMUmVzcG9uc2VGcm9tU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24o
ZGljdGlvbmFyeS5nZXQoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKTsKQEAgLTExMCw3
ICsxMTAsNyBAQCBzdGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nKGNvbnN0IFN0cmluZyYgCiAgICAg
cmV0dXJuIHN0cmluZy5pbXBsKCkgPyBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6cmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSkgbGVuZ3Ro
OnN0cmluZy5sZW5ndGgoKV0gOiBAIiI7CiB9CiAKLXZvaWQgZW5jb2RlUmVzb3VyY2VFcnJvcihB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVu
Y29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAg
ICAgYm9vbCBlcnJvcklzTnVsbCA9IHJlc291cmNlRXJyb3IuaXNOdWxsKCk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKGVycm9ySXNOdWxsKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIGVuY29kZVJl
c291cmNlRXJyb3IoQXJndW1lbnRFbmNvZGVyCiAgICAgZW5jb2Rlci0+ZW5jb2RlKFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvKChDRkFycmF5UmVmKXBlZXJDZXJ0aWZpY2F0ZUNoYWluKSk7CiB9CiAK
LWJvb2wgZGVjb2RlUmVzb3VyY2VFcnJvcihBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291
cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJv
cj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291
cmNlRXJyb3IpCiB7CiAgICAgYm9vbCBlcnJvcklzTnVsbDsKICAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShlcnJvcklzTnVsbCkpCkBAIC0xODUsMTQgKzE4NSwxMiBAQCBib29sIGRlY29kZVJlc291
cmNlRXJyb3IoQXJndW1lbnREZWNvZGVyCiAgICAgaWYgKGNlcnRpZmljYXRlLmNlcnRpZmljYXRl
Q2hhaW4oKSkKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDooTlNBcnJheSAqKWNlcnRpZmlj
YXRlLmNlcnRpZmljYXRlQ2hhaW4oKSBmb3JLZXk6QCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hh
aW5LZXkiXTsKIAotICAgIE5TRXJyb3IgKm5zRXJyb3IgPSBbW05TRXJyb3IgYWxsb2NdIGluaXRX
aXRoRG9tYWluOm5zU3RyaW5nKGRvbWFpbikgY29kZTpjb2RlIHVzZXJJbmZvOnVzZXJJbmZvXTsK
KyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvcihBZG9wdE5TLCBbW05TRXJyb3IgYWxsb2Nd
IGluaXRXaXRoRG9tYWluOm5zU3RyaW5nKGRvbWFpbikgY29kZTpjb2RlIHVzZXJJbmZvOnVzZXJJ
bmZvXSk7CiAKLSAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihuc0Vycm9yKTsKLSAg
ICBbbnNFcnJvciByZWxlYXNlXTsKKyAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihu
c0Vycm9yLmdldCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCiB2b2lkIEFyZ3VtZW50Q29k
ZXI8S2V5cHJlc3NDb21tYW5kPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29u
c3QgS2V5cHJlc3NDb21tYW5kJiBrZXlwcmVzc0NvbW1hbmQpCiB7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKGtleXByZXNzQ29tbWFuZC5jb21tYW5kTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJDb3JlQXJndW1lbnRDb2RlcnNRdC5jcHAJKHJldmlzaW9u
IDg5MDM3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVy
c1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDE2IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyAKIG5hbWVzcGFjZSBDb3JlSVBDIHsK
IAotdm9pZCBlbmNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi1ib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAKQEAgLTQ2LDM0ICs0OCw0OSBAQCBib29sIGRlY29kZVJlc291
cmNlUmVxdWVzdChBcmd1bWVudERlY29kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZW5j
b2RlUmVzb3VyY2VSZXNwb25zZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi1ib29sIGRlY29kZVJlc291cmNlUmVzcG9uc2UoQXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNl
KQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlUmVzcG9uc2U+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAKICAgICAvLyBGSVhNRTogRGl0dG8uCi0gICAgcmVzb3Vy
Y2VSZXNwb25zZSA9IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UoKTsKKyAgICByZXNvdXJjZVJl
c3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IGVuY29kZVJlc291cmNlRXJyb3IoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VFcnJvcj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJ
UEM6OkluKHJlc291cmNlRXJyb3IuZG9tYWluKCksIHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCks
IHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLCByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCkpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVzb3VyY2VFcnJvci5kb21haW4oKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCkpOworICAgIGVu
Y29kZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwoKSk7IAorICAgIGVuY29kZXIt
PmVuY29kZShyZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogfQogCi1ib29s
IGRlY29kZVJlc291cmNlRXJyb3IoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQorYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNl
RXJyb3I+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZUVycm9yJiBy
ZXNvdXJjZUVycm9yKQogewogICAgIFN0cmluZyBkb21haW47CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaW50IGVycm9yQ29k
ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShlcnJvckNvZGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBTdHJpbmcgZmFpbGluZ1VSTDsKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShmYWlsaW5nVVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgU3RyaW5nIGxvY2Fs
aXplZERlc2NyaXB0aW9uOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChk
b21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pKSkKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXNvdXJjZUVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvcihk
b21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pOworICAg
IAorICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBm
YWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkNvcmVBcmd1
bWVudENvZGVyc1dpbi5jcHAJKHJldmlzaW9uIDg5MDM3KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxMSArMzUsMTQgQEAKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworIAogbmFtZXNwYWNlIENvcmVJUEMgewogCiAvLyBGSVhNRTog
VGhlc2UgY29kZXJzIHNob3VsZCByZWFsbHkgZ28gaW4gYSBXZWJDb3JlQXJndW1lbnRDb2RlcnND
Rk5ldHdvcmsgZmlsZS4KIAotdm9pZCBlbmNvZGVSZXNvdXJjZVJlcXVlc3QoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJl
c291cmNlUmVxdWVzdC5jZlVSTFJlcXVlc3QoKTsKQEAgLTQ5LDExICs1MiwxMSBAQCB2b2lkIGVu
Y29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudEVuY29kCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkoQWRvcHRDRiwgd2tDRlVSTFJl
cXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXNvdXJjZVJlcXVlc3QuY2ZV
UkxSZXF1ZXN0KCksIENvcmVJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOwotICAgIGVuY29kZShl
bmNvZGVyLCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rlciwg
ZGljdGlvbmFyeS5nZXQoKSk7CiAjZW5kaWYKIH0KIAotYm9vbCBkZWNvZGVSZXNvdXJjZVJlcXVl
c3QoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudDsK
QEAgLTYxLDMxICs2NCwzMSBAQCBib29sIGRlY29kZVJlc291cmNlUmVxdWVzdChBcmd1bWVudERl
Y29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVxdWVzdElzUHJlc2VudCkg
ewotICAgICAgICByZXNvdXJjZVJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoKTsK
KyAgICAgICAgcmVzb3VyY2VSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rp
b25hcnk7Ci0gICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCisgICAgaWYgKCFD
b3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QgPSB3a0NGVVJMUmVxdWVzdENy
ZWF0ZUZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgpLCBDb3Jl
SVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOworICAgIFJldGdhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVm
PiBjZlVSTFJlcXVlc3QoQWRvcHRDRiwgd2tDRlVSTFJlcXVlc3RDcmVhdGVGcm9tU2VyaWFsaXph
YmxlUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeS5nZXQoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlw
ZVJlZigpKSk7CiAgICAgaWYgKCFjZlVSTFJlcXVlc3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVDRlVSTFJlcXVlc3QgPSBDRlVSTFJl
cXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBjZlVSTFJlcXVlc3QpOwotICAgIENGUmVsZWFzZShj
ZlVSTFJlcXVlc3QpOworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRh
YmxlQ0ZVUkxSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAs
IGNmVVJMUmVxdWVzdC5nZXQoKSkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKLSAg
ICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3Vy
cmVudFN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVDRlVSTFJlcXVlc3QpOworICAgIHdrU2V0UmVx
dWVzdFN0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24o
KSwgbXV0YWJsZUNGVVJMUmVxdWVzdC5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJlc291cmNlUmVx
dWVzdCA9IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdChtdXRhYmxlQ0ZVUkxSZXF1ZXN0KTsKKyAg
ICByZXNvdXJjZVJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QobXV0YWJsZUNGVVJMUmVxdWVzdC5n
ZXQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogfQogCi12b2lkIGVuY29kZVJlc291cmNlUmVzcG9uc2UoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmVuY29kZShBcmd1bWVudEVu
Y29kZXIqIGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2Up
CiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBib29sIHJlc3BvbnNlSXNQcmVzZW50ID0gcmVz
b3VyY2VSZXNwb25zZS5jZlVSTFJlc3BvbnNlKCk7CkBAIC05NSwxMSArOTgsMTEgQEAgdm9pZCBl
bmNvZGVSZXNvdXJjZVJlc3BvbnNlKEFyZ3VtZW50RW5jbwogICAgICAgICByZXR1cm47CiAKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIHdrQ0ZVUkxS
ZXNwb25zZUNyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlc291cmNlUmVzcG9uc2Uu
Y2ZVUkxSZXNwb25zZSgpLCBDb3JlSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKLSAgICBlbmNv
ZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29k
ZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogI2VuZGlmCiB9CiAKLWJvb2wgZGVjb2RlUmVzb3VyY2VS
ZXNwb25zZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UpCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25z
ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNlUmVzcG9uc2UmIHJl
c291cmNlUmVzcG9uc2UpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBib29sIHJlc3BvbnNl
SXNQcmVzZW50OwpAQCAtMTA3LDU3ICsxMTAsNzAgQEAgYm9vbCBkZWNvZGVSZXNvdXJjZVJlc3Bv
bnNlKEFyZ3VtZW50RGVjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXJlc3Bv
bnNlSXNQcmVzZW50KSB7Ci0gICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlKCk7CisgICAgICAgIHJlc291cmNlUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGRpY3Rpb25hcnk7Ci0gICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZGljdGlv
bmFyeSkpCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgZGljdGlvbmFyeSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZVUkxSZXNwb25z
ZSA9IHdrQ0ZVUkxSZXNwb25zZUNyZWF0ZUZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihk
aWN0aW9uYXJ5LmdldCgpLCBDb3JlSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpOworICAgIFJldGFp
blB0cjxDRlVSTFJlc3BvbnNlUmVmPiBjZlVSTFJlc3BvbnNlKEFkb3B0Q0YsIHdrQ0ZVUkxSZXNw
b25zZUNyZWF0ZUZyb21TZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5LmdldCgp
LCBDb3JlSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKICAgICBpZiAoIWNmVVJMUmVzcG9uc2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc291cmNlUmVzcG9uc2UgPSBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlKGNmVVJMUmVzcG9uc2UpOworICAgIHJlc291cmNlUmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKGNmVVJMUmVzcG9uc2UuZ2V0KCkpOwogICAgIHJldHVybiB0cnVl
OwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIAotdm9pZCBlbmNvZGVSZXNv
dXJjZUVycm9yKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgcmVzb3VyY2VFcnJvcikKKwordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJy
b3I+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yKQogewotICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihyZXNv
dXJjZUVycm9yLmRvbWFpbigpLCByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpLCByZXNvdXJjZUVy
cm9yLmZhaWxpbmdVUkwoKSwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKHJlc291cmNlRXJyb3IuZG9tYWluKCkpOworICAgIGVuY29k
ZXItPmVuY29kZShyZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGUocmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkpOyAKKyAgICBlbmNvZGVyLT5lbmNvZGUocmVz
b3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIAogI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKFdlYktpdDo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ocmVz
b3VyY2VFcnJvci5jZXJ0aWZpY2F0ZSgpKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvKHJlc291cmNlRXJyb3IuY2VydGlmaWNhdGUoKSkpOwogI2VuZGlmCiB9
CiAKLWJvb2wgZGVjb2RlUmVzb3VyY2VFcnJvcihBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCitib29sIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VFcnJvcj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFJlc291cmNl
RXJyb3ImIHJlc291cmNlRXJyb3IpCiB7CiAgICAgU3RyaW5nIGRvbWFpbjsKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpbnQg
ZXJyb3JDb2RlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGVycm9yQ29kZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIFN0cmluZyBmYWlsaW5nVVJMOworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGZhaWxpbmdVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBTdHJp
bmcgbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQ
Qzo6T3V0KGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlv
bikpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGxvY2FsaXplZERlc2NyaXB0aW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBXZWJLaXQ6OlBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlOworICAgIFBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGNlcnRpZmljYXRl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxQQ0NFUlRf
Q09OVEVYVD4gY2VydGlmaWNhdGVDaGFpbiA9IGNlcnRpZmljYXRlLmNlcnRpZmljYXRlQ2hhaW4o
KTsKICAgICBpZiAoIWNlcnRpZmljYXRlQ2hhaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VS
VChjZXJ0aWZpY2F0ZUNoYWluLnNpemUoKSA9PSAxKTsKLSAgICAgICAgcmVzb3VyY2VFcnJvciA9
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxv
Y2FsaXplZERlc2NyaXB0aW9uLCBXZWJDb3JlOjpjb3B5Q2VydGlmaWNhdGVUb0RhdGEoY2VydGlm
aWNhdGVDaGFpbi5maXJzdCgpKS5nZXQoKSk7CisgICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNv
dXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlw
dGlvbiwgY29weUNlcnRpZmljYXRlVG9EYXRhKGNlcnRpZmljYXRlQ2hhaW4uZmlyc3QoKSkuZ2V0
KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJlc291cmNl
RXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbik7CisgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNl
RXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9u
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>
<flag name="review"
          id="91415"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>