Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 99088 invoked from network); 22 Dec 2008 07:21:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 Dec 2008 07:21:37 -0000 Received: (qmail 56887 invoked by uid 500); 22 Dec 2008 07:21:36 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 56852 invoked by uid 500); 22 Dec 2008 07:21:36 -0000 Mailing-List: contact dev-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list dev@harmony.apache.org Received: (qmail 56824 invoked by uid 99); 22 Dec 2008 07:21:36 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 21 Dec 2008 23:21:36 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of aleksey.shipilev@gmail.com designates 209.85.198.245 as permitted sender) Received: from [209.85.198.245] (HELO rv-out-0708.google.com) (209.85.198.245) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Dec 2008 07:21:26 +0000 Received: by rv-out-0708.google.com with SMTP id k29so2427720rvb.0 for ; Sun, 21 Dec 2008 23:21:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=N0QC6/ljbuI8/ByMBg9BWEJVgW5yAF1K3W8gu+NRrZs=; b=cFfji7HmIjUq3A952AQ+Dw7JtbRG3yqgVPtRxmUSVE3fZlnMR2wy1PXvNhK15UVQao RXwGmSo1hMumhU9gSiR6oLqaSDYPzJrPv09dLmVpxNlD86F+t2L1KZEzWidj6UZWVjuE yDCU16jRPp7LB6/QQaQEvU+e7BHgEy9e3kZVU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=O8mVzRtN1WwpBpQYaMq6xoZkrwns+56xJG8BxKfacEc3EMHpkzFahsham7RzrDoiqK eTZyEQY77IqdXmOfHkGMZkITDvnfE6ocs+GLsptEpdcjRl6F0r9FZe+QYKBLOjyV1G+F cW+N/wB67ZLTrYHmRWnaa3Td+iK/ed/xQN9Wo= Received: by 10.140.157.1 with SMTP id f1mr3030789rve.196.1229930464797; Sun, 21 Dec 2008 23:21:04 -0800 (PST) Received: by 10.140.187.1 with HTTP; Sun, 21 Dec 2008 23:21:04 -0800 (PST) Message-ID: <4bebff790812212321tbcb5a2wf0b42703883627bb@mail.gmail.com> Date: Mon, 22 Dec 2008 10:21:04 +0300 From: "Aleksey Shipilev" To: dev@harmony.apache.org Subject: Re: [VM] On-demand class library parsing is ready to commit In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline References: <494BC4FD.3070502@gmail.com> <4bebff790812211204o683f0bafp9346e02965410f11@mail.gmail.com> <3b3f27c60812211638w7d2f88cmd1c3a55c616012d2@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org TmF0aGFuOgoKV2VubG9uZydzIGRlZmluaXRpb24gaXMgInN0YXJ0dXAgdGltZSBpcyB0aGUgdGlt ZSByZXF1aXJlZCBmb3IgVk0gdG8KaW5pdGlhbGl6ZSBiZWZvcmUgZW50ZXJpbmcgSmF2YSBtYWlu KCkgbWV0aG9kIi4gVGhpcyBvbmUgaXMgbWVhc3VyZWQKYnkgdGFwcGluZyBpbnRvIFZNIGludGVy bmFscy4KCkFsZWtzZXkncyBkZWZpbml0aW9uIGlzICJzdGFydHVwIHRpbWUgaXMgdGhlIHRpbWUg bmVlZGVkIGZvciBWTSB0bwpmdWxseSBleGVjdXRlIG1haW4oKSBtZXRob2Qgb25lIGZpcnN0IHRp bWUiLiBUaGlzIG9uZSBpcyBtZWFzdXJlZCBieQpzdGFuZGFyZCBKYXZhIGJlbmNobWFya3MuCgpN eSBpbXByZXNzaW9uIChiYWNrZWQgYnkgQ2FjaGVncmluZC9DYWxsZ3JpbmQgcHJvZmlsZXMpIGlz LCB0aGVyZSBtdWNoCm1vcmUgdGltZSBzcGVudCBpbiBpbml0aWFsIGNvbXBpbGF0aW9uIG9mIEph dmEgYnl0ZWNvZGUgdGhhbiBWTQppbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhpcyBpcyBhbHNv IGRlbW9uc3RyYXRlZCBieSBydW5uaW5nIHJlYWwKd29ya2xvYWQgdGhyb3VnaCBzdGFydHVwIHNj ZW5hcmlvOiBldmVuIHRob3VnaCB0aGVyZSdzIHRoZSBib29zdCBvbgpIV0EgaW4gImZyZWV6aW5n LWNvbGQgY2FjaGUgY29uZGl0aW9ucyIsIGl0IGRpc2FwcGVhcnMgZnJvbSBzdGFydHVwIG9mCnJl YWwgd29ya2xvYWQuCgpUaGUgVk0gaW5pdGFsaXphdGlvbiBzZXF1ZW5jZSBjYW4gYmUgYSBib3R0 bGVuZWNrIGJ1dCBpdCB3b3VsZCBjb21lIHRvCnRoZSBlZmZlY3Qgd2hlbiBhbGwgb3RoZXIgaXNz dWVzIGFyZSByZXNvbHZlZC4gSU1PLCB0aGUgcmVkdWN0aW9uIG9mCjAuMSBtc2VjIHN0YXJ0dXAg dGltZSBpcyBuZWdsaWJsZSBhbmQgZG9lcyBub3Qgd29ydGggbWVzc2luZyB0aGUKYm9vdGNsYXNz cGF0aC4KCklzIHRoZXJlIGFub3RoZXIgYWR2YW50YWdlcyAobm90IHBlcmZvcm1hbmNlIG9uZXMp IGZvciBkb2luZyB0aGF0PyBJZgpub3QsIEknZCByYXRoZXIgcG9zdHBvbmUgaXQuCgpJJ20gbm90 IHNheWluZyBXZW5sb25nIGRpZCBiYWQgam9iLCBoZSBkaWQgZ3JlYXQsIGJ1dCBzb21ldGltZXMg dGhlCmNvbnNpc3RlbmN5IGdhaW5zIG92ZXJjb21lIHRoZSBwZXJmb3JtYW5jZSwgZXNwZWNpYWxs eSBpcyB0aGUKcGVyZm9ybWFuY2UgYm9vc3QgaXMgbm90IGdlbmVyYWwuCgpUaGFua3MsCkFsZWtz ZXkuCgpPbiBNb24sIERlYyAyMiwgMjAwOCBhdCA3OjU4IEFNLCBXZW5sb25nIExpIDx3ZW5sb25n QGdtYWlsLmNvbT4gd3JvdGU6Cj4gTXkgc3RhcnR1cCBtZWFucyB0aGUgY29tcHV0YXRpb24gbmVl ZGVkIGJlZm9yZSBleGVjdXRpbmcgdXNlcidzIGNvZGUKPiAoaW4gbWFpbiBtZXRob2QpIChzZWUg WzFdWzJdLCB3aGlsZSAgQWxla3NleSdzIG9waW5pb24gaXMgdGhlIHN0YXJ0dXAKPiBiZW5jaG1h cmsgaW4gU1BFQ0pWTTIwMDguCj4gWzFdIGh0dHA6Ly93d3cub3JhY2xlLmNvbS90ZWNobm9sb2d5 L3B1Yi9hcnRpY2xlcy9kZXYyYXJjaC8yMDA0LzAxL2pyb2NraXQuaHRtbAo+IFsyXSBodHRwOi8v d3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvamF2YS9saWJyYXJ5L29zLWVjc3B5MS8KPgo+IE9u IE1vbiwgRGVjIDIyLCAyMDA4IGF0IDg6MzggQU0sIE5hdGhhbiBCZXllciA8bmRiZXllckBhcGFj aGUub3JnPiB3cm90ZToKPj4gQ2FuIHNvbWVvbmUgZ2l2ZSBhIHF1aWNrIHN1bW1hcnkgb2YgdGhl IHR3byBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YKPj4gInN0YXJ0dXAiIGJlaW5nIGRpc2N1c3Nl ZD8KPj4KPj4gLU5hdGhhbgo+Pgo+PiBPbiBTdW4sIERlYyAyMSwgMjAwOCBhdCA2OjIyIFBNLCBX ZW5sb25nIExpIDx3ZW5sb25nQGdtYWlsLmNvbT4gd3JvdGU6Cj4+PiBBbGVrc2V5LAo+Pj4KPj4+ IFRoeCBmb3IgdGVzdGluZyB0aGlzIHBhdGNoLCBhbmQgc2hhcmluZyB5b3VyIGV4cGVyaW1lbnRh bCByZXN1bHQuCj4+PiBZZXMsIEkgdGhpbmsgeW91ciByZXN1bHQgd291bGQgYmUgcmVhc29uYWJs ZS4gVGhlIHBlcmZvcm1hbmNlIGdhaW4gb2YKPj4+IHRoaXMgcGF0Y2ggdmFyaWVzIHdpdGggZGlm ZmVyZW50IHN5c3RlbXMuCj4+Pgo+Pj4gQWdhaW4sIEkgd291bGQgbGlrZSB0byBzYXkgd2UgaGF2 ZSBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgZm9yICJzdGFydHVwIi4KPj4+IE1heWJlIEkgc2hvdWxk IG1vdmUgdGhlIGNoYW5nZSBpbiBjbGFzc2xpYiBtb2R1bGUgdG8gdm0gbW9kdWxlLCBzbwo+Pj4g dGhhdCB0aGUgZGVwZW5kZW5jeSBjYW4gYmUgbWluaW1pemVkLgo+Pj4KPj4+IHRoeCBhZ2FpbiBm b3IgZGlzY3Vzc2lvbi4gOikKPj4+IHdlbmxvbmcKPj4+Cj4+PiBPbiBNb24sIERlYyAyMiwgMjAw OCBhdCA0OjA0IEFNLCBBbGVrc2V5IFNoaXBpbGV2Cj4+PiA8YWxla3NleS5zaGlwaWxldkBnbWFp bC5jb20+IHdyb3RlOgo+Pj4+IEhpIFdlbmxvbmcsCj4+Pj4KPj4+PiBJIGhhZCBzb21lIHBlcmZv cm1hbmNlIGV4cGVyaW1lbnRzIHdpdGggeW91ciBwYXRjaC4gVGhlIHRlc3Qgc3lzdGVtIGlzOgo+ Pj4+ICAtIFBlbnRpdW0gRCA4MjAgMi44IEdoeiAvIDIgR2IgRERSMi02NjcKPj4+PiAgLSBXRCAz MjAwS1MsIDMyMCBHYiwgMTYgTWIgY2FjaGUKPj4+PiAgLSBHZW50b28gTGludXggeDg2LCAyLjYu MjMKPj4+PiAgLSBIYXJtb255IHI3Mjg0NTkKPj4+PiAgLSBTUEVDanZtMjAwOAo+Pj4+Cj4+Pj4g VG8gcmVjcmVhdGUgdGhlIHN0cmVzc2Z1bCBjb25kaXRpb25zIG92ZXIgYW5kIG92ZXIgdGhlIHNp bXBsZSBzY3JpcHQKPj4+PiB3YXMgd3JpdHRlbiBbMV0uIFRoZSBzY3JpcHQgaW52YWxpZGF0ZXMg dGhlIGNhY2hlcyBiZWZvcmUgYWN0dWFsbHkKPj4+PiBzdGFydGluZyB0aGUgd29ya2xvYWQ6IHJl LXJlYWRzIHRoZSBzYW1lIDY0IE1iIGZpbGUgYSBjb3VwbGUgb2YgdGltZXMKPj4+PiB0byBmaWxs IG91dCBvbi1IREQgY2FjaGUsIGludmFsaWRhdGluZyBWRlMgYmxvY2sgY2FjaGVzIGZpcnN0IHRv IG1ha2UKPj4+PiBzdXJlIHRoZSBkYXRhIGlzIHJlYWxseSByZXF1ZXN0ZWQgZnJvbSB0aGUgZGlz ay4KPj4+Pgo+Pj4+IE9uIEhXQSBbMl0gdGhlc2UgcGVyZm9ybWFuY2UgcmVzdWx0cyB3ZXJlIHBy b2R1Y2VkOgo+Pj4+Cj4+Pj4gImNvbGQtc3RhcnQiIChpbnZhbGlkYXRlIGNhY2hlcyk6Cj4+Pj4g Y2xlYW46ICg1LjI0ICstIDAuMjgpIHNlY3MKPj4+PiBvbmRlbWFuZDogKDQuNDkgKy0gMC4xNykg c2Vjcwo+Pj4+Cj4+Pj4gIndhcm0tc3RhcnQiIChkb24ndCBpbnZhbGlkYXRlIGNhY2hlcyk7Cj4+ Pj4gY2xlYW46ICgyLjgyICstIDAuMDEpIHNlY3MKPj4+PiBvbmRlbWFuZDogKDIuODAgKy0gMC4w Mikgc2Vjcwo+Pj4+Cj4+Pj4gVGhhdCBpcywgb24tZGVtYW5kIHBhdGNoIGRvZXMgYnJpbmcgKzE3 JSAoLSs5JSkgaW1wcm92ZW1lbnQgb24gSFdBCj4+Pj4gd2hlbiBydW5uaW5nIHdpdGggZmx1c2hl ZCBjYWNoZXMsIGFuZCBkb2VzIG5vdCBicmluZyBhbnkgcGVyZm9ybWFuY2UKPj4+PiBpbXByb3Zl bWVudCBpbiB3YXJtIG1vZGUuCj4+Pj4KPj4+PiBBcyBJIG1lbnRpb25lZCBzZXZlcmFsIHRpbWVz LCB0aGlzIHRlc3QgZG9lcyBub3QgcmVmbGVjdCB0aGUgcmVhbAo+Pj4+IHBlcmZvcm1hbmNlIGVu ZCB1c2VyIHdvdWxkIHBlcmNlaXZlLCBzbyBJIHRvb2sgdHdvIFNQRUNqdm0yMDA4OnN0YXJ0dXAK Pj4+PiBiZW5jaG1hcmtzIGFuZCBydW4gZWFjaCBvZiB0aGVtIDEweDEwIHRpbWVzLgo+Pj4+Cj4+ Pj4gU1BFQ2p2bTIwMDg6c3RhcnR1cC5oZWxsb3dvcmxkLCAiY29sZCBzdGFydCI6Cj4+Pj4gY2xl YW46ICg4LjkzICstIDAuMjEpIG9wcy9taW4KPj4+PiBvbmRlbWFuZDogKDkuMDQgKy0gMC4wMykg b3BzL21pbgo+Pj4+Cj4+Pj4gU1BFQ2p2bTIwMDg6c3RhcnR1cC5jb21waWxlci5jb21waWxlciwg ImNvbGQgc3RhcnQiOgo+Pj4+IGNsZWFuOiAoMS40NCArLSAwLjA1KSBvcHMvbWluCj4+Pj4gb25k ZW1hbmQ6ICgxLjQyICstIDAuMDQpIG9wcy9taW4KPj4+Pgo+Pj4+IEFzIHlvdSBjYW4gc2VlIGV2 ZW4gaW4gdmVyeSBzdHJlc3NmdWwgc2l0dWF0aW9uIHRoZXJlJ3Mgbm8gYm9vc3QuIEkKPj4+PiB3 b3VsZCBmaW5kIHRoZXNlIHBlcmZvcm1hbmNlIHJlc3VsdHMgdW5jb252aW5jaW5nIHRvIGNoYW5n ZSB0aGUKPj4+PiBpbmZyYXN0cnVjdHVyZSBvZiBib29sY2xhc3NwYXRoIHJlc29sdXRpb24uIEFt IEkgbWlzc2luZyBzb21ldGhpbmcKPj4+PiBpbXBvcnRhbnQ/Cj4+Pj4KPj4+PiBUaGFua3MsCj4+ Pj4gQWxla3NleS4KPj4+Pgo+Pj4+IFsxXSBydW4uc2gKPj4+PiAjIS9iaW4vYmFzaAo+Pj4+Cj4+ Pj4gUj1gcHdkYAo+Pj4+Cj4+Pj4gSkFWQT0kUi9wbGF0Zm9ybXMvYnVpbGRzL2hhcm1vbnktcmVs ZWFzZS1jbGVhbi9qZGsvanJlL2Jpbi9qYXZhCj4+Pj4gI0pBVkE9JFIvcGxhdGZvcm1zL2J1aWxk cy9oYXJtb255LXJlbGVhc2Utb25kZW1hbmQvamRrL2pyZS9iaW4vamF2YQo+Pj4+IEpBVkFfT1BU Uz0iLVhteDEwMjRNIC1YbXMxMDI0TSIKPj4+Pgo+Pj4+IGZvciBUIGluIGBzZXEgMSAxMGA7IGRv Cj4+Pj4KPj4+PiAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqIEVYRUNVVElORyBJVEVSQVRJ T04gJFQgKioqKioqKioqKioqKioqKiIKPj4+Pgo+Pj4+ICAgICAgICAjIGludmFsaWRhdGUgSERE IGNhY2hlcwo+Pj4+ICAgICAgICAjICAgLSBuZWVkIHRvIHJlcGxhY2UgYWxsIGVudHJpZXMgaW4g TFJVIEhERCBjYWNoZQo+Pj4+ICAgICAgICAjICAgLSBmbHVzaCB0aGUga2VybmVsIFZGUyBjYWNo ZSBmaXJzdCB0byBlbnN1cmUgdGhlIGRhdGEKPj4+PiB3b3VsZCBiZSByZWFkIGZyb20gZGlzawo+ Pj4+Cj4+Pj4gICAgICAgIGVjaG8gIkZsdXNoaW5nIGNhY2hlcyIKPj4+PiAgICAgICAgZm9yIEkg aW4gYHNlcSAxIDVgOyBkbwo+Pj4+ICAgICAgICAgICAgICAgIHN5bmMKPj4+PiAgICAgICAgICAg ICAgICBlY2hvIDMgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMKPj4+Pgo+Pj4+ICAgICAgICAg ICAgICAgIGRkIGlmPWNhY2hla2lsbGVyLmZpbGUgb2Y9L2Rldi9udWxsID4gL2Rldi9udWxsIDI+ JjEKPj4+PiAgICAgICAgZG9uZQo+Pj4+Cj4+Pj4gICAgICAgIGVjaG8gIkV4ZWN1dGluZy4iCj4+ Pj4KPj4+PiAgICAgICAgIyBIZWxsb1dvcmxkCj4+Pj4gICAgICAgIC91c3IvYmluL3RpbWUgJEpB VkEgJEpBVkFfT1BUUyAtY3AgYmVuY2htYXJrcy8gSGVsbG9Xb3JsZCAyPiYxCj4+Pj4KPj4+PiAg ICAgICAgIyBTUEVDanZtMjAwOAo+Pj4+ICAgICAgICAjY2QgJFIvYmVuY2htYXJrcy9zdG9yYWdl L1NQRUNqdm0yMDA4Cj4+Pj4gICAgICAgICMvdXNyL2Jpbi90aW1lICRKQVZBICRKQVZBX09QVFMg LURqYXZhLmF3dC5oZWFkbGVzcz10cnVlIC1qYXIKPj4+PiBTUEVDanZtMjAwOC5qYXIgLWlrdiAt aSAxMCBzdGFydHVwLmNvbXBpbGVyLmNvbXBpbGVyIDI+JjEKPj4+Pgo+Pj4+ICAgICAgICBlY2hv ICIiCj4+Pj4gZG9uZQo+Pj4+Cj4+Pj4gWzJdIEhlbGxvV29ybGQuamF2YQo+Pj4+IHB1YmxpYyBj bGFzcyBIZWxsb1dvcmxkIHsKPj4+PiBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBh cmdzKSB7Cj4+Pj4gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8sIHdvcmxkISIpOwo+ Pj4+IH0KPj4+PiB9Cj4+Pj4KPj4+Pgo+Pj4+IE9uIFN1biwgRGVjIDIxLCAyMDA4IGF0IDY6MDIg QU0sIFdlbmxvbmcgTGkgPHdlbmxvbmdAZ21haWwuY29tPiB3cm90ZToKPj4+Pj4gT24gU2F0LCBE ZWMgMjAsIDIwMDggYXQgNzoxMCBQTSwgQWxleGVpIEZlZG90b3YKPj4+Pj4gPGFsZXhlaS5mZWRv dG92QGdtYWlsLmNvbT4gd3JvdGU6Cj4+Pj4+PiBXZW5sb25nLAo+Pj4+Pj4gVGhhbmtzIGZvciBy ZW1vdmluZyB0aGUgY29tbWVudGVkIGNvZGUuCj4+Pj4+Pgo+Pj4+Pj4gVGhlcmUgYXJlIHNldmVy YWwgVk1zIHdoaWNoIG1ha2UgdXNlIG9mIHRoZSBIYXJtb255IGNsYXNzIGxpYnJhcnksCj4+Pj4+ PiBlLmcuIEhhcm1vbnkgVk0sIEo5LCBBbmRyb2lkIERhbHZpaywgZXRjLiBZb3VyIGNoYW5nZSBp cyBIYXJtb255IFZNCj4+Pj4+PiBzcGVjaWZpYywgaXNuJ3QgaXQ/IElmIGl0IGlzLCB0aGVuIGl0 J3MgYmV0dGVyIHRvIGtlZXAgcmVsYXRlZCBjaGFuZ2VzCj4+Pj4+PiBpbiB0aGUgVk0gbW9kdWxl LiBJZiBpdCBpcyBub3QsIHRoZW4gaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEgdG8ga2VlcAo+Pj4+ Pj4gdGhlIGNoYW5nZXMgaW4gdGhlIGNsYXNzIGxpYnJhcnkgbW9kdWxlIHVubGVzcyBvdGhlciBW TXMgYWxyZWFkeSBoYXMKPj4+Pj4+IHN1Y2ggb3B0aW1pemF0aW9uIGluIHRoZWlyIGNvZGUuCj4+ Pj4+IFtXZW5sb25nXSBUaG91Z2ggYXQgdGhpcyBtb21lbnQsIHlvdSBjYW4gdGhpbmsgb24tZGVt YW5kIGNsYXNzIHBhcnNpbmcKPj4+Pj4gaXMgYSBzcGVjaWYgb3B0aW1pemF0aW9uIGZyb20geW91 ciBwb2ludCBvZiB2aWV3LiBJIGJlbGlldmUgaXQgY291bGQKPj4+Pj4gYmUgYSBnZW5lcmFsIHRl Y2huaXF1ZSwgZS5nLiwgaXQgY2FuIGJlIGVhc2lseSBkZXBsb3llZCBpbiBvdGhlcgo+Pj4+PiBy dW50aW1lIHN5c3RlbXMuIEN1cnJlbnQgVk0gYWxzbyBkZXBlbmRzIG9uIHRoZSBsdW5pZ2xvYmFs LmMgaW4KPj4+Pj4gd29ya2luZ19jbGFzc2xpYiB0byBnZXQgYWxsIGNsYXNzIGxpYnJhcmllcy9t b2R1bGVzLiBlLmcuLCB0aGVyZSBpcyBhCj4+Pj4+IGNyb3NzLW1vZHVsZSBkZXBlbmRlbmNlIGJl dHdlZW4gY2xhc3NsaWIgYW5kIFZNLiBXaGVuIHVzZXIgd2FudHMgdG8KPj4+Pj4gYWRkIG5ldyBt b2R1bGUsIHRoZXkgc2hvdWxkIG1hbnVhbGx5IGNoYW5nZSB0aGUKPj4+Pj4gYm9vdGNsYXNzcGF0 aC5wcm9wZXJ0aWVzLCB3aGlsZSBpZiBhcHBseWluZyB0aGlzIHBhdGNoLCB1c2VyIHNob3VsZAo+ Pj4+PiByZXZpc2UgbXkgYWRkZWQgcHJvcGVydHkgZmlsZSBpbnN0ZWFkIG9mIHRoZSBib290Y2xh c3NwYXRoLnByb3BlcnRpZXMuCj4+Pj4+IEkgdW5kZXJzdGFuZCBtb2RpZnlpbmcgYm9vdGNsYXNz cGF0aCBmaWxlIG1heSBiZSBhIHNwZWNpZmljYXRpb24uCj4+Pj4+Pgo+Pj4+Pj4gSW4gYW55IGNh c2UgY3Jvc3NpbmcgbW9kdWxlIGJvdW5kYXJ5IHdvdWxkIG1ha2UgY2xhc3MgbGlicmFyeSB1c2Vy cwo+Pj4+Pj4gdGhpbmsgbW9yZSB0aGFuIG9uY2Ugb3IgZXZlbiB3cml0ZSBzb21lIGNvZGUuIElz IGl0IHRlY2huaWNhbGx5Cj4+Pj4+PiBwb3NzaWJsZSB0byBwcmVwYXJlIGEgcGF0Y2ggd2hpY2gg ZG9lcyBub3QgY2hhbmdlIG1vZHVsZSBib3VuZGFyaWVzPwo+Pj4+Pj4gV2hhdCBkbyB5b3UgdGhp bms/Cj4+Pj4+IFtXZW5sb25nXSBZZXMsIGl0IGlzIHBvc3NpYmxlIGZyb20gdGVjaG5pY2FsIHBl cnNwZWN0aXZlLCBidXQgYSBsaXR0bGUKPj4+Pj4gY29tcGxpY2F0ZWQuIEkgY2FuIHRoaW5rIGFi b3V0IGl0LiA6KQo+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IEFzIGZvciB5b3VyIHBlcmZvcm1hbmNlIGV4 cGVyaW1lbnRzLCB3aGljaCBwYXJ0aWN1bGFyIHRlc3QgYXJlIHlvdXIKPj4+Pj4+IG1lYXN1cmlu Zz8gSXQgaXMgYm9vdGNsYXNzcGF0aC11bnByZXRlbnRpb3VzICJIZWxsbywgd29ybGQiLCBpc24n dCBpdD8KPj4+Pj4gW1dlbmxvbmddIE15IHN0YXJ0dXAgbWVhbnMgdGhlIHdvcmsgZXhlY3V0ZWQg YmVmb3JlIHJ1bm5pbmcgdXNlcidzCj4+Pj4+IGNvbXB1dGF0aW9uLiBUaGF0IGlzLCB0aGUgdm0g Y3JlYXRpb24gdGltZS4gSSBtYW51YWxseSBhZGQKPj4+Pj4gaW5zdHJ1bWVudGF0aW9uIGNvZGUg Zm9yIGV4ZWN1dGlvbiB0aW1lIGluIEpOSV9DcmVhdGVKYXZhVk0gb2YKPj4+Pj4gSk5JLmNwcC4g VGhpcyBzdGFydHVwIHdvcmsgaXMgY29tbW9uIGZvciBhbnkgYmVuY2htYXJrcy4gTXkgZXhwZXJp bWVudAo+Pj4+PiB3YXMgY29uZHVjdGVkIG9uIGJvdGggV2luZG93cyBhbmQgTGludXggc3lzdGVt LiBQbGVhc2Ugc2VlIG15IHByZXZpb3VzCj4+Pj4+IG1lc3NhZ2UgYWJvdXQgcGVyZm9ybWFuY2Ug Z2FpbiBmcm9tIHRoaXMgb3B0aW1pemF0aW9uLgo+Pj4+Pgo+Pj4+PiBUaHgsCj4+Pj4+IFdlbmxv bmcKPj4+Pj4+Cj4+Pj4+PiBUaGFua3MhCj4+Pj4+Pgo+Pj4+Pj4gT24gU2F0LCBEZWMgMjAsIDIw MDggYXQgMjoxOSBBTSwgV2VubG9uZyBMaSA8d2VubG9uZ0BnbWFpbC5jb20+IHdyb3RlOgo+Pj4+ Pj4+IE9uIFNhdCwgRGVjIDIwLCAyMDA4IGF0IDEyOjQyIEFNLCBBbGV4ZWkgRmVkb3Rvdgo+Pj4+ Pj4+IDxhbGV4ZWkuZmVkb3RvdkBnbWFpbC5jb20+IHdyb3RlOgo+Pj4+Pj4+PiBXZW5sb25nLAo+ Pj4+Pj4+PiBIYXZlIEkgbWlzc2VkIGEgZGlzY3Vzc2lvbiBvZiB0aGUgcHJvcG9zZWQgZGVzaWdu PyBJIHNlZSB0aGF0IHlvdQo+Pj4+Pj4+PiBleHBvc2UgYSBuZXcgcHVibGljIGludGVyZmFjZToK Pj4+Pj4+Pj4gIC8qKgo+Pj4+Pj4+PiAgKiBAbWFwIHRoZSBqYXIgd2l0aCBleHBvcnRlZCBwYWNr YWdlIGluIHRoZSBwZW5kaW5nIGphciBsaXN0IGZvcgo+Pj4+Pj4+PiBvbi1kZW1hbmQgamFyIHBh cnNpbmcKPj4+Pj4+Pj4gICogICBLZXkgaXMgdGhlIGphciwgYW5kIHZhbHVlIGlzIHRoZSBwYWNr YWdlIGV4cG9ydGVkIGJ5IHRoaXMgamFyCj4+Pj4+Pj4+ICAqLwo+Pj4+Pj4+PiBERUNMQVJFX09Q RU4odm9pZCwgdm1fcHJvcGVydGllc19zZXRfcGVuZGluZ19qYXIsIChjb25zdCBjaGFyKiBrZXks Cj4+Pj4+Pj4+IGNvbnN0IGNoYXIqIHZhbHVlKSk7Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IERpZCB5b3Ug bWVhbiAiTWFwcyIgaW5zdGVhZCBvZiAiQG1hcCI/IFN0cmFuZ2VseSB0aGUgd29yZCAicGVuZGlu ZyIKPj4+Pj4+Pj4gZGlzYXBwZWFyZWQgZnJvbSB0aGUgbmFtZSBvZiB0aGUgd3JhcHBpbmcgVk1J IGludGVyZmFjZQo+Pj4+Pj4+PiBTZXRKYXJQYWNrYWdlTWFwcGluZyAuIFdoeSBzaG91bGQgd2Ug ZXh0ZW5kIGJvdGggT1BFTiBhbmQgVk1JCj4+Pj4+Pj4+IGludGVyZmFjZXMgd2l0aCB0aGUgc2Ft ZSBmdW5jdGlvbj8gV2h5IGRpZCB5b3UgcHV0IHlvdXIgY29kZSBpbnRvCj4+Pj4+Pj4+IHdvcmtp bmdfY2xhc3NsaWIvbW9kdWxlcy9sdW5pL3NyYy9tYWluL25hdGl2ZS9sdW5pL3NoYXJlZC9sdW5p Z2xvYi5jLAo+Pj4+Pj4+PiB0aHVzIGludHJvZHVjaW5nIGFub3RoZXIgZGVwZW5kZW5jeSBiZXR3 ZWVuIFZNIGFuZCBjbGFzcyBsaWJyYXJ5Pwo+Pj4+Pj4+IFtXZW5sb25nXSBUaGUgYm9vdCBjbGFz cyBwYXRoIGlzIGRlZmluZWQgaW4gbHVuaWdsb2JhbC5jIGluIEhhcm1vbnksCj4+Pj4+Pj4gYW5k IGl0IGFsc28gaGFzIGRlcGVuZGVuY2Ugd2l0aCBWTS4gSW4gbXkgdW5kZXJzdGFuZGluZywgbXkg cGF0Y2ggaXMKPj4+Pj4+PiByZWxhdGVkIHRvIGJvb3QgY2xhc3MgcGF0aCBkZXRlcm1pbmF0aW9u LCBzbyBJIGFsc28gcHV0IG15IGNvZGUgaW4KPj4+Pj4+PiBsdW5pZ2xvYmFsLmMsIGFuZCB1c2Ug Vk1JIGludGVyZmFjZSB0byBjb21tdW5pY2F0ZSB3aXRoIFZNLgo+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+ Pj4+Pj4+ICsgICAgICAgICAgICAvL3JjU2V0UHJvcGVydHkgPSAoKnZtSW50ZXJmYWNlKS0+U2V0 SmFyUGFja2FnZU1hcHBpbmcKPj4+Pj4+Pj4gKHZtSW50ZXJmYWNlLCBqYXJOYW1lLCBqYXJWYWx1 ZSk7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAvKgo+Pj4+Pj4+PiArICAgICAgICAgICAgaHltZW1f ZnJlZV9tZW1vcnkoamFyTmFtZSk7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICBoeW1lbV9mcmVlX21l bW9yeShqYXJWYWx1ZSk7Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAqLwo+Pj4+Pj4+PiBTaG91bGQg d2UgcmVhbGx5IGNvbW1pdCB0aGUgY29tbWVudGVkIGNvZGU/Cj4+Pj4+Pj4+IFRoYW5rcy4KPj4+ Pj4+Pgo+Pj4+Pj4+IFtXZW5sb25nXSBQbGVhc2Ugc2VlIG15IGxhdGVzdCB2ZXJzaW9uIG9mIHBh dGNoIGluIHRoZSBsaXN0LiBTdWNoCj4+Pj4+Pj4gY29tbWVudGVkIGNvZGUgaGFzIGJlZW4gcmVt b3ZlZC4KPj4+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gT24gRnJpLCBEZWMgMTksIDIwMDggYXQg Njo1OSBQTSwgVGltIEVsbGlzb24gPHQucC5lbGxpc29uQGdtYWlsLmNvbT4gd3JvdGU6Cj4+Pj4+ Pj4+PiBJIHdhcyBob3BpbmcgdGhhdCBzb21lYm9keSBlbHNlIHdvdWxkIGNvbW1lbnQgZmlyc3Qs IHNvIEkgZG9uJ3QgaGF2ZSB0bwo+Pj4+Pj4+Pj4gYmUgdGhlIGdydW1weSBvbmUgYWxsIHRoZSB0 aW1lIDotKQo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEFzIEkgc2FpZCBiZWZvcmUsIHRoaXMgaXMgZ29v ZCBwcm90b3R5cGluZyB3b3JrLi4uCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gV2VubG9uZyBMaSB3cm90 ZToKPj4+Pj4+Pj4+PiBJIGRpZCB0aGUgcHJlLWNvbW1pdCB0ZXN0IG9uIHRoZSBwYXRjaCBvZiBv bi1kZW1hbmQgY2xhc3MgbGlicmFyeQo+Pj4+Pj4+Pj4+IHBhcnNpbmcgKGh0dHBzOi8vaXNzdWVz LmFwYWNoZS5vcmcvamlyYS9icm93c2UvSEFSTU9OWS02MDM5KSwgYW5kIGl0Cj4+Pj4+Pj4+Pj4g d29ya3Mgd2VsbCBub3cuCj4+Pj4+Pj4+Pj4gQ2FuIEhhcm1vbnkgaW5jb3Jwb3JhdGUgdGhpcyBm ZWF0dXJlPwo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEknbSBub3Qgc3VyZSBpdCBpcyByZWFkeSBmb3Ig Y29tbWl0dGluZyB0byB0aGUgaGVhZCBzdHJlYW0geWV0Lgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBW aWEgb24tZGVtYW5kIGNsYXNzIHBhcnNpbmcsIHdlIGNhbiByZWR1Y2Ugc3RhcnR1cCB0aW1lIGZy b20gMjArCj4+Pj4+Pj4+Pj4gc2Vjb25kcyB0byAzIHNlY29uZHMgZm9yIGNvbGQgcnVuaW5nLCBh bmQgMTcwIG1zIHRvIDE0MCBtcyBmb3Igd2FybS11cAo+Pj4+Pj4+Pj4+IHJ1bm5pbmcgb24gQ29y ZSAyIER1byB3aXRoIFdpbmRvd3MuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gQ2FuIHlvdSB0ZWxsIG1l IGhvdyB0byByZXByb2R1Y2UgMjArc2VjIGNvbGQgc3RhcnQtdXA/ICBJIGhhdmVuJ3Qgc2Vlbgo+ Pj4+Pj4+Pj4gYW55dGhpbmcgbGlrZSB0aGF0IGluIG15IHNpbXBsZSB0ZXN0cy4KPj4+Pj4+Pj4+ Cj4+Pj4+Pj4+Pj4gQWZ0ZXIgYXBwbHlpbmcgdGhlIHBhdGNoLCBwbGVhc2Ugbm90ZSB0aGVyZSBp cyBzb21lIGNoYW5nZSB0byBhZGQgbmV3IG1vZHVsZXMuCj4+Pj4+Pj4+Pj4gKDEpIElmIHlvdSB3 YW50IHRvIGFkZCBuZXcgbW9kdWxlcy9saWJyYXJpZXMsIHBsZWFzZSBkb24ndCBwdXQgdGhlbSBp bgo+Pj4+Pj4+Pj4+IHRoZSBib290Y2xhc3NwYXRoLnByb3BlcnRpZXMgZmlsZS4gVGhpcyBmaWxl IG5vdyBvbmx5IHNhdmVzIG1vZHVsZXMKPj4+Pj4+Pj4+PiBuZWVkZWQgZHVyaW5nIHN0YXJ0dXAg KHRoZSBWTSBzdGFydHVwIG9ubHkgYWNjZXNzZXMgY2xhc3MgbGlicmFyaWVzIGluCj4+Pj4+Pj4+ Pj4gZWlnaHQgbW9kdWxlcykKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBUaGF0IHdvdWxkIGJyZWFrIHRv byBtdWNoLiAgSG93IGFib3V0IGNyZWF0aW5nIGEgbmV3IGZpbGUgcmF0aGVyIHRoYW4KPj4+Pj4+ Pj4+IHJlLXB1cnBvc2luZyBhbiBleGlzdGluZyBmaWxlIHdpdGggZGlmZmVyZW50IHNlbWFudGlj cz8gIFRoaXMgZmlsZSBpcwo+Pj4+Pj4+Pj4gdXNlZCBieSBKaWtlcywgSUJNIFZNRSwgdGhlIEVj bGlwc2UgcGx1Zy1pbiwgYXQgbGVhc3QuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ICgyKSBGb3IgbmV3 IG1vZHVsZXMvbGlicmFyaWVzLCBwbGVhc2UgcHV0IHRoZW0gaW4gdGhlCj4+Pj4+Pj4+Pj4gbW9k dWxlbGlicmFyeW1hcHBpbmcucHJvcGVydGllcyBmaWxlLiBZb3Ugc2hvdWxkIHNwZWNpZnkgdGhl IG1vZHVsZQo+Pj4+Pj4+Pj4+IG5hbWUgYW5kIGl0cyBleHBvcnRlZCBjbGFzcyBsaWJyYXJ5LiBI ZXJlIGlzIG9uZSBleGFtcGxlOgo+Pj4+Pj4+Pj4+IG1hdGguamFyPWphdmEubWF0aCwgd2hlcmUg Im1hdGguamFyIiBtZWFucyB0aGUgbW9kdWxlIG5hbWUsIGFuZAo+Pj4+Pj4+Pj4+ICJqYXZhLm1h dGgiIG1lYW5zIHRoZSBjbGFzcyBsaWJyYXJpZXMgdGhpcyBtb2R1bGUgZXhwb3J0cy4KPj4+Pj4+ Pj4+Cj4+Pj4+Pj4+PiBBcyB3ZSBkaXNjdXNzZWQgb24gYW5vdGhlciB0aHJlYWQsIGl0cyB1bmNs ZWFyIGlmIHRoZSB0aW1lIGlzIHNwZW50IGluCj4+Pj4+Pj4+PiBmb2xsb3dpbmcgdGhlIHNsb3cg aW5kZXhpbmcgdGhyb3VnaCB0aGUgY2xhc3NwYXRoL0pBUiBkaXJlY3Rvcmllcywgb3IKPj4+Pj4+ Pj4+IHdoZXRoZXIgaXQgaXMgc3BlZWQgb2YgbG9hZGluZyBieXRlcyBvbmNlIHdlIGtub3cgd2hh dCB3ZSBuZWVkLiAgSSB0aGluawo+Pj4+Pj4+Pj4gdGhhdCBpdCBpcyBwcmVtYXR1cmUgdG8gYWJh bmRvbiB0aGUgSkFSIG1hbmlmZXN0IGRhdGEgYXMgdGhlIHByaW5jaXBhbAo+Pj4+Pj4+Pj4gc291 cmNlIG9mIG1ldGFkYXRhIHVudGlsIHdlIHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gdGhpcyBzb2x2 ZXMuCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gQ2FuIHdlIG1lYXN1cmUgd2hlcmUgdGhlIHRpbWUgaXMg c3BlbnQgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24/Cj4+Pj4+Pj4+PiBJIHRoaW5rIGl0 IHdpbGwgaGVscCBndWlkZSB0aGlzIGFwcHJvYWNoIHRvIGEgYmV0dGVyIHNvbHV0aW9uLgo+Pj4+ Pj4+Pj4gV2hhdCB0b29scyBkbyB5b3UgcmVjb21tZW5kIGZvciBwcm9maWxpbmcgc3RhcnQtdXA/ Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gUmVnYXJkcwo+Pj4+Pj4+Pj4gVGltCj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gLS0KPj4+Pj4+Pj4g0KEg 0YPQstCw0LbQtdC90LjQtdC8LAo+Pj4+Pj4+PiDQkNC70LXQutGB0LXQuSDQpNC10LTQvtGC0L7Q siwKPj4+Pj4+Pj4g0JfQkNCeIMKr0KLQtdC70LXQutC+0Lwg0K3QutGB0L/RgNC10YHRgcK7Cj4+ Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IC0tCj4+Pj4+PiDQoSDR g9Cy0LDQttC10L3QuNC10LwsCj4+Pj4+PiDQkNC70LXQutGB0LXQuSDQpNC10LTQvtGC0L7QsiwK Pj4+Pj4+INCX0JDQniDCq9Ci0LXQu9C10LrQvtC8INCt0LrRgdC/0YDQtdGB0YHCuwo+Pj4+Pj4K Pj4+Pj4KPj4+Pgo+Pj4KPj4KPgo=