Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 52331 invoked from network); 9 Mar 2006 17:57:24 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 9 Mar 2006 17:57:24 -0000 Received: (qmail 57047 invoked by uid 500); 9 Mar 2006 17:57:18 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 56999 invoked by uid 500); 9 Mar 2006 17:57:18 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 56987 invoked by uid 99); 9 Mar 2006 17:57:18 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Mar 2006 09:57:18 -0800 X-ASF-Spam-Status: No, hits=0.3 required=10.0 tests=HTML_FONT_BIG,HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of peter.m.chen1980@gmail.com designates 64.233.182.201 as permitted sender) Received: from [64.233.182.201] (HELO nproxy.gmail.com) (64.233.182.201) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 Mar 2006 09:57:16 -0800 Received: by nproxy.gmail.com with SMTP id x29so402288nfb for ; Thu, 09 Mar 2006 09:56:52 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=YdyTRvpF0pY2CZ1b8ndBJZRBoI47CC/M4uksxBPk/WtkAM8FBTiBrwMJlWC/7tlbkq8fbgF/MHhuut1QEAmQpj7LV7ZkAxX2GK0At0NbpMUH4ItX3oMpM/0uSpAq0nruAGakY22EsdEx5tVR50gPOYTJFar0nUutiZA9/CXBHP0= Received: by 10.49.94.20 with SMTP id w20mr601830nfl; Thu, 09 Mar 2006 09:56:52 -0800 (PST) Received: by 10.49.36.20 with HTTP; Thu, 9 Mar 2006 09:56:52 -0800 (PST) Message-ID: <39cd3e220603090956y45a54db6m@mail.gmail.com> Date: Fri, 10 Mar 2006 01:56:52 +0800 From: "Peter M.Chen" To: dev@tomcat.apache.org Subject: source code change : Tomcat reload class at runtime(version 5.0.28) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_12305_27187276.1141927012640" X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N ------=_Part_12305_27187276.1141927012640 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline KlRvbWNhdCByZWxvYWQgY2xhc3MgYXQgcnVudGltZSh2ZXJzaW9uIDUuMC4yOCkqCgogICAxLgoK ICAgQmVmb3JlIHN0YXJ0CgpNeSBFbmdsaXNoIGlzIHBvb2wsIHNvIEkgY2FuJ3Qgc2F5IGNvbXBs ZXRlIGFuZCBjbGVhciBhbnkgbW9yZSwgc29tZXRpbWVzCmxvb2sgbXkgY29kZSBtYXliZSBlYXN5 IHRvIGxvb2sgbXkgZGVzY3JpcHRpb24gd29yZC4gdGhhbmtzLgoKCgoKICAgMS4KCiAgIFdoeSBk byB0aGlzPwoKV2hlbiBJIHdyaXRpbmcgcHJvZ3JhbSwgcnVubmluZyBhdCB0b21jYXQsIGlmIEkg d2FudCB0byBzZWUgdGhlIHJlc3VsdCB3aGVuCkkgcmVjb21waWxlIHNvbWUgY2xhc3NlcywgSSBt dXN0IHJlbG9hZCB3ZWIgYXBwbGljYXRpb24oc2FtZSBhcyBzZXQKcmVsb2FkYWJsZT0idHJ1ZSIp LCBvciByZXN0YXJ0IFRvbWNhdCEgaXQgc3BlbnQgbXVjaCB0aW1lLiBTbyBJIHRoaW5rIGlmIEkK Y2FuIHJlbG9hZCBjbGFzcyBhdCBydW50aW1lLCB0aGF0IGNhbiBoZWxwIG1lIG1vcmUuCgpNeSBm cmllbmRzIHRlbGwgbWUsIGluIFdFQkxPR0lDLCBXRUJTUEhFUkUsIGV2ZW4gUkVTSU4sIHRoZXkg Y2FuIHJlbG9hZApjbGFzc2VzIGF0IHJ1bnRpbWUsIGFuZCBoYXZlIGEgY29vbCBuYW1lIHRoYXQg Y2FsbCAiZGV2ZWxvcGVyIG1vZGUiLiBidXQKdG9tY2F0IGNhbid0LiBzbywgSSBtdXN0IGNoYW5n ZSBhIGxpdHRsZSBzb3VyY2UgY29kZSBvZiBUb21jYXQgYW5kIGxldCBpdApoYXMgdGhpcyBmdW5j dGlvbiwgYnV0Li4uIG5vdCBhdXRvbWF0aWMgcmVsb2FkLCBpdCdzIG1hbnVhbCBkcml2ZSByZWxv YWQuCgoKCgogICAxLgoKICAgTW9kaWZ5IHByb2Nlc3MKICAgMS4KCiAgICAgIGRlc2NyaXB0aW9u CgpQbGVhc2UgcHV0IHRoZSBuZXcgY29kZSB0byB0aGUgamF2YSBmaWxlIGVuZCwgYmVjYXVzZSBJ IHdhbnQgdG8ga2VlcCBvbGQKbGluZSBvZiBjb2RlIHdoZW4gSSBwb2ludCBvdXQgd2hhdCBsaW5l IG9mIGNvZGUgSSBjaGFuZ2UuCgoKCgogICAxLgoKICAgICAgUmVtb3ZlIHJlc291cmNlIGVudHJ5 CgppbiBvcmcuYXBhY2hlLmNhdGFsaW5hLmxvYWRlcldlYmFwcENsYXNzTG9hZGVy77+977+9IGhh cyBhIHByb3BlcnR5CnJlc291cmNlRW50cmllc++/ve+/vSBpdCByZW1lbWJlciB0aGUgY2xhc3Nl cyB3aG8gY29tZXMgZnJvbSAnV0VCLUlORi9jbGFzc2VzJwpkaXJlY3Rvcnnvv73vv70gc28gd2hl biBJIG5lZWQgdG8gcmVsb2FkIGEgY2xhc3Pvv73vv70gSSBuZWVkIHRvIGRlbGV0ZSBpdCBmcm9t CnJlc291cmNlRW50cmllc++/ve+/vSBJIHdyaXRlIGEgbWV0aG9kIHRvIGNhbGzvv73vv70KCipw dWJsaWMgKiAqYm9vbGVhbiogcmVtb3ZlUmVzb3VyY2VFbnRyeShTdHJpbmcgbmFtZSkgewoKKmlm KiAocmVzb3VyY2VFbnRyaWVzLmNvbnRhaW5zS2V5KG5hbWUpKSB7CgpyZXNvdXJjZUVudHJpZXMu cmVtb3ZlKG5hbWUpOwoKKnJldHVybiogKnRydWUqOwoKfQoKKnJldHVybiogKmZhbHNlKjsKCn0K CgoKICAgMS4KCiAgICAgIEEgZmxhZyBwb2ludCBvdXQgd2hldGhlciBXZWJhcHBDbGFzc0xvYWRl ciBuZWVkIHRvIHJlbG9hZCBhCiAgICAgIGNsYXNzCgoqcHJpdmF0ZSogKmJvb2xlYW4qIGlzUmVs b2FkID0gKmZhbHNlKjsKCgogKnB1YmxpYyogKmJvb2xlYW4qIGlzUmVsb2FkKCkgewoKKnJldHVy biogaXNSZWxvYWQ7Cgp9CgoKICpwdWJsaWMqICp2b2lkKiBzZXRSZWxvYWQoKmJvb2xlYW4qIGlz UmVsb2FkKSB7CgoqdGhpcyogLmlzUmVsb2FkID0gaXNSZWxvYWQ7Cgp9CgoKCiAgIDEuCgogICAg ICBEeW5hbWljQ2xhc3NMb2FkZXIKCkkgbmVlZCB0byBjcmVhdGUgYSBzaW1wbGUgY2xhc3MgbG9h ZGVyIHRvIGR5bmFtaWMgbG9hZCBjbGFzcyBiZWNhdXNlIO+/ve+/vU9uZQpjbGFzcyBsb2FkZXIg b25seSBjYW4gbG9hZCBhIGNsYXNzIG9uY2Xvv73vv70uIO+/ve+/vQoKKnBhY2thZ2UqIG9yZy5h cGFjaGUuY2F0YWxpbmEubG9hZGVyOwoKCiAqaW1wb3J0KiBqYXZhLm5ldC5VUkw7CgoqaW1wb3J0 KiBqYXZhLm5ldC5VUkxDbGFzc0xvYWRlcjsKCippbXBvcnQqIGphdmEuc2VjdXJpdHkuQ29kZVNv dXJjZTsKCippbXBvcnQqIGphdmEudXRpbC4qOwoKCiAvKioKCioKCiogKkBhdXRob3IgKnBldGVy CgoqCgoqLwoKKnB1YmxpYyogKmNsYXNzKiBEeW5hbWljQ2xhc3NMb2FkZXIgKmV4dGVuZHMqIFVS TENsYXNzTG9hZGVyIHsKCi8qIHBhcmVudCBjbGFzcyBsb2FkZXIsIGl0J3Mgb3JnLmFwYWNoZS5j YXRhbGluYS5sb2FkZXIuV2ViYXBwQ2xhc3NMb2FkZXIgKi8KCipwcml2YXRlKiBDbGFzc0xvYWRl ciBwYXJlbnQgPSAqbnVsbCo7CgoKIC8qIGxpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgY2xhc3NlcyBu YW1lcyAqLwoKKnByaXZhdGUqIExpc3QgY2xhc3NOYW1lcyA9ICpudWxsKjsKCgogLyoqCgoqICpA cGFyYW0gKnBhcmVudAoKKiBoZXJlIGlzb3JnLmFwYWNoZS5jYXRhbGluYS5sb2FkZXIuV2ViYXBw Q2xhc3NMb2FkZXIKCiovCgoqcHVibGljKiBEeW5hbWljQ2xhc3NMb2FkZXIoQ2xhc3NMb2FkZXIg cGFyZW50KSB7Cgoqc3VwZXIqKCAqbmV3KiBVUkxbMF0pOwoKY2xhc3NOYW1lcyA9ICpuZXcqIEFy cmF5TGlzdCgpOwoKKnRoaXMqLnBhcmVudCA9IHBhcmVudDsKCn0KCgogLyoqCgoqIHRoaXMgbWV0 aG9kIHdpbGwgY2FsbCBpbiBXZWJhcHBDbGFzc0xvYWRlciAuCgoqCgoqICpAcGFyYW0gKm5hbWUK CiogKkBwYXJhbSAqY2xhc3NEYXRhCgoqICpAcGFyYW0gKmNvZGVTb3VyY2UKCiogKkByZXR1cm4g KgoKKiAqQHRocm93cyAqQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgoKKi8KCipwdWJsaWMqIENsYXNz IGxvYWRDbGFzcyhTdHJpbmcgbmFtZSwgKmJ5dGUqW10gY2xhc3NEYXRhLCBDb2RlU291cmNlCmNv ZGVTb3VyY2UpCgoqdGhyb3dzKiBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKCippZiogKGNsYXNz TmFtZXMuY29udGFpbnMobmFtZSkpIHsKCipyZXR1cm4qIGxvYWRDbGFzcyhuYW1lKTsKCn0gKmVs c2UqIHsKCmNsYXNzTmFtZXMuYWRkKG5hbWUpOwoKKnJldHVybiogZGVmaW5lQ2xhc3MobmFtZSwg Y2xhc3NEYXRhLCAwLCBjbGFzc0RhdGEubGVuZ3RoLCBjb2RlU291cmNlKTsKCn0KCn0KCgogLyog KgoKKiB3aGVuIGEgY2xhc3Mgbm90IGluIGNsYXNzTmFtZXMsIGxldCBwYXJlbnQgbG9hZCBpdAoK KiBAc2VlIGphdmEubGFuZy5DbGFzc0xvYWRlciNsb2FkQ2xhc3MoamF2YS5sYW5nLlN0cmluZykK CiovCgoqcHVibGljKiBDbGFzcyBsb2FkQ2xhc3MoU3RyaW5nIG5hbWUpICp0aHJvd3MqIENsYXNz Tm90Rm91bmRFeGNlcHRpb24gewoKKmlmKiAoIWNsYXNzTmFtZXMuY29udGFpbnMobmFtZSkpIHsK CipyZXR1cm4qIHBhcmVudC5sb2FkQ2xhc3MobmFtZSk7Cgp9CgoqcmV0dXJuKiAqc3VwZXIqLmxv YWRDbGFzcyhuYW1lKTsKCn0KCgogfQoKCgogICAxLgoKICAgICAgQWRkIER5bmFtaWNDbGFzc0xv YWRlciBpbnRvIFdlYmFwcENsYXNzTG9hZGVyCiAgICAgIDEuCgogICAgICAgICBBZGQgcHJvcGVy dHkKCipwcml2YXRlKiBEeW5hbWljQ2xhc3NMb2FkZXIgZHluYW1pY0NsYXNzTG9hZGVyID0gKm5l dyogRHluYW1pY0NsYXNzTG9hZGVyKCoKdGhpcyopOwoKCgoKICAgMS4KCiAgICAgICAgIEFkZCBy ZWNyZWF0ZSBtZXRob2QsIHRoYXQgSSBjYW4gb3ZlcnJpZGUgb2xkIGNsYXNzIGxvYWRlcgogICAg ICAgICB3aGVuIGJlZ2luIG5ldyByZWxvYWQuCgoqcHVibGljKiAqdm9pZCogcmVDcmVhdGVEeW5h bWljQ2xhc3NMb2FkZXIoKSB7CgpkeW5hbWljQ2xhc3NMb2FkZXIgPSAqbmV3KiBEeW5hbWljQ2xh c3NMb2FkZXIoKnRoaXMqKTsKCn0KCgoKICAgMS4KCiAgICAgIG1vZGlmeSBXZWJhcHBDbGFzc0xv YWRlcgogICAgICAxLgoKICAgICAgICAgbGluZSA4MzIsIHNldCBmaW5kQ2xhc3MgbWV0aG9kIHRv IHB1YmxpYwoKKnB1YmxpYyogQ2xhc3MgZmluZENsYXNzKFN0cmluZyBuYW1lKSAqdGhyb3dzKiBD bGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKCgoKCiAgIDEuCgogICAgICAgICBsaW5lIDE1Njk6IGFk ZCBuZXh0IGxpbmUgY29kZQoKKmlmKiAoaXNSZWxvYWQpIHJlbW92ZVJlc291cmNlRW50cnkobmFt ZSk7CgoKCgogICAxLgoKICAgICAgICAgbGluZTE1Nzc6IG1heWJlIGlzIGEgYnVnLCBpIGZvcmdl dCB0aGUgcmVhc29uCgoqaWYqICgoZW50cnkgPT0gKm51bGwqKSB8fCAoZW50cnkuYmluYXJ5Q29u dGVudCA9PSAqbnVsbCopKQoKY2hhbmdlIHRvID09PgoKKmlmKiAoKGVudHJ5ID09ICpudWxsKikg fHwgKGVudHJ5LmxvYWRlZENsYXNzID09ICpudWxsKiAmJgplbnRyeS5iaW5hcnlDb250ZW50ID09 ICpudWxsKikpCgoKCiAgIDEuCgogICAgICAgICBsaW5lIDE2MzN+MTYzNgoKKmlmKiAoZW50cnku bG9hZGVkQ2xhc3MgPT0gKm51bGwqKSB7CgpjbGF6eiA9IGRlZmluZUNsYXNzKG5hbWUsIGVudHJ5 LmJpbmFyeUNvbnRlbnQsIDAsIGVudHJ5LmJpbmFyeUNvbnRlbnQubGVuZ3RoCiwKCmNvZGVTb3Vy Y2UpOwoKY2hhbmdlIHRvID09PgoKKiBieXRlKltdIGNsYXNzRGF0YSA9ICpuZXcqICpieXRlKltl bnRyeS5iaW5hcnlDb250ZW50Lmxlbmd0aF07CgpTeXN0ZW0uYXJyYXljb3B5KGVudHJ5LmJpbmFy eUNvbnRlbnQsIDAsIGNsYXNzRGF0YSwgMCwKCmNsYXNzRGF0YS5sZW5ndGgpOwoKKmlmKiAoZW50 cnkubG9hZGVkQ2xhc3MgPT0gKm51bGwqKSB7CgpjbGF6eiA9IGlzUmVsb2FkID8KCmR5bmFtaWND bGFzc0xvYWRlci5sb2FkQ2xhc3MobmFtZSwKCmNsYXNzRGF0YSwgY29kZVNvdXJjZSkgOgoKZGVm aW5lQ2xhc3MobmFtZSwKCmNsYXNzRGF0YSwgMCwgY2xhc3NEYXRhLmxlbmd0aCwgY29kZVNvdXJj ZSk7CgoKCiAgIDEuCgogICAgICBUZXN0IGNvZGUKICAgICAgMS4KCiAgICAgICAgIHRlc3QuanNw CgpJIHdyaXRlIHRvICRDQVRBTElOQV9IT01FL3dlYmFwcHMvUk9PVC90ZXN0LmpzcO+/ve+/vSBJ IHVzZSByZWZsZWN0aW9uIGNvZGUgdG8KY2FsbCBXZWJhcHBDbGFzc0xvYWRlciBtZXRob2QgYmVj YXVzZSBpdCB3b3VsZG4ndCBsb2FkIFRvbWNhdCBrZXJuZWwgY2xhc3MKaW4gYSB3ZWIgYXBw77+9 77+9Cgo8JQoKQ2xhc3NMb2FkZXIgbG9hZGVyID0gKFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0 Q29udGV4dENsYXNzTG9hZGVyKCkpOwoKQ2xhc3MgY2xhenogPSBsb2FkZXIuZ2V0Q2xhc3MoKTsK CmphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBzZXRSZWxvYWQgPSBjbGF6ei5nZXRNZXRob2QoInNl dFJlbG9hZCIsICpuZXcqQ2xhc3NbXXsKKmJvb2xlYW4qLipjbGFzcyp9KTsKCmphdmEubGFuZy5y ZWZsZWN0Lk1ldGhvZCByZUNyZWF0ZSA9IGNsYXp6LmdldE1ldGhvZCgKInJlQ3JlYXRlRHluYW1p Y0NsYXNzTG9hZGVyIiwgKm51bGwqKTsKCmphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBmaW5kQ2xh c3MgPSBjbGF6ei5nZXRNZXRob2QoImZpbmRDbGFzcyIsCipuZXcqQ2xhc3NbXXtTdHJpbmcuCipj bGFzcyp9KTsKCiByZUNyZWF0ZS5pbnZva2UobG9hZGVyLCAqbnVsbCopOwoKc2V0UmVsb2FkLmlu dm9rZShsb2FkZXIsICpuZXcqIE9iamVjdFtdeyp0cnVlKn0pOwoKQ2xhc3MgQSA9IChDbGFzcylm aW5kQ2xhc3MuaW52b2tlKGxvYWRlciwgKm5ldyogT2JqZWN0W117Im9yZy5BQ2xhc3MifSk7Cgpz ZXRSZWxvYWQuaW52b2tlKGxvYWRlciwgKm5ldyogT2JqZWN0W117KmZhbHNlKn0pOwoKQS5uZXdJ bnN0YW5jZSgpOwoKLy8gSWYgdSB1c2UgbmV4dCBsaW5lIGNvZGXvv73vv70gd2hlbiByZWNvbXBp bGUgdGhlIGNsYXNzIGNvZGXvv73vv70gcGxlYXNlIGNoYW5nZQp0aGUganNwIGNvZGUgLCBhbHNv IGxldCBqc3AgcmVjb21waWxlLgoKLy9vcmcuQUNsYXNzIGEgPSAob3JnLkFDbGFzcylBLm5ld0lu c3RhbmNlKCk7CgogLy8gdGhlIG5leHQgY29kZSBpdCB1c2VkIHRvIHRlc3Qgd2hlbiBsb2FkIGEg Y2xhc3Mgd2hvIG5vdCBpbgpEeW5hbWljQ2xhc3NMb2FkZXIuY2xhc3NOYW1lcyBsaXN0LgoKLy9h LnRlc3QoKTsKCi8vamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIHRlc3QgPSBhLmdldENsYXNzKCku Z2V0TWV0aG9kKCJ0ZXN0IiwgbnVsbCk7CgovL3Rlc3QuaW52b2tlKGEsIG51bGwpOwoKJT4KCgoK ICAgMS4KCiAgICAgICAgIG9yZy5BQ2xhc3MKCipwYWNrYWdlKiBvcmc7CgoKICpwdWJsaWMqICpj bGFzcyogQUNsYXNzIHsKCipwdWJsaWMqIEFDbGFzcygpIHsKCi8vIHUgY2FuIGNoYW5nZSBuZXh0 IGxpbmUgdG8gdGVzdCB3aGV0aGVyZSB0aGUgdG9tY2F0IHJlbG9hZCBpdAoKU3lzdGVtLm91dC5w cmludGxuKCJBQ2xhc3MgdjMiKTsKCn0KCgogKnB1YmxpYyogKnZvaWQqIGNyZWF0ZUJDbGFzcygp IHsKCipuZXcqIEJDbGFzcygpOwoKfQoKfQoKCgogICAxLgoKICAgICAgICAgb3JnLkJDbGFzcwoK KnBhY2thZ2UqIG9yZzsKCgogKnB1YmxpYyogKmNsYXNzKiBCQ2xhc3MgewoKKnB1YmxpYyogQkNs YXNzKCkgewoKLy8gdSBjYW4gY2hhbmdlIG5leHQgbGluZSB0byB0ZXN0IHdoZXRoZXJlIHRoZSB0 b21jYXQgcmVsb2FkIGl0CgpTeXN0ZW0ub3V0LnByaW50bG4oIkJDbGFzcyB2MSIpOwoKfQoKfQoK CgogICAxLgoKICAgICAgVGVzdCBzdGVwCiAgICAgIDEuCgogICAgICAgICBtb2RpZnkgYW5kIGJ1 aWxkIFRvbWNhdO+/ve+/vQogICAgICAgICAyLgoKICAgICAgICAgY29tcGlsZSBvcmcuQUNsYXNz IGFuZCBvcmcuQkNsYXNzCiAgICAgICAgIDMuCgogICAgICAgICBzdGFydHVwIFRvbWNhdCBhbmQg dXNlIGJyb3dzZXIgdG8gYnJvd3NlCiAgICAgICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC90ZXN0 LmpzcAogICAgICAgICA0LgoKICAgICAgICAgbW9kaWZ5IFN5c3RlbS5vdXQucHJpbnRsbigpOyBp biBvcmcuQUNsYXNzIGFuZCByZWNvbXBpbGUKICAgICAgICAgaXTvv73vv70KICAgICAgICAgNS4K CiAgICAgICAgIHJlZnJlc2ggYnJvd3Nlcu+/ve+/vQogICAgICAgICA2LgoKICAgICAgICAgc2Vl IFRvbWNhdCBjb25zb2xlIHRvIGNoZWNrIHdoZXRoZXIgaXQgcmVsb2FkIHRoZSBjbGFzcz8KICAg ICAgICAgNy4KCiAgICAgICAgIEdvb2QgTHVjayEgOikpKQo= ------=_Part_12305_27187276.1141927012640--