<?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>155636</bug_id>
          
          <creation_ts>2016-03-18 05:18:15 -0700</creation_ts>
          <short_desc>[css-grid] Rename GridSpan properties</short_desc>
          <delta_ts>2016-03-18 06:56:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>
          
          <blocked>153488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfernandez</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176147</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-03-18 05:18:15 -0700</bug_when>
    <thetext>Last refactoring related to placement code.

Ported from Blink:
https://codereview.chromium.org/1808193002/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176148</commentid>
    <comment_count>1</comment_count>
      <attachid>274408</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-03-18 05:26:15 -0700</bug_when>
    <thetext>Created attachment 274408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176149</commentid>
    <comment_count>2</comment_count>
      <attachid>274408</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-03-18 05:44:28 -0700</bug_when>
    <thetext>Comment on attachment 274408
Patch

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176156</commentid>
    <comment_count>3</comment_count>
      <attachid>274408</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-18 06:56:45 -0700</bug_when>
    <thetext>Comment on attachment 274408
Patch

Clearing flags on attachment: 274408

Committed r198399: &lt;http://trac.webkit.org/changeset/198399&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176157</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-18 06:56:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274408</attachid>
            <date>2016-03-18 05:26:15 -0700</date>
            <delta_ts>2016-03-18 06:56:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155636-20160318132614.patch</filename>
            <type>text/plain</type>
            <size>33797</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM5OWM1Nzg4MzY5YWUy
ZTc2MzgxMDM0OGVmZjU4NGFjYWQxNzZiNi4uZGYyNmIxNTdiMjRjOTk1MzcwYWQ4MjFmNmViOTQ2
N2YwMjhkNzg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE2LTAzLTE4ICBNYW51
ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gUmVuYW1lIEdyaWRTcGFuIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTYzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdyaWRTcGFuIHdhcyB1c2luZyBvbGQgbmFtZXMgaW5pdGlh
bFJlc29sdmVkUG9zaXRpb24gYW5kCisgICAgICAgIGZpbmFsUmVzb2x2ZWRQb3NpdGlvbi4KKyAg
ICAgICAgVGhpcyBwYXRjaCByZW5hbWUgdGhlbSB0byBzdGFydExpbmUgYW5kIGVuZExpbmUuCisK
KyAgICAgICAgU29tZSByZWFzb25zIGZvciB0aGlzIHJlZmFjdG9yaW5nOgorICAgICAgICAtICJw
b3NpdGlvbiIgaXMgYSB2YWd1ZSB0ZXJtIG5vdCBkZWZpbmVkIGluIHRoZSBzcGVjLgorICAgICAg
ICAtIEdyaWRTcGFuIGlzIGN1cnJlbnRseSBzdG9yaW5nIGdyaWQgbGluZXMuIEEgZ3JpZCAibGlu
ZSIgaXMgZGVmaW5lZAorICAgICAgICAgIGluIHRoZSBzcGVjOiBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3NzLWdyaWQvI2dyaWQtbGluZS1jb25jZXB0CisgICAgICAgIC0gVGhlIHNwZWMgdXNl
cyB0aGUgY29uY2VwdHMgInN0YXJ0IiBhbmQgImVuZCIgbGluZXMgdG9vLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgICogY3NzL0NTU0dy
aWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nRm9yUG9z
aXRpb24pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZUdyaWRUZW1wbGF0ZUFyZWFzUm93KToKKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmNvbXB1dGVVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JOb25T
cGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6Omluc2VydEl0ZW1J
bnRvR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0
R3JpZEFuZE9yZGVySXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6cGxh
Y2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6Om9mZnNldEFuZEJyZWFkdGhGb3JQb3NpdGlvbmVkQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Z3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGRJbmNsdWRpbmdB
bGlnbm1lbnRPZmZzZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbHVtbkF4
aXNPZmZzZXRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyb3dBeGlz
T2Zmc2V0Rm9yQ2hpbGQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4p
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRTcGFuOjppbnRlZ2VyU3Bhbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlkU3Bh
bjo6dW50cmFuc2xhdGVkU3RhcnRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjp1
bnRyYW5zbGF0ZWRFbmRMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpzdGFydExp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OmVuZExpbmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFNwYW46OmJlZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjplbmQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmlkU3Bhbjo6R3JpZFNwYW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnVu
dHJhbnNsYXRlZFJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRTcGFuOjp1bnRyYW5zbGF0ZWRSZXNvbHZlZEZpbmFsUG9zaXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OnJlc29sdmVkSW5pdGlhbFBvc2l0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpyZXNvbHZlZEZpbmFsUG9z
aXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25z
UmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1l
ZExpbmVTcGFuQWdhaW5zdE9wcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVOYW1l
ZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpyZXNvbHZlR3JpZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zy
b21TdHlsZSk6CisKIDIwMTYtMDMtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIERpc2FibGUgQ2FjaGVzIGluIFNhZmFyaSdzIERldmVsb3AgbWVudSBkb2VzIG5v
dCBkaXNhYmxlIGNhY2hlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlk
VGVtcGxhdGVBcmVhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmlkVGVtcGxh
dGVBcmVhc1ZhbHVlLmNwcAppbmRleCA2M2Y2Njk3MmRmZWY4NjMyOTRjNjUxZTIxNzk1YmZlY2Nl
MTY5YWJlLi45MDkzOThlODgzOTdmYjE0ZWUyY2QxZTgwMTkyMzNjNmNmYzRiZjk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JpZFRlbXBsYXRlQXJlYXNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyaWRUZW1wbGF0ZUFyZWFzVmFsdWUuY3BwCkBAIC01
NSwxMyArNTUsMTMgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JQb3NpdGlvbihjb25zdCBOYW1l
ZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgc2l6ZV90IHJvdywKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgaXQgOiBncmlkQXJlYU1hcCkgewogICAgICAgICBjb25zdCBHcmlkQXJlYSYgYXJlYSA9
IGl0LnZhbHVlOwotICAgICAgICBpZiAocm93ID49IGFyZWEucm93cy5yZXNvbHZlZEluaXRpYWxQ
b3NpdGlvbigpICYmIHJvdyA8IGFyZWEucm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSkKKyAg
ICAgICAgaWYgKHJvdyA+PSBhcmVhLnJvd3Muc3RhcnRMaW5lKCkgJiYgcm93IDwgYXJlYS5yb3dz
LmVuZExpbmUoKSkKICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGl0LmtleSk7CiAgICAg
fQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IGdyaWRBcmVhTWFwKSB7CiAgICAgICAgIGNv
bnN0IEdyaWRBcmVhJiBhcmVhID0gaXQudmFsdWU7Ci0gICAgICAgIGlmIChjb2x1bW4gPj0gYXJl
YS5jb2x1bW5zLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCkgJiYgY29sdW1uIDwgYXJlYS5jb2x1
bW5zLnJlc29sdmVkRmluYWxQb3NpdGlvbigpICYmIGNhbmRpZGF0ZXMuY29udGFpbnMoaXQua2V5
KSkKKyAgICAgICAgaWYgKGNvbHVtbiA+PSBhcmVhLmNvbHVtbnMuc3RhcnRMaW5lKCkgJiYgY29s
dW1uIDwgYXJlYS5jb2x1bW5zLmVuZExpbmUoKSAmJiBjYW5kaWRhdGVzLmNvbnRhaW5zKGl0Lmtl
eSkpCiAgICAgICAgICAgICByZXR1cm4gaXQua2V5OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAppbmRleCAyN2U2YTM5YzYzZjYwZWQwYWNkNmU2NjA5Y2MxZWY0ZTAyY2QxMTk3Li40
OTZmNGY5MDYzMTdjZGU5MjYzNTgzNzY2NDZlNTg2MDYxYWM1NTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcApAQCAtNjI1NSwxOCArNjI1NSwxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VH
cmlkVGVtcGxhdGVBcmVhc1JvdyhOYW1lZEdyaWRBcmVhTWFwJiBncmlkQXJlYU1hcCwgY29uc3Qg
dQogCiAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrcyB0ZXN0IHRoYXQgdGhlIGdy
aWQgYXJlYSBpcyBhIHNpbmdsZSBmaWxsZWQtaW4gcmVjdGFuZ2xlLgogICAgICAgICAgICAgLy8g
MS4gVGhlIG5ldyByb3cgaXMgYWRqYWNlbnQgdG8gdGhlIHByZXZpb3VzbHkgcGFyc2VkIHJvdy4K
LSAgICAgICAgICAgIGlmIChyb3dDb3VudCAhPSBncmlkQXJlYS5yb3dzLnJlc29sdmVkRmluYWxQ
b3NpdGlvbigpKQorICAgICAgICAgICAgaWYgKHJvd0NvdW50ICE9IGdyaWRBcmVhLnJvd3MuZW5k
TGluZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgLy8g
Mi4gVGhlIG5ldyBhcmVhIHN0YXJ0cyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlv
dXNseSBwYXJzZWQgYXJlYS4KLSAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uICE9IGdyaWRB
cmVhLmNvbHVtbnMucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKSkKKyAgICAgICAgICAgIGlmIChj
dXJyZW50Q29sdW1uICE9IGdyaWRBcmVhLmNvbHVtbnMuc3RhcnRMaW5lKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAvLyAzLiBUaGUgbmV3IGFyZWEgZW5k
cyBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhcyB0aGUgcHJldmlvdXNseSBwYXJzZWQgYXJlYS4KLSAg
ICAgICAgICAgIGlmIChsb29rQWhlYWRDb2x1bW4gIT0gZ3JpZEFyZWEuY29sdW1ucy5yZXNvbHZl
ZEZpbmFsUG9zaXRpb24oKSkKKyAgICAgICAgICAgIGlmIChsb29rQWhlYWRDb2x1bW4gIT0gZ3Jp
ZEFyZWEuY29sdW1ucy5lbmRMaW5lKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICBncmlkQXJlYS5yb3dzID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0
ZUdyaWRTcGFuKGdyaWRBcmVhLnJvd3MucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKSwgZ3JpZEFy
ZWEucm93cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSArIDEpOworICAgICAgICAgICAgZ3JpZEFy
ZWEucm93cyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihncmlkQXJlYS5y
b3dzLnN0YXJ0TGluZSgpLCBncmlkQXJlYS5yb3dzLmVuZExpbmUoKSArIDEpOwogICAgICAgICB9
CiAgICAgICAgIGN1cnJlbnRDb2x1bW4gPSBsb29rQWhlYWRDb2x1bW4gLSAxOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCBiM2Q3ODM5YTdi
MzJjYTQxOWZmODQxZDFkY2VlNmM2Zjc2YzlhM2Y4Li5lZjZiMTlkM2RiNmJhNGU4ZTE5YzkyMzkz
NWJjZDlhZTdkMDk5YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZl
cnRlci5oCkBAIC05MzksMTIgKzkzOSwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29ucwogICAg
ICAgICBHcmlkU3BhbiBhcmVhU3BhbiA9IGRpcmVjdGlvbiA9PSBGb3JSb3dzID8gYXJlYS52YWx1
ZS5yb3dzIDogYXJlYS52YWx1ZS5jb2x1bW5zOwogICAgICAgICB7CiAgICAgICAgICAgICBhdXRv
JiBzdGFydFZlY3RvciA9IG5hbWVkR3JpZExpbmVzLmFkZChhcmVhLmtleSArICItc3RhcnQiLCBW
ZWN0b3I8dW5zaWduZWQ+KCkpLml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgIHN0YXJ0VmVj
dG9yLmFwcGVuZChhcmVhU3Bhbi5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpKTsKKyAgICAgICAg
ICAgIHN0YXJ0VmVjdG9yLmFwcGVuZChhcmVhU3Bhbi5zdGFydExpbmUoKSk7CiAgICAgICAgICAg
ICBzdGQ6OnNvcnQoc3RhcnRWZWN0b3IuYmVnaW4oKSwgc3RhcnRWZWN0b3IuZW5kKCkpOwogICAg
ICAgICB9CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8mIGVuZFZlY3RvciA9IG5hbWVkR3Jp
ZExpbmVzLmFkZChhcmVhLmtleSArICItZW5kIiwgVmVjdG9yPHVuc2lnbmVkPigpKS5pdGVyYXRv
ci0+dmFsdWU7Ci0gICAgICAgICAgICBlbmRWZWN0b3IuYXBwZW5kKGFyZWFTcGFuLnJlc29sdmVk
RmluYWxQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGVuZFZlY3Rvci5hcHBlbmQoYXJlYVNwYW4u
ZW5kTGluZSgpKTsKICAgICAgICAgICAgIHN0ZDo6c29ydChlbmRWZWN0b3IuYmVnaW4oKSwgZW5k
VmVjdG9yLmVuZCgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAppbmRleCA1Nzg4YTAxZmUyYWJkMDcxYzYwMmRmNTg1ZWRjNTI0MjYwMDIx
MzJmLi40Y2U5NTcxY2JjMzVmZDBlMjRhODZkM2NjNDYxYzY2MzQ1MmJmZWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01NzgsNyArNTc4LDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgICAgICAgICBjb25zdCBHcmlkU3BhbiBzcGFuID0g
Y2FjaGVkR3JpZFNwYW4oKmdyaWRJdGVtLCBkaXJlY3Rpb24pOwogCiAgICAgICAgICAgICAgICAg
Ly8gRG8gbm90IGluY2x1ZGUgYWxyZWFkeSBwcm9jZXNzZWQgaXRlbXMuCi0gICAgICAgICAgICAg
ICAgaWYgKGkgPiAwICYmIHNwYW4ucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKSA8PSBmbGV4aWJs
ZVNpemVkVHJhY2tzSW5kZXhbaSAtIDFdKQorICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJiBz
cGFuLnN0YXJ0TGluZSgpIDw9IGZsZXhpYmxlU2l6ZWRUcmFja3NJbmRleFtpIC0gMV0pCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgZmxleEZyYWN0aW9u
ID0gc3RkOjptYXgoZmxleEZyYWN0aW9uLCBmaW5kRmxleEZhY3RvclVuaXRTaXplKHRyYWNrcywg
c3BhbiwgZGlyZWN0aW9uLCBtYXhDb250ZW50Rm9yQ2hpbGQoKmdyaWRJdGVtLCBkaXJlY3Rpb24s
IHNpemluZ0RhdGEuY29sdW1uVHJhY2tzKSkpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvCiAKIHZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRy
YWNrU2l6aW5nRnVuY3Rpb25zRm9yTm9uU3Bhbm5pbmdJdGVtcyhHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BhbiwgUmVuZGVyQm94JiBncmlkSXRl
bSwgR3JpZFRyYWNrJiB0cmFjaywgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcykKIHsK
LSAgICB1bnNpZ25lZCB0cmFja1Bvc2l0aW9uID0gc3Bhbi5yZXNvbHZlZEluaXRpYWxQb3NpdGlv
bigpOworICAgIHVuc2lnbmVkIHRyYWNrUG9zaXRpb24gPSBzcGFuLnN0YXJ0TGluZSgpOwogICAg
IEdyaWRUcmFja1NpemUgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRyYWNr
UG9zaXRpb24pOwogCiAgICAgaWYgKHRyYWNrU2l6ZS5oYXNNaW5Db250ZW50TWluVHJhY2tCcmVh
ZHRoKCkpCkBAIC0xMTQyLDcgKzExNDIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmVuc3VyZUdyaWRT
aXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25lZCBtYXhpbXVtQ29sdW1uUwogdm9p
ZCBSZW5kZXJHcmlkOjppbnNlcnRJdGVtSW50b0dyaWQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3Qg
R3JpZEFyZWEmIGFyZWEpCiB7CiAgICAgQVNTRVJUKGFyZWEucm93cy5pc1RyYW5zbGF0ZWREZWZp
bml0ZSgpICYmIGFyZWEuY29sdW1ucy5pc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKLSAgICBlbnN1
cmVHcmlkU2l6ZShhcmVhLnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCksIGFyZWEuY29sdW1u
cy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSk7CisgICAgZW5zdXJlR3JpZFNpemUoYXJlYS5yb3dz
LmVuZExpbmUoKSwgYXJlYS5jb2x1bW5zLmVuZExpbmUoKSk7CiAKICAgICBmb3IgKGF1dG8gcm93
IDogYXJlYS5yb3dzKSB7CiAgICAgICAgIGZvciAoYXV0byBjb2x1bW4gOiBhcmVhLmNvbHVtbnMp
CkBAIC0xMjE0LDggKzEyMTQsOCBAQCB2b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRH
cmlkQW5kT3JkZXJJdGVyYXRvcigpCiAKICAgICAgICAgR3JpZFNwYW4gcm93UG9zaXRpb25zID0g
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpyZXNvbHZlR3JpZFBvc2l0aW9uc0Zyb21TdHlsZShzdHls
ZSgpLCAqY2hpbGQsIEZvclJvd3MpOwogICAgICAgICBpZiAoIXJvd1Bvc2l0aW9ucy5pc0luZGVm
aW5pdGUoKSkgewotICAgICAgICAgICAgbV9zbWFsbGVzdFJvd1N0YXJ0ID0gc3RkOjptaW4obV9z
bWFsbGVzdFJvd1N0YXJ0LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkUmVzb2x2ZWRJbml0aWFs
UG9zaXRpb24oKSk7Ci0gICAgICAgICAgICBtYXhpbXVtUm93SW5kZXggPSBzdGQ6Om1heDxpbnQ+
KG1heGltdW1Sb3dJbmRleCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZFJlc29sdmVkRmluYWxQ
b3NpdGlvbigpKTsKKyAgICAgICAgICAgIG1fc21hbGxlc3RSb3dTdGFydCA9IHN0ZDo6bWluKG1f
c21hbGxlc3RSb3dTdGFydCwgcm93UG9zaXRpb25zLnVudHJhbnNsYXRlZFN0YXJ0TGluZSgpKTsK
KyAgICAgICAgICAgIG1heGltdW1Sb3dJbmRleCA9IHN0ZDo6bWF4PGludD4obWF4aW11bVJvd0lu
ZGV4LCByb3dQb3NpdGlvbnMudW50cmFuc2xhdGVkRW5kTGluZSgpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEdyb3cgdGhlIGdyaWQgZm9yIGl0ZW1zIHdpdGggYSBkZWZpbml0
ZSByb3cgc3BhbiwgZ2V0dGluZyB0aGUgbGFyZ2VzdCBzdWNoIHNwYW4uCiAgICAgICAgICAgICB1
bnNpZ25lZCBzcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVGb3JBdXRv
UGxhY2VkSXRlbShzdHlsZSgpLCAqY2hpbGQsIEZvclJvd3MpOwpAQCAtMTIyNCw4ICsxMjI0LDgg
QEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3Io
KQogCiAgICAgICAgIEdyaWRTcGFuIGNvbHVtblBvc2l0aW9ucyA9IEdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6cmVzb2x2ZUdyaWRQb3NpdGlvbnNGcm9tU3R5bGUoc3R5bGUoKSwgKmNoaWxkLCBGb3JD
b2x1bW5zKTsKICAgICAgICAgaWYgKCFjb2x1bW5Qb3NpdGlvbnMuaXNJbmRlZmluaXRlKCkpIHsK
LSAgICAgICAgICAgIG1fc21hbGxlc3RDb2x1bW5TdGFydCA9IHN0ZDo6bWluKG1fc21hbGxlc3RD
b2x1bW5TdGFydCwgY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZFJlc29sdmVkSW5pdGlhbFBv
c2l0aW9uKCkpOwotICAgICAgICAgICAgbWF4aW11bUNvbHVtbkluZGV4ID0gc3RkOjptYXg8aW50
PihtYXhpbXVtQ29sdW1uSW5kZXgsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0ZWRSZXNvbHZl
ZEZpbmFsUG9zaXRpb24oKSk7CisgICAgICAgICAgICBtX3NtYWxsZXN0Q29sdW1uU3RhcnQgPSBz
dGQ6Om1pbihtX3NtYWxsZXN0Q29sdW1uU3RhcnQsIGNvbHVtblBvc2l0aW9ucy51bnRyYW5zbGF0
ZWRTdGFydExpbmUoKSk7CisgICAgICAgICAgICBtYXhpbXVtQ29sdW1uSW5kZXggPSBzdGQ6Om1h
eDxpbnQ+KG1heGltdW1Db2x1bW5JbmRleCwgY29sdW1uUG9zaXRpb25zLnVudHJhbnNsYXRlZEVu
ZExpbmUoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBHcm93IHRoZSBncmlk
IGZvciBpdGVtcyB3aXRoIGEgZGVmaW5pdGUgY29sdW1uIHNwYW4sIGdldHRpbmcgdGhlIGxhcmdl
c3Qgc3VjaCBzcGFuLgogICAgICAgICAgICAgdW5zaWduZWQgc3BhblNpemUgPSBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0ZW0oc3R5bGUoKSwgKmNoaWxkLCBG
b3JDb2x1bW5zKTsKQEAgLTEyNjQsOSArMTI2NCw5IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VT
cGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1
CiAgICAgICAgIEFTU0VSVChtYWpvckF4aXNQb3NpdGlvbnMuaXNUcmFuc2xhdGVkRGVmaW5pdGUo
KSk7CiAgICAgICAgIEFTU0VSVChjYWNoZWRHcmlkU3BhbigqYXV0b0dyaWRJdGVtLCBhdXRvUGxh
Y2VtZW50TWlub3JBeGlzRGlyZWN0aW9uKCkpLmlzSW5kZWZpbml0ZSgpKTsKICAgICAgICAgdW5z
aWduZWQgbWlub3JBeGlzU3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXpl
Rm9yQXV0b1BsYWNlZEl0ZW0oc3R5bGUoKSwgKmF1dG9HcmlkSXRlbSwgYXV0b1BsYWNlbWVudE1p
bm9yQXhpc0RpcmVjdGlvbigpKTsKLSAgICAgICAgdW5zaWduZWQgbWFqb3JBeGlzSW5pdGlhbFBv
c2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25zLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCk7Cisg
ICAgICAgIHVuc2lnbmVkIG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhpc1Bvc2l0
aW9ucy5zdGFydExpbmUoKTsKIAotICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlk
LCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5y
ZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpLCBpc0dyaWRBdXRvRmxvd0RlbnNlID8gMCA6IG1pbm9y
QXhpc0N1cnNvcnMuZ2V0KG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbikpOworICAgICAgICBHcmlk
SXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9u
KCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/
IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpvckF4aXNJbml0aWFsUG9zaXRpb24pKTsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3Iu
bmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9y
QXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0eUdyaWRBcmVhKQogICAgICAgICAgICAg
ZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091
dHNpZGVHcmlkKCphdXRvR3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24o
KSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHZvaWQgUmVuZGVy
R3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09uR3JpZChjb25zdCBWZWN0b3I8UmVu
ZGVyQm94Kj4mIGF1CiAgICAgICAgIGluc2VydEl0ZW1JbnRvR3JpZCgqYXV0b0dyaWRJdGVtLCAq
ZW1wdHlHcmlkQXJlYSk7CiAKICAgICAgICAgaWYgKCFpc0dyaWRBdXRvRmxvd0RlbnNlKQotICAg
ICAgICAgICAgbWlub3JBeGlzQ3Vyc29ycy5zZXQobWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uLCBp
c0ZvckNvbHVtbnMgPyBlbXB0eUdyaWRBcmVhLT5yb3dzLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9u
KCkgOiBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLnJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCkpOwor
ICAgICAgICAgICAgbWlub3JBeGlzQ3Vyc29ycy5zZXQobWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9u
LCBpc0ZvckNvbHVtbnMgPyBlbXB0eUdyaWRBcmVhLT5yb3dzLnN0YXJ0TGluZSgpIDogZW1wdHlH
cmlkQXJlYS0+Y29sdW1ucy5zdGFydExpbmUoKSk7CiAgICAgfQogfQogCkBAIC0xMzA3LDExICsx
MzA3LDExIEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChS
ZW5kZXJCb3gmIGdyaWRJdGVtLCBBdXRvUGxhY2VtZW50CiAgICAgR3JpZFNwYW4gbWlub3JBeGlz
UG9zaXRpb25zID0gY2FjaGVkR3JpZFNwYW4oZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNaW5vckF4
aXNEaXJlY3Rpb24oKSk7CiAgICAgaWYgKG1pbm9yQXhpc1Bvc2l0aW9ucy5pc1RyYW5zbGF0ZWRE
ZWZpbml0ZSgpKSB7CiAgICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgdHJhY2sgaW4gbWFqb3Ig
YXhpcyBpZiBpbml0aWFsIHBvc2l0aW9uIGluIG1pbm9yIGF4aXMgaXMgYmVmb3JlIGF1dG8tcGxh
Y2VtZW50IGN1cnNvci4KLSAgICAgICAgaWYgKG1pbm9yQXhpc1Bvc2l0aW9ucy5yZXNvbHZlZElu
aXRpYWxQb3NpdGlvbigpIDwgbWlub3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcikKKyAgICAgICAg
aWYgKG1pbm9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSA8IG1pbm9yQXhpc0F1dG9QbGFjZW1l
bnRDdXJzb3IpCiAgICAgICAgICAgICBtYWpvckF4aXNBdXRvUGxhY2VtZW50Q3Vyc29yKys7CiAK
ICAgICAgICAgaWYgKG1ham9yQXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPCBlbmRPZk1ham9yQXhp
cykgewotICAgICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgYXV0b1BsYWNl
bWVudE1pbm9yQXhpc0RpcmVjdGlvbigpLCBtaW5vckF4aXNQb3NpdGlvbnMucmVzb2x2ZWRJbml0
aWFsUG9zaXRpb24oKSwgbWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvcik7CisgICAgICAgICAg
ICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IobV9ncmlkLCBhdXRvUGxhY2VtZW50TWlub3JBeGlzRGly
ZWN0aW9uKCksIG1pbm9yQXhpc1Bvc2l0aW9ucy5zdGFydExpbmUoKSwgbWFqb3JBeGlzQXV0b1Bs
YWNlbWVudEN1cnNvcik7CiAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4
dEVtcHR5R3JpZEFyZWEobWlub3JBeGlzUG9zaXRpb25zLmludGVnZXJTcGFuKCksIG1ham9yQXhp
c1NwYW5TaXplKTsKICAgICAgICAgfQogCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCB2b2lkIFJlbmRl
ckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1PbkdyaWQoUmVuZGVyQm94JiBncmlkSXRlbSwg
QXV0b1BsYWNlbWVudAogCiAgICAgICAgICAgICBpZiAoZW1wdHlHcmlkQXJlYSkgewogICAgICAg
ICAgICAgICAgIC8vIENoZWNrIHRoYXQgaXQgZml0cyBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rp
b24sIGFzIHdlIHNob3VsZG4ndCBncm93IGluIHRoYXQgZGlyZWN0aW9uIGhlcmUgKGl0IHdhcyBh
bHJlYWR5IG1hbmFnZWQgaW4gcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKCkp
LgotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yQXhpc0ZpbmFsUG9zaXRpb25JbmRleCA9
IGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gZW1wdHlH
cmlkQXJlYS0+Y29sdW1ucy5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSA6IGVtcHR5R3JpZEFyZWEt
PnJvd3MucmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
bWlub3JBeGlzRmluYWxQb3NpdGlvbkluZGV4ID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVj
dGlvbigpID09IEZvckNvbHVtbnMgPyBlbXB0eUdyaWRBcmVhLT5jb2x1bW5zLmVuZExpbmUoKSA6
IGVtcHR5R3JpZEFyZWEtPnJvd3MuZW5kTGluZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGVuZE9mTWlub3JBeGlzID0gYXV0b1BsYWNlbWVudE1pbm9yQXhpc0RpcmVjdGlvbigp
ID09IEZvckNvbHVtbnMgPyBncmlkQ29sdW1uQ291bnQoKSA6IGdyaWRSb3dDb3VudCgpOwogICAg
ICAgICAgICAgICAgIGlmIChtaW5vckF4aXNGaW5hbFBvc2l0aW9uSW5kZXggPD0gZW5kT2ZNaW5v
ckF4aXMpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM0Niw4ICsxMzQ2LDggQEAg
dm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKFJlbmRlckJveCYg
Z3JpZEl0ZW0sIEF1dG9QbGFjZW1lbnQKIAogICAgIG1fZ3JpZEl0ZW1BcmVhLnNldCgmZ3JpZEl0
ZW0sICplbXB0eUdyaWRBcmVhKTsKICAgICBpbnNlcnRJdGVtSW50b0dyaWQoZ3JpZEl0ZW0sICpl
bXB0eUdyaWRBcmVhKTsKLSAgICBhdXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0ID0gZW1wdHlHcmlk
QXJlYS0+cm93cy5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpOwotICAgIGF1dG9QbGFjZW1lbnRD
dXJzb3Iuc2Vjb25kID0gZW1wdHlHcmlkQXJlYS0+Y29sdW1ucy5yZXNvbHZlZEluaXRpYWxQb3Np
dGlvbigpOworICAgIGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgPSBlbXB0eUdyaWRBcmVhLT5y
b3dzLnN0YXJ0TGluZSgpOworICAgIGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kID0gZW1wdHlH
cmlkQXJlYS0+Y29sdW1ucy5zdGFydExpbmUoKTsKIH0KIAogR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIFJlbmRlckdyaWQ6OmF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSBjb25zdApA
QCAtMTQ5NSw4ICsxNDk1LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpvZmZzZXRBbmRCcmVhZHRoRm9y
UG9zaXRpb25lZENoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWQKIAogICAgIC8vIEZv
ciBwb3NpdGlvbmVkIGl0ZW1zIHdlIGNhbm5vdCB1c2UgR3JpZFNwYW46OnRyYW5zbGF0ZSgpIGJl
Y2F1c2Ugd2UgY291bGQgZW5kIHVwIHdpdGggbmVnYXRpdmUgdmFsdWVzLCBhcyB0aGUgcG9zaXRp
b25lZCBpdGVtcyBkbyBub3QgY3JlYXRlIGltcGxpY2l0IHRyYWNrcyBwZXIgc3BlYy4KICAgICBp
bnQgc21hbGxlc3RTdGFydCA9IHN0ZDo6YWJzKGlzUm93QXhpcyA/IG1fc21hbGxlc3RDb2x1bW5T
dGFydCA6IG1fc21hbGxlc3RSb3dTdGFydCk7Ci0gICAgaW50IHJlc29sdmVkSW5pdGlhbFBvc2l0
aW9uID0gcG9zaXRpb25zLnVudHJhbnNsYXRlZFJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCkgKyBz
bWFsbGVzdFN0YXJ0OwotICAgIGludCByZXNvbHZlZEZpbmFsUG9zaXRpb24gPSBwb3NpdGlvbnMu
dW50cmFuc2xhdGVkUmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCkgKyBzbWFsbGVzdFN0YXJ0OworICAg
IGludCBzdGFydExpbmUgPSBwb3NpdGlvbnMudW50cmFuc2xhdGVkU3RhcnRMaW5lKCkgKyBzbWFs
bGVzdFN0YXJ0OworICAgIGludCBlbmRMaW5lID0gcG9zaXRpb25zLnVudHJhbnNsYXRlZEVuZExp
bmUoKSArIHNtYWxsZXN0U3RhcnQ7CiAKICAgICBHcmlkUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9
IGlzUm93QXhpcyA/IGNoaWxkLnN0eWxlKCkuZ3JpZEl0ZW1Db2x1bW5TdGFydCgpIDogY2hpbGQu
c3R5bGUoKS5ncmlkSXRlbVJvd1N0YXJ0KCk7CiAgICAgR3JpZFBvc2l0aW9uIGVuZFBvc2l0aW9u
ID0gaXNSb3dBeGlzID8gY2hpbGQuc3R5bGUoKS5ncmlkSXRlbUNvbHVtbkVuZCgpIDogY2hpbGQu
c3R5bGUoKS5ncmlkSXRlbVJvd0VuZCgpOwpAQCAtMTUwNSwxNSArMTUwNSwxNSBAQCB2b2lkIFJl
bmRlckdyaWQ6Om9mZnNldEFuZEJyZWFkdGhGb3JQb3NpdGlvbmVkQ2hpbGQoY29uc3QgUmVuZGVy
Qm94JiBjaGlsZCwgR3JpZAogCiAgICAgYm9vbCBzdGFydElzQXV0byA9IHN0YXJ0UG9zaXRpb24u
aXNBdXRvKCkKICAgICAgICAgfHwgKHN0YXJ0UG9zaXRpb24uaXNOYW1lZEdyaWRBcmVhKCkgJiYg
R3JpZFBvc2l0aW9uc1Jlc29sdmVyOjppc05vbkV4aXN0ZW50TmFtZWRMaW5lT3JBcmVhKHN0YXJ0
UG9zaXRpb24ubmFtZWRHcmlkTGluZSgpLCBzdHlsZSgpLCAoZGlyZWN0aW9uID09IEZvckNvbHVt
bnMpID8gQ29sdW1uU3RhcnRTaWRlIDogUm93U3RhcnRTaWRlKSkKLSAgICAgICAgfHwgKHJlc29s
dmVkSW5pdGlhbFBvc2l0aW9uIDwgZmlyc3RFeHBsaWNpdExpbmUpCi0gICAgICAgIHx8IChyZXNv
bHZlZEluaXRpYWxQb3NpdGlvbiA+IGxhc3RFeHBsaWNpdExpbmUpOworICAgICAgICB8fCAoc3Rh
cnRMaW5lIDwgZmlyc3RFeHBsaWNpdExpbmUpCisgICAgICAgIHx8IChzdGFydExpbmUgPiBsYXN0
RXhwbGljaXRMaW5lKTsKICAgICBib29sIGVuZElzQXV0byA9IGVuZFBvc2l0aW9uLmlzQXV0bygp
CiAgICAgICAgIHx8IChlbmRQb3NpdGlvbi5pc05hbWVkR3JpZEFyZWEoKSAmJiBHcmlkUG9zaXRp
b25zUmVzb2x2ZXI6OmlzTm9uRXhpc3RlbnROYW1lZExpbmVPckFyZWEoZW5kUG9zaXRpb24ubmFt
ZWRHcmlkTGluZSgpLCBzdHlsZSgpLCAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gQ29sdW1u
RW5kU2lkZSA6IFJvd0VuZFNpZGUpKQotICAgICAgICB8fCAocmVzb2x2ZWRGaW5hbFBvc2l0aW9u
IDwgZmlyc3RFeHBsaWNpdExpbmUpCi0gICAgICAgIHx8IChyZXNvbHZlZEZpbmFsUG9zaXRpb24g
PiBsYXN0RXhwbGljaXRMaW5lKTsKKyAgICAgICAgfHwgKGVuZExpbmUgPCBmaXJzdEV4cGxpY2l0
TGluZSkKKyAgICAgICAgfHwgKGVuZExpbmUgPiBsYXN0RXhwbGljaXRMaW5lKTsKIAotICAgIHVu
c2lnbmVkIGluaXRpYWxQb3NpdGlvbiA9IHN0YXJ0SXNBdXRvID8gMCA6IHJlc29sdmVkSW5pdGlh
bFBvc2l0aW9uOwotICAgIHVuc2lnbmVkIGZpbmFsUG9zaXRpb24gPSBlbmRJc0F1dG8gPyBsYXN0
RXhwbGljaXRMaW5lIDogcmVzb2x2ZWRGaW5hbFBvc2l0aW9uOworICAgIHVuc2lnbmVkIGluaXRp
YWxQb3NpdGlvbiA9IHN0YXJ0SXNBdXRvID8gMCA6IHN0YXJ0TGluZTsKKyAgICB1bnNpZ25lZCBm
aW5hbFBvc2l0aW9uID0gZW5kSXNBdXRvID8gbGFzdEV4cGxpY2l0TGluZSA6IGVuZExpbmU7CiAK
ICAgICBMYXlvdXRVbml0IHN0YXJ0ID0gc3RhcnRJc0F1dG8gPyBMYXlvdXRVbml0KCkgOiBpc1Jv
d0F4aXMgPyAgbV9jb2x1bW5Qb3NpdGlvbnNbaW5pdGlhbFBvc2l0aW9uXSA6IG1fcm93UG9zaXRp
b25zW2luaXRpYWxQb3NpdGlvbl07CiAgICAgTGF5b3V0VW5pdCBlbmQgPSBlbmRJc0F1dG8gPyAo
aXNSb3dBeGlzID8gbG9naWNhbFdpZHRoKCkgOiBsb2dpY2FsSGVpZ2h0KCkpIDogKGlzUm93QXhp
cyA/ICBtX2NvbHVtblBvc2l0aW9uc1tmaW5hbFBvc2l0aW9uXSA6IG1fcm93UG9zaXRpb25zW2Zp
bmFsUG9zaXRpb25dKTsKQEAgLTE1NzQsMTEgKzE1NzQsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJH
cmlkOjpncmlkQXJlYUJyZWFkdGhGb3JDaGlsZEluY2x1ZGluZ0FsaWdubWVudE9mZnNldHMoY29u
c3QgUmUKICAgICBjb25zdCBhdXRvJiBzcGFuID0gY2FjaGVkR3JpZFNwYW4oY2hpbGQsIGRpcmVj
dGlvbik7CiAgICAgY29uc3QgYXV0byYgbGluZVBvc2l0aW9ucyA9IChkaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucykgPyBtX2NvbHVtblBvc2l0aW9ucyA6IG1fcm93UG9zaXRpb25zOwogCi0gICAgTGF5
b3V0VW5pdCBpbml0aWFsVHJhY2tQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbnNbc3Bhbi5yZXNvbHZl
ZEluaXRpYWxQb3NpdGlvbigpXTsKLSAgICBMYXlvdXRVbml0IGZpbmFsVHJhY2tQb3NpdGlvbiA9
IGxpbmVQb3NpdGlvbnNbc3Bhbi5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKSAtIDFdOworICAgIExh
eW91dFVuaXQgaW5pdGlhbFRyYWNrUG9zaXRpb24gPSBsaW5lUG9zaXRpb25zW3NwYW4uc3RhcnRM
aW5lKCldOworICAgIExheW91dFVuaXQgZmluYWxUcmFja1Bvc2l0aW9uID0gbGluZVBvc2l0aW9u
c1tzcGFuLmVuZExpbmUoKSAtIDFdOwogCiAgICAgLy8gVHJhY2sgUG9zaXRpb25zIHZlY3RvciBz
dG9yZXMgdGhlICdzdGFydCcgZ3JpZCBsaW5lIG9mIGVhY2ggdHJhY2ssIHNvIHdlIGhhdmUgdG8g
YWRkIGxhc3QgdHJhY2sncyBiYXNlU2l6ZS4KLSAgICByZXR1cm4gZmluYWxUcmFja1Bvc2l0aW9u
IC0gaW5pdGlhbFRyYWNrUG9zaXRpb24gKyB0cmFja3Nbc3Bhbi5yZXNvbHZlZEZpbmFsUG9zaXRp
b24oKSAtIDFdLmJhc2VTaXplKCk7CisgICAgcmV0dXJuIGZpbmFsVHJhY2tQb3NpdGlvbiAtIGlu
aXRpYWxUcmFja1Bvc2l0aW9uICsgdHJhY2tzW3NwYW4uZW5kTGluZSgpIC0gMV0uYmFzZVNpemUo
KTsKIH0KIAogdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUdyaWRQb3NpdGlvbnMoR3JpZFNpemlu
Z0RhdGEmIHNpemluZ0RhdGEpCkBAIC0xODU3LDcgKzE4NTcsNyBAQCBzdGF0aWMgaW5saW5lIExh
eW91dFVuaXQgb2Zmc2V0QmV0d2VlblRyYWNrcyhDb250ZW50RGlzdHJpYnV0aW9uVHlwZSBkaXN0
cmlidXRpbwogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb2x1bW5BeGlzT2Zmc2V0Rm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29uc3QKIHsKICAgICBjb25zdCBHcmlkU3BhbiYgcm93
c1NwYW4gPSBjYWNoZWRHcmlkU3BhbihjaGlsZCwgRm9yUm93cyk7Ci0gICAgdW5zaWduZWQgY2hp
bGRTdGFydExpbmUgPSByb3dzU3Bhbi5yZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpOworICAgIHVu
c2lnbmVkIGNoaWxkU3RhcnRMaW5lID0gcm93c1NwYW4uc3RhcnRMaW5lKCk7CiAgICAgTGF5b3V0
VW5pdCBzdGFydE9mUm93ID0gbV9yb3dQb3NpdGlvbnNbY2hpbGRTdGFydExpbmVdOwogICAgIExh
eW91dFVuaXQgc3RhcnRQb3NpdGlvbiA9IHN0YXJ0T2ZSb3cgKyBtYXJnaW5CZWZvcmVGb3JDaGls
ZChjaGlsZCk7CiAgICAgaWYgKGhhc0F1dG9NYXJnaW5zSW5Db2x1bW5BeGlzKGNoaWxkKSkKQEAg
LTE4NjgsNyArMTg2OCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Y29sdW1uQXhpc09mZnNl
dEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgICAgIHJldHVybiBz
dGFydFBvc2l0aW9uOwogICAgIGNhc2UgR3JpZEF4aXNFbmQ6CiAgICAgY2FzZSBHcmlkQXhpc0Nl
bnRlcjogewotICAgICAgICB1bnNpZ25lZCBjaGlsZEVuZExpbmUgPSByb3dzU3Bhbi5yZXNvbHZl
ZEZpbmFsUG9zaXRpb24oKTsKKyAgICAgICAgdW5zaWduZWQgY2hpbGRFbmRMaW5lID0gcm93c1Nw
YW4uZW5kTGluZSgpOwogICAgICAgICBMYXlvdXRVbml0IGVuZE9mUm93ID0gbV9yb3dQb3NpdGlv
bnNbY2hpbGRFbmRMaW5lXTsKICAgICAgICAgLy8gbV9yb3dQb3NpdGlvbnMgaW5jbHVkZSBndXR0
ZXJzIHNvIHdlIG5lZWQgdG8gc3Vic3RyYWN0IHRoZW0gdG8gZ2V0IHRoZSBhY3R1YWwgZW5kIHBv
c2l0aW9uIGZvciBhIGdpdmVuCiAgICAgICAgIC8vIHJvdyAodGhpcyBkb2VzIG5vdCBoYXZlIHRv
IGJlIGRvbmUgZm9yIHRoZSBsYXN0IHRyYWNrIGFzIHRoZXJlIGFyZSBubyBtb3JlIG1fcm93UG9z
aXRpb25zIGFmdGVyIGl0KQpAQCAtMTg5MSw3ICsxODkxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJH
cmlkOjpjb2x1bW5BeGlzT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkgY29u
c3QKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6cm93QXhpc09mZnNldEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQpIGNvbnN0CiB7CiAgICAgY29uc3QgR3JpZFNwYW4mIGNvbHVtbnNTcGFu
ID0gY2FjaGVkR3JpZFNwYW4oY2hpbGQsIEZvckNvbHVtbnMpOwotICAgIHVuc2lnbmVkIGNoaWxk
U3RhcnRMaW5lID0gY29sdW1uc1NwYW4ucmVzb2x2ZWRJbml0aWFsUG9zaXRpb24oKTsKKyAgICB1
bnNpZ25lZCBjaGlsZFN0YXJ0TGluZSA9IGNvbHVtbnNTcGFuLnN0YXJ0TGluZSgpOwogICAgIExh
eW91dFVuaXQgc3RhcnRPZkNvbHVtbiA9IG1fY29sdW1uUG9zaXRpb25zW2NoaWxkU3RhcnRMaW5l
XTsKICAgICBMYXlvdXRVbml0IHN0YXJ0UG9zaXRpb24gPSBzdGFydE9mQ29sdW1uICsgbWFyZ2lu
U3RhcnRGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYgKGhhc0F1dG9NYXJnaW5zSW5Sb3dBeGlzKGNo
aWxkKSkKQEAgLTE5MDIsNyArMTkwMiw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6cm93QXhp
c09mZnNldEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBzdGFydFBvc2l0aW9uOwogICAgIGNhc2UgR3JpZEF4aXNFbmQ6CiAgICAgY2FzZSBHcmlk
QXhpc0NlbnRlcjogewotICAgICAgICB1bnNpZ25lZCBjaGlsZEVuZExpbmUgPSBjb2x1bW5zU3Bh
bi5yZXNvbHZlZEZpbmFsUG9zaXRpb24oKTsKKyAgICAgICAgdW5zaWduZWQgY2hpbGRFbmRMaW5l
ID0gY29sdW1uc1NwYW4uZW5kTGluZSgpOwogICAgICAgICBMYXlvdXRVbml0IGVuZE9mQ29sdW1u
ID0gbV9jb2x1bW5Qb3NpdGlvbnNbY2hpbGRFbmRMaW5lXTsKICAgICAgICAgLy8gbV9jb2x1bW5Q
b3NpdGlvbnMgaW5jbHVkZSBndXR0ZXJzIHNvIHdlIG5lZWQgdG8gc3Vic3RyYWN0IHRoZW0gdG8g
Z2V0IHRoZSBhY3R1YWwgZW5kIHBvc2l0aW9uIGZvciBhIGdpdmVuCiAgICAgICAgIC8vIGNvbHVt
biAodGhpcyBkb2VzIG5vdCBoYXZlIHRvIGJlIGRvbmUgZm9yIHRoZSBsYXN0IHRyYWNrIGFzIHRo
ZXJlIGFyZSBubyBtb3JlIG1fY29sdW1uUG9zaXRpb25zIGFmdGVyIGl0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCA4OTgwNjNlMjdlZTcxZDE5ZjMxY2Ri
MTVlMTJlNjhlNmM1YmFmNTMyLi5jMmVmMjUzZjM5MDllMmE0Yzg4ODA4NmU3OTExZjIxZGI1YWVl
MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApAQCAtNDMs
MjAgKzQzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFJlY29tbWVuZGVkIG1heGltdW0g
c2l6ZSBmb3IgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQgZ3JpZHMuCiBjb25zdCBpbnQga0dy
aWRNYXhUcmFja3MgPSAxMDAwMDAwOwogCi0vLyBBIHNwYW4gaW4gYSBzaW5nbGUgZGlyZWN0aW9u
IChlaXRoZXIgcm93cyBvciBjb2x1bW5zKS4gTm90ZSB0aGF0IHxyZXNvbHZlZEluaXRpYWxQb3Np
dGlvbnwKLS8vIGFuZCB8cmVzb2x2ZWRGaW5hbFBvc2l0aW9ufCBhcmUgZ3JpZCBsaW5lcycgaW5k
ZXhlcy4KLS8vIEl0ZXJhdGluZyBvdmVyIHRoZSBzcGFuIHNob3VsZG4ndCBpbmNsdWRlIHxyZXNv
bHZlZEZpbmFsUG9zaXRpb258IHRvIGJlIGNvcnJlY3QuCisvLyBBIHNwYW4gaW4gYSBzaW5nbGUg
ZGlyZWN0aW9uIChlaXRoZXIgcm93cyBvciBjb2x1bW5zKS4gTm90ZSB0aGF0IHxzdGFydExpbmV8
CisvLyBhbmQgfGVuZExpbmV8IGFyZSBncmlkIGxpbmVzJyBpbmRleGVzLgorLy8gRGVzcGl0ZSBs
aW5lIG51bWJlcnMgaW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0
YXJ0IGluICIwIi4KIGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBHcmlk
U3BhbiB1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCByZXNvbHZlZEluaXRpYWxQb3Np
dGlvbiwgaW50IHJlc29sdmVkRmluYWxQb3NpdGlvbikKKyAgICBzdGF0aWMgR3JpZFNwYW4gdW50
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBHcmlkU3BhbihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwgcmVz
b2x2ZWRGaW5hbFBvc2l0aW9uLCBVbnRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIHJldHVy
biBHcmlkU3BhbihzdGFydExpbmUsIGVuZExpbmUsIFVudHJhbnNsYXRlZERlZmluaXRlKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgR3JpZFNwYW4gdHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4odW5z
aWduZWQgcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHVuc2lnbmVkIHJlc29sdmVkRmluYWxQb3Np
dGlvbikKKyAgICBzdGF0aWMgR3JpZFNwYW4gdHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4odW5z
aWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IEdyaWRTcGFuKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFsUG9zaXRpb24s
IFRyYW5zbGF0ZWREZWZpbml0ZSk7CisgICAgICAgIHJldHVybiBHcmlkU3BhbihzdGFydExpbmUs
IGVuZExpbmUsIFRyYW5zbGF0ZWREZWZpbml0ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIEdyaWRT
cGFuIGluZGVmaW5pdGVHcmlkU3BhbigpCkBAIC02NiwzOSArNjYsMzkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRTcGFuJiBvKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvLm1fdHlwZSAmJiBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9u
ID09IG8ubV9yZXNvbHZlZEluaXRpYWxQb3NpdGlvbiAmJiBtX3Jlc29sdmVkRmluYWxQb3NpdGlv
biA9PSBvLm1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uOworICAgICAgICByZXR1cm4gbV90eXBlID09
IG8ubV90eXBlICYmIG1fc3RhcnRMaW5lID09IG8ubV9zdGFydExpbmUgJiYgbV9lbmRMaW5lID09
IG8ubV9lbmRMaW5lOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGludGVnZXJTcGFuKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsKLSAgICAgICAg
cmV0dXJuIG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uIC0gbV9yZXNvbHZlZEluaXRpYWxQb3NpdGlv
bjsKKyAgICAgICAgcmV0dXJuIG1fZW5kTGluZSAtIG1fc3RhcnRMaW5lOwogICAgIH0KIAotICAg
IGludCB1bnRyYW5zbGF0ZWRSZXNvbHZlZEluaXRpYWxQb3NpdGlvbigpIGNvbnN0CisgICAgaW50
IHVudHJhbnNsYXRlZFN0YXJ0TGluZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90
eXBlID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRJ
bml0aWFsUG9zaXRpb247CisgICAgICAgIHJldHVybiBtX3N0YXJ0TGluZTsKICAgICB9CiAKLSAg
ICBpbnQgdW50cmFuc2xhdGVkUmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCkgY29uc3QKKyAgICBpbnQg
dW50cmFuc2xhdGVkRW5kTGluZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVudHJhbnNsYXRlZERlZmluaXRlKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRGaW5h
bFBvc2l0aW9uOworICAgICAgICByZXR1cm4gbV9lbmRMaW5lOwogICAgIH0KIAotICAgIHVuc2ln
bmVkIHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uKCkgY29uc3QKKyAgICB1bnNpZ25lZCBzdGFydExp
bmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzVHJhbnNsYXRlZERlZmluaXRlKCkp
OwotICAgICAgICBBU1NFUlQobV9yZXNvbHZlZEZpbmFsUG9zaXRpb24gPj0gMCk7Ci0gICAgICAg
IHJldHVybiBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uOworICAgICAgICBBU1NFUlQobV9lbmRM
aW5lID49IDApOworICAgICAgICByZXR1cm4gbV9zdGFydExpbmU7CiAgICAgfQogCi0gICAgdW5z
aWduZWQgcmVzb2x2ZWRGaW5hbFBvc2l0aW9uKCkgY29uc3QKKyAgICB1bnNpZ25lZCBlbmRMaW5l
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0ZWREZWZpbml0ZSgpKTsK
LSAgICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID4gMCk7Ci0gICAgICAgIHJl
dHVybiBtX3Jlc29sdmVkRmluYWxQb3NpdGlvbjsKKyAgICAgICAgQVNTRVJUKG1fZW5kTGluZSA+
IDApOworICAgICAgICByZXR1cm4gbV9lbmRMaW5lOwogICAgIH0KIAogICAgIHN0cnVjdCBHcmlk
U3Bhbkl0ZXJhdG9yIHsKQEAgLTExNiwxMyArMTE2LDEzIEBAIHB1YmxpYzoKICAgICBHcmlkU3Bh
bkl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RyYW5zbGF0
ZWREZWZpbml0ZSgpKTsKLSAgICAgICAgcmV0dXJuIG1fcmVzb2x2ZWRJbml0aWFsUG9zaXRpb247
CisgICAgICAgIHJldHVybiBtX3N0YXJ0TGluZTsKICAgICB9CiAKICAgICBHcmlkU3Bhbkl0ZXJh
dG9yIGVuZCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNUcmFuc2xhdGVkRGVmaW5p
dGUoKSk7Ci0gICAgICAgIHJldHVybiBtX3Jlc29sdmVkRmluYWxQb3NpdGlvbjsKKyAgICAgICAg
cmV0dXJuIG1fZW5kTGluZTsKICAgICB9CiAKICAgICBib29sIGlzVHJhbnNsYXRlZERlZmluaXRl
KCkgY29uc3QKQEAgLTE0MCwzNCArMTQwLDM0IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBVbnRyYW5zbGF0ZWREZWZpbml0ZSk7CiAKICAgICAgICAgbV90eXBlID0gVHJhbnNs
YXRlZERlZmluaXRlOwotICAgICAgICBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uICs9IG9mZnNl
dDsKLSAgICAgICAgbV9yZXNvbHZlZEZpbmFsUG9zaXRpb24gKz0gb2Zmc2V0OworICAgICAgICBt
X3N0YXJ0TGluZSArPSBvZmZzZXQ7CisgICAgICAgIG1fZW5kTGluZSArPSBvZmZzZXQ7CiAKLSAg
ICAgICAgQVNTRVJUKG1fcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gPj0gMCk7Ci0gICAgICAgIEFT
U0VSVChtX3Jlc29sdmVkRmluYWxQb3NpdGlvbiA+IDApOworICAgICAgICBBU1NFUlQobV9zdGFy
dExpbmUgPj0gMCk7CisgICAgICAgIEFTU0VSVChtX2VuZExpbmUgPiAwKTsKICAgICB9CiAKIHBy
aXZhdGU6CiAKICAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRy
YW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZX07CiAKLSAgICBHcmlkU3BhbihpbnQgcmVzb2x2
ZWRJbml0aWFsUG9zaXRpb24sIGludCByZXNvbHZlZEZpbmFsUG9zaXRpb24sIEdyaWRTcGFuVHlw
ZSB0eXBlKQorICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCBHcmlkU3Bh
blR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICB7CiAjaWYgRU5BQkxFKEFT
U0VSVCkKLSAgICAgICAgQVNTRVJUKHJlc29sdmVkSW5pdGlhbFBvc2l0aW9uIDwgcmVzb2x2ZWRG
aW5hbFBvc2l0aW9uKTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0TGluZSA8IGVuZExpbmUpOwogICAg
ICAgICBpZiAodHlwZSA9PSBUcmFuc2xhdGVkRGVmaW5pdGUpIHsKLSAgICAgICAgICAgIEFTU0VS
VChyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiA+PSAwKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXNv
bHZlZEZpbmFsUG9zaXRpb24gPiAwKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGFydExpbmUgPj0g
MCk7CisgICAgICAgICAgICBBU1NFUlQoZW5kTGluZSA+IDApOwogICAgICAgICB9CiAjZW5kaWYK
IAotICAgICAgICBtX3Jlc29sdmVkSW5pdGlhbFBvc2l0aW9uID0gc3RkOjptYXgoLWtHcmlkTWF4
VHJhY2tzLCBzdGQ6Om1pbihyZXNvbHZlZEluaXRpYWxQb3NpdGlvbiwga0dyaWRNYXhUcmFja3Mg
LSAxKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRGaW5hbFBvc2l0aW9uID0gc3RkOjptYXgoLWtHcmlk
TWF4VHJhY2tzICsgMSwgc3RkOjptaW4ocmVzb2x2ZWRGaW5hbFBvc2l0aW9uLCBrR3JpZE1heFRy
YWNrcykpOworICAgICAgICBtX3N0YXJ0TGluZSA9IHN0ZDo6bWF4KC1rR3JpZE1heFRyYWNrcywg
c3RkOjptaW4oc3RhcnRMaW5lLCBrR3JpZE1heFRyYWNrcyAtIDEpKTsKKyAgICAgICAgbV9lbmRM
aW5lID0gc3RkOjptYXgoLWtHcmlkTWF4VHJhY2tzICsgMSwgc3RkOjptaW4oZW5kTGluZSwga0dy
aWRNYXhUcmFja3MpKTsKICAgICB9CiAKLSAgICBpbnQgbV9yZXNvbHZlZEluaXRpYWxQb3NpdGlv
bjsKLSAgICBpbnQgbV9yZXNvbHZlZEZpbmFsUG9zaXRpb247CisgICAgaW50IG1fc3RhcnRMaW5l
OworICAgIGludCBtX2VuZExpbmU7CiAgICAgR3JpZFNwYW5UeXBlIG1fdHlwZTsKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuY3BwCmluZGV4IDkwYzQ2ZWEyZjg5ZmM5NGFjZTk5NTQ3OGU4ODUyZDEwNTVmZTk5OGUu
Ljc2ZWFlZWNhOTQ4YzEwZDg4NzBjNGUxNjdkYTVlMWQwNmQ4NWVkOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIu
Y3BwCkBAIC0xNjksMjIgKzE2OSwyMiBAQCBzdGF0aWMgaW50IHJlc29sdmVOYW1lZEdyaWRMaW5l
UG9zaXRpb25Gcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZQogICAgIHJl
dHVybiBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUobGFzdExpbmUsIHN0ZDo6YWJzKHBvc2l0aW9u
LmludGVnZXJQb3NpdGlvbigpKSwgZ3JpZExpbmVzLCBsYXN0TGluZSk7CiB9CiAKLXN0YXRpYyBH
cmlkU3BhbiBkZWZpbml0ZUdyaWRTcGFuV2l0aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUo
aW50IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlv
biwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQ+KiBncmlkTGlu
ZXMsIHVuc2lnbmVkIGxhc3RMaW5lKQorc3RhdGljIEdyaWRTcGFuIGRlZmluaXRlR3JpZFNwYW5X
aXRoTmFtZWRMaW5lU3BhbkFnYWluc3RPcHBvc2l0ZShpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBH
cmlkUG9zaXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUsIGNvbnN0IFZlY3Rv
cjx1bnNpZ25lZD4qIGdyaWRMaW5lcywgdW5zaWduZWQgbGFzdExpbmUpCiB7CiAgICAgaW50IHN0
YXJ0LCBlbmQ7CiAKICAgICBpZiAoc2lkZSA9PSBSb3dTdGFydFNpZGUgfHwgc2lkZSA9PSBDb2x1
bW5TdGFydFNpZGUpIHsKLSAgICAgICAgc3RhcnQgPSBsb29rQmFja0Zvck5hbWVkR3JpZExpbmUo
cmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uIC0gMSwgcG9zaXRpb24uc3BhblBvc2l0aW9uKCksIGdy
aWRMaW5lcywgbGFzdExpbmUpOwotICAgICAgICBlbmQgPSByZXNvbHZlZE9wcG9zaXRlUG9zaXRp
b247CisgICAgICAgIHN0YXJ0ID0gbG9va0JhY2tGb3JOYW1lZEdyaWRMaW5lKG9wcG9zaXRlTGlu
ZSAtIDEsIHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpLCBncmlkTGluZXMsIGxhc3RMaW5lKTsKKyAg
ICAgICAgZW5kID0gb3Bwb3NpdGVMaW5lOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0YXJ0ID0g
cmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uOwotICAgICAgICBlbmQgPSBsb29rQWhlYWRGb3JOYW1l
ZEdyaWRMaW5lKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiArIDEsIHBvc2l0aW9uLnNwYW5Qb3Np
dGlvbigpLCBncmlkTGluZXMsIGxhc3RMaW5lKTsKKyAgICAgICAgc3RhcnQgPSBvcHBvc2l0ZUxp
bmU7CisgICAgICAgIGVuZCA9IGxvb2tBaGVhZEZvck5hbWVkR3JpZExpbmUob3Bwb3NpdGVMaW5l
ICsgMSwgcG9zaXRpb24uc3BhblBvc2l0aW9uKCksIGdyaWRMaW5lcywgbGFzdExpbmUpOwogICAg
IH0KIAogICAgIHJldHVybiBHcmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihz
dGFydCwgZW5kKTsKIH0KIAotc3RhdGljIEdyaWRTcGFuIHJlc29sdmVOYW1lZEdyaWRMaW5lUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3JpZENvbnRh
aW5lclN0eWxlLCBpbnQgcmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCBjb25zdCBHcmlkUG9zaXRp
b24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCitzdGF0aWMgR3JpZFNwYW4gcmVz
b2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlvbkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGNvbnN0IFJl
bmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUsIGludCBvcHBvc2l0ZUxpbmUsIGNvbnN0IEdy
aWRQb3NpdGlvbiYgcG9zaXRpb24sIEdyaWRQb3NpdGlvblNpZGUgc2lkZSkKIHsKICAgICBBU1NF
UlQocG9zaXRpb24uaXNTcGFuKCkpOwogICAgIEFTU0VSVCghcG9zaXRpb24ubmFtZWRHcmlkTGlu
ZSgpLmlzTnVsbCgpKTsKQEAgLTE5NiwxNSArMTk2LDE1IEBAIHN0YXRpYyBHcmlkU3BhbiByZXNv
bHZlTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVu
ZGVyCiAgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiogZ3JpZExpbmVzID0gaXRlcmF0b3IgPT0g
Z3JpZExpbmVzTmFtZXMuZW5kKCkgPyBudWxscHRyIDogJml0ZXJhdG9yLT52YWx1ZTsKICAgICB1
bnNpZ25lZCBsYXN0TGluZSA9IGV4cGxpY2l0R3JpZFNpemVGb3JTaWRlKGdyaWRDb250YWluZXJT
dHlsZSwgc2lkZSk7CiAKLSAgICByZXR1cm4gZGVmaW5pdGVHcmlkU3BhbldpdGhOYW1lZExpbmVT
cGFuQWdhaW5zdE9wcG9zaXRlKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgcG9zaXRpb24sIHNp
ZGUsIGdyaWRMaW5lcywgbGFzdExpbmUpOworICAgIHJldHVybiBkZWZpbml0ZUdyaWRTcGFuV2l0
aE5hbWVkTGluZVNwYW5BZ2FpbnN0T3Bwb3NpdGUob3Bwb3NpdGVMaW5lLCBwb3NpdGlvbiwgc2lk
ZSwgZ3JpZExpbmVzLCBsYXN0TGluZSk7CiB9CiAKLXN0YXRpYyBHcmlkU3BhbiByZXNvbHZlR3Jp
ZFBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRD
b250YWluZXJTdHlsZSwgaW50IHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiwgY29uc3QgR3JpZFBv
c2l0aW9uJiBwb3NpdGlvbiwgR3JpZFBvc2l0aW9uU2lkZSBzaWRlKQorc3RhdGljIEdyaWRTcGFu
IHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCBpbnQgb3Bwb3NpdGVMaW5lLCBjb25zdCBHcmlkUG9z
aXRpb24mIHBvc2l0aW9uLCBHcmlkUG9zaXRpb25TaWRlIHNpZGUpCiB7CiAgICAgaWYgKHBvc2l0
aW9uLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChpc1N0YXJ0U2lkZShzaWRlKSkKLSAgICAgICAg
ICAgIHJldHVybiBHcmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihyZXNvbHZl
ZE9wcG9zaXRlUG9zaXRpb24gLSAxLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24pOwotICAgICAg
ICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4ocmVzb2x2ZWRP
cHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24gKyAxKTsKKyAgICAgICAg
ICAgIHJldHVybiBHcmlkU3Bhbjo6dW50cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihvcHBvc2l0
ZUxpbmUgLSAxLCBvcHBvc2l0ZUxpbmUpOworICAgICAgICByZXR1cm4gR3JpZFNwYW46OnVudHJh
bnNsYXRlZERlZmluaXRlR3JpZFNwYW4ob3Bwb3NpdGVMaW5lLCBvcHBvc2l0ZUxpbmUgKyAxKTsK
ICAgICB9CiAKICAgICBBU1NFUlQocG9zaXRpb24uaXNTcGFuKCkpOwpAQCAtMjEyLDE2ICsyMTIs
MTYgQEAgc3RhdGljIEdyaWRTcGFuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQ
b3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgZ3IKIAogICAgIGlmICghcG9zaXRpb24ubmFtZWRH
cmlkTGluZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIHNwYW4gMiAnYycgLT4gd2UgbmVlZCB0
byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBncmlkIGxpbmUgYmVmb3JlIC8gYWZ0ZXIgb3VyIG9wcG9z
aXRlIHBvc2l0aW9uLgotICAgICAgICByZXR1cm4gcmVzb2x2ZU5hbWVkR3JpZExpbmVQb3NpdGlv
bkFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKGdyaWRDb250YWluZXJTdHlsZSwgcmVzb2x2ZWRPcHBv
c2l0ZVBvc2l0aW9uLCBwb3NpdGlvbiwgc2lkZSk7CisgICAgICAgIHJldHVybiByZXNvbHZlTmFt
ZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0
eWxlLCBvcHBvc2l0ZUxpbmUsIHBvc2l0aW9uLCBzaWRlKTsKICAgICB9CiAKICAgICAvLyAnc3Bh
biAxJyBpcyBjb250YWluZWQgaW5zaWRlIGEgc2luZ2xlIGdyaWQgdHJhY2sgcmVnYXJkbGVzcyBv
ZiB0aGUgZGlyZWN0aW9uLgogICAgIC8vIFRoYXQncyB3aHkgdGhlIENTUyBzcGFuIHZhbHVlIGlz
IG9uZSBtb3JlIHRoYW4gdGhlIG9mZnNldCB3ZSBhcHBseS4KICAgICB1bnNpZ25lZCBwb3NpdGlv
bk9mZnNldCA9IHBvc2l0aW9uLnNwYW5Qb3NpdGlvbigpOwogICAgIGlmIChpc1N0YXJ0U2lkZShz
aWRlKSkKLSAgICAgICAgcmV0dXJuIEdyaWRTcGFuOjp1bnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRT
cGFuKHJlc29sdmVkT3Bwb3NpdGVQb3NpdGlvbiAtIHBvc2l0aW9uT2Zmc2V0LCByZXNvbHZlZE9w
cG9zaXRlUG9zaXRpb24pOworICAgICAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERl
ZmluaXRlR3JpZFNwYW4ob3Bwb3NpdGVMaW5lIC0gcG9zaXRpb25PZmZzZXQsIG9wcG9zaXRlTGlu
ZSk7CiAKLSAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4o
cmVzb2x2ZWRPcHBvc2l0ZVBvc2l0aW9uLCByZXNvbHZlZE9wcG9zaXRlUG9zaXRpb24gKyBwb3Np
dGlvbk9mZnNldCk7CisgICAgcmV0dXJuIEdyaWRTcGFuOjp1bnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKG9wcG9zaXRlTGluZSwgb3Bwb3NpdGVMaW5lICsgcG9zaXRpb25PZmZzZXQpOwogfQog
CiB1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1BsYWNlZEl0
ZW0oY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgY29uc3QgUmVuZGVyQm94
JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTMwOCwy
NSArMzA4LDI1IEBAIEdyaWRTcGFuIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6cmVzb2x2ZUdyaWRQ
b3NpdGlvbnNGcm9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmCiAKICAgICBpZiAoaW5pdGlhbFBv
c2l0aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7CiAgICAg
ICAgIC8vIEluZmVyIHRoZSBwb3NpdGlvbiBmcm9tIHRoZSBmaW5hbCBwb3NpdGlvbiAoJ2F1dG8g
LyAxJyBvciAnc3BhbiAyIC8gMycgY2FzZSkuCi0gICAgICAgIGF1dG8gZmluYWxSZXNvbHZlZFBv
c2l0aW9uID0gcmVzb2x2ZUdyaWRQb3NpdGlvbkZyb21TdHlsZShncmlkQ29udGFpbmVyU3R5bGUs
IGZpbmFsUG9zaXRpb24sIGZpbmFsU2lkZSk7Ci0gICAgICAgIHJldHVybiByZXNvbHZlR3JpZFBv
c2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFJl
c29sdmVkUG9zaXRpb24sIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOworICAgICAgICBh
dXRvIGVuZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJT
dHlsZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKKyAgICAgICAgcmV0dXJuIHJlc29sdmVH
cmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVyU3R5bGUsIGVu
ZExpbmUsIGluaXRpYWxQb3NpdGlvbiwgaW5pdGlhbFNpZGUpOwogICAgIH0KIAogICAgIGlmIChm
aW5hbFBvc2l0aW9uLnNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpKSB7
CiAgICAgICAgIC8vIEluZmVyIG91ciBwb3NpdGlvbiBmcm9tIHRoZSBpbml0aWFsIHBvc2l0aW9u
ICgnMSAvIGF1dG8nIG9yICczIC8gc3BhbiAyJyBjYXNlKS4KLSAgICAgICAgYXV0byBpbml0aWFs
UmVzb2x2ZWRQb3NpdGlvbiA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUoZ3JpZENvbnRh
aW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKLSAgICAgICAgcmV0dXJu
IHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlkQ29udGFpbmVy
U3R5bGUsIGluaXRpYWxSZXNvbHZlZFBvc2l0aW9uLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUp
OworICAgICAgICBhdXRvIHN0YXJ0TGluZSA9IHJlc29sdmVHcmlkUG9zaXRpb25Gcm9tU3R5bGUo
Z3JpZENvbnRhaW5lclN0eWxlLCBpbml0aWFsUG9zaXRpb24sIGluaXRpYWxTaWRlKTsKKyAgICAg
ICAgcmV0dXJuIHJlc29sdmVHcmlkUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbihncmlk
Q29udGFpbmVyU3R5bGUsIHN0YXJ0TGluZSwgZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKICAg
ICB9CiAKLSAgICBpbnQgcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gPSByZXNvbHZlR3JpZFBvc2l0
aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFs
U2lkZSk7Ci0gICAgaW50IHJlc29sdmVkRmluYWxQb3NpdGlvbiA9IHJlc29sdmVHcmlkUG9zaXRp
b25Gcm9tU3R5bGUoZ3JpZENvbnRhaW5lclN0eWxlLCBmaW5hbFBvc2l0aW9uLCBmaW5hbFNpZGUp
OworICAgIGludCBzdGFydExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRD
b250YWluZXJTdHlsZSwgaW5pdGlhbFBvc2l0aW9uLCBpbml0aWFsU2lkZSk7CisgICAgaW50IGVu
ZExpbmUgPSByZXNvbHZlR3JpZFBvc2l0aW9uRnJvbVN0eWxlKGdyaWRDb250YWluZXJTdHlsZSwg
ZmluYWxQb3NpdGlvbiwgZmluYWxTaWRlKTsKIAotICAgIGlmIChyZXNvbHZlZEluaXRpYWxQb3Np
dGlvbiA+IHJlc29sdmVkRmluYWxQb3NpdGlvbikKLSAgICAgICAgc3RkOjpzd2FwKHJlc29sdmVk
SW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFsUG9zaXRpb24pOwotICAgIGVsc2UgaWYgKHJl
c29sdmVkSW5pdGlhbFBvc2l0aW9uID09IHJlc29sdmVkRmluYWxQb3NpdGlvbikKLSAgICAgICAg
cmVzb2x2ZWRGaW5hbFBvc2l0aW9uID0gcmVzb2x2ZWRJbml0aWFsUG9zaXRpb24gKyAxOworICAg
IGlmIChzdGFydExpbmUgPiBlbmRMaW5lKQorICAgICAgICBzdGQ6OnN3YXAoc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICBlbHNlIGlmIChzdGFydExpbmUgPT0gZW5kTGluZSkKKyAgICAgICAgZW5k
TGluZSA9IHN0YXJ0TGluZSArIDE7CiAKLSAgICByZXR1cm4gR3JpZFNwYW46OnVudHJhbnNsYXRl
ZERlZmluaXRlR3JpZFNwYW4ocmVzb2x2ZWRJbml0aWFsUG9zaXRpb24sIHN0ZDo6bWF4KHJlc29s
dmVkSW5pdGlhbFBvc2l0aW9uLCByZXNvbHZlZEZpbmFsUG9zaXRpb24pKTsKKyAgICByZXR1cm4g
R3JpZFNwYW46OnVudHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oc3RhcnRMaW5lLCBzdGQ6Om1h
eChzdGFydExpbmUsIGVuZExpbmUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>