Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WBkam-0003qH-62 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Feb 2014 12:31:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1WBkal-0007Aj-CQ for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Feb 2014 12:31:35 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WBkaj-0007Aa-A6 for pgsql-hackers@postgresql.org; Fri, 07 Feb 2014 12:31:33 +0000 Received: from tama50.ecl.ntt.co.jp ([129.60.39.147]) by makus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WBkab-0001sY-9p for pgsql-hackers@postgresql.org; Fri, 07 Feb 2014 12:31:32 +0000 Received: from mfs6.rdh.ecl.ntt.co.jp (mfs6.rdh.ecl.ntt.co.jp [129.60.39.149]) by tama50.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s17CVL8j022973; Fri, 7 Feb 2014 21:31:21 +0900 Received: from mfs6.rdh.ecl.ntt.co.jp (localhost.localdomain [127.0.0.1]) by mfs6.rdh.ecl.ntt.co.jp (Postfix) with ESMTP id 4356BE014C; Fri, 7 Feb 2014 21:31:21 +0900 (JST) Received: from imail3.m.ecl.ntt.co.jp (imail3.m.ecl.ntt.co.jp [129.60.5.248]) by mfs6.rdh.ecl.ntt.co.jp (Postfix) with ESMTP id 36BCDE014B; Fri, 7 Feb 2014 21:31:21 +0900 (JST) Received: from [129.60.241.197] ([129.60.241.197]) by imail3.m.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s17CVKHM002132; Fri, 7 Feb 2014 21:31:21 +0900 Message-ID: <52F4D206.7010704@lab.ntt.co.jp> Date: Fri, 07 Feb 2014 21:31:02 +0900 From: Etsuro Fujita User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Shigeru Hanada CC: PostgreSQL-development Subject: Re: inherit support for foreign tables References: <12432.1384406906@sss.pgh.pa.us> <10163.1384786524@sss.pgh.pa.us> <52DDD071.9090405@ak.jp.nec.com> <52E5F3FD.6050000@lab.ntt.co.jp> <52E6137B.1080704@lab.ntt.co.jp> In-Reply-To: Content-Type: multipart/mixed; boundary="------------080305070805060207040703" X-TM-AS-MML: No X-Pg-Spam-Score: -2.5 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------080305070805060207040703 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Hanada-san, Sorry for the delay. (2014/01/30 14:01), Shigeru Hanada wrote: >> 2014-01-27 Etsuro Fujita : >>> While still reviwing this patch, I feel this patch has given enough >>> consideration to interactions with other commands, but found the following >>> incorrect? behabior: >>> >>> postgres=# CREATE TABLE product (id INTEGER, description TEXT); >>> CREATE TABLE >>> postgres=# CREATE FOREIGN TABLE product1 () INHERITS (product) SERVER fs >>> OPTIONS (filename '/home/foo/product1.csv', format 'csv'); >>> CREATE FOREIGN TABLE >>> postgres=# ALTER TABLE product ALTER COLUMN description SET STORAGE >>> EXTERNAL; >>> ERROR: "product1" is not a table or materialized view >>> >>> ISTN the ALTER TABLE simple recursion mechanism (ie ATSimpleRecursion()) >>> should be modified for the ALTER COLUMN SET STORAGE case. > It seems little bit complex than I expected. Currently foreign tables > deny ALTER TABLE SET STORAGE with message like below, because foreign > tables don't have storage in the meaning of PG heap tables. > > ERROR: "pgbench1_accounts_c1" is not a table or materialized view > > At the moment we don't use attstorage for foreign tables, so allowing > SET STORAGE against foreign tables never introduce visible change > except \d+ output of foreign tables. But IMO such operation should > not allowed because users would be confused. So I changed > ATExecSetStorage() to skip on foreign tables. This allows us to emit > ALTER TABLE SET STORAGE against ordinary tables in upper level of > inheritance tree, but it have effect on only ordinary tables in the > tree. > > This also allows direct ALTER FOREIGN TABLE SET STORAGE against > foreign table but the command is silently ignored. SET STORAGE > support for foreign tables is not documented because it may confuse > users. > > With attached patch, SET STORAGE against wrong relations produces > message like this. Is it confusing to mention foreign table here? > > ERROR: "pgbench1_accounts_pkey" is not a table, materialized view, or > foreign table ITSM that would be confusing to users. So, I've modified the patch so that we continue to disallow SET STORAGE on a foreign table *in the same manner as before*, but, as your patch does, allow it on an inheritance hierarchy that contains foreign tables, with the semantics that we quietly ignore the foreign tables and apply the operation to the plain tables, by modifying the ALTER TABLE simple recursion mechanism. Attached is the updated version of the patch. I'll continue the patch review a bit more, though the patch looks good generally to me except for the abobe issue and the way that the ANALYZE command works. For the latter, if there are no objections, I'll merge the ANALYZE patch [1] with your patch. Thanks, [1] http://www.postgresql.org/message-id/52EB10AC.4070307@lab.ntt.co.jp Best regards, Etsuro Fujita --------------080305070805060207040703 Content-Type: text/plain; charset=Shift_JIS; name="foreign_inherit-v2.1.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="foreign_inherit-v2.1.patch" KioqIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCi0tLSBiL2RvYy9zcmMvc2dt bC9kZGwuc2dtbAoqKioqKioqKioqKioqKioKKioqIDI1OCwyNjMgKioqKiBD UkVBVEUgVEFCTEUgcHJvZHVjdHMgKAotLS0gMjU4LDI3NCAtLS0tCiAgICAg ZXZlbiBpZiB0aGUgdmFsdWUgY2FtZSBmcm9tIHRoZSBkZWZhdWx0IHZhbHVl IGRlZmluaXRpb24uCiAgICA8L3BhcmE+CiAgCisgICA8bm90ZT4KKyAgICA8 cGFyYT4KKyAgICAgTm90ZSB0aGF0IGNvbnN0cmFpbnRzIGNhbiBiZSBkZWZp bmVkIG9uIGZvcmVpZ24gdGFibGVzIHRvbywgYnV0IHN1Y2gKKyAgICAgY29u c3RyYWludHMgYXJlIG5vdCBlbmZvcmNlZCBvbiBpbnNlcnQgb3IgdXBkYXRl LiAgVGhvc2UgY29uc3RyYWludHMgYXJlCisgICAgICJhc3NlcnRpdmUiLCBh bmQgd29yayBvbmx5IHRvIHRlbGwgcGxhbm5lciB0aGF0IHNvbWUga2luZCBv ZiBvcHRpbWl6YXRpb24KKyAgICAgc3VjaCBhcyBjb25zdHJhaW50IGV4Y2x1 c2lvbiBjYW4gYmUgY29uc2lkZXJkLiAgVGhpcyBzZWVtcyB1c2VsZXNzLCBi dXQKKyAgICAgYWxsb3dzIHVzIHRvIHVzZSBmb3JpZWduIHRhYmxlIGFzIGNo aWxkIHRhYmxlIChzZWUKKyAgICAgPHhyZWYgbGlua2VuZD0iZGRsLWluaGVy aXQiPikgdG8gb2ZmLWxvYWQgdG8gbXVsdGlwbGUgc2VydmVycy4KKyAgICA8 L3BhcmE+CisgICA8L25vdGU+CisgCiAgICA8c2VjdDIgaWQ9ImRkbC1jb25z dHJhaW50cy1jaGVjay1jb25zdHJhaW50cyI+CiAgICAgPHRpdGxlPkNoZWNr IENvbnN0cmFpbnRzPC90aXRsZT4KICAKKioqKioqKioqKioqKioqCioqKiAy MDIxLDIwMjggKioqKiBDUkVBVEUgVEFCTEUgY2FwaXRhbHMgKAogICAgPC9w YXJhPgogIAogICAgPHBhcmE+CiEgICAgSW4gPHByb2R1Y3RuYW1lPlBvc3Rn cmVTUUw8L3Byb2R1Y3RuYW1lPiwgYSB0YWJsZSBjYW4gaW5oZXJpdCBmcm9t CiEgICAgemVybyBvciBtb3JlIG90aGVyIHRhYmxlcywgYW5kIGEgcXVlcnkg Y2FuIHJlZmVyZW5jZSBlaXRoZXIgYWxsCiAgICAgcm93cyBvZiBhIHRhYmxl IG9yIGFsbCByb3dzIG9mIGEgdGFibGUgcGx1cyBhbGwgb2YgaXRzIGRlc2Nl bmRhbnQgdGFibGVzLgogICAgIFRoZSBsYXR0ZXIgYmVoYXZpb3IgaXMgdGhl IGRlZmF1bHQuCiAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgcXVl cnkgZmluZHMgdGhlIG5hbWVzIG9mIGFsbCBjaXRpZXMsCi0tLSAyMDMyLDIw MzkgLS0tLQogICAgPC9wYXJhPgogIAogICAgPHBhcmE+CiEgICAgSW4gPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiwgYSB0YWJsZSBv ciBmb3JlaWduIHRhYmxlIGNhbgohICAgIGluaGVyaXQgZnJvbSB6ZXJvIG9y IG1vcmUgb3RoZXIgdGFibGVzLCBhbmQgYSBxdWVyeSBjYW4gcmVmZXJlbmNl IGVpdGhlciBhbGwKICAgICByb3dzIG9mIGEgdGFibGUgb3IgYWxsIHJvd3Mg b2YgYSB0YWJsZSBwbHVzIGFsbCBvZiBpdHMgZGVzY2VuZGFudCB0YWJsZXMu CiAgICAgVGhlIGxhdHRlciBiZWhhdmlvciBpcyB0aGUgZGVmYXVsdC4KICAg ICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBxdWVyeSBmaW5kcyB0aGUg bmFtZXMgb2YgYWxsIGNpdGllcywKKioqIGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKLS0tIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKKioqKioqKioqKioqKioqCioq KiA0Miw0NyAqKioqIEFMVEVSIEZPUkVJR04gVEFCTEUgWyBJRiBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bmFtZTwvcmVwbGFj ZWFiCi0tLSA0Miw0OSAtLS0tCiAgICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PmF0dHJpYnV0ZV9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4u LiBdICkKICAgICAgQUxURVIgWyBDT0xVTU4gXSA8cmVwbGFjZWFibGUgY2xh c3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBSRVNF VCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5hdHRyaWJ1dGVf b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKQogICAgICBBTFRFUiBb IENPTFVNTiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IE9QVElPTlMgKCBbIEFERCB8IFNFVCB8 IERST1AgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWyc8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+dmFsdWU8L3JlcGxhY2VhYmxlPiddIFssIC4uLiBdKQorICAgICBJTkhF UklUIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5wYXJlbnRfdGFi bGU8L3JlcGxhY2VhYmxlPgorICAgICBOTyBJTkhFUklUIDxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj5wYXJlbnRfdGFibGU8L3JlcGxhY2VhYmxl PgogICAgICBPV05FUiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT4KICAgICAgT1BUSU9OUyAoIFsg QUREIHwgU0VUIHwgRFJPUCBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1F VEVSIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbJzxyZXBsYWNlYWJsZSBjbGFz cz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+J10gWywgLi4uIF0p CiAgPC9zeW5vcHNpcz4KKioqKioqKioqKioqKioqCioqKiAxNzgsMTgzICoq KiogQUxURVIgRk9SRUlHTiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNl YWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5uYW1lPC9yZXBsYWNlYWIKLS0tIDE4 MCwyMDUgLS0tLQogICAgIDwvdmFybGlzdGVudHJ5PgogIAogICAgIDx2YXJs aXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPklOSEVSSVQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBhcmVudF90YWJsZTwvcmVwbGFj ZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgVGhpcyBmb3JtIGFkZHMgdGhlIHRhcmdldCBm b3JlaWduIHRhYmxlIGFzIGEgbmV3IGNoaWxkIG9mIHRoZSBzcGVjaWZpZWQK KyAgICAgICBwYXJlbnQgdGFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisgCisgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+Tk8gSU5IRVJJVCA8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+cGFyZW50X3RhYmxlPC9yZXBs YWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+Cisg ICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm0gcmVtb3ZlcyB0aGUgdGFy Z2V0IGZvcmVpZ24gdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBjaGlsZHJlbiBv ZgorICAgICAgIHRoZSBzcGVjaWZpZWQgcGFyZW50IHRhYmxlLgorICAgICAg PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5 PgorIAorICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxsaXRlcmFs Pk9QVElPTlMgKCBbIEFERCB8IFNFVCB8IERST1AgXSA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWyc8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxl PiddIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgICA8bGlzdGl0 ZW0+CiAgICAgICA8cGFyYT4KKioqKioqKioqKioqKioqCioqKiAzMDYsMzEx ICoqKiogQUxURVIgRk9SRUlHTiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBs YWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5uYW1lPC9yZXBsYWNlYWIKLS0t IDMyOCwzNDIgLS0tLQogICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0 aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorIAorICAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+cGFyZW50X25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgQSBw YXJlbnQgdGFibGUgdG8gYXNzb2NpYXRlIG9yIGRlLWFzc29jaWF0ZSB3aXRo IHRoaXMgZm9yZWlnbiB0YWJsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgPC92 YXJpYWJsZWxpc3Q+CiAgIDwvcmVmc2VjdDE+CiAgCioqKiBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dtbAotLS0gYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JlaWduX3RhYmxlLnNnbWwKKioqKioq KioqKioqKioqCioqKiAyMiwyNyAqKioqIENSRUFURSBGT1JFSUdOIFRBQkxF IFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1F VEVSIj50YWJsZV9uYW1lCi0tLSAyMiwyOCAtLS0tCiAgICAgIDxyZXBsYWNl YWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBbIE9QVElPTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gJzxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVwbGFjZWFibGU+JyBbLCAu Li4gXSApIF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZT5jb2xsYXRpb248L3Jl cGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCiAg ICAgIFssIC4uLiBdCiAgXSApCisgWyBJTkhFUklUUyAoIDxyZXBsYWNlYWJs ZT5wYXJlbnRfdGFibGU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAg IFNFUlZFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VydmVy X25hbWU8L3JlcGxhY2VhYmxlPgogIFsgT1BUSU9OUyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj5vcHRpb248L3JlcGxhY2VhYmxlPiAnPHJl cGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnZhbHVlPC9yZXBsYWNlYWJs ZT4nIFssIC4uLiBdICkgXQogIAoqKioqKioqKioqKioqKioKKioqIDE1OSwx NjQgKioqKiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBbIElGIE5PVCBFWElTVFMg XSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dGFibGVfbmFtZQot LS0gMTYwLDE3NiAtLS0tCiAgICAgPC92YXJsaXN0ZW50cnk+CiAgCiAgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJQQVJBTUVURVIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+PC90ZXJt PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bmFtZSBvZiBhbiBleGlzdGluZyB0YWJsZSBvciBmb3JlaWduIHRhYmxlIGZy b20gd2hpY2ggdGhlIG5ldyBmb3JlaWduCisgICAgICAgdGFibGUgYXV0b21h dGljYWxseSBpbmhlcml0cyBhbGwgY29sdW1ucywgc2VlCisgICAgICAgPHhy ZWYgbGlua2VuZD0iZGRsLWluaGVyaXQiPiBmb3IgZGV0YWlscyBvZiB0YWJs ZSBpbmhlcml0YW5jZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRl bT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAKKyAgICA8dmFybGlzdGVudHJ5 PgogICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ c2VydmVyX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICAgPGxpc3Rp dGVtPgogICAgICAgPHBhcmE+CioqKiBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwotLS0gYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXpl LmMKKioqKioqKioqKioqKioqCioqKiAxNDk2LDE1MDEgKioqKiBhY3F1aXJl X2luaGVyaXRlZF9zYW1wbGVfcm93cyhSZWxhdGlvbiBvbmVyZWwsIGludCBl bGV2ZWwsCi0tLSAxNDk2LDE1MDggLS0tLQogIAkJLyogV2UgYWxyZWFkeSBn b3QgdGhlIG5lZWRlZCBsb2NrICovCiAgCQljaGlsZHJlbCA9IGhlYXBfb3Bl bihjaGlsZE9JRCwgTm9Mb2NrKTsKICAKKyAJCS8qIElnbm9yZSBmb3JlaWdu dCB0YWJsZXMgKi8KKyAJCWlmIChjaGlsZHJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKyAJCXsKKyAJCQloZWFwX2Ns b3NlKGNoaWxkcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworIAkJCWNvbnRpbnVl OworIAkJfQorIAogIAkJLyogSWdub3JlIGlmIHRlbXAgdGFibGUgb2YgYW5v dGhlciBiYWNrZW5kICovCiAgCQlpZiAoUkVMQVRJT05fSVNfT1RIRVJfVEVN UChjaGlsZHJlbCkpCiAgCQl7CioqKiBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCi0tLSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCioqKioqKioqKioqKioqKgoqKiogMzEwLDMxNiAqKioqIHN0YXRp YyBBbHRlcmVkVGFibGVJbmZvICpBVEdldFF1ZXVlRW50cnkoTGlzdCAqKndx dWV1ZSwgUmVsYXRpb24gcmVsKTsKICBzdGF0aWMgdm9pZCBBVFNpbXBsZVBl cm1pc3Npb25zKFJlbGF0aW9uIHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0cyk7 CiAgc3RhdGljIHZvaWQgQVRXcm9uZ1JlbGtpbmRFcnJvcihSZWxhdGlvbiBy ZWwsIGludCBhbGxvd2VkX3RhcmdldHMpOwogIHN0YXRpYyB2b2lkIEFUU2lt cGxlUmVjdXJzaW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwKISAJ CQkJICBBbHRlclRhYmxlQ21kICpjbWQsIGJvb2wgcmVjdXJzZSwgTE9DS01P REUgbG9ja21vZGUpOwogIHN0YXRpYyB2b2lkIEFUVHlwZWRUYWJsZVJlY3Vy c2lvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVD bWQgKmNtZCwKICAJCQkJCSAgTE9DS01PREUgbG9ja21vZGUpOwogIHN0YXRp YyBMaXN0ICpmaW5kX3R5cGVkX3RhYmxlX2RlcGVuZGVuY2llcyhPaWQgdHlw ZU9pZCwgY29uc3QgY2hhciAqdHlwZU5hbWUsCi0tLSAzMTAsMzE3IC0tLS0K ICBzdGF0aWMgdm9pZCBBVFNpbXBsZVBlcm1pc3Npb25zKFJlbGF0aW9uIHJl bCwgaW50IGFsbG93ZWRfdGFyZ2V0cyk7CiAgc3RhdGljIHZvaWQgQVRXcm9u Z1JlbGtpbmRFcnJvcihSZWxhdGlvbiByZWwsIGludCBhbGxvd2VkX3Rhcmdl dHMpOwogIHN0YXRpYyB2b2lkIEFUU2ltcGxlUmVjdXJzaW9uKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHJlbCwKISAJCQkJICBBbHRlclRhYmxlQ21kICpj bWQsIGJvb2wgcmVjdXJzZSwKISAJCQkJICBib29sIGluY2x1ZGVfZm9yZWln biwgTE9DS01PREUgbG9ja21vZGUpOwogIHN0YXRpYyB2b2lkIEFUVHlwZWRU YWJsZVJlY3Vyc2lvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFs dGVyVGFibGVDbWQgKmNtZCwKICAJCQkJCSAgTE9DS01PREUgbG9ja21vZGUp OwogIHN0YXRpYyBMaXN0ICpmaW5kX3R5cGVkX3RhYmxlX2RlcGVuZGVuY2ll cyhPaWQgdHlwZU9pZCwgY29uc3QgY2hhciAqdHlwZU5hbWUsCioqKioqKioq KioqKioqKgoqKiogNDY1LDQ3NCAqKioqIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQpCiAgCQll cmVwb3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEFCTEVfREVGSU5JVElPTiksCiAgCQkJCSBlcnJtc2coIk9OIENPTU1JVCBj YW4gb25seSBiZSB1c2VkIG9uIHRlbXBvcmFyeSB0YWJsZXMiKSkpOwohIAlp ZiAoc3RtdC0+Y29uc3RyYWludHMgIT0gTklMICYmIHJlbGtpbmQgPT0gUkVM S0lORF9GT1JFSUdOX1RBQkxFKQohIAkJZXJlcG9ydChFUlJPUiwKISAJCQkJ KGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiEgCQkJCSBl cnJtc2coImNvbnN0cmFpbnRzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGZvcmVp Z24gdGFibGVzIikpKTsKICAKICAJLyoKICAJICogTG9vayB1cCB0aGUgbmFt ZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0byBjcmVhdGUgdGhl IHJlbGF0aW9uLAotLS0gNDY2LDQ5MCAtLS0tCiAgCQllcmVwb3J0KEVSUk9S LAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFCTEVfREVGSU5J VElPTiksCiAgCQkJCSBlcnJtc2coIk9OIENPTU1JVCBjYW4gb25seSBiZSB1 c2VkIG9uIHRlbXBvcmFyeSB0YWJsZXMiKSkpOwohIC8qCiEgICogU2hvdWxk bid0IHRoaXMgaGF2ZSBiZWVuIGNoZWNrZWQgaW4gcGFyc2VyPwohICAqLwoh IAlpZiAocmVsa2luZCA9PSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUpCiEgCXsK ISAJCUxpc3RDZWxsICAgKmxjOwohIAkJZm9yZWFjaChsYywgc3RtdC0+Y29u c3RyYWludHMpCiEgCQl7CiEgCQkJTmV3Q29uc3RyYWludAkgICAqbmMgPSBs Zmlyc3QobGMpOwohIAohIAkJCWlmIChuYy0+Y29udHlwZSAhPSBDT05TVFJf Q0hFQ0sgJiYKISAJCQkJbmMtPmNvbnR5cGUgIT0gQ09OU1RSX0RFRkFVTFQg JiYKISAJCQkJbmMtPmNvbnR5cGUgIT0gQ09OU1RSX05VTEwgJiYKISAJCQkJ bmMtPmNvbnR5cGUgIT0gQ09OU1RSX05PVE5VTEwpCiEgCQkJCWVyZXBvcnQo RVJST1IsCiEgCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCiEgCQkJCQkJIGVycm1zZygib25seSBjaGVjayBjb25zdHJhaW50 cyBhcmUgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzIikpKTsKISAJCX0K ISAJfQogIAogIAkvKgogIAkgKiBMb29rIHVwIHRoZSBuYW1lc3BhY2UgaW4g d2hpY2ggd2UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSB0aGUgcmVsYXRpb24s CioqKioqKioqKioqKioqKgoqKiogMzAxNCwzMDM3ICoqKiogQVRQcmVwQ21k KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAq Y21kLAogIAkJCSAqIHJ1bGVzLgogIAkJCSAqLwogIAkJCUFUU2ltcGxlUGVy bWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfVklFVyB8IEFUVF9GT1JF SUdOX1RBQkxFKTsKISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJl bCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFu ZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBjbWQtPmRl ZiA/IEFUX1BBU1NfQUREX0NPTlNUUiA6IEFUX1BBU1NfRFJPUDsKICAJCQli cmVhazsKICAJCWNhc2UgQVRfRHJvcE5vdE51bGw6CS8qIEFMVEVSIENPTFVN TiBEUk9QIE5PVCBOVUxMICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhy ZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQlBVFNp bXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2Nr bW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRl ZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0RST1A7CiAgCQkJYnJlYWs7CiAg CQljYXNlIEFUX1NldE5vdE51bGw6CQkvKiBBTFRFUiBDT0xVTU4gU0VUIE5P VCBOVUxMICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9U QUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQlBVFNpbXBsZVJlY3Vy c2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSk7CiAg CQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogIAkJ CXBhc3MgPSBBVF9QQVNTX0FERF9DT05TVFI7CiAgCQkJYnJlYWs7CiAgCQlj YXNlIEFUX1NldFN0YXRpc3RpY3M6CS8qIEFMVEVSIENPTFVNTiBTRVQgU1RB VElTVElDUyAqLwohIAkJCUFUU2ltcGxlUmVjdXJzaW9uKHdxdWV1ZSwgcmVs LCBjbWQsIHJlY3Vyc2UsIGxvY2ttb2RlKTsKICAJCQkvKiBQZXJmb3JtcyBv d24gcGVybWlzc2lvbiBjaGVja3MgKi8KICAJCQlBVFByZXBTZXRTdGF0aXN0 aWNzKHJlbCwgY21kLT5uYW1lLCBjbWQtPmRlZiwgbG9ja21vZGUpOwogIAkJ CXBhc3MgPSBBVF9QQVNTX01JU0M7Ci0tLSAzMDMwLDMwNTMgLS0tLQogIAkJ CSAqIHJ1bGVzLgogIAkJCSAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMo cmVsLCBBVFRfVEFCTEUgfCBBVFRfVklFVyB8IEFUVF9GT1JFSUdOX1RBQkxF KTsKISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCBy ZWN1cnNlLCB0cnVlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1z cGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBjbWQtPmRlZiA/ IEFUX1BBU1NfQUREX0NPTlNUUiA6IEFUX1BBU1NfRFJPUDsKICAJCQlicmVh azsKICAJCWNhc2UgQVRfRHJvcE5vdE51bGw6CS8qIEFMVEVSIENPTFVNTiBE Uk9QIE5PVCBOVUxMICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWws IEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQlBVFNpbXBs ZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCB0cnVlLCBs b2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0RST1A7CiAgCQkJYnJlYWs7 CiAgCQljYXNlIEFUX1NldE5vdE51bGw6CQkvKiBBTFRFUiBDT0xVTU4gU0VU IE5PVCBOVUxMICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFU VF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQlBVFNpbXBsZVJl Y3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCB0cnVlLCBsb2Nr bW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRl ZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9DT05TVFI7CiAgCQkJYnJl YWs7CiAgCQljYXNlIEFUX1NldFN0YXRpc3RpY3M6CS8qIEFMVEVSIENPTFVN TiBTRVQgU1RBVElTVElDUyAqLwohIAkJCUFUU2ltcGxlUmVjdXJzaW9uKHdx dWV1ZSwgcmVsLCBjbWQsIHJlY3Vyc2UsIHRydWUsIGxvY2ttb2RlKTsKICAJ CQkvKiBQZXJmb3JtcyBvd24gcGVybWlzc2lvbiBjaGVja3MgKi8KICAJCQlB VFByZXBTZXRTdGF0aXN0aWNzKHJlbCwgY21kLT5uYW1lLCBjbWQtPmRlZiwg bG9ja21vZGUpOwogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CioqKioqKioq KioqKioqKgoqKiogMzA0NCwzMDUwICoqKiogQVRQcmVwQ21kKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJ CWJyZWFrOwogIAkJY2FzZSBBVF9TZXRTdG9yYWdlOgkJLyogQUxURVIgQ09M VU1OIFNFVCBTVE9SQUdFICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhy ZWwsIEFUVF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsKISAJCQlBVFNpbXBsZVJl Y3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSk7 CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwog IAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAgCQkJYnJlYWs7Ci0tLSAzMDYw LDMwNjYgLS0tLQogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9TZXRTdG9yYWdl OgkJLyogQUxURVIgQ09MVU1OIFNFVCBTVE9SQUdFICovCiAgCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsK ISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1 cnNlLCBmYWxzZSwgbG9ja21vZGUpOwogIAkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KICAJCQlwYXNzID0gQVRfUEFTU19NSVND OwogIAkJCWJyZWFrOwoqKioqKioqKioqKioqKioKKioqIDMwNjIsMzA2OCAq KioqIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFs dGVyVGFibGVDbWQgKmNtZCwKICAJCQlwYXNzID0gQVRfUEFTU19BRERfSU5E RVg7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX0FkZENvbnN0cmFpbnQ6CS8q IEFERCBDT05TVFJBSU5UICovCiEgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhy ZWwsIEFUVF9UQUJMRSk7CiAgCQkJLyogUmVjdXJzaW9uIG9jY3VycyBkdXJp bmcgZXhlY3V0aW9uIHBoYXNlICovCiAgCQkJLyogTm8gY29tbWFuZC1zcGVj aWZpYyBwcmVwIG5lZWRlZCBleGNlcHQgc2F2aW5nIHJlY3Vyc2UgZmxhZyAq LwogIAkJCWlmIChyZWN1cnNlKQotLS0gMzA3OCwzMDg0IC0tLS0KICAJCQlw YXNzID0gQVRfUEFTU19BRERfSU5ERVg7CiAgCQkJYnJlYWs7CiAgCQljYXNl IEFUX0FkZENvbnN0cmFpbnQ6CS8qIEFERCBDT05TVFJBSU5UICovCiEgCQkJ QVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JF SUdOX1RBQkxFKTsKICAJCQkvKiBSZWN1cnNpb24gb2NjdXJzIGR1cmluZyBl eGVjdXRpb24gcGhhc2UgKi8KICAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmlj IHByZXAgbmVlZGVkIGV4Y2VwdCBzYXZpbmcgcmVjdXJzZSBmbGFnICovCiAg CQkJaWYgKHJlY3Vyc2UpCioqKioqKioqKioqKioqKgoqKiogMzA3NiwzMDgy ICoqKiogQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9D T05TVFI7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX0Ryb3BDb25zdHJhaW50 OgkvKiBEUk9QIENPTlNUUkFJTlQgKi8KISAJCQlBVFNpbXBsZVBlcm1pc3Np b25zKHJlbCwgQVRUX1RBQkxFKTsKICAJCQkvKiBSZWN1cnNpb24gb2NjdXJz IGR1cmluZyBleGVjdXRpb24gcGhhc2UgKi8KICAJCQkvKiBObyBjb21tYW5k LXNwZWNpZmljIHByZXAgbmVlZGVkIGV4Y2VwdCBzYXZpbmcgcmVjdXJzZSBm bGFnICovCiAgCQkJaWYgKHJlY3Vyc2UpCi0tLSAzMDkyLDMwOTggLS0tLQog IAkJCXBhc3MgPSBBVF9QQVNTX0FERF9DT05TVFI7CiAgCQkJYnJlYWs7CiAg CQljYXNlIEFUX0Ryb3BDb25zdHJhaW50OgkvKiBEUk9QIENPTlNUUkFJTlQg Ki8KISAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwg QVRUX0ZPUkVJR05fVEFCTEUpOwogIAkJCS8qIFJlY3Vyc2lvbiBvY2N1cnMg ZHVyaW5nIGV4ZWN1dGlvbiBwaGFzZSAqLwogIAkJCS8qIE5vIGNvbW1hbmQt c3BlY2lmaWMgcHJlcCBuZWVkZWQgZXhjZXB0IHNhdmluZyByZWN1cnNlIGZs YWcgKi8KICAJCQlpZiAocmVjdXJzZSkKKioqKioqKioqKioqKioqCioqKiAz MTQ0LDMxNTYgKioqKiBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAgCQkJcGFzcyA9IEFUX1BB U1NfTUlTQzsKICAJCQlicmVhazsKICAJCWNhc2UgQVRfQWRkSW5oZXJpdDoJ CS8qIElOSEVSSVQgKi8KISAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwg QVRUX1RBQkxFKTsKICAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJz ZXMgKi8KICAJCQlBVFByZXBBZGRJbmhlcml0KHJlbCk7CiAgCQkJcGFzcyA9 IEFUX1BBU1NfTUlTQzsKICAJCQlicmVhazsKICAJCWNhc2UgQVRfQWx0ZXJD b25zdHJhaW50OgkJLyogQUxURVIgQ09OU1RSQUlOVCAqLwohIAkJCUFUU2lt cGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwogIAkJCXBhc3MgPSBB VF9QQVNTX01JU0M7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX1ZhbGlkYXRl Q29uc3RyYWludDoJCS8qIFZBTElEQVRFIENPTlNUUkFJTlQgKi8KLS0tIDMx NjAsMzE3OCAtLS0tCiAgCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKICAJCQli cmVhazsKICAJCWNhc2UgQVRfQWRkSW5oZXJpdDoJCS8qIElOSEVSSVQgKi8K ISAJCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFIHwgQVRU X0ZPUkVJR05fVEFCTEUpOwogIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciBy ZWN1cnNlcyAqLwogIAkJCUFUUHJlcEFkZEluaGVyaXQocmVsKTsKICAJCQlw YXNzID0gQVRfUEFTU19NSVNDOwogIAkJCWJyZWFrOworIAkJY2FzZSBBVF9E cm9wSW5oZXJpdDoJLyogTk8gSU5IRVJJVCAqLworIAkJCUFUU2ltcGxlUGVy bWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7 CisgCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2UgKi8KKyAJCQkv KiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCisgCQkJcGFz cyA9IEFUX1BBU1NfTUlTQzsKKyAJCQlicmVhazsKICAJCWNhc2UgQVRfQWx0 ZXJDb25zdHJhaW50OgkJLyogQUxURVIgQ09OU1RSQUlOVCAqLwohIAkJCUFU U2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlH Tl9UQUJMRSk7CiAgCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKICAJCQlicmVh azsKICAJCWNhc2UgQVRfVmFsaWRhdGVDb25zdHJhaW50OgkJLyogVkFMSURB VEUgQ09OU1RSQUlOVCAqLwoqKioqKioqKioqKioqKioKKioqIDMxNzksMzE4 NSAqKioqIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWws IEFsdGVyVGFibGVDbWQgKmNtZCwKICAJCWNhc2UgQVRfRW5hYmxlQWx3YXlz UnVsZToKICAJCWNhc2UgQVRfRW5hYmxlUmVwbGljYVJ1bGU6CiAgCQljYXNl IEFUX0Rpc2FibGVSdWxlOgotIAkJY2FzZSBBVF9Ecm9wSW5oZXJpdDoJLyog Tk8gSU5IRVJJVCAqLwogIAkJY2FzZSBBVF9BZGRPZjoJCQkvKiBPRiAqLwog IAkJY2FzZSBBVF9Ecm9wT2Y6IC8qIE5PVCBPRiAqLwogIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwotLS0gMzIwMSwzMjA2IC0t LS0KKioqKioqKioqKioqKioqCioqKiA0MTIwLDQxMjYgKioqKiBBVFdyb25n UmVsa2luZEVycm9yKFJlbGF0aW9uIHJlbCwgaW50IGFsbG93ZWRfdGFyZ2V0 cykKICAgKi8KICBzdGF0aWMgdm9pZAogIEFUU2ltcGxlUmVjdXJzaW9uKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwKISAJCQkJICBBbHRlclRhYmxl Q21kICpjbWQsIGJvb2wgcmVjdXJzZSwgTE9DS01PREUgbG9ja21vZGUpCiAg ewogIAkvKgogIAkgKiBQcm9wYWdhdGUgdG8gY2hpbGRyZW4gaWYgZGVzaXJl ZC4gIE5vbi10YWJsZSByZWxhdGlvbnMgbmV2ZXIgaGF2ZQotLS0gNDE0MSw0 MTQ4IC0tLS0KICAgKi8KICBzdGF0aWMgdm9pZAogIEFUU2ltcGxlUmVjdXJz aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwKISAJCQkJICBBbHRl clRhYmxlQ21kICpjbWQsIGJvb2wgcmVjdXJzZSwKISAJCQkJICBib29sIGlu Y2x1ZGVfZm9yZWlnbiwgTE9DS01PREUgbG9ja21vZGUpCiAgewogIAkvKgog IAkgKiBQcm9wYWdhdGUgdG8gY2hpbGRyZW4gaWYgZGVzaXJlZC4gIE5vbi10 YWJsZSByZWxhdGlvbnMgbmV2ZXIgaGF2ZQoqKioqKioqKioqKioqKioKKioq IDQxNDgsNDE1NSAqKioqIEFUU2ltcGxlUmVjdXJzaW9uKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwKICAJCQkJY29udGludWU7CiAgCQkJLyogZmlu ZF9hbGxfaW5oZXJpdG9ycyBhbHJlYWR5IGdvdCBsb2NrICovCiAgCQkJY2hp bGRyZWwgPSByZWxhdGlvbl9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7CiEg CQkJQ2hlY2tUYWJsZU5vdEluVXNlKGNoaWxkcmVsLCAiQUxURVIgVEFCTEUi KTsKISAJCQlBVFByZXBDbWQod3F1ZXVlLCBjaGlsZHJlbCwgY21kLCBmYWxz ZSwgdHJ1ZSwgbG9ja21vZGUpOwogIAkJCXJlbGF0aW9uX2Nsb3NlKGNoaWxk cmVsLCBOb0xvY2spOwogIAkJfQogIAl9Ci0tLSA0MTcwLDQxODEgLS0tLQog IAkJCQljb250aW51ZTsKICAJCQkvKiBmaW5kX2FsbF9pbmhlcml0b3JzIGFs cmVhZHkgZ290IGxvY2sgKi8KICAJCQljaGlsZHJlbCA9IHJlbGF0aW9uX29w ZW4oY2hpbGRyZWxpZCwgTm9Mb2NrKTsKISAJCQlpZiAoY2hpbGRyZWwtPnJk X3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX0ZPUkVJR05fVEFCTEUKISAJCQkJ fHwgaW5jbHVkZV9mb3JlaWduKQohIAkJCXsKISAJCQkJQ2hlY2tUYWJsZU5v dEluVXNlKGNoaWxkcmVsLCAiQUxURVIgVEFCTEUiKTsKISAJCQkJQVRQcmVw Q21kKHdxdWV1ZSwgY2hpbGRyZWwsIGNtZCwgZmFsc2UsIHRydWUsIGxvY2tt b2RlKTsKISAJCQl9CiAgCQkJcmVsYXRpb25fY2xvc2UoY2hpbGRyZWwsIE5v TG9jayk7CiAgCQl9CiAgCX0KKioqKioqKioqKioqKioqCioqKiA0NDM5LDQ0 NDUgKioqKiBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAgCiAgCS8qIEF0IHRv cCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBD bWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2lt cGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUpOwogIAogIAlhdHRyZGVz YyA9IGhlYXBfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKICAKLS0tIDQ0NjUsNDQ3MSAtLS0tCiAgCiAgCS8qIEF0IHRv cCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBD bWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2lt cGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9U QUJMRSk7CiAgCiAgCWF0dHJkZXNjID0gaGVhcF9vcGVuKEF0dHJpYnV0ZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogIAoqKioqKioqKioqKioq KioKKioqIDUzMzUsNTM0MSAqKioqIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAog IAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBlcm1pc3Npb24gY2hlY2sgd2FzIGRv bmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0ICovCiAgCWlmIChyZWN1cnNp bmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxFKTsK ICAKICAJLyoKICAJICogZ2V0IHRoZSBudW1iZXIgb2YgdGhlIGF0dHJpYnV0 ZQotLS0gNTM2MSw1MzY3IC0tLS0KICAKICAJLyogQXQgdG9wIGxldmVsLCBw ZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBk byBpdCAqLwogIAlpZiAocmVjdXJzaW5nKQohIAkJQVRTaW1wbGVQZXJtaXNz aW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKICAK ICAJLyoKICAJICogZ2V0IHRoZSBudW1iZXIgb2YgdGhlIGF0dHJpYnV0ZQoq KioqKioqKioqKioqKioKKioqIDU3MjYsNTczMiAqKioqIEFUQWRkQ2hlY2tD b25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogIAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBlcm1p c3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0 ICovCiAgCWlmIChyZWN1cnNpbmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Npb25z KHJlbCwgQVRUX1RBQkxFKTsKICAKICAJLyoKICAJICogQ2FsbCBBZGRSZWxh dGlvbk5ld0NvbnN0cmFpbnRzIHRvIGRvIHRoZSB3b3JrLCBtYWtpbmcgc3Vy ZSBpdCB3b3JrcyBvbgotLS0gNTc1Miw1NzU4IC0tLS0KICAKICAJLyogQXQg dG9wIGxldmVsLCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJl cENtZCwgZWxzZSBkbyBpdCAqLwogIAlpZiAocmVjdXJzaW5nKQohIAkJQVRT aW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdO X1RBQkxFKTsKICAKICAJLyoKICAJICogQ2FsbCBBZGRSZWxhdGlvbk5ld0Nv bnN0cmFpbnRzIHRvIGRvIHRoZSB3b3JrLCBtYWtpbmcgc3VyZSBpdCB3b3Jr cyBvbgoqKioqKioqKioqKioqKioKKioqIDcyMTUsNzIyMSAqKioqIEFURXhl Y0Ryb3BDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29u c3RyTmFtZSwKICAKICAJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNzaW9uIGNo ZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLwogIAlp ZiAocmVjdXJzaW5nKQohIAkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFU VF9UQUJMRSk7CiAgCiAgCWNvbnJlbCA9IGhlYXBfb3BlbihDb25zdHJhaW50 UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAgCi0tLSA3MjQxLDcy NDcgLS0tLQogIAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBlcm1pc3Npb24gY2hl Y2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0ICovCiAgCWlm IChyZWN1cnNpbmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRU X1RBQkxFIHwgQVRUX0ZPUkVJR05fVEFCTEUpOwogIAogIAljb25yZWwgPSBo ZWFwX29wZW4oQ29uc3RyYWludFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogIAoqKioqKioqKioqKioqKioKKioqIDc1NTAsNzU1NiAqKioqIEFU UHJlcEFsdGVyQ29sdW1uVHlwZShMaXN0ICoqd3F1ZXVlLAogIAkgKiBhbHRl ciB3b3VsZCBwdXQgdGhlbSBvdXQgb2Ygc3RlcC4KICAJICovCiAgCWlmIChy ZWN1cnNlKQohIAkJQVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNt ZCwgcmVjdXJzZSwgbG9ja21vZGUpOwogIAllbHNlIGlmICghcmVjdXJzaW5n ICYmCiAgCQkJIGZpbmRfaW5oZXJpdGFuY2VfY2hpbGRyZW4oUmVsYXRpb25H ZXRSZWxpZChyZWwpLCBOb0xvY2spICE9IE5JTCkKICAJCWVyZXBvcnQoRVJS T1IsCi0tLSA3NTc2LDc1ODIgLS0tLQogIAkgKiBhbHRlciB3b3VsZCBwdXQg dGhlbSBvdXQgb2Ygc3RlcC4KICAJICovCiAgCWlmIChyZWN1cnNlKQohIAkJ QVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwg dHJ1ZSwgbG9ja21vZGUpOwogIAllbHNlIGlmICghcmVjdXJzaW5nICYmCiAg CQkJIGZpbmRfaW5oZXJpdGFuY2VfY2hpbGRyZW4oUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBOb0xvY2spICE9IE5JTCkKICAJCWVyZXBvcnQoRVJST1IsCioq KiBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jCi0t LSBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jCioq KioqKioqKioqKioqKgoqKiogMTMzNywxMzQ3ICoqKiogZXhwYW5kX2luaGVy aXRlZF9ydGVudHJ5KFBsYW5uZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5 ICpydGUsIEluZGV4IHJ0aSkKICAJCS8qCiAgCQkgKiBCdWlsZCBhbiBSVEUg Zm9yIHRoZSBjaGlsZCwgYW5kIGF0dGFjaCB0byBxdWVyeSdzIHJhbmdldGFi bGUgbGlzdC4KICAJCSAqIFdlIGNvcHkgbW9zdCBmaWVsZHMgb2YgdGhlIHBh cmVudCdzIFJURSwgYnV0IHJlcGxhY2UgcmVsYXRpb24gT0lELAohIAkJICog YW5kIHNldCBpbmggPSBmYWxzZS4gIEFsc28sIHNldCByZXF1aXJlZFBlcm1z IHRvIHplcm8gc2luY2UgYWxsCiEgCQkgKiByZXF1aXJlZCBwZXJtaXNzaW9u cyBjaGVja3MgYXJlIGRvbmUgb24gdGhlIG9yaWdpbmFsIFJURS4KICAJCSAq LwogIAkJY2hpbGRydGUgPSBjb3B5T2JqZWN0KHJ0ZSk7CiAgCQljaGlsZHJ0 ZS0+cmVsaWQgPSBjaGlsZE9JRDsKICAJCWNoaWxkcnRlLT5pbmggPSBmYWxz ZTsKICAJCWNoaWxkcnRlLT5yZXF1aXJlZFBlcm1zID0gMDsKICAJCXBhcnNl LT5ydGFibGUgPSBsYXBwZW5kKHBhcnNlLT5ydGFibGUsIGNoaWxkcnRlKTsK LS0tIDEzMzcsMTM0OCAtLS0tCiAgCQkvKgogIAkJICogQnVpbGQgYW4gUlRF IGZvciB0aGUgY2hpbGQsIGFuZCBhdHRhY2ggdG8gcXVlcnkncyByYW5nZXRh YmxlIGxpc3QuCiAgCQkgKiBXZSBjb3B5IG1vc3QgZmllbGRzIG9mIHRoZSBw YXJlbnQncyBSVEUsIGJ1dCByZXBsYWNlIHJlbGF0aW9uIE9JRCwKISAJCSAq IHJlbGtpbmQgYW5kIHNldCBpbmggPSBmYWxzZS4gIEFsc28sIHNldCByZXF1 aXJlZFBlcm1zIHRvIHplcm8gc2luY2UKISAJCSAqIGFsbCByZXF1aXJlZCBw ZXJtaXNzaW9ucyBjaGVja3MgYXJlIGRvbmUgb24gdGhlIG9yaWdpbmFsIFJU RS4KICAJCSAqLwogIAkJY2hpbGRydGUgPSBjb3B5T2JqZWN0KHJ0ZSk7CiAg CQljaGlsZHJ0ZS0+cmVsaWQgPSBjaGlsZE9JRDsKKyAJCWNoaWxkcnRlLT5y ZWxraW5kID0gbmV3cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZDsKICAJCWNo aWxkcnRlLT5pbmggPSBmYWxzZTsKICAJCWNoaWxkcnRlLT5yZXF1aXJlZFBl cm1zID0gMDsKICAJCXBhcnNlLT5ydGFibGUgPSBsYXBwZW5kKHBhcnNlLT5y dGFibGUsIGNoaWxkcnRlKTsKKioqIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQotLS0gYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CioqKioqKioq KioqKioqKgoqKiogNDIwNyw0MjM4ICoqKiogQWx0ZXJGb3JlaWduU2VydmVy U3RtdDogQUxURVIgU0VSVkVSIG5hbWUgZm9yZWlnbl9zZXJ2ZXJfdmVyc2lv biBhbHRlcl9nZW5lcmljX28KICBDcmVhdGVGb3JlaWduVGFibGVTdG10Ogog IAkJQ1JFQVRFIEZPUkVJR04gVEFCTEUgcXVhbGlmaWVkX25hbWUKICAJCQkn KCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKISAJCQlTRVJWRVIgbmFtZSBj cmVhdGVfZ2VuZXJpY19vcHRpb25zCiAgCQkJCXsKICAJCQkJCUNyZWF0ZUZv cmVpZ25UYWJsZVN0bXQgKm4gPSBtYWtlTm9kZShDcmVhdGVGb3JlaWduVGFi bGVTdG10KTsKICAJCQkJCSQ0LT5yZWxwZXJzaXN0ZW5jZSA9IFJFTFBFUlNJ U1RFTkNFX1BFUk1BTkVOVDsKICAJCQkJCW4tPmJhc2UucmVsYXRpb24gPSAk NDsKICAJCQkJCW4tPmJhc2UudGFibGVFbHRzID0gJDY7CiEgCQkJCQluLT5i YXNlLmluaFJlbGF0aW9ucyA9IE5JTDsKICAJCQkJCW4tPmJhc2UuaWZfbm90 X2V4aXN0cyA9IGZhbHNlOwogIAkJCQkJLyogRkRXLXNwZWNpZmljIGRhdGEg Ki8KISAJCQkJCW4tPnNlcnZlcm5hbWUgPSAkOTsKISAJCQkJCW4tPm9wdGlv bnMgPSAkMTA7CiAgCQkJCQkkJCA9IChOb2RlICopIG47CiAgCQkJCX0KICAJ CXwgQ1JFQVRFIEZPUkVJR04gVEFCTEUgSUZfUCBOT1QgRVhJU1RTIHF1YWxp ZmllZF9uYW1lCiAgCQkJJygnIE9wdFRhYmxlRWxlbWVudExpc3QgJyknCiEg CQkJU0VSVkVSIG5hbWUgY3JlYXRlX2dlbmVyaWNfb3B0aW9ucwogIAkJCQl7 CiAgCQkJCQlDcmVhdGVGb3JlaWduVGFibGVTdG10ICpuID0gbWFrZU5vZGUo Q3JlYXRlRm9yZWlnblRhYmxlU3RtdCk7CiAgCQkJCQkkNy0+cmVscGVyc2lz dGVuY2UgPSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ7CiAgCQkJCQluLT5i YXNlLnJlbGF0aW9uID0gJDc7CiAgCQkJCQluLT5iYXNlLnRhYmxlRWx0cyA9 ICQ5OwohIAkJCQkJbi0+YmFzZS5pbmhSZWxhdGlvbnMgPSBOSUw7CiAgCQkJ CQluLT5iYXNlLmlmX25vdF9leGlzdHMgPSB0cnVlOwogIAkJCQkJLyogRkRX LXNwZWNpZmljIGRhdGEgKi8KISAJCQkJCW4tPnNlcnZlcm5hbWUgPSAkMTI7 CiEgCQkJCQluLT5vcHRpb25zID0gJDEzOwogIAkJCQkJJCQgPSAoTm9kZSAq KSBuOwogIAkJCQl9CiAgCQk7Ci0tLSA0MjA3LDQyMzggLS0tLQogIENyZWF0 ZUZvcmVpZ25UYWJsZVN0bXQ6CiAgCQlDUkVBVEUgRk9SRUlHTiBUQUJMRSBx dWFsaWZpZWRfbmFtZQogIAkJCScoJyBPcHRUYWJsZUVsZW1lbnRMaXN0ICcp JwohIAkJCU9wdEluaGVyaXQgU0VSVkVSIG5hbWUgY3JlYXRlX2dlbmVyaWNf b3B0aW9ucwogIAkJCQl7CiAgCQkJCQlDcmVhdGVGb3JlaWduVGFibGVTdG10 ICpuID0gbWFrZU5vZGUoQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCk7CiAgCQkJ CQkkNC0+cmVscGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9QRVJNQU5F TlQ7CiAgCQkJCQluLT5iYXNlLnJlbGF0aW9uID0gJDQ7CiAgCQkJCQluLT5i YXNlLnRhYmxlRWx0cyA9ICQ2OwohIAkJCQkJbi0+YmFzZS5pbmhSZWxhdGlv bnMgPSAkODsKICAJCQkJCW4tPmJhc2UuaWZfbm90X2V4aXN0cyA9IGZhbHNl OwogIAkJCQkJLyogRkRXLXNwZWNpZmljIGRhdGEgKi8KISAJCQkJCW4tPnNl cnZlcm5hbWUgPSAkMTA7CiEgCQkJCQluLT5vcHRpb25zID0gJDExOwogIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogIAkJCQl9CiAgCQl8IENSRUFURSBGT1JF SUdOIFRBQkxFIElGX1AgTk9UIEVYSVNUUyBxdWFsaWZpZWRfbmFtZQogIAkJ CScoJyBPcHRUYWJsZUVsZW1lbnRMaXN0ICcpJwohIAkJCU9wdEluaGVyaXQg U0VSVkVSIG5hbWUgY3JlYXRlX2dlbmVyaWNfb3B0aW9ucwogIAkJCQl7CiAg CQkJCQlDcmVhdGVGb3JlaWduVGFibGVTdG10ICpuID0gbWFrZU5vZGUoQ3Jl YXRlRm9yZWlnblRhYmxlU3RtdCk7CiAgCQkJCQkkNy0+cmVscGVyc2lzdGVu Y2UgPSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ7CiAgCQkJCQluLT5iYXNl LnJlbGF0aW9uID0gJDc7CiAgCQkJCQluLT5iYXNlLnRhYmxlRWx0cyA9ICQ5 OwohIAkJCQkJbi0+YmFzZS5pbmhSZWxhdGlvbnMgPSAkMTE7CiAgCQkJCQlu LT5iYXNlLmlmX25vdF9leGlzdHMgPSB0cnVlOwogIAkJCQkJLyogRkRXLXNw ZWNpZmljIGRhdGEgKi8KISAJCQkJCW4tPnNlcnZlcm5hbWUgPSAkMTM7CiEg CQkJCQluLT5vcHRpb25zID0gJDE0OwogIAkJCQkJJCQgPSAoTm9kZSAqKSBu OwogIAkJCQl9CiAgCQk7CioqKiBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKLS0tIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0 aWxjbWQuYwoqKioqKioqKioqKioqKioKKioqIDUxNSw1MjYgKioqKiB0cmFu c2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IENvbHVtbkRlZiAqY29sdW1uKQogIAkJCQlicmVhazsKICAKICAJCQljYXNl IENPTlNUUl9DSEVDSzoKLSAJCQkJaWYgKGN4dC0+aXNmb3JlaWduKQotIAkJ CQkJZXJlcG9ydChFUlJPUiwKLSAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotIAkJCQkJZXJybXNnKCJjb25zdHJh aW50cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxlcyIpLAot IAkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAotIAkJ CQkJCQkJCQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOwogIAkJCQljeHQt PmNrY29uc3RyYWludHMgPSBsYXBwZW5kKGN4dC0+Y2tjb25zdHJhaW50cywg Y29uc3RyYWludCk7CiAgCQkJCWJyZWFrOwogIAotLS0gNTE1LDUyMCAtLS0t CioqKioqKioqKioqKioqKgoqKiogNjA1LDYxNCAqKioqIHRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1u RGVmICpjb2x1bW4pCiAgc3RhdGljIHZvaWQKICB0cmFuc2Zvcm1UYWJsZUNv bnN0cmFpbnQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29uc3RyYWludCAq Y29uc3RyYWludCkKICB7CiEgCWlmIChjeHQtPmlzZm9yZWlnbikKICAJCWVy ZXBvcnQoRVJST1IsCiAgCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKISAJCQkJIGVycm1zZygiY29uc3RyYWludHMgYXJl IG5vdCBzdXBwb3J0ZWQgb24gZm9yZWlnbiB0YWJsZXMiKSwKICAJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKICAJCQkJCQkJCQljb25z dHJhaW50LT5sb2NhdGlvbikpKTsKICAKLS0tIDU5OSw2MDggLS0tLQogIHN0 YXRpYyB2b2lkCiAgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpCiAgewoh IAlpZiAoY3h0LT5pc2ZvcmVpZ24gJiYgY29uc3RyYWludC0+Y29udHlwZSAh PSBDT05TVFJfQ0hFQ0spCiAgCQllcmVwb3J0KEVSUk9SLAogIAkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJCSBl cnJtc2coIm9ubHkgY2hlY2sgY29uc3RyYWludHMgYXJlIHN1cHBvcnRlZCBv biBmb3JlaWduIHRhYmxlcyIpLAogIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KGN4dC0+cHN0YXRlLAogIAkJCQkJCQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9u KSkpOwogIAoqKiogYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVp Z25fZGF0YS5vdXQKLS0tIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9m b3JlaWduX2RhdGEub3V0CioqKioqKioqKioqKioqKgoqKiogNzUwLDc2NSAq KioqIENSRUFURSBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlICh4IGZ0MSk7 CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUxURVIgQ09MVU1OIGM4IFNF VCBEQVRBIFRZUEUgaW50ZWdlcjsJLS0gRVJST1IKICBFUlJPUjogIGNhbm5v dCBhbHRlciBmb3JlaWduIHRhYmxlICJmdDEiIGJlY2F1c2UgY29sdW1uICJ1 c2VfZnQxX2NvbHVtbl90eXBlLngiIHVzZXMgaXRzIHJvdyB0eXBlCiAgRFJP UCBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlOwohIEFMVEVSIEZPUkVJR04g VEFCTEUgZnQxIEFERCBDT05TVFJBSU5UIGZ0MV9jOV9jaGVjayBDSEVDSyAo YzkgPCAwKTsgLS0gRVJST1IKISBFUlJPUjogIGNvbnN0cmFpbnRzIGFyZSBu b3Qgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzCiEgTElORSAxOiBBTFRF UiBGT1JFSUdOIFRBQkxFIGZ0MSBBREQgQ09OU1RSQUlOVCBmdDFfYzlfY2hl Y2sgQ0hFQ0sgKGMuLi4KISAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05T VFJBSU5UIG5vX2NvbnN0OyAgICAgICAgICAgICAgIC0tIEVSUk9SCiEgRVJS T1I6ICAiZnQxIiBpcyBub3QgYSB0YWJsZQogIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIERST1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgbm9fY29uc3Q7CiEg RVJST1I6ICAiZnQxIiBpcyBub3QgYSB0YWJsZQohIEFMVEVSIEZPUkVJR04g VEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBmdDFfYzFfY2hlY2s7CiEgRVJS T1I6ICAiZnQxIiBpcyBub3QgYSB0YWJsZQogIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIFNFVCBXSVRIIE9JRFM7ICAgICAgICAgICAgICAgICAgICAgICAg ICAtLSBFUlJPUgogIEVSUk9SOiAgImZ0MSIgaXMgbm90IGEgdGFibGUKICBB TFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBPV05FUiBUTyByZWdyZXNzX3Rlc3Rf cm9sZTsKLS0tIDc1MCw3NjEgLS0tLQogIEFMVEVSIEZPUkVJR04gVEFCTEUg ZnQxIEFMVEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVnZXI7CS0t IEVSUk9SCiAgRVJST1I6ICBjYW5ub3QgYWx0ZXIgZm9yZWlnbiB0YWJsZSAi ZnQxIiBiZWNhdXNlIGNvbHVtbiAidXNlX2Z0MV9jb2x1bW5fdHlwZS54IiB1 c2VzIGl0cyByb3cgdHlwZQogIERST1AgVEFCTEUgdXNlX2Z0MV9jb2x1bW5f dHlwZTsKISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBBREQgQ09OU1RSQUlO VCBmdDFfYzlfY2hlY2sgQ0hFQ0sgKGM5IDwgMCk7CiAgQUxURVIgRk9SRUlH TiBUQUJMRSBmdDEgRFJPUCBDT05TVFJBSU5UIG5vX2NvbnN0OyAgICAgICAg ICAgICAgIC0tIEVSUk9SCiEgRVJST1I6ICBjb25zdHJhaW50ICJub19jb25z dCIgb2YgcmVsYXRpb24gImZ0MSIgZG9lcyBub3QgZXhpc3QKICBBTFRFUiBG T1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgSUYgRVhJU1RTIG5v X2NvbnN0OwohIE5PVElDRTogIGNvbnN0cmFpbnQgIm5vX2NvbnN0IiBvZiBy ZWxhdGlvbiAiZnQxIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKISBBTFRF UiBGT1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgZnQxX2M5X2No ZWNrOwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIFNFVCBXSVRIIE9JRFM7 ICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBFUlJPUgogIEVSUk9SOiAg ImZ0MSIgaXMgbm90IGEgdGFibGUKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0 MSBPV05FUiBUTyByZWdyZXNzX3Rlc3Rfcm9sZTsKKioqIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZm9yZWlnbl9kYXRhLnNxbAotLS0gYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9mb3JlaWduX2RhdGEuc3FsCioqKioqKioqKioqKioqKgoq KiogMzE0LDMyMyAqKioqIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIEFMVEVS IENPTFVNTiBjOCBTRVQgU1RBVElTVElDUyAtMTsKICBDUkVBVEUgVEFCTEUg dXNlX2Z0MV9jb2x1bW5fdHlwZSAoeCBmdDEpOwogIEFMVEVSIEZPUkVJR04g VEFCTEUgZnQxIEFMVEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVn ZXI7CS0tIEVSUk9SCiAgRFJPUCBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBl OwohIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIEFERCBDT05TVFJBSU5UIGZ0 MV9jOV9jaGVjayBDSEVDSyAoYzkgPCAwKTsgLS0gRVJST1IKICBBTFRFUiBG T1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgbm9fY29uc3Q7ICAg ICAgICAgICAgICAgLS0gRVJST1IKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0 MSBEUk9QIENPTlNUUkFJTlQgSUYgRVhJU1RTIG5vX2NvbnN0OwohIEFMVEVS IEZPUkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBmdDFfYzFfY2hl Y2s7CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgU0VUIFdJVEggT0lEUzsg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tIEVSUk9SCiAgQUxURVIgRk9S RUlHTiBUQUJMRSBmdDEgT1dORVIgVE8gcmVncmVzc190ZXN0X3JvbGU7CiAg QUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgT1BUSU9OUyAoRFJPUCBkZWxpbWl0 ZXIsIFNFVCBxdW90ZSAnficsIEFERCBlc2NhcGUgJ0AnKTsKLS0tIDMxNCwz MjMgLS0tLQogIENSRUFURSBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlICh4 IGZ0MSk7CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUxURVIgQ09MVU1O IGM4IFNFVCBEQVRBIFRZUEUgaW50ZWdlcjsJLS0gRVJST1IKICBEUk9QIFRB QkxFIHVzZV9mdDFfY29sdW1uX3R5cGU7CiEgQUxURVIgRk9SRUlHTiBUQUJM RSBmdDEgQUREIENPTlNUUkFJTlQgZnQxX2M5X2NoZWNrIENIRUNLIChjOSA8 IDApOwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlO VCBub19jb25zdDsgICAgICAgICAgICAgICAtLSBFUlJPUgogIEFMVEVSIEZP UkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBJRiBFWElTVFMgbm9f Y29uc3Q7CiEgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJB SU5UIGZ0MV9jOV9jaGVjazsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBT RVQgV0lUSCBPSURTOyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gRVJS T1IKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBPV05FUiBUTyByZWdyZXNz X3Rlc3Rfcm9sZTsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBPUFRJT05T IChEUk9QIGRlbGltaXRlciwgU0VUIHF1b3RlICd+JywgQUREIGVzY2FwZSAn QCcpOwo= --------------080305070805060207040703 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------080305070805060207040703--