<?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>157348</bug_id>
          
          <creation_ts>2016-05-04 10:46:32 -0700</creation_ts>
          <short_desc>Modern IDB: Move all IDB DOM object management from IDBConnectionToServer to IDBConnectionProxy</short_desc>
          <delta_ts>2016-05-05 15:14:00 -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>WebCore Misc.</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>149953</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1190125</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-04 10:46:32 -0700</bug_when>
    <thetext>Modern IDB: Move all IDB DOM objects from IDBConnectionToServer to IDBConnectionProxy

This is to prepare for making IDBConnectionToServer be main thread only while IDBConnectionProxy will be the threading bridge.

For now, everything is still main-thread only, but there are obvious thread checks and FIXMES in the connection proxy that point out where some thread hopping will take place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190131</commentid>
    <comment_count>1</comment_count>
      <attachid>278104</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-04 11:00:30 -0700</bug_when>
    <thetext>Created attachment 278104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190473</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-05 15:14:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/200485</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278104</attachid>
            <date>2016-05-04 11:00:30 -0700</date>
            <delta_ts>2016-05-04 11:09:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39252</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZWYxOGI5Li45MzM3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcg
QEAKKzIwMTYtMDUtMDQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vZGVybiBJREI6IE1vdmUgYWxsIElEQiBET00gb2JqZWN0IG1hbmFnZW1lbnQgZnJvbSBJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIgdG8gSURCQ29ubmVjdGlvblByb3h5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MzQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rv
ciwgbm8gY2hhbmdlIGluIGJlaGF2aW9yIHlldCkuCisKKyAgICAgICAgVGhpcyBpcyBpbi1wcm9n
cmVzcyBJREItaW4tV29ya2VycyBjb2RlIHRoYXQgaXMgaXNvbGF0ZWQgZW5vdWdoIHRvIGxhbmQg
cmlnaHQgbm93LgorICAgICAgICAKKyAgICAgICAgVGhlIGdvYWwgaXMgdG8gaGF2ZSBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIgYmUgYSBtYWluLXRocmVhZC1vbmx5IG9iamVjdCwgbGVhdmluZyBJREJD
b25uZWN0aW9uUHJveHkKKyAgICAgICAgYXMgdGhlIHRocmVhZGluZyBicmlkZ2UgYmV0d2VlbiB0
aGUgd29ya2VyIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAKKyAgICAgICAg
QXMgc3VjaCwgSURCQ29ubmVjdGlvblRvU2VydmVyIG5vIGxvbmdlciBtYWludGFpbnMgbWFwcyBv
ZiBJREIgRE9NIG9iamVjdHMsIGJ1dCBpbnN0ZWFkIHRoZSBwcm94eQorICAgICAgICBkb2VzIGFu
ZCBndWFyZHMgdGhhdCBhY2Nlc3Mgd2l0aCBsb2Nrcy4KKyAgICAgICAgCisgICAgICAgIE5vIHRo
cmVhZGluZyBjaGFuZ2VzIHRha2VzIHBsYWNlIGluIHRoaXMgcGF0Y2ggYnV0IGl0IGRvZXMgc2Nh
dHRlciBzb21lIGlzTWFpblRocmVhZCgpIGNoZWNrcyBhbmQgRklYTUVzIAorICAgICAgICBhY2N1
cmF0ZWx5IHJlcHJlc2VudGluZyB3aGVyZSB0aHJlYWRpbmcgY2hhbmdlcyB3aWxsIHRha2UgcGxh
Y2Ugb25jZSBJIGNhbiByZXR1cm4gdG8gdGhpcy4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZl
cik6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Om9wZW5EYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6
ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0
aW9uUHJveHk6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkRGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlbkRCUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZmlyZVZl
cnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eTo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2Nr
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmVz
dGFibGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5OjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6
OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHk6OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Omhhc1JlY29yZE9mVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmRpZEZpbmlzaEhh
bmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQ29ubmVjdGlvblByb3h5OjpkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5Ojp1bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5Lmg6CisgICAgICAgIAorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRl
bGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blRvU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFi
bGlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRBYm9ydFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRT
dGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9u
Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpyZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6dW5yZWdpc3RlckRhdGFiYXNl
Q29ubmVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6aGFzUmVjb3JkT2ZUcmFuc2FjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaDoK
KyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNl
SWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXI6
OklEQlJlc291cmNlSWRlbnRpZmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oOgorCiAyMDE2LTA1LTAzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBzb21lIHVubmVjZXNzYXJ5IGV4Y2Vw
dGlvbiBjaGVja2luZyBpbiB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMTJkMGM2MS4uYTdj
NDFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OklEQkNvbm5lY3RpCiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSAtIENyZWF0aW5nIGRhdGFi
YXNlICVzIHdpdGggdmVyc2lvbiAlIiBQUkl1NjQgIiBjb25uZWN0aW9uICUiIFBSSXU2NCwgbV9p
bmZvLm5hbWUoKS51dGY4KCkuZGF0YSgpLCBtX2luZm8udmVyc2lvbigpLCBtX2RhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJlbGF4QWRv
cHRpb25SZXF1aXJlbWVudCgpOwotICAgIG1fY29ubmVjdGlvblByb3h5LT5jb25uZWN0aW9uVG9T
ZXJ2ZXIoKS5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CisgICAgbV9jb25uZWN0
aW9uUHJveHktPnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAogSURCRGF0
YWJhc2U6On5JREJEYXRhYmFzZSgpCiB7Ci0gICAgbV9jb25uZWN0aW9uUHJveHktPmNvbm5lY3Rp
b25Ub1NlcnZlcigpLnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oKnRoaXMpOworICAgIG1f
Y29ubmVjdGlvblByb3h5LT51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsKIH0K
IAogYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKQEAgLTI0NSw3
ICsyNDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2Nsb3NlZEluU2VydmVyID0gdHJ1ZTsKLSAgICBtX2Nvbm5lY3Rp
b25Qcm94eS0+Y29ubmVjdGlvblRvU2VydmVyKCkuZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKCp0
aGlzKTsKKyAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKCp0
aGlzKTsKIH0KIAogY29uc3QgY2hhciogSURCRGF0YWJhc2U6OmFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmNwcAppbmRleCBhYjRjMjM5Li5jNzU1ZmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApAQCAt
MTA5LDcgKzEwOSw3IEBAIGJvb2wgSURCT3BlbkRCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVu
dCYgZXZlbnQpCiAgICAgYm9vbCByZXN1bHQgPSBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KGV2
ZW50KTsKIAogICAgIGlmIChtX3RyYW5zYWN0aW9uICYmIG1fdHJhbnNhY3Rpb24tPmlzVmVyc2lv
bkNoYW5nZSgpICYmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgfHwg
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQpKQotICAgICAgICBtX3Ry
YW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbigqbV90cmFuc2FjdGlvbik7CisgICAgICAgIG1fdHJh
bnNhY3Rpb24tPmRhdGFiYXNlKCkuY29ubmVjdGlvblByb3h5KCkuZGlkRmluaXNoSGFuZGxpbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oKm1fdHJhbnNhY3Rpb24pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAppbmRleCBmMjk1Yzc0Li40YjJjN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0yODIsNyAr
MjgyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVl
c3RzKElEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXQKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKIAotICAgIHNlcnZlckNvbm5lY3Rpb24oKS5h
Ym9ydFRyYW5zYWN0aW9uKCp0aGlzKTsKKyAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHko
KS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uT3Bl
cmF0aW9uTWFwLmNvbnRhaW5zKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICBtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uTWFwLnJlbW92ZShvcGVyYXRpb24uaWRlbnRpZmllcigpKTsKQEAgLTQw
NCw3ICs0MDQsOCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb21taXQoKQogdm9pZCBJREJUcmFu
c2FjdGlvbjo6Y29tbWl0T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYg
b3BlcmF0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6Y29tbWl0
T25TZXJ2ZXIiKTsKLSAgICBzZXJ2ZXJDb25uZWN0aW9uKCkuY29tbWl0VHJhbnNhY3Rpb24oKnRo
aXMpOworCisgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkuY29tbWl0VHJhbnNhY3Rp
b24oKnRoaXMpOwogCiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXAuY29udGFp
bnMob3BlcmF0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIG1fdHJhbnNhY3Rpb25PcGVyYXRpb25N
YXAucmVtb3ZlKG9wZXJhdGlvbi5pZGVudGlmaWVyKCkpOwpAQCAtOTY4LDcgKzk2OSw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyKCkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OmVzdGFibGlzaE9uU2VydmVyIik7CiAKLSAgICBzZXJ2ZXJD
b25uZWN0aW9uKCkuZXN0YWJsaXNoVHJhbnNhY3Rpb24oKnRoaXMpOworICAgIG1fZGF0YWJhc2Ut
PmNvbm5lY3Rpb25Qcm94eSgpLmVzdGFibGlzaFRyYW5zYWN0aW9uKCp0aGlzKTsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6YWN0aXZhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApp
bmRleCA5NTc0YjdmLi41ZGZjMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAt
MjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiSURCUmVxdWVzdERhdGEuaCIKKyNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjYsOSArNjks
MjEgQEAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkNvbm5lY3Rpb25Qcm94eTo6b3BlbkRh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gcmVxdWVzdCA9IElEQk9wZW5EQlJl
cXVlc3Q6OmNyZWF0ZU9wZW5SZXF1ZXN0KGNvbnRleHQsICp0aGlzLCBkYXRhYmFzZUlkZW50aWZp
ZXIsIHZlcnNpb24pOwotICAgIG1fY29ubmVjdGlvblRvU2VydmVyLm9wZW5EYXRhYmFzZShyZXF1
ZXN0LmdldCgpKTsKLSAgICByZXR1cm4gV1RGTW92ZShyZXF1ZXN0KTsKKyAgICBSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gcmVxdWVzdDsKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7CisKKyAgICAgICAgcmVxdWVzdCA9IElEQk9wZW5E
QlJlcXVlc3Q6OmNyZWF0ZU9wZW5SZXF1ZXN0KGNvbnRleHQsICp0aGlzLCBkYXRhYmFzZUlkZW50
aWZpZXIsIHZlcnNpb24pOworICAgICAgICBBU1NFUlQoIW1fb3BlbkRCUmVxdWVzdE1hcC5jb250
YWlucyhyZXF1ZXN0LT5yZXNvdXJjZUlkZW50aWZpZXIoKSkpOworICAgICAgICBtX29wZW5EQlJl
cXVlc3RNYXAuc2V0KHJlcXVlc3QtPnJlc291cmNlSWRlbnRpZmllcigpLCByZXF1ZXN0LmdldCgp
KTsKKyAgICB9CisKKyAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgqdGhpcywgKnJlcXVl
c3QpOworCisgICAgLy8gRklYTUU6IEZvciB3b3JrZXJzLCBtYXJzaGFsbCB0aGlzIHRvIHRoZSBt
YWluIHRocmVhZCBpZiBuZWNlc3NhcnkuCisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIub3BlbkRh
dGFiYXNlKHJlcXVlc3REYXRhKTsKKworICAgIHJldHVybiByZXF1ZXN0OwogfQogCiBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gSURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVEYXRhYmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGRhdGFiYXNlSWRlbnRpZmllcikKQEAgLTc3LDkgKzkyLDIwMSBAQCBSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gSURCQ29ubmVjdGlvblByb3h5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZQogICAgIGlmICghaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlRGVsZXRlUmVx
dWVzdChjb250ZXh0LCAqdGhpcywgZGF0YWJhc2VJZGVudGlmaWVyKTsKLSAgICBtX2Nvbm5lY3Rp
b25Ub1NlcnZlci5kZWxldGVEYXRhYmFzZShyZXF1ZXN0LmdldCgpKTsKLSAgICByZXR1cm4gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdDsKKyAg
ICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9vcGVuREJSZXF1ZXN0TWFwTG9jayk7
CisKKyAgICAgICAgcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZURlbGV0ZVJlcXVl
c3QoY29udGV4dCwgKnRoaXMsIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVCgh
bV9vcGVuREJSZXF1ZXN0TWFwLmNvbnRhaW5zKHJlcXVlc3QtPnJlc291cmNlSWRlbnRpZmllcigp
KSk7CisgICAgICAgIG1fb3BlbkRCUmVxdWVzdE1hcC5zZXQocmVxdWVzdC0+cmVzb3VyY2VJZGVu
dGlmaWVyKCksIHJlcXVlc3QuZ2V0KCkpOworICAgIH0KKworICAgIElEQlJlcXVlc3REYXRhIHJl
cXVlc3REYXRhKCp0aGlzLCAqcmVxdWVzdCk7CisKKyAgICAvLyBGSVhNRTogRm9yIHdvcmtlcnMs
IG1hcnNoYWxsIHRoaXMgdG8gdGhlIG1haW4gdGhyZWFkIGlmIG5lY2Vzc2FyeS4KKyAgICBtX2Nv
bm5lY3Rpb25Ub1NlcnZlci5kZWxldGVEYXRhYmFzZShyZXF1ZXN0RGF0YSk7CisKKyAgICByZXR1
cm4gcmVxdWVzdDsKK30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZE9wZW5EYXRhYmFz
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIGNvbXBsZXRlT3BlbkRC
UmVxdWVzdChyZXN1bHREYXRhKTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZERl
bGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgY29t
cGxldGVPcGVuREJSZXF1ZXN0KHJlc3VsdERhdGEpOworfQorCit2b2lkIElEQkNvbm5lY3Rpb25Q
cm94eTo6Y29tcGxldGVPcGVuREJSZXF1ZXN0KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiByZXF1ZXN0OworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlciht
X29wZW5EQlJlcXVlc3RNYXBMb2NrKTsKKyAgICAgICAgcmVxdWVzdCA9IG1fb3BlbkRCUmVxdWVz
dE1hcC5nZXQocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKTsKKyAgICAgICAgQVNTRVJU
KHJlcXVlc3QpOworICAgIH0KKworICAgIHJlcXVlc3QtPnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0
RGF0YSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNp
b24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJlZlB0cjxJREJEYXRh
YmFzZT4gZGF0YWJhc2U7CisgICAgeworICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0
YWJhc2VDb25uZWN0aW9uTWFwTG9jayk7CisgICAgICAgIGRhdGFiYXNlID0gbV9kYXRhYmFzZUNv
bm5lY3Rpb25NYXAuZ2V0KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIH0KKwor
ICAgIGlmICghZGF0YWJhc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGRhdGFiYXNlLT5maXJl
VmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsK
K30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikKK3sKKyAgICAvLyBGSVhNRTogSGFuZGxlIFdv
cmtlcnMKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci5kaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJDb25u
ZWN0aW9uUHJveHk6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2
NF90IG5ld1ZlcnNpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFJl
ZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0OworICAgIHsKKyAgICAgICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihtX29wZW5EQlJlcXVlc3RNYXBMb2NrKTsKKyAgICAgICAgcmVxdWVzdCA9IG1f
b3BlbkRCUmVxdWVzdE1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpOworICAgIH0KKworICAgIEFT
U0VSVChyZXF1ZXN0KTsKKworICAgIHJlcXVlc3QtPnJlcXVlc3RCbG9ja2VkKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pOworfQorCit2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6ZXN0YWJsaXNoVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIHsKKyAgICAgICAg
TG9ja2VyPExvY2s+IGxvY2tlcihtX3RyYW5zYWN0aW9uTWFwTG9jayk7CisgICAgICAgIEFTU0VS
VCghaGFzUmVjb3JkT2ZUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpOworICAgICAgICBtX3BlbmRp
bmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksICZ0cmFu
c2FjdGlvbik7CisgICAgfQorCisgICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCisgICAgaWYg
KCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXIuZXN0YWJsaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uZGF0YWJhc2UoKS5kYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyKCksIHRyYW5zYWN0aW9uLmluZm8oKSk7Cit9CisKK3ZvaWQg
SURCQ29ubmVjdGlvblByb3h5OjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3Ip
Cit7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbjsKKyAgICB7CisgICAg
ICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90cmFuc2FjdGlvbk1hcExvY2spOworICAgICAgICB0
cmFuc2FjdGlvbiA9IG1fcGVuZGluZ1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CisgICAgfQorCisgICAgQVNTRVJUKHRyYW5zYWN0aW9uKTsKKworICAgIC8vIEZJWE1F
OiBIYW5kbGUgaG9wcGluZyB0byB0aGUgV29ya2VyIHRocmVhZCBoZXJlIGlmIG5lY2Vzc2FyeS4K
KworICAgIHRyYW5zYWN0aW9uLT5kaWRTdGFydChlcnJvcik7Cit9CisKK3ZvaWQgSURCQ29ubmVj
dGlvblByb3h5Ojpjb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
Cit7CisgICAgeworICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25NYXBM
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX2NvbW1pdHRpbmdUcmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOworICAgICAgICBtX2NvbW1pdHRpbmdU
cmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksICZ0cmFuc2Fj
dGlvbik7CisgICAgfQorCisgICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCisgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXIuY29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7Cit9
CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJy
b3ImIGVycm9yKQoreworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb247Cisg
ICAgeworICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdHJhbnNhY3Rpb25NYXBMb2NrKTsK
KyAgICAgICAgdHJhbnNhY3Rpb24gPSBtX2NvbW1pdHRpbmdUcmFuc2FjdGlvbnMudGFrZSh0cmFu
c2FjdGlvbklkZW50aWZpZXIpOworICAgIH0KKworICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CisK
KyAgICAvLyBGSVhNRTogSGFuZGxlIGhvcHBpbmcgdG8gdGhlIFdvcmtlciB0aHJlYWQgaGVyZSBp
ZiBuZWNlc3NhcnkuCisKKyAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tbWl0KGVycm9yKTsKK30KKwor
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Ry
YW5zYWN0aW9uTWFwTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9hYm9ydGluZ1RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSk7CisgICAgICAgIG1f
YWJvcnRpbmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCks
ICZ0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCisg
ICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXIuYWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpKTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0
aW9uOworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3RyYW5zYWN0aW9uTWFw
TG9jayk7CisgICAgICAgIHRyYW5zYWN0aW9uID0gbV9hYm9ydGluZ1RyYW5zYWN0aW9ucy50YWtl
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAgfQorCisgICAgQVNTRVJUKHRyYW5zYWN0aW9u
KTsKKworICAgIC8vIEZJWE1FOiBIYW5kbGUgaG9wcGluZyB0byB0aGUgV29ya2VyIHRocmVhZCBo
ZXJlIGlmIG5lY2Vzc2FyeS4KKworICAgIHRyYW5zYWN0aW9uLT5kaWRBYm9ydChlcnJvcik7Cit9
CisKK2Jvb2wgSURCQ29ubmVjdGlvblByb3h5OjpoYXNSZWNvcmRPZlRyYW5zYWN0aW9uKGNvbnN0
IElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikgY29uc3QKK3sKKyAgICBBU1NFUlQobV90cmFu
c2FjdGlvbk1hcExvY2suaXNMb2NrZWQoKSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3BlbmRpbmdUcmFuc2Fj
dGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikgfHwgbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKGlkZW50aWZpZXIpIHx8IG1fYWJvcnRpbmdUcmFuc2FjdGlvbnMuY29udGFpbnMoaWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkaWRGaW5pc2hIYW5kbGlu
Z1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7
CisgICAgLy8gRklYTUU6IEhhbmRsZSBXb3JrZXJzCisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIuZGlkRmluaXNoSGFu
ZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQoSURCRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIC8vIEZJWE1FOiBIYW5kbGUgV29y
a2VycworICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZS5kYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94
eTo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3Jp
Z2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiBjYWxsYmFjaykKQEAgLTkwLDYgKzI5NywyMiBA
QCB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1
cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZwogICAgIG1fY29ubmVjdGlvblRvU2VydmVyLmdldEFs
bERhdGFiYXNlTmFtZXMobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFjayk7
CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpyZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlv
bihJREJEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2Rh
dGFiYXNlQ29ubmVjdGlvbk1hcExvY2spOworCisgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ29ubmVj
dGlvbk1hcC5jb250YWlucyhkYXRhYmFzZS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
KTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5zZXQoZGF0YWJhc2UuZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllcigpLCAmZGF0YWJhc2UpOworfQorCit2b2lkIElEQkNvbm5lY3Rpb25Q
cm94eTo6dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihJREJEYXRhYmFzZSYgZGF0YWJhc2Up
Cit7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2sp
OworCisgICAgQVNTRVJUKG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwLmNvbnRhaW5zKGRhdGFiYXNl
LmRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSkpOworICAgIEFTU0VSVChtX2RhdGFiYXNl
Q29ubmVjdGlvbk1hcC5nZXQoZGF0YWJhc2UuZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigp
KSA9PSAmZGF0YWJhc2UpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwLnJlbW92ZShkYXRh
YmFzZS5kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworfQogCiB9IC8vIG5hbWVzYXBj
ZSBJREJDbGllbnQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHku
aAppbmRleCBkMmNjZDBlZS4uOGJkOTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuaApAQCAt
MjgsMTUgKzI4LDIxIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRl
ICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJ
REJEYXRhYmFzZTsKIGNsYXNzIElEQkRhdGFiYXNlSWRlbnRpZmllcjsKK2NsYXNzIElEQkVycm9y
OwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdDsKK2NsYXNzIElEQlJlc3VsdERhdGE7CitjbGFzcyBJ
REJUcmFuc2FjdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIApAQCAtNDksNyArNTUsMjYgQEAgcHVibGljOgogICAgIElEQkNvbm5lY3Rp
b25Qcm94eShJREJDb25uZWN0aW9uVG9TZXJ2ZXImKTsKIAogICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IElEQkRh
dGFiYXNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHZlcnNpb24pOworICAgIHZvaWQgZGlkT3BlbkRh
dGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwogICAgIFJlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJS
ZXN1bHREYXRhJik7CisKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3Qg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CisgICAgdm9p
ZCBkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIp
OworCisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50
NjRfdCBuZXdWZXJzaW9uKTsKKworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb24mKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJik7
CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJik7CisKKyAgICB2b2lk
IGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJik7CisgICAgdm9pZCBkaWRDb21taXRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCRXJyb3ImKTsKKyAgICB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVy
cm9yJik7CisKKyAgICB2b2lkIGRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKElEQlRyYW5zYWN0aW9uJik7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQo
SURCRGF0YWJhc2UmKTsKIAogICAgIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCkBAIC02
Myw5ICs4OCwyNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4m
KT4pOwogCisgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihJREJEYXRhYmFzZSYp
OworICAgIHZvaWQgdW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbihJREJEYXRhYmFzZSYpOwor
CiBwcml2YXRlOgorICAgIHZvaWQgY29tcGxldGVPcGVuREJSZXF1ZXN0KGNvbnN0IElEQlJlc3Vs
dERhdGEmKTsKKyAgICBib29sIGhhc1JlY29yZE9mVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNh
Y3Rpb24mKSBjb25zdDsKKwogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgbV9jb25uZWN0aW9u
VG9TZXJ2ZXI7CiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIElEQkRhdGFiYXNlKj4gbV9kYXRhYmFzZUNvbm5lY3Rpb25N
YXA7CisgICAgTG9jayBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2s7CisKKyAgICBIYXNoTWFw
PElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+PiBtX29wZW5E
QlJlcXVlc3RNYXA7CisgICAgTG9jayBtX29wZW5EQlJlcXVlc3RNYXBMb2NrOworCisgICAgSGFz
aE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fcGVu
ZGluZ1RyYW5zYWN0aW9uczsKKyAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVm
UHRyPElEQlRyYW5zYWN0aW9uPj4gbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zOworICAgIEhhc2hN
YXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBtX2Fib3J0
aW5nVHJhbnNhY3Rpb25zOworICAgIExvY2sgbV90cmFuc2FjdGlvbk1hcExvY2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAK
aW5kZXggMGJkOTA2OC4uNzMxOWYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlRyYW5zYWN0aW9uT3BlcmF0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElE
QkNsaWVudCB7CkBAIC02Miw0NiArNjMsMjggQEAgSURCQ29ubmVjdGlvblByb3h5JiBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OnByb3h5KCkKICAgICByZXR1cm4gKm1fcHJveHk7CiB9CiAKLXZvaWQg
SURCQ29ubmVjdGlvblRvU2VydmVyOjpkZWxldGVEYXRhYmFzZShJREJPcGVuREJSZXF1ZXN0JiBy
ZXF1ZXN0KQordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlIC0gJXMiLCByZXF1ZXN0LmRhdGFiYXNlSWRl
bnRpZmllcigpLmRlYnVnU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBBU1NFUlQoIW1f
b3BlbkRCUmVxdWVzdE1hcC5jb250YWlucyhyZXF1ZXN0LnJlc291cmNlSWRlbnRpZmllcigpKSk7
Ci0gICAgbV9vcGVuREJSZXF1ZXN0TWFwLnNldChyZXF1ZXN0LnJlc291cmNlSWRlbnRpZmllcigp
LCAmcmVxdWVzdCk7Ci0KLSAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgqdGhpcywgcmVx
dWVzdCk7Ci0gICAgbV9kZWxlZ2F0ZS0+ZGVsZXRlRGF0YWJhc2UocmVxdWVzdERhdGEpOworICAg
IG1fZGVsZWdhdGUtPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3QpOwogfQogCiB2b2lkIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjpk
aWREZWxldGVEYXRhYmFzZSIpOwotCi0gICAgYXV0byByZXF1ZXN0ID0gbV9vcGVuREJSZXF1ZXN0
TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlQocmVx
dWVzdCk7Ci0KLSAgICByZXF1ZXN0LT5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworICAg
IG1fcHJveHktPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwogfQogCi12b2lkIElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3Qp
Cit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0KQogewotICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSAtICVzICglIiBQUkl1NjQgIikiLCByZXF1ZXN0LmRhdGFiYXNl
SWRlbnRpZmllcigpLmRlYnVnU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC52ZXJzaW9u
KCkpOwotCi0gICAgQVNTRVJUKCFtX29wZW5EQlJlcXVlc3RNYXAuY29udGFpbnMocmVxdWVzdC5y
ZXNvdXJjZUlkZW50aWZpZXIoKSkpOwotICAgIG1fb3BlbkRCUmVxdWVzdE1hcC5zZXQocmVxdWVz
dC5yZXNvdXJjZUlkZW50aWZpZXIoKSwgJnJlcXVlc3QpOwotICAgIAotICAgIElEQlJlcXVlc3RE
YXRhIHJlcXVlc3REYXRhKCp0aGlzLCByZXF1ZXN0KTsKLSAgICBtX2RlbGVnYXRlLT5vcGVuRGF0
YWJhc2UocmVxdWVzdERhdGEpOworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSAtICVzICglIiBQUkl1NjQgIikiLCByZXF1ZXN0LmRhdGFiYXNl
SWRlbnRpZmllcigpLmRlYnVnU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC5yZXF1ZXN0
ZWRWZXJzaW9uKCkpOworICAgIG1fZGVsZWdhdGUtPm9wZW5EYXRhYmFzZShyZXF1ZXN0KTsKIH0K
IAogdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSIpOwotCi0gICAgYXV0byByZXF1ZXN0ID0gbV9v
cGVuREJSZXF1ZXN0TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKTsKLSAg
ICBBU1NFUlQocmVxdWVzdCk7Ci0KLSAgICByZXF1ZXN0LT5yZXF1ZXN0Q29tcGxldGVkKHJlc3Vs
dERhdGEpOworICAgIG1fcHJveHktPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKIH0KIAog
dm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9u
T3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKQEAg
LTI2OSw3NyArMjUyLDY2IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRJdGVyYXRl
Q3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgY29tcGxldGVPcGVy
YXRpb24ocmVzdWx0RGF0YSk7CiB9CiAKLXZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3Rh
Ymxpc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit2b2lkIElEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEFTU0VSVCghaGFz
UmVjb3JkT2ZUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpOwotICAgIG1fcGVuZGluZ1RyYW5zYWN0
aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsK
LQotICAgIG1fZGVsZWdhdGUtPmVzdGFibGlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmRhdGFi
YXNlKCkuZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigpLCB0cmFuc2FjdGlvbi5pbmZvKCkp
OworICAgIG1fZGVsZWdhdGUtPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGluZm8pOwogfQogCi12b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29t
bWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQordm9pZCBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uIik7Ci0gICAgQVNTRVJUKCFtX2Nv
bW1pdHRpbmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKSkpOwotICAgIG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKTsKLSAgICBtX2RlbGVnYXRlLT5jb21taXRUcmFuc2FjdGlvbihpZGVudGlmaWVyKTsKKyAg
ICBtX2RlbGVnYXRlLT5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwog
fQogCiB2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QkVycm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpkaWRDb21taXRUcmFuc2FjdGlvbiIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLnRha2Uo
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwotCi0gICAg
dHJhbnNhY3Rpb24tPmRpZENvbW1pdChlcnJvcik7CisgICAgbV9wcm94eS0+ZGlkQ29tbWl0VHJh
bnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24iKTsKLSAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpOwotICAgIG1fZGVsZWdhdGUtPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uKGlkZW50aWZpZXIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBtX2RlbGVnYXRlLT5kaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCi12b2lkIElEQkNvbm5lY3Rpb25U
b1NlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit2
b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uIik7Ci0gICAgQVNT
RVJUKCFtX2Fib3J0aW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpKTsKLSAgICBtX2Fib3J0aW5nVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlv
bi5pbmZvKCkuaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24pOworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBhdXRvIGlkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpOwotICAgIG1fZGVsZWdhdGUtPmFib3J0VHJhbnNhY3Rpb24oaWRlbnRpZmllcik7
CisgICAgbV9kZWxlZ2F0ZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImIGVycm9yKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24iKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fYWJvcnRpbmdUcmFuc2FjdGlvbnMudGFrZSh0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7Ci0KLSAgICB0
cmFuc2FjdGlvbi0+ZGlkQWJvcnQoZXJyb3IpOworICAgIG1fcHJveHktPmRpZEFib3J0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKIHZvaWQgSURCQ29ubmVj
dGlvblRvU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCiB7CiAgICAgTE9HKEluZGV4ZWRE
QiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCIpOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBtX2RhdGFi
YXNlQ29ubmVjdGlvbk1hcC5nZXQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAg
aWYgKCFjb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25uZWN0aW9uLT5maXJl
VmVyc2lvbkNoYW5nZUV2ZW50KHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsK
KyAgICBtX3Byb3h5LT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKIH0KIAogdm9p
ZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVj
dGlvblRvU2VydmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50Iik7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIG1fZGVsZWdhdGUtPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIpOwogfQpA
QCAtMzQ3LDI4ICszMTksMjUgQEAgdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW8KIHZvaWQgSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkU3RhcnRUcmFu
c2FjdGlvbiIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIHRyYW5z
YWN0aW9uID0gbV9wZW5kaW5nVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwotCi0gICAgdHJhbnNhY3Rpb24tPmRpZFN0YXJ0
KGVycm9yKTsKKyAgICBtX3Byb3h5LT5kaWRTdGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgZXJyb3IpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6bm90aWZ5
T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0
SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbikKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRTdGFydFRyYW5z
YWN0aW9uIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gb3BlbkRC
UmVxdWVzdCA9IG1fb3BlbkRCUmVxdWVzdE1hcC5nZXQocmVxdWVzdElkZW50aWZpZXIpOwotICAg
IEFTU0VSVChvcGVuREJSZXF1ZXN0KTsKLQotICAgIG9wZW5EQlJlcXVlc3QtPnJlcXVlc3RCbG9j
a2VkKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOworICAgIG1fcHJveHktPm5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsK
IH0KIAotdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlvbkNsb3Nl
ZChJREJEYXRhYmFzZSYgZGF0YWJhc2UpCit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0
YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IG1fZGVsZWdhdGUtPmRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZChkYXRhYmFzZS5kYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyKCkpOworICAgIG1fZGVsZWdhdGUtPmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIH0KIAogdm9pZCBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIpCkBAIC0zNzgsMTkgKzM0Nyw2IEBAIHZvaWQgSURCQ29ubmVjdGlv
blRvU2VydmVyOjphYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29u
bmVjdGlvCiAgICAgbV9kZWxlZ2F0ZS0+YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogfQogCi12b2lk
IElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6cmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oSURCRGF0
YWJhc2UmIGRhdGFiYXNlKQotewotICAgIEFTU0VSVCghbV9kYXRhYmFzZUNvbm5lY3Rpb25NYXAu
Y29udGFpbnMoZGF0YWJhc2UuZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigpKSk7Ci0gICAg
bV9kYXRhYmFzZUNvbm5lY3Rpb25NYXAuc2V0KGRhdGFiYXNlLmRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIoKSwgJmRhdGFiYXNlKTsKLX0KLQotdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlKQotewot
ICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5jb250YWlucyhkYXRhYmFzZS5kYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUNvbm5l
Y3Rpb25NYXAuZ2V0KGRhdGFiYXNlLmRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSkgPT0g
JmRhdGFiYXNlKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcC5yZW1vdmUoZGF0YWJhc2Uu
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKLX0KLQogdm9pZCBJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OnNhdmVPcGVyYXRpb24oVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbikK
IHsKICAgICBBU1NFUlQoIW1fYWN0aXZlT3BlcmF0aW9ucy5jb250YWlucyhvcGVyYXRpb24uaWRl
bnRpZmllcigpKSk7CkBAIC00MDUsMTIgKzM2MSw2IEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2Vy
dmVyOjpjb21wbGV0ZU9wZXJhdGlvbihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ICAgIG9wZXJhdGlvbi0+Y29tcGxldGVkKHJlc3VsdERhdGEpOwogfQogCi1ib29sIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6aGFzUmVjb3JkT2ZUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pIGNvbnN0Ci17Ci0gICAgYXV0byBpZGVudGlmaWVyID0gdHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKTsKLSAgICByZXR1cm4gbV9wZW5kaW5nVHJhbnNhY3Rpb25z
LmNvbnRhaW5zKGlkZW50aWZpZXIpIHx8IG1fY29tbWl0dGluZ1RyYW5zYWN0aW9ucy5jb250YWlu
cyhpZGVudGlmaWVyKSB8fCBtX2Fib3J0aW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZp
ZXIpOwotfQotCiB2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyhjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luLCBjb25zdCBTZWN1cml0eU9y
aWdpbiYgb3BlbmluZ09yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpPiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDY0X3QgY2FsbGJhY2tJRCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggM2NjYjMyYy4uMWFiZDQ5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApAQCAtNDIsOSArNDIsNyBAQCBjbGFzcyBJREJD
dXJzb3JJbmZvOwogY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFzcyBJREJFcnJvcjsKIGNsYXNzIElE
Qk9iamVjdFN0b3JlSW5mbzsKLWNsYXNzIElEQk9wZW5EQlJlcXVlc3Q7CiBjbGFzcyBJREJSZXN1
bHREYXRhOwotY2xhc3MgSURCVHJhbnNhY3Rpb247CiBjbGFzcyBJREJWYWx1ZTsKIAogbmFtZXNw
YWNlIElEQkNsaWVudCB7CkBAIC01OSwxMCArNTcsMTAgQEAgcHVibGljOgogCiAgICAgSURCQ29u
bmVjdGlvblByb3h5JiBwcm94eSgpOwogCi0gICAgdm9pZCBkZWxldGVEYXRhYmFzZShJREJPcGVu
REJSZXF1ZXN0Jik7CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogCi0gICAgdm9pZCBvcGVuRGF0YWJhc2UoSURCT3BlbkRCUmVxdWVzdCYp
OworICAgIHZvaWQgb3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpOwog
CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYpOwpAQCAtOTgsMTIgKzk2LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIGl0ZXJhdGVDdXJzb3IoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlEYXRh
JiwgdW5zaWduZWQgbG9uZyBjb3VudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRJdGVy
YXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAotICAgIHZvaWQgY29tbWl0VHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpOwogCi0gICAg
dm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYpOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CiAKLSAgICB2b2lkIGFib3J0VHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkQWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVl
c3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKQEAgLTExMiwxNiArMTEw
LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKIAotICAgIHZvaWQg
ZXN0YWJsaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIGVzdGFibGlz
aFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCi0gICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9z
ZWQoSURCRGF0YWJhc2UmKTsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50
NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAogICAgIC8vIFRvIGJlIHVzZWQg
d2hlbiBhbiBJREJPcGVuREJSZXF1ZXN0IGdldHMgYSBuZXcgZGF0YWJhc2UgY29ubmVjdGlvbiwg
b3B0aW9uYWxseSB3aXRoIGEKICAgICAvLyB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uLCBidXQg
dGhlIHBhZ2UgaXMgYWxyZWFkeSB0b3JuIGRvd24uCiAgICAgdm9pZCBhYm9ydE9wZW5BbmRVcGdy
YWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICAKLSAgICB2
b2lkIHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKElEQkRhdGFiYXNlJik7Ci0gICAgdm9pZCB1
bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKElEQkRhdGFiYXNlJik7CiAKICAgICB2b2lkIGdl
dEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKT4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0
QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZGF0YWJhc2VOYW1lcyk7CkBAIC0xMzIsMTUgKzEyNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzYXZlT3BlcmF0aW9uKFRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CiAgICAgdm9pZCBjb21wbGV0
ZU9wZXJhdGlvbihjb25zdCBJREJSZXN1bHREYXRhJik7CiAKLSAgICBib29sIGhhc1JlY29yZE9m
VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb24mKSBjb25zdDsKLQogICAgIFJlZjxJREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKIAotICAgIEhhc2hNYXA8SURC
UmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4+IG1fb3BlbkRCUmVx
dWVzdE1hcDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBJREJEYXRhYmFzZSo+IG1fZGF0YWJhc2VD
b25uZWN0aW9uTWFwOwotICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+PiBtX3BlbmRpbmdUcmFuc2FjdGlvbnM7Ci0gICAgSGFzaE1hcDxJREJS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fY29tbWl0dGluZ1Ry
YW5zYWN0aW9uczsKLSAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPElE
QlRyYW5zYWN0aW9uPj4gbV9hYm9ydGluZ1RyYW5zYWN0aW9uczsKICAgICBIYXNoTWFwPElEQlJl
c291cmNlSWRlbnRpZmllciwgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV9hY3RpdmVP
cGVyYXRpb25zOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpPj4gbV9nZXRBbGxEYXRhYmFzZU5hbWVzQ2FsbGJhY2tzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
cXVlc3REYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXF1ZXN0RGF0YS5jcHAKaW5kZXggOWJjOTk1YS4uMzViYjQ1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuY3BwCkBAIC0zOCw5ICszOCw5IEBAIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YSgp
CiB7CiB9CiAKLUlEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbiwgY29uc3QgSURCT3BlbkRCUmVxdWVz
dCYgcmVxdWVzdCkKLSAgICA6IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlv
bi5pZGVudGlmaWVyKCkpCi0gICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKHN0ZDo6bWFrZV91bmlx
dWU8SURCUmVzb3VyY2VJZGVudGlmaWVyPihjb25uZWN0aW9uLCByZXF1ZXN0KSkKK0lEQlJlcXVl
c3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQorICAg
IDogbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uUHJveHkuc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSkKKyAgICAsIG1fcmVxdWVzdElkZW50aWZpZXIoc3RkOjptYWtl
X3VuaXF1ZTxJREJSZXNvdXJjZUlkZW50aWZpZXI+KGNvbm5lY3Rpb25Qcm94eSwgcmVxdWVzdCkp
CiAgICAgLCBtX2RhdGFiYXNlSWRlbnRpZmllcihyZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigp
KQogICAgICwgbV9yZXF1ZXN0ZWRWZXJzaW9uKHJlcXVlc3QudmVyc2lvbigpKQogICAgICwgbV9y
ZXF1ZXN0VHlwZShyZXF1ZXN0LnJlcXVlc3RUeXBlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCmluZGV4IDA2
ZDE1ZDMuLjNiY2RlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5oCkBAIC00MiwxMyArNDIsMTMgQEAgZW51
bSBjbGFzcyBJbmRleFJlY29yZFR5cGU7CiB9CiAKIG5hbWVzcGFjZSBJREJDbGllbnQgewotY2xh
c3MgSURCQ29ubmVjdGlvblRvU2VydmVyOworY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogY2xh
c3MgVHJhbnNhY3Rpb25PcGVyYXRpb247CiB9CiAKIGNsYXNzIElEQlJlcXVlc3REYXRhIHsKIHB1
YmxpYzoKLSAgICBJREJSZXF1ZXN0RGF0YShjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25U
b1NlcnZlciYsIGNvbnN0IElEQk9wZW5EQlJlcXVlc3QmKTsKKyAgICBJREJSZXF1ZXN0RGF0YShj
b25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IElEQk9wZW5EQlJlcXVl
c3QmKTsKICAgICBleHBsaWNpdCBJREJSZXF1ZXN0RGF0YShJREJDbGllbnQ6OlRyYW5zYWN0aW9u
T3BlcmF0aW9uJik7CiAgICAgSURCUmVxdWVzdERhdGEoY29uc3QgSURCUmVxdWVzdERhdGEmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc291cmNlSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcAppbmRleCA1ZjYyMjE2Li5mYjA4MjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzb3VyY2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcApAQCAtNzIsOCArNzIsOCBAQCBJ
REJSZXNvdXJjZUlkZW50aWZpZXI6OklEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJDbGll
bnQ6OklEQkNvbm5lY3Rpb25Ub1NlcgogewogfQogCi1JREJSZXNvdXJjZUlkZW50aWZpZXI6OklE
QlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZl
ciYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVxdWVzdCYgcmVxdWVzdCkKLSAgICA6IG1faWRiQ29u
bmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpCitJREJSZXNvdXJjZUlk
ZW50aWZpZXI6OklEQlJlc291cmNlSWRlbnRpZmllcihjb25zdCBJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5LCBjb25zdCBJREJSZXF1ZXN0JiByZXF1ZXN0KQor
ICAgIDogbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uUHJveHkuc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSkKICAgICAsIG1fcmVzb3VyY2VOdW1iZXIocmVxdWVzdC5yZXNv
dXJjZUlkZW50aWZpZXIoKS5tX3Jlc291cmNlTnVtYmVyKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNl
SWRlbnRpZmllci5oCmluZGV4IGJkMGM5NjMuLmI4MGQ1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJ
ZGVudGlmaWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SURCUmVxdWVzdDsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CitjbGFzcyBJREJDb25uZWN0aW9u
UHJveHk7CiBjbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CiB9CiAKQEAgLTQ0LDcgKzQ1LDcg
QEAgY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OwogY2xhc3MgSURCUmVzb3VyY2VJZGVudGlm
aWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3Qg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImKTsKLSAgICBJREJSZXNvdXJjZUlkZW50
aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBjb25zdCBJREJS
ZXF1ZXN0Jik7CisgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQkNsaWVudDo6SURC
Q29ubmVjdGlvblByb3h5JiwgY29uc3QgSURCUmVxdWVzdCYpOwogICAgIGV4cGxpY2l0IElEQlJl
c291cmNlSWRlbnRpZmllcihjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYp
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgY29uc3RydWN0b3Igd2lsbCBiZSBuZWVkZWQgZHVyaW5n
IHRoZSBkZXZlbG9wbWVudCBvZiBJREItaW4tV29ya2Vycy4K
</data>
<flag name="review"
          id="302227"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>