<?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>90242</bug_id>
          
          <creation_ts>2012-06-28 20:36:33 -0700</creation_ts>
          <short_desc>[V8] Replace v8::Integer::New() with v8Integer() in custom bindings</short_desc>
          <delta_ts>2012-06-29 02:50:51 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660099</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 20:36:33 -0700</bug_when>
    <thetext>v8Integer() is a fast wrapper of v8::Integer::New(). We can replace v8::Integer::New() with v8Integer() in custom bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660100</commentid>
    <comment_count>1</comment_count>
      <attachid>150074</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 20:38:38 -0700</bug_when>
    <thetext>Created attachment 150074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660255</commentid>
    <comment_count>2</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-29 00:56:59 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; v8Integer() is a fast wrapper of v8::Integer::New(). We can replace v8::Integer::New() with v8Integer() in custom bindings.

Can you post performance measurement results here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660326</commentid>
    <comment_count>3</comment_count>
      <attachid>150074</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 02:50:46 -0700</bug_when>
    <thetext>Comment on attachment 150074
Patch

Clearing flags on attachment: 150074

Committed r121541: &lt;http://trac.webkit.org/changeset/121541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660327</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 02:50:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150074</attachid>
            <date>2012-06-28 20:38:38 -0700</date>
            <delta_ts>2012-06-29 02:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90242-20120629123837.patch</filename>
            <type>text/plain</type>
            <size>22223</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVhMjUxZjQ0ZTUyMmY2
NTQ1Yjk4OGNmYzczMTMzYjgxYzIwNTM0Yi4uYzQ0YzE3ZjhjZWE5ZmY4YTYxMjdkNmE2MGI5OWMz
MWQ3MjU0NzFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTI4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
djg6OkludGVnZXI6Ok5ldygpIHdpdGggdjhJbnRlZ2VyKCkgaW4gY3VzdG9tIGJpbmRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDI0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHY4SW50ZWdlcigp
IGlzIGEgZmFzdCB3cmFwcGVyIG9mIHY4OjpJbnRlZ2VyOjpOZXcoKS4KKyAgICAgICAgVGhpcyBw
YXRjaCByZXBsYWNlcyB2ODo6SW50ZWdlcjo6TmV3KCkgd2l0aCB2OEludGVnZXIoKSBpbiBjdXN0
b20gYmluZGluZ3MsCisgICAgICAgIGFuZCBwYXNzIGlzb2xhdGVzLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5UXVlcnkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOENsaXBib2FyZDo6dHlwZXNBY2Nlc3NvckdldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5UXVlcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2luZG93U2V0VGltZW91dEltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6Omdl
dEludDhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpnZXRVaW50OENh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0
aW9uU3RhcnRBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxJbnB1dEVs
ZW1lbnQ6OnNlbGVjdGlvbkVuZEFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aEFjY2Vzc29yR2V0dGVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWls
c0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OnBvcnRzQWNjZXNz
b3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uQ2FsbGJh
Y2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxiYWNrOjpoYW5k
bGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVT
cWxDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlFbnVtZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6aW5kZXhlZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0eVF1ZXJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6aW5kZXhlZFByb3BlcnR5RGVsZXRlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25z
Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0VGltZW91dE9ySW50ZXJ2YWwpOgorCiAy
MDEyLTA2LTI4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
SW5kZXhlZERCOiBJbXBsZW1lbnQgSURCVHJhbnNhY3Rpb24gaW50ZXJuYWwgYWN0aXZlIGZsYWcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNjJmYzhlY2FkMTM5NTRhMzQy
Njc1YmIwOWJmZmY0YTQ3YmI0MWRiOC4uYWYyMzc1ZjdjNzYxODA3OGQwZmQ3ZTBkNjY0NjJiNzlj
YTQyZjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2ODo6SGFuZGxlPHY4OjpBcnJheT4gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1l
ZFByb3BlcnR5RW51bWVyYXRvcihjb25zdCB2ODo6QQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBwcm9wZXJ0eU5hbWVzTGVuZ3RoOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGtleSA9IHBy
b3BlcnR5TmFtZXMuYXQoaSk7CiAgICAgICAgIEFTU0VSVCgha2V5LmlzTnVsbCgpKTsKLSAgICAg
ICAgcHJvcGVydGllcy0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHY4U3RyaW5nKGtleSwgaW5m
by5HZXRJc29sYXRlKCkpKTsKKyAgICAgICAgcHJvcGVydGllcy0+U2V0KHY4SW50ZWdlcihpLCBp
bmZvLkdldElzb2xhdGUoKSksIHY4U3RyaW5nKGtleSwgaW5mby5HZXRJc29sYXRlKCkpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcHJvcGVydGllczsKQEAgLTE4NSw3ICsxODUsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpJbnRlZ2VyPiBWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlRdWVy
eSh2ODo6TG9jYWw8djg6OgogICAgIElOQ19TVEFUUygiRE9NLkNTU1N0eWxlRGVjbGFyYXRpb24u
TmFtZWRQcm9wZXJ0eVF1ZXJ5Iik7CiAKICAgICBpZiAoY3NzUHJvcGVydHlJbmZvKHY4TmFtZSkp
Ci0gICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHY4OjpOb25lKTsKKyAgICAgICAgcmV0
dXJuIHY4SW50ZWdlcigwLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6SW50ZWdlcj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDMwNjM0NTllNzE2YjJj
ODI5MGQ4ZjA0MmFlMDE0NjhmZGRhNGE4MGUuLjgwMDMwMTI4ZDRiZTNmMTUwMzkxYjdmNWJmMzVi
NGIzMDBlZGFlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnR5cGVzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbQogICAgIEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
dHlwZXMuZW5kKCk7CiAgICAgaW50IGluZGV4ID0gMDsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQsICsr
aW5kZXgpCi0gICAgICAgIHJlc3VsdC0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpLCB2OFN0
cmluZygqaXQsIGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIHJlc3VsdC0+U2V0KHY4SW50
ZWdlcihpbmRleCwgaW5mby5HZXRJc29sYXRlKCkpLCB2OFN0cmluZygqaXQsIGluZm8uR2V0SXNv
bGF0ZSgpKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmluZ01hcEN1c3RvbS5jcHAKaW5k
ZXggY2RiZjM4NTgxZGE0YTczZTZkODkxODNjNzg0ZjJlNGI3Y2I1MjBiOC4uNWQ0M2Q0MDcwZDRm
NDYwNzczODIxNjQ3MmM1ZDhlODhhZTM4MDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdNYXBDdXN0b20uY3BwCkBAIC00
Miw3ICs0Miw3IEBAIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IFY4RE9NU3RyaW5nTWFwOjpuYW1l
ZFByb3BlcnR5UXVlcnkodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uRE9NU3RyaW5nTWFwLk5hbWVkUHJvcGVydHlRdWVyeSIpOwogICAgIGlmIChWOERPTVN0cmlu
Z01hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmNvbnRhaW5zKHRvV2ViQ29yZVN0cmluZyhu
YW1lKSkpCi0gICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHY4OjpOb25lKTsKKyAgICAg
ICAgcmV0dXJuIHY4SW50ZWdlcih2ODo6Tm9uZSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPigpOwogfQogCkBAIC02Miw3ICs2Miw3IEBAIHY4
OjpIYW5kbGU8djg6OkFycmF5PiBWOERPTVN0cmluZ01hcDo6bmFtZWRQcm9wZXJ0eUVudW1lcmF0
b3IoY29uc3Qgdjg6OkFjY2Vzc29yCiAgICAgVjhET01TdHJpbmdNYXA6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpLT5nZXROYW1lcyhuYW1lcyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IHBy
b3BlcnRpZXMgPSB2ODo6QXJyYXk6Ok5ldyhuYW1lcy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHByb3BlcnRpZXMtPlNldCh2
ODo6SW50ZWdlcjo6TmV3KGkpLCB2OFN0cmluZyhuYW1lc1tpXSwgaW5mby5HZXRJc29sYXRlKCkp
KTsKKyAgICAgICAgcHJvcGVydGllcy0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUo
KSksIHY4U3RyaW5nKG5hbWVzW2ldLCBpbmZvLkdldElzb2xhdGUoKSkpOwogICAgIHJldHVybiBw
cm9wZXJ0aWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA2YjkyZDA4ZjQ4NThhZGQzN2Q3NWU2
MGIxNzQ0N2M5MDA5ZGIwOTJjLi5iMDk3ZGNiNTk1YjczNmNlNmQ1YjZlZGM2OWQwMTY0NzMzNWY2
NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9v
bCBzaW5nbAogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNh
bGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JJbnNwZWN0b3IoKSk7CiAgICAgICAgIGlm
IChpbXAtPmRvY3VtZW50KCkgJiYgIWltcC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmFsbG93RXZhbChjYWxsU3RhY2sucmVsZWFzZSgpKSkKLSAgICAgICAgICAgIHJldHVy
biB2ODo6SW50ZWdlcjo6TmV3KDApOworICAgICAgICAgICAgcmV0dXJuIHY4SW50ZWdlcigwLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0
Q29udGV4dCwgYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihWOFByb3h5Ojpjb250ZXh0KGlt
cC0+ZnJhbWUoKSksIGZ1bmN0aW9uU3RyaW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAg
IH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRU
aW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAgICAgICAg
IFY4R0NGb3JDb250ZXh0RGlzcG9zZTo6aW5zdGFuY2UoKS5ub3RpZnlJZGxlU29vbmVyKG1heGlt
dW1GaXJlSW50ZXJ2YWwpOwogICAgIH0KIAotICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KGlk
KTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGlkLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcAppbmRleCAzNDExMGEwYjYyNjA4NWY2NTk5MTIwZGEwYmY3Y2E3YzEwNGNkODhhLi5i
ZGRiYTlhYTA4YWU4MWI5MmIxNTU5MDEwM2YxNWY1NzE5MDJmYTQyIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpbnQ4X3QgcmVzdWx0ID0g
aW1wLT5nZXRJbnQ4KGJ5dGVPZmZzZXQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAg
ICAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUo
KSk7Ci0gICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcocmVzdWx0KTsKKyAgICByZXR1cm4gdjhJ
bnRlZ2VyKHJlc3VsdCwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEYXRhVmlldzo6Z2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQpAQCAtOTEsNyArOTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6
Z2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHVpbnQ4X3Qg
cmVzdWx0ID0gaW1wLT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZ
KGVjKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5H
ZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KHJlc3VsdCk7CisgICAg
cmV0dXJuIHY4SW50ZWdlcihyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3YTZmZmY0N2Yw
NjcwNjhkMjNiZmQ4ZjI4Y2I4NGE5M2Q3ODRhODI4Li4wM2VhZDY1ODQ4NzEyMTlhNjgzMDhkNWJk
ZDNmNjA2ZjdlNTQzM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsNyAr
NDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rp
b25TdGFydEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbAogICAgICAgICByZXR1cm4gVjhQcm94eTo6
dGhyb3dUeXBlRXJyb3IoIkFjY2Vzc2luZyBzZWxlY3Rpb25TdGFydCBvbiBhbiBpbnB1dCBlbGVt
ZW50IHRoYXQgY2Fubm90IGhhdmUgYSBzZWxlY3Rpb24uIiwgaW5mby5HZXRJc29sYXRlKCkpOwog
CiAgICAgaW50IHYgPSBpbXAtPnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgcmV0dXJuIHY4OjpJbnRl
Z2VyOjpOZXcodik7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7
CiB9CiAKIHZvaWQgVjhIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydEFjY2Vzc29yU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTc0LDcgKzc0LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHYKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93VHlwZUVycm9y
KCJBY2Nlc3Npbmcgc2VsZWN0aW9uRW5kIG9uIGFuIGlucHV0IGVsZW1lbnQgdGhhdCBjYW5ub3Qg
aGF2ZSBhIHNlbGVjdGlvbi4iLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICBpbnQgdiA9IGlt
cC0+c2VsZWN0aW9uRW5kKCk7Ci0gICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcodik7CisgICAg
cmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHZvaWQgVjhIVE1M
SW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmRBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA0
NDE4N2M5NzlmZTBlMDJhOTA2Y2E5NTNhZTQ3ZDBhMmUwZmU1NDc2Li42MWVmYTQ0ZjJlNWUwMzgy
MzFjYTVlYjdmNThmZTQ0ZGRmNmQ0YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1
c3RvbS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpsZW5ndGhBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djgKICAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MT3B0aW9uc0NvbGxlY3Rpb24ubGVuZ3RoLl9nZXQiKTsKICAgICBI
VE1MT3B0aW9uc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IGltcC0+bGVuZ3RoKCk7Ci0gICAgcmV0
dXJuIHY4OjpJbnRlZ2VyOjpOZXcodik7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHZvaWQgVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aEFj
Y2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IDlhNDJkZWU5MDdhM2UwMmJmMDY2YmZhYTRkZDkyYmY3MjVj
MDc1NzUuLjY3ZThkMmQ1NzM0ZjI4MTIwMWI3OGMxYTM2MGQxODBjNTNhYzU5YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtMTY4LDggKzE2OCw4IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyCiAgICAgaW50IGNvbHVtbk51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRD
b2x1bW5OdW1iZXIoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsb2NhdGlvbiA9IHY4
OjpPYmplY3Q6Ok5ldygpOwotICAgIGxvY2F0aW9uLT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5l
TnVtYmVyIiksIHY4OjpJbnRlZ2VyOjpOZXcobGluZU51bWJlcikpOwotICAgIGxvY2F0aW9uLT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhjb2x1
bW5OdW1iZXIpKTsKKyAgICBsb2NhdGlvbi0+U2V0KHY4OjpTdHJpbmc6Ok5ldygibGluZU51bWJl
ciIpLCB2OEludGVnZXIobGluZU51bWJlciwgYXJncy5HZXRJc29sYXRlKCkpKTsKKyAgICBsb2Nh
dGlvbi0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1uTnVtYmVyIiksIHY4SW50ZWdlcihjb2x1
bW5OdW1iZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgbG9jYXRpb24tPlNldCh2ODo6U3Ry
aW5nOjpOZXcoInNjcmlwdElkIiksIGZ1bmN0aW9uLT5HZXRTY3JpcHRJZCgpLT5Ub1N0cmluZygp
KTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiByZXN1bHQgPSB2ODo6T2JqZWN0OjpOZXco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDc3YmEzZjI2NmJhZGM3M2I1MmZhMGY4OTRiODcw
MWRkZjhlZDM0OTAuLjNkOGU4ZTE4ZTg1Yjk2MzY5YmE3NDQzNDQ4MTQ0NzFjMzM2YjE5ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4KIAogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6
TmV3KHBvcnRzQ29weS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHND
b3B5LnNpemUoKTsgKytpKQotICAgICAgICBwb3J0QXJyYXktPlNldCh2ODo6SW50ZWdlcjo6TmV3
KGkpLCB0b1Y4KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICAg
ICAgcG9ydEFycmF5LT5TZXQodjhJbnRlZ2VyKGksIGluZm8uR2V0SXNvbGF0ZSgpKSwgdG9WOChw
b3J0c0NvcHlbaV0uZ2V0KCksIGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAKICAgICByZXR1cm4gcG9y
dEFycmF5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TXV0YXRpb25DYWxsYmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcAppbmRleCBiZmZiZTc0MDBmZGEy
Y2E1OGQyZjliNzcwODZmNmM2YmJmYTA1MjdmLi5kMjcxYzU0YzkyMDI0YTI5MmYwZmM0ZjYyOTEy
NjFkYjJiOGM0ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBib29sIFY4TXV0YXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRB
cnJheSogbXV0YXRpb25zLCBXZWJLaXRNdXRhdAogCiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
bXV0YXRpb25zQXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhtdXRhdGlvbnMtPnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNpemUoKTsgKytpKQotICAgICAgICBt
dXRhdGlvbnNBcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHRvVjgobXV0YXRpb25zLT5h
dChpKS5nZXQoKSkpOworICAgICAgICBtdXRhdGlvbnNBcnJheS0+U2V0KHY4SW50ZWdlcihpKSwg
dG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gb2JzZXJ2ZXJIYW5kbGUgPSB0b1Y4KG9ic2VydmVyKTsKICAgICBpZiAob2JzZXJ2ZXJIYW5k
bGUuSXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggNjU2YjlkNTEwNWQyMjRmMjAzMmRkMjQy
MzRiMWEzYmI5NTczOWYwZi4uZWVkMGE0M2VkZDUxNGVlMDQxZTJjZDFjNTg2ZDIxYjU3NzRmMDAz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxp
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
ZGVMaXN0Q3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZQogICAgIC8vIExlbmd0aCBwcm9wZXJ0eSBjYW5ub3QgYmUgb3ZlcnJpZGRlbi4KICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbGVuZ3RoLCAoImxlbmd0aCIpKTsK
ICAgICBpZiAoa2V5ID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXco
bGlzdC0+bGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gdjhJbnRlZ2VyKGxpc3QtPmxlbmd0aCgp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gbGlzdC0+
aXRlbVdpdGhOYW1lKGtleSk7CiAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHAKaW5kZXggNzFjNGYzYmQzNGJhNmZhMmUyMzFiZDVlMjBhZmFmMTllN2NhMjc2YS4uZTc5Zjkz
N2Q2YjNhZTM0MjM1MjE2Y2E1MDM0NmI0ZTk2ZjEwMmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9t
LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2Fj
dGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgICAg
ICBzcWxBcmdzTGVuZ3RoID0gbGVuZ3RoLT5VaW50MzJWYWx1ZSgpOwogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc3FsQXJnc0xlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGtleSA9IHY4OjpJbnRlZ2VyOjpOZXcoaSk7CisgICAg
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPiBrZXkgPSB2OEludGVnZXIoaSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2ODo6
VmFsdWU+LCB2YWx1ZSwgc3FsQXJnc09iamVjdC0+R2V0KGtleSkpOwogCiAgICAgICAgICAgICBp
ZiAodmFsdWUuSXNFbXB0eSgpIHx8IHZhbHVlLT5Jc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5
bmNDdXN0b20uY3BwCmluZGV4IDcwN2IwZDhiNmJmMTM5ZjgzN2ExMGEzMDgwYzI3MWQ0MmUzN2Fj
YjguLjYyMjkzN2Q2YWY1NWU1MWVhMDE2NGMwZDMzNjA0OTFmMGNhYTlhMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25TeW5jQ3VzdG9tLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbgogICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IGxlbmd0aC0+VWludDMyVmFsdWUo
KTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNxbEFyZ3NMZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpJbnRlZ2VyPiBrZXkgPSB2ODo6SW50
ZWdlcjo6TmV3KGkpOworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4ga2V5ID0g
djhJbnRlZ2VyKGksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgdmFsdWUsIHNxbEFyZ3NPYmplY3QtPkdldChrZXkp
KTsKIAogICAgICAgICAgICAgaWYgKHZhbHVlLklzRW1wdHkoKSB8fCB2YWx1ZS0+SXNOdWxsKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VD
dXN0b20uY3BwCmluZGV4IDFiZGFkYjVkOWU1MWMwNzUxZTlmNjRlZjNkNGUyODdkNGJiMmI3N2Uu
Ljg5Mzk2YTMwY2YxOWVlNzYyOGMxNTZhNmFkMDBlODZmMzMwNmQyMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OkFycmF5PiBWOFN0b3JhZ2U6Om5hbWVkUHJv
cGVydHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mCiAgICAgICAgIFN0cmluZyBr
ZXkgPSBzdG9yYWdlLT5rZXkoaSk7CiAgICAgICAgIEFTU0VSVCgha2V5LmlzTnVsbCgpKTsKICAg
ICAgICAgU3RyaW5nIHZhbCA9IHN0b3JhZ2UtPmdldEl0ZW0oa2V5KTsKLSAgICAgICAgcHJvcGVy
dGllcy0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaSksIHY4U3RyaW5nKGtleSwgaW5mby5HZXRJc29s
YXRlKCkpKTsKKyAgICAgICAgcHJvcGVydGllcy0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElz
b2xhdGUoKSksIHY4U3RyaW5nKGtleSwgaW5mby5HZXRJc29sYXRlKCkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcHJvcGVydGllczsKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdG9yYWdlR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIGNv
bnN0IHYKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6OmluZGV4ZWRQcm9wZXJ0eUdl
dHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5TdG9yYWdlLkluZGV4ZWRQcm9wZXJ0eUdldHRlciIpOwotICAgIHY4
OjpMb2NhbDx2ODo6SW50ZWdlcj4gaW5kZXhWOCA9IHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpOwor
ICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGluZGV4VjggPSB2OEludGVnZXIoaW5kZXgsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gc3RvcmFnZUdldHRlcihpbmRleFY4LT5Ub1N0
cmluZygpLCBpbmZvKTsKIH0KIApAQCAtODcsNyArODcsNyBAQCB2ODo6SGFuZGxlPHY4OjpJbnRl
Z2VyPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlRdWVyeSh2ODo6TG9jYWw8djg6OlN0cmluZz4g
djhOYQogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nKHY4TmFtZSk7CiAKICAgICBp
ZiAobmFtZSAhPSAibGVuZ3RoIiAmJiBzdG9yYWdlLT5jb250YWlucyhuYW1lKSkKLSAgICAgICAg
cmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcodjg6Ok5vbmUpOworICAgICAgICByZXR1cm4gdjhJbnRl
Z2VyKDAsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpJ
bnRlZ2VyPigpOwogfQpAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RvcmFnZVNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gdjhOYW1lLCB2ODo6TG9j
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlTZXR0ZXIo
dWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2UuTmFtZWRQcm9w
ZXJ0eUdldHRlciIpOwotICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4gaW5kZXhWOCA9IHY4OjpJ
bnRlZ2VyOjpOZXcoaW5kZXgpOworICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGluZGV4Vjgg
PSB2OEludGVnZXIoaW5kZXgsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICByZXR1cm4gc3RvcmFn
ZVNldHRlcihpbmRleFY4LT5Ub1N0cmluZygpLCB2YWx1ZSwgaW5mbyk7CiB9CiAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gc3RvcmFnZURlbGV0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgY29ucwogdjg6OkhhbmRsZTx2ODo6Qm9vbGVh
bj4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlEZWxldGVyKHVpbnQzMl90IGluZGV4LCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlN0b3JhZ2Uu
SW5kZXhlZFByb3BlcnR5RGVsZXRlciIpOwotICAgIHY4OjpMb2NhbDx2ODo6SW50ZWdlcj4gaW5k
ZXhWOCA9IHY4OjpJbnRlZ2VyOjpOZXcoaW5kZXgpOworICAgIHY4OjpIYW5kbGU8djg6OkludGVn
ZXI+IGluZGV4VjggPSB2OEludGVnZXIoaW5kZXgsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBy
ZXR1cm4gc3RvcmFnZURlbGV0ZXIoaW5kZXhWOC0+VG9TdHJpbmcoKSwgaW5mbyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDUwNTlkZGYwYTU0NmE4MjA0
MjExYzU4MmI1YTljOThhNTMzNmU5YWUuLjU5MDRlYzJmYWZhMjU3NDk0NjIxY2QzMmJkODNjOGFm
M2FhMmQ3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMTI1
LDE5ICsxMjUsMTkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KGNv
bnN0IFdlYkdMR2V0SW5mbyYgaW5mbywgdjg6Oklzb2xhdGUqIGkKICAgICAgICAgY29uc3QgVmVj
dG9yPGJvb2w+JiB2YWx1ZSA9IGluZm8uZ2V0Qm9vbEFycmF5KCk7CiAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcodmFsdWUuc2l6ZSgpKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHZhbHVlLnNpemUoKTsgKytpaSkKLSAgICAgICAg
ICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpaSksIHY4OjpCb29sZWFuOjpOZXcodmFs
dWVbaWldKSk7CisgICAgICAgICAgICBhcnJheS0+U2V0KHY4SW50ZWdlcihpaSwgaXNvbGF0ZSks
IHY4OjpCb29sZWFuOjpOZXcodmFsdWVbaWldKSk7CiAgICAgICAgIHJldHVybiBhcnJheTsKICAg
ICB9CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlRmxvYXQ6CiAgICAgICAgIHJldHVybiB2
ODo6TnVtYmVyOjpOZXcoaW5mby5nZXRGbG9hdCgpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6
a1R5cGVJbnQ6Ci0gICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KGluZm8uZ2V0SW50KCkp
OworICAgICAgICByZXR1cm4gdjhJbnRlZ2VyKGluZm8uZ2V0SW50KCksIGlzb2xhdGUpOwogICAg
IGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZU51bGw6CiAgICAgICAgIHJldHVybiB2ODo6TnVsbChp
c29sYXRlKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVTdHJpbmc6CiAgICAgICAgIHJl
dHVybiB2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNvcmVTdHJpbmcoaW5mby5nZXRTdHJpbmcoKSks
IGluZm8uZ2V0U3RyaW5nKCkubGVuZ3RoKCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlw
ZVVuc2lnbmVkSW50OgotICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25l
ZChpbmZvLmdldFVuc2lnbmVkSW50KCkpOworICAgICAgICByZXR1cm4gdjhVbnNpZ25lZEludGVn
ZXIoaW5mby5nZXRVbnNpZ25lZEludCgpLCBpc29sYXRlKTsKICAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVXZWJHTEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIHRvVjgoaW5mby5nZXRXZWJHTEJ1
ZmZlcigpLCBpc29sYXRlKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEZsb2F0
QXJyYXk6CkBAIC0yODksNyArMjg5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnNDYWxsYmFjayhjb25zdAogICAgICAg
ICByZXR1cm4gdjg6Ok51bGwoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHY4OjpMb2NhbDx2ODo6
QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcoc2hhZGVycy5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGlpID0gMDsgaWkgPCBzaGFkZXJzLnNpemUoKTsgKytpaSkKLSAgICAgICAgYXJyYXkt
PlNldCh2ODo6SW50ZWdlcjo6TmV3KGlpKSwgdG9WOChzaGFkZXJzW2lpXS5nZXQoKSwgYXJncy5H
ZXRJc29sYXRlKCkpKTsKKyAgICAgICAgYXJyYXktPlNldCh2OEludGVnZXIoaWksIGFyZ3MuR2V0
SXNvbGF0ZSgpKSwgdG9WOChzaGFkZXJzW2lpXS5nZXQoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsK
ICAgICByZXR1cm4gYXJyYXk7CiB9CiAKQEAgLTM5OCw3ICszOTgsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnND
YWxsYmFjayhjbwogICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlID0gaW1wLT5nZXRTdXBwb3J0ZWRF
eHRlbnNpb25zKCk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6
Ok5ldyh2YWx1ZS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCB2YWx1ZS5z
aXplKCk7ICsraWkpCi0gICAgICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpaSksIHY4
OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyh2YWx1ZVtpaV0pLCB2YWx1ZVtpaV0ubGVu
Z3RoKCkpKTsKKyAgICAgICAgYXJyYXktPlNldCh2OEludGVnZXIoaWksIGFyZ3MuR2V0SXNvbGF0
ZSgpKSwgdjg6OlN0cmluZzo6TmV3KGZyb21XZWJDb3JlU3RyaW5nKHZhbHVlW2lpXSksIHZhbHVl
W2lpXS5sZW5ndGgoKSkpOwogICAgIHJldHVybiBhcnJheTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcAppbmRleCAxN2M5ZjFiYmY3NGMyNmI3NDIxMWY0MmZiZDk4MmZhYTA1NjA2NWQ3Li43ZTI3
ZjZjMDU2ZWE3MmU1YTAxOGYyYWEzY2I4YmM0NjBmMTIwNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcApAQCAtODMsNyArODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9y
SW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIH0gZWxz
ZQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIHY4OjpJbnRl
Z2VyOjpOZXcodGltZXJJZCk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih0aW1lcklkLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6
OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>