Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WUZ7C-0005qi-Kd for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2014 10:06:51 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1WUZ7B-0005e9-QC for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2014 10:06:49 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WUZ77-0005dy-LS for pgsql-hackers@postgresql.org; Mon, 31 Mar 2014 10:06:46 +0000 Received: from tama500.ecl.ntt.co.jp ([129.60.39.148]) by makus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1WUZ6y-0003ui-J5 for pgsql-hackers@postgresql.org; Mon, 31 Mar 2014 10:06:44 +0000 Received: from mfs6.rdh.ecl.ntt.co.jp (mfs6.rdh.ecl.ntt.co.jp [129.60.39.149]) by tama500.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s2VA6X7X027745; Mon, 31 Mar 2014 19:06:33 +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 90821E013A; Mon, 31 Mar 2014 19:06:33 +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 83A6FE0139; Mon, 31 Mar 2014 19:06:33 +0900 (JST) Received: from [129.60.241.149] ([129.60.241.149]) by imail3.m.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id s2VA6XAx027611; Mon, 31 Mar 2014 19:06:33 +0900 Message-ID: <53393E18.3080901@lab.ntt.co.jp> Date: Mon, 31 Mar 2014 19:06:16 +0900 From: Etsuro Fujita User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Kyotaro HORIGUCHI CC: shigeru.hanada@gmail.com, pgsql-hackers@postgresql.org Subject: Re: inherit support for foreign tables References: <20140318.183856.121817800.horiguchi.kyotaro@lab.ntt.co.jp> <532AE62A.6020307@lab.ntt.co.jp> <532F8EC1.6020401@lab.ntt.co.jp> <20140326.171454.142890940.horiguchi.kyotaro@lab.ntt.co.jp> <533383BF.1050004@lab.ntt.co.jp> <53341F3C.2050609@lab.ntt.co.jp> In-Reply-To: <53341F3C.2050609@lab.ntt.co.jp> Content-Type: multipart/mixed; boundary="------------020002030706090609010206" 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. --------------020002030706090609010206 Content-Type: text/plain; charset=Shift_JIS Content-Transfer-Encoding: 7bit I've found some bugs. Attached is an updated version (v10). Changes: * When CREATE FOREIGN TABLE INHERITS, don't allow a foreign table to inherit from parent tables that have OID system columns. * When CREATE FOREIGN TABLE INHERITS, reset the storage parameter for inherited columns that have non-defaut values. * Don't allow CHECK (expr) *NO INHERIT* on foreign tables, since those tables cannot have child tables. * Fix and update the documentation. Thanks, Best regards, Etsuro Fujita --------------020002030706090609010206 Content-Type: text/plain; charset=Shift_JIS; name="foreign_inherit-v10.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="foreign_inherit-v10.patch" KioqIGEvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCi0tLSBiL2NvbnRy aWIvZmlsZV9mZHcvZmlsZV9mZHcuYwoqKioqKioqKioqKioqKioKKioqIDEx NywxMjIgKioqKiBzdGF0aWMgdm9pZCBmaWxlR2V0Rm9yZWlnblJlbFNpemUo UGxhbm5lckluZm8gKnJvb3QsCi0tLSAxMTcsMTI3IC0tLS0KICBzdGF0aWMg dm9pZCBmaWxlR2V0Rm9yZWlnblBhdGhzKFBsYW5uZXJJbmZvICpyb290LAog IAkJCQkJUmVsT3B0SW5mbyAqYmFzZXJlbCwKICAJCQkJCU9pZCBmb3JlaWdu dGFibGVpZCk7Cisgc3RhdGljIEZvcmVpZ25QYXRoICpmaWxlUmVwYXJhbWV0 ZXJpemVGb3JlaWduUGF0aChQbGFubmVySW5mbyAqcm9vdCwKKyAJCQkJCQkJ CQkJCQkgIFJlbE9wdEluZm8gKmJhc2VyZWwsCisgCQkJCQkJCQkJCQkJICBP aWQgZm9yZWlnbnRhYmxlaWQsCisgCQkJCQkJCQkJCQkJICBGb3JlaWduUGF0 aCAqcGF0aCwKKyAJCQkJCQkJCQkJCQkgIFJlbGlkcyByZXF1aXJlZF9vdXRl cik7CiAgc3RhdGljIEZvcmVpZ25TY2FuICpmaWxlR2V0Rm9yZWlnblBsYW4o UGxhbm5lckluZm8gKnJvb3QsCiAgCQkJCSAgIFJlbE9wdEluZm8gKmJhc2Vy ZWwsCiAgCQkJCSAgIE9pZCBmb3JlaWdudGFibGVpZCwKKioqKioqKioqKioq KioqCioqKiAxNDUsMTUxICoqKiogc3RhdGljIGJvb2wgY2hlY2tfc2VsZWN0 aXZlX2JpbmFyeV9jb252ZXJzaW9uKFJlbE9wdEluZm8gKmJhc2VyZWwsCiAg c3RhdGljIHZvaWQgZXN0aW1hdGVfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqYmFzZXJlbCwKICAJCQkgIEZpbGVGZHdQbGFuU3RhdGUg KmZkd19wcml2YXRlKTsKICBzdGF0aWMgdm9pZCBlc3RpbWF0ZV9jb3N0cyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqYmFzZXJlbCwKISAJCQkg ICBGaWxlRmR3UGxhblN0YXRlICpmZHdfcHJpdmF0ZSwKICAJCQkgICBDb3N0 ICpzdGFydHVwX2Nvc3QsIENvc3QgKnRvdGFsX2Nvc3QpOwogIHN0YXRpYyBp bnQgZmlsZV9hY3F1aXJlX3NhbXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwg aW50IGVsZXZlbCwKICAJCQkJCQkgSGVhcFR1cGxlICpyb3dzLCBpbnQgdGFy Z3Jvd3MsCi0tLSAxNTAsMTU2IC0tLS0KICBzdGF0aWMgdm9pZCBlc3RpbWF0 ZV9zaXplKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVs LAogIAkJCSAgRmlsZUZkd1BsYW5TdGF0ZSAqZmR3X3ByaXZhdGUpOwogIHN0 YXRpYyB2b2lkIGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpiYXNlcmVsLAohIAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUg KmZkd19wcml2YXRlLCBMaXN0ICpqb2luX2NvbmRzLAogIAkJCSAgIENvc3Qg KnN0YXJ0dXBfY29zdCwgQ29zdCAqdG90YWxfY29zdCk7CiAgc3RhdGljIGlu dCBmaWxlX2FjcXVpcmVfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBp bnQgZWxldmVsLAogIAkJCQkJCSBIZWFwVHVwbGUgKnJvd3MsIGludCB0YXJn cm93cywKKioqKioqKioqKioqKioqCioqKiAxNjMsMTY4ICoqKiogZmlsZV9m ZHdfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQotLS0gMTY4LDE3NCAtLS0t CiAgCiAgCWZkd3JvdXRpbmUtPkdldEZvcmVpZ25SZWxTaXplID0gZmlsZUdl dEZvcmVpZ25SZWxTaXplOwogIAlmZHdyb3V0aW5lLT5HZXRGb3JlaWduUGF0 aHMgPSBmaWxlR2V0Rm9yZWlnblBhdGhzOworIAlmZHdyb3V0aW5lLT5SZXBh cmFtZXRlcml6ZUZvcmVpZ25QYXRoID0gZmlsZVJlcGFyYW1ldGVyaXplRm9y ZWlnblBhdGg7CiAgCWZkd3JvdXRpbmUtPkdldEZvcmVpZ25QbGFuID0gZmls ZUdldEZvcmVpZ25QbGFuOwogIAlmZHdyb3V0aW5lLT5FeHBsYWluRm9yZWln blNjYW4gPSBmaWxlRXhwbGFpbkZvcmVpZ25TY2FuOwogIAlmZHdyb3V0aW5l LT5CZWdpbkZvcmVpZ25TY2FuID0gZmlsZUJlZ2luRm9yZWlnblNjYW47Cioq KioqKioqKioqKioqKgoqKiogNTE3LDUyMyAqKioqIGZpbGVHZXRGb3JlaWdu UGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAgCQkJCQkJCQkJCSAgKE5vZGUg KikgY29sdW1ucykpOwogIAogIAkvKiBFc3RpbWF0ZSBjb3N0cyAqLwohIAll c3RpbWF0ZV9jb3N0cyhyb290LCBiYXNlcmVsLCBmZHdfcHJpdmF0ZSwKICAJ CQkJICAgJnN0YXJ0dXBfY29zdCwgJnRvdGFsX2Nvc3QpOwogIAogIAkvKgot LS0gNTIzLDUzMCAtLS0tCiAgCQkJCQkJCQkJCSAgKE5vZGUgKikgY29sdW1u cykpOwogIAogIAkvKiBFc3RpbWF0ZSBjb3N0cyAqLwohIAllc3RpbWF0ZV9j b3N0cyhyb290LCBiYXNlcmVsLAohIAkJCQkgICBmZHdfcHJpdmF0ZSwgTklM LAogIAkJCQkgICAmc3RhcnR1cF9jb3N0LCAmdG90YWxfY29zdCk7CiAgCiAg CS8qCioqKioqKioqKioqKioqKgoqKiogNTQyLDU0NyAqKioqIGZpbGVHZXRG b3JlaWduUGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCi0tLSA1NDksNTg5IC0t LS0KICB9CiAgCiAgLyoKKyAgKiBmaWxlUmVwYXJhbWV0ZXJpemVGb3JlaWdu UGF0aAorICAqCQlBdHRlbXB0IHRvIG1vZGlmeSBhIGdpdmVuIHBhdGggdG8g aGF2ZSBncmVhdGVyIHBhcmFtZXRlcml6YXRpb24KKyAgKi8KKyBzdGF0aWMg Rm9yZWlnblBhdGggKgorIGZpbGVSZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRo KFBsYW5uZXJJbmZvICpyb290LAorIAkJCQkJCQkgIFJlbE9wdEluZm8gKmJh c2VyZWwsCisgCQkJCQkJCSAgT2lkIGZvcmVpZ250YWJsZWlkLAorIAkJCQkJ CQkgIEZvcmVpZ25QYXRoICpwYXRoLAorIAkJCQkJCQkgIFJlbGlkcyByZXF1 aXJlZF9vdXRlcikKKyB7CisgCVBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm87 CisgCUZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2YXRlID0gKEZpbGVGZHdQ bGFuU3RhdGUgKikgYmFzZXJlbC0+ZmR3X3ByaXZhdGU7CisgCUNvc3QJCXN0 YXJ0dXBfY29zdDsKKyAJQ29zdAkJdG90YWxfY29zdDsKKyAKKyAJLyogR2V0 IHRoZSBQYXJhbVBhdGhJbmZvICovCisgCXBhcmFtX2luZm8gPSBnZXRfYmFz ZXJlbF9wYXJhbXBhdGhpbmZvKHJvb3QsIGJhc2VyZWwsIHJlcXVpcmVkX291 dGVyKTsKKyAKKyAJLyogUmVkbyB0aGUgY29zdCBlc3RpbWF0ZXMgKi8KKyAJ ZXN0aW1hdGVfY29zdHMocm9vdCwgYmFzZXJlbCwKKyAJCQkJICAgZmR3X3By aXZhdGUsCisgCQkJCSAgIHBhcmFtX2luZm8tPnBwaV9jbGF1c2VzLAorIAkJ CQkgICAmc3RhcnR1cF9jb3N0LCAmdG90YWxfY29zdCk7CisgCisgCS8qIE1h a2UgYW5kIHJldHVybiB0aGUgbmV3IHBhdGggKi8KKyAJcmV0dXJuIGNyZWF0 ZV9mb3JlaWduc2Nhbl9wYXRoKHJvb3QsIGJhc2VyZWwsCisgCQkJCQkJCQkg ICBwYXJhbV9pbmZvLT5wcGlfcm93cywKKyAJCQkJCQkJCSAgIHN0YXJ0dXBf Y29zdCwKKyAJCQkJCQkJCSAgIHRvdGFsX2Nvc3QsCisgCQkJCQkJCQkgICBO SUwsCQkvKiBubyBwYXRoa2V5cyAqLworIAkJCQkJCQkJICAgcmVxdWlyZWRf b3V0ZXIsCisgCQkJCQkJCQkgICBwYXRoLT5mZHdfcHJpdmF0ZSk7CisgfQor IAorIC8qCiAgICogZmlsZUdldEZvcmVpZ25QbGFuCiAgICoJCUNyZWF0ZSBh IEZvcmVpZ25TY2FuIHBsYW4gbm9kZSBmb3Igc2Nhbm5pbmcgdGhlIGZvcmVp Z24gdGFibGUKICAgKi8KKioqKioqKioqKioqKioqCioqKiA5NzAsOTgxICoq KiogZXN0aW1hdGVfc2l6ZShQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqYmFzZXJlbCwKICAgKi8KICBzdGF0aWMgdm9pZAogIGVzdGltYXRlX2Nv c3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpiYXNlcmVsLAoh IAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2YXRlLAogIAkJCSAg IENvc3QgKnN0YXJ0dXBfY29zdCwgQ29zdCAqdG90YWxfY29zdCkKICB7CiAg CUJsb2NrTnVtYmVyIHBhZ2VzID0gZmR3X3ByaXZhdGUtPnBhZ2VzOwogIAlk b3VibGUJCW50dXBsZXMgPSBmZHdfcHJpdmF0ZS0+bnR1cGxlczsKICAJQ29z dAkJcnVuX2Nvc3QgPSAwOwogIAlDb3N0CQljcHVfcGVyX3R1cGxlOwogIAog IAkvKgotLS0gMTAxMiwxMDI0IC0tLS0KICAgKi8KICBzdGF0aWMgdm9pZAog IGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpiYXNlcmVsLAohIAkJCSAgIEZpbGVGZHdQbGFuU3RhdGUgKmZkd19wcml2 YXRlLCBMaXN0ICpqb2luX2NvbmRzLAogIAkJCSAgIENvc3QgKnN0YXJ0dXBf Y29zdCwgQ29zdCAqdG90YWxfY29zdCkKICB7CiAgCUJsb2NrTnVtYmVyIHBh Z2VzID0gZmR3X3ByaXZhdGUtPnBhZ2VzOwogIAlkb3VibGUJCW50dXBsZXMg PSBmZHdfcHJpdmF0ZS0+bnR1cGxlczsKICAJQ29zdAkJcnVuX2Nvc3QgPSAw OworIAlRdWFsQ29zdAlqb2luX2Nvc3Q7CiAgCUNvc3QJCWNwdV9wZXJfdHVw bGU7CiAgCiAgCS8qCioqKioqKioqKioqKioqKgoqKiogOTg2LDk5MyAqKioq IGVzdGltYXRlX2Nvc3RzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpiYXNlcmVsLAogIAkgKi8KICAJcnVuX2Nvc3QgKz0gc2VxX3BhZ2VfY29z dCAqIHBhZ2VzOwogIAohIAkqc3RhcnR1cF9jb3N0ID0gYmFzZXJlbC0+YmFz ZXJlc3RyaWN0Y29zdC5zdGFydHVwOwohIAljcHVfcGVyX3R1cGxlID0gY3B1 X3R1cGxlX2Nvc3QgKiAxMCArIGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Qu cGVyX3R1cGxlOwogIAlydW5fY29zdCArPSBjcHVfcGVyX3R1cGxlICogbnR1 cGxlczsKICAJKnRvdGFsX2Nvc3QgPSAqc3RhcnR1cF9jb3N0ICsgcnVuX2Nv c3Q7CiAgfQotLS0gMTAyOSwxMDM5IC0tLS0KICAJICovCiAgCXJ1bl9jb3N0 ICs9IHNlcV9wYWdlX2Nvc3QgKiBwYWdlczsKICAKISAJY29zdF9xdWFsX2V2 YWwoJmpvaW5fY29zdCwgam9pbl9jb25kcywgcm9vdCk7CiEgCSpzdGFydHVw X2Nvc3QgPQohIAkJKGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Quc3RhcnR1 cCArIGpvaW5fY29zdC5zdGFydHVwKTsKISAJY3B1X3Blcl90dXBsZSA9IGNw dV90dXBsZV9jb3N0ICogMTAgKwohIAkJKGJhc2VyZWwtPmJhc2VyZXN0cmlj dGNvc3QucGVyX3R1cGxlICsgam9pbl9jb3N0LnBlcl90dXBsZSk7CiAgCXJ1 bl9jb3N0ICs9IGNwdV9wZXJfdHVwbGUgKiBudHVwbGVzOwogIAkqdG90YWxf Y29zdCA9ICpzdGFydHVwX2Nvc3QgKyBydW5fY29zdDsKICB9CioqKiBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCi0tLSBiL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCioqKioqKioqKioqKioq KgoqKiogMjQxLDI0NiAqKioqIHN0YXRpYyB2b2lkIHBvc3RncmVzR2V0Rm9y ZWlnblJlbFNpemUoUGxhbm5lckluZm8gKnJvb3QsCi0tLSAyNDEsMjUxIC0t LS0KICBzdGF0aWMgdm9pZCBwb3N0Z3Jlc0dldEZvcmVpZ25QYXRocyhQbGFu bmVySW5mbyAqcm9vdCwKICAJCQkJCQlSZWxPcHRJbmZvICpiYXNlcmVsLAog IAkJCQkJCU9pZCBmb3JlaWdudGFibGVpZCk7Cisgc3RhdGljIEZvcmVpZ25Q YXRoICpwb3N0Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgoUGxhbm5l ckluZm8gKnJvb3QsCisgCQkJCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqYmFz ZXJlbCwKKyAJCQkJCQkJCQkJCQkJICBPaWQgZm9yZWlnbnRhYmxlaWQsCisg CQkJCQkJCQkJCQkJCSAgRm9yZWlnblBhdGggKnBhdGgsCisgCQkJCQkJCQkJ CQkJCSAgUmVsaWRzIHJlcXVpcmVkX291dGVyKTsKICBzdGF0aWMgRm9yZWln blNjYW4gKnBvc3RncmVzR2V0Rm9yZWlnblBsYW4oUGxhbm5lckluZm8gKnJv b3QsCiAgCQkJCQkgICBSZWxPcHRJbmZvICpiYXNlcmVsLAogIAkJCQkJICAg T2lkIGZvcmVpZ250YWJsZWlkLAoqKioqKioqKioqKioqKioKKioqIDM0Miwz NDcgKioqKiBwb3N0Z3Jlc19mZHdfaGFuZGxlcihQR19GVU5DVElPTl9BUkdT KQotLS0gMzQ3LDM1MyAtLS0tCiAgCS8qIEZ1bmN0aW9ucyBmb3Igc2Nhbm5p bmcgZm9yZWlnbiB0YWJsZXMgKi8KICAJcm91dGluZS0+R2V0Rm9yZWlnblJl bFNpemUgPSBwb3N0Z3Jlc0dldEZvcmVpZ25SZWxTaXplOwogIAlyb3V0aW5l LT5HZXRGb3JlaWduUGF0aHMgPSBwb3N0Z3Jlc0dldEZvcmVpZ25QYXRoczsK KyAJcm91dGluZS0+UmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aCA9IHBvc3Rn cmVzUmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aDsKICAJcm91dGluZS0+R2V0 Rm9yZWlnblBsYW4gPSBwb3N0Z3Jlc0dldEZvcmVpZ25QbGFuOwogIAlyb3V0 aW5lLT5CZWdpbkZvcmVpZ25TY2FuID0gcG9zdGdyZXNCZWdpbkZvcmVpZ25T Y2FuOwogIAlyb3V0aW5lLT5JdGVyYXRlRm9yZWlnblNjYW4gPSBwb3N0Z3Jl c0l0ZXJhdGVGb3JlaWduU2NhbjsKKioqKioqKioqKioqKioqCioqKiA3Mjks NzM0ICoqKiogcG9zdGdyZXNHZXRGb3JlaWduUGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCi0tLSA3MzUsNzgyIC0tLS0KICB9CiAgCiAgLyoKKyAgKiBwb3N0 Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgKKyAgKgkJQXR0ZW1wdCB0 byBtb2RpZnkgYSBnaXZlbiBwYXRoIHRvIGhhdmUgZ3JlYXRlciBwYXJhbWV0 ZXJpemF0aW9uCisgICovCisgc3RhdGljIEZvcmVpZ25QYXRoICoKKyBwb3N0 Z3Jlc1JlcGFyYW1ldGVyaXplRm9yZWlnblBhdGgoUGxhbm5lckluZm8gKnJv b3QsCisgCQkJCQkJCQkgIFJlbE9wdEluZm8gKmJhc2VyZWwsCisgCQkJCQkJ CQkgIE9pZCBmb3JlaWdudGFibGVpZCwKKyAJCQkJCQkJCSAgRm9yZWlnblBh dGggKnBhdGgsCisgCQkJCQkJCQkgIFJlbGlkcyByZXF1aXJlZF9vdXRlcikK KyB7CisgCVBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm87CisgCWRvdWJsZQkJ cm93czsKKyAJaW50CQkJd2lkdGg7CisgCUNvc3QJCXN0YXJ0dXBfY29zdDsK KyAJQ29zdAkJdG90YWxfY29zdDsKKyAKKyAJLyogR2V0IHRoZSBQYXJhbVBh dGhJbmZvICovCisgCXBhcmFtX2luZm8gPSBnZXRfYmFzZXJlbF9wYXJhbXBh dGhpbmZvKHJvb3QsIGJhc2VyZWwsIHJlcXVpcmVkX291dGVyKTsKKyAKKyAJ LyogUmVkbyB0aGUgY29zdCBlc3RpbWF0ZXMgKi8KKyAJZXN0aW1hdGVfcGF0 aF9jb3N0X3NpemUocm9vdCwgYmFzZXJlbCwKKyAJCQkJCQkJcGFyYW1faW5m by0+cHBpX2NsYXVzZXMsCisgCQkJCQkJCSZyb3dzLCAmd2lkdGgsCisgCQkJ CQkJCSZzdGFydHVwX2Nvc3QsICZ0b3RhbF9jb3N0KTsKKyAKKyAJLyoKKyAJ ICogcHBpX3Jvd3MgY3VycmVudGx5IHdvbid0IGdldCBsb29rZWQgYXQgYnkg YW55dGhpbmcsIGJ1dCBzdGlsbCB3ZQorIAkgKiBtYXkgYXMgd2VsbCBlbnN1 cmUgdGhhdCBpdCBtYXRjaGVzIG91ciBpZGVhIG9mIHRoZSByb3djb3VudC4K KyAJICovCisgCXBhcmFtX2luZm8tPnBwaV9yb3dzID0gcm93czsKKyAKKyAJ LyogTWFrZSBhbmQgcmV0dXJuIHRoZSBuZXcgcGF0aCAqLworIAlyZXR1cm4g Y3JlYXRlX2ZvcmVpZ25zY2FuX3BhdGgocm9vdCwgYmFzZXJlbCwKKyAJCQkJ CQkJCSAgIHJvd3MsCisgCQkJCQkJCQkgICBzdGFydHVwX2Nvc3QsCisgCQkJ CQkJCQkgICB0b3RhbF9jb3N0LAorIAkJCQkJCQkJICAgTklMLAkJLyogbm8g cGF0aGtleXMgKi8KKyAJCQkJCQkJCSAgIHJlcXVpcmVkX291dGVyLAorIAkJ CQkJCQkJICAgTklMKTsJLyogbm8gZmR3X3ByaXZhdGUgbGlzdCAqLworIH0K KyAKKyAvKgogICAqIHBvc3RncmVzR2V0Rm9yZWlnblBsYW4KICAgKgkJQ3Jl YXRlIEZvcmVpZ25TY2FuIHBsYW4gbm9kZSB3aGljaCBpbXBsZW1lbnRzIHNl bGVjdGVkIGJlc3QgcGF0aAogICAqLwoqKioqKioqKioqKioqKioKKioqIDE3 NzUsMTc4NSAqKioqIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJ bmZvICpyb290LAogIAl9CiAgCWVsc2UKICAJewohIAkJLyoKISAJCSAqIFdl IGRvbid0IHN1cHBvcnQgam9pbiBjb25kaXRpb25zIGluIHRoaXMgbW9kZSAo aGVuY2UsIG5vCiEgCQkgKiBwYXJhbWV0ZXJpemVkIHBhdGhzIGNhbiBiZSBt YWRlKS4KISAJCSAqLwohIAkJQXNzZXJ0KGpvaW5fY29uZHMgPT0gTklMKTsK ICAKICAJCS8qIFVzZSByb3dzL3dpZHRoIGVzdGltYXRlcyBtYWRlIGJ5IHNl dF9iYXNlcmVsX3NpemVfZXN0aW1hdGVzLiAqLwogIAkJcm93cyA9IGJhc2Vy ZWwtPnJvd3M7Ci0tLSAxODIzLDE4MzAgLS0tLQogIAl9CiAgCWVsc2UKICAJ ewohIAkJU2VsZWN0aXZpdHkgam9pbl9zZWw7CiEgCQlRdWFsQ29zdAlqb2lu X2Nvc3Q7CiAgCiAgCQkvKiBVc2Ugcm93cy93aWR0aCBlc3RpbWF0ZXMgbWFk ZSBieSBzZXRfYmFzZXJlbF9zaXplX2VzdGltYXRlcy4gKi8KICAJCXJvd3Mg PSBiYXNlcmVsLT5yb3dzOwoqKioqKioqKioqKioqKioKKioqIDE3OTIsMTgw OCAqKioqIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJbmZvICpy b290LAogIAkJcmV0cmlldmVkX3Jvd3MgPSBjbGFtcF9yb3dfZXN0KHJvd3Mg LyBmcGluZm8tPmxvY2FsX2NvbmRzX3NlbCk7CiAgCQlyZXRyaWV2ZWRfcm93 cyA9IE1pbihyZXRyaWV2ZWRfcm93cywgYmFzZXJlbC0+dHVwbGVzKTsKICAK ICAJCS8qCiAgCQkgKiBDb3N0IGFzIHRob3VnaCB0aGlzIHdlcmUgYSBzZXFz Y2FuLCB3aGljaCBpcyBwZXNzaW1pc3RpYy4gIFdlCiEgCQkgKiBlZmZlY3Rp dmVseSBpbWFnaW5lIHRoZSBsb2NhbF9jb25kcyBhcmUgYmVpbmcgZXZhbHVh dGVkIHJlbW90ZWx5LAohIAkJICogdG9vLgogIAkJICovCiAgCQlzdGFydHVw X2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgKz0g c2VxX3BhZ2VfY29zdCAqIGJhc2VyZWwtPnBhZ2VzOwogIAohIAkJc3RhcnR1 cF9jb3N0ICs9IGJhc2VyZWwtPmJhc2VyZXN0cmljdGNvc3Quc3RhcnR1cDsK ISAJCWNwdV9wZXJfdHVwbGUgPSBjcHVfdHVwbGVfY29zdCArIGJhc2VyZWwt PmJhc2VyZXN0cmljdGNvc3QucGVyX3R1cGxlOwogIAkJcnVuX2Nvc3QgKz0g Y3B1X3Blcl90dXBsZSAqIGJhc2VyZWwtPnR1cGxlczsKICAKICAJCXRvdGFs X2Nvc3QgPSBzdGFydHVwX2Nvc3QgKyBydW5fY29zdDsKLS0tIDE4MzcsMTg2 NSAtLS0tCiAgCQlyZXRyaWV2ZWRfcm93cyA9IGNsYW1wX3Jvd19lc3Qocm93 cyAvIGZwaW5mby0+bG9jYWxfY29uZHNfc2VsKTsKICAJCXJldHJpZXZlZF9y b3dzID0gTWluKHJldHJpZXZlZF9yb3dzLCBiYXNlcmVsLT50dXBsZXMpOwog IAorIAkJLyogRmFjdG9yIGluIHRoZSBzZWxlY3Rpdml0eSBvZiB0aGUgam9p bl9jb25kcyAqLworIAkJam9pbl9zZWwgPSBjbGF1c2VsaXN0X3NlbGVjdGl2 aXR5KHJvb3QsCisgCQkJCQkJCQkJCSAgam9pbl9jb25kcywKKyAJCQkJCQkJ CQkJICBiYXNlcmVsLT5yZWxpZCwKKyAJCQkJCQkJCQkJICBKT0lOX0lOTkVS LAorIAkJCQkJCQkJCQkgIE5VTEwpOworIAorIAkJcm93cyA9IGNsYW1wX3Jv d19lc3Qocm93cyAqIGpvaW5fc2VsKTsKKyAKICAJCS8qCiAgCQkgKiBDb3N0 IGFzIHRob3VnaCB0aGlzIHdlcmUgYSBzZXFzY2FuLCB3aGljaCBpcyBwZXNz aW1pc3RpYy4gIFdlCiEgCQkgKiBlZmZlY3RpdmVseSBpbWFnaW5lIHRoZSBs b2NhbF9jb25kcyBhbmQgam9pbl9jb25kcyBhcmUgYmVpbmcKISAJCSAqIGV2 YWx1YXRlZCByZW1vdGVseSwgdG9vLgogIAkJICovCiAgCQlzdGFydHVwX2Nv c3QgPSAwOwogIAkJcnVuX2Nvc3QgPSAwOwogIAkJcnVuX2Nvc3QgKz0gc2Vx X3BhZ2VfY29zdCAqIGJhc2VyZWwtPnBhZ2VzOwogIAohIAkJY29zdF9xdWFs X2V2YWwoJmpvaW5fY29zdCwgam9pbl9jb25kcywgcm9vdCk7CiEgCQlzdGFy dHVwX2Nvc3QgKz0KISAJCQkoYmFzZXJlbC0+YmFzZXJlc3RyaWN0Y29zdC5z dGFydHVwICsgam9pbl9jb3N0LnN0YXJ0dXApOwohIAkJY3B1X3Blcl90dXBs ZSA9IGNwdV90dXBsZV9jb3N0ICsKISAJCQkoYmFzZXJlbC0+YmFzZXJlc3Ry aWN0Y29zdC5wZXJfdHVwbGUgKyBqb2luX2Nvc3QucGVyX3R1cGxlKTsKICAJ CXJ1bl9jb3N0ICs9IGNwdV9wZXJfdHVwbGUgKiBiYXNlcmVsLT50dXBsZXM7 CiAgCiAgCQl0b3RhbF9jb3N0ID0gc3RhcnR1cF9jb3N0ICsgcnVuX2Nvc3Q7 CioqKiBhL2RvYy9zcmMvc2dtbC9mZHdoYW5kbGVyLnNnbWwKLS0tIGIvZG9j L3NyYy9zZ21sL2Zkd2hhbmRsZXIuc2dtbAoqKioqKioqKioqKioqKioKKioq IDE2MiwxNjcgKioqKiBHZXRGb3JlaWduUGF0aHMgKFBsYW5uZXJJbmZvICpy b290LAotLS0gMTYyLDE5OCAtLS0tCiAgCiAgICAgIDxwYXJhPgogIDxwcm9n cmFtbGlzdGluZz4KKyBGb3JlaWduUGF0aCAqCisgUmVwYXJhbWV0ZXJpemVG b3JlaWduUGF0aCAoUGxhbm5lckluZm8gKnJvb3QsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVsT3B0SW5mbyAqYmFzZXJlbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPaWQgZm9yZWlnbnRhYmxlaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRm9yZWlnblBhdGggKnBhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsaWRzIHJlcXVpcmVkX291 dGVyKTsKKyA8L3Byb2dyYW1saXN0aW5nPgorIAorICAgICAgQ3JlYXRlIGFu IGFjY2VzcyBwYXRoIGZvciBhIHNjYW4gb24gYSBmb3JlaWduIHRhYmxlIHVz aW5nIGpvaW4KKyAgICAgIGNsYXVzZXMsIHdoaWNoIGlzIGNhbGxlZCBhIDxx dW90ZT5wYXJhbWV0ZXJpemVkIHBhdGg8Lz4uCisgICAgICBUaGlzIGlzIGNh bGxlZCBkdXJpbmcgcXVlcnkgcGxhbm5pbmcuCisgICAgICBUaGUgcGFyYW1l dGVycyBhcmUgYXMgZm9yIDxmdW5jdGlvbj5HZXRGb3JlaWduUmVsU2l6ZTwv PiwgcGx1cworICAgICAgdGhlIDxzdHJ1Y3RuYW1lPkZvcmVpZ25QYXRoPC8+ IChwcmV2aW91c2x5IHByb2R1Y2VkIGJ5CisgICAgICA8ZnVuY3Rpb24+R2V0 Rm9yZWlnblBhdGhzPC8+KSwgYW5kIHRoZSBJRHMgb2YgYWxsIG90aGVyIHRh YmxlcworICAgICAgdGhhdCBwcm92aWRlIHRoZSBqb2luIGNsYXVzZXMuCisg ICAgIDwvcGFyYT4KKyAKKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZ1bmN0 aW9uIG11c3QgZ2VuZXJhdGUgYSBwYXJhbWV0ZXJpemVkIHBhdGggZm9yIGEg c2NhbiBvbiB0aGUKKyAgICAgIGZvcmVpZ24gdGFibGUuICBUaGUgcGFyYW1l dGVyaXplZCBwYXRoIG11c3QgY29udGFpbiBjb3N0IGVzdGltYXRlcywKKyAg ICAgIGFuZCBjYW4gY29udGFpbiBhbnkgRkRXLXByaXZhdGUgaW5mb3JtYXRp b24gdGhhdCBpcyBuZWVkZWQgdG8gaWRlbnRpZnkKKyAgICAgIHRoZSBzcGVj aWZpYyBzY2FuIG1ldGhvZCBpbnRlbmRlZC4gIFVubGlrZSB0aGUgb3RoZXIg c2Nhbi1yZWxhdGVkCisgICAgICBmdW5jdGlvbnMsIHRoaXMgZnVuY3Rpb24g aXMgb3B0aW9uYWwuCisgICAgIDwvcGFyYT4KKyAKKyAgICAgPHBhcmE+Cisg ICAgICBTZWUgPHhyZWYgbGlua2VuZD0iZmR3LXBsYW5uaW5nIj4gZm9yIGFk ZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgIDwvcGFyYT4KKyAKKyAgICAg PHBhcmE+CisgPHByb2dyYW1saXN0aW5nPgogIEZvcmVpZ25TY2FuICoKICBH ZXRGb3JlaWduUGxhbiAoUGxhbm5lckluZm8gKnJvb3QsCiAgICAgICAgICAg ICAgICAgIFJlbE9wdEluZm8gKmJhc2VyZWwsCioqKioqKioqKioqKioqKgoq KiogODA0LDgxMyAqKioqIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKICAKICAgICAgPHBhcmE+ CiAgICAgICBUaGUgRkRXIGNhbGxiYWNrIGZ1bmN0aW9ucyA8ZnVuY3Rpb24+ R2V0Rm9yZWlnblJlbFNpemU8Lz4sCiEgICAgICA8ZnVuY3Rpb24+R2V0Rm9y ZWlnblBhdGhzPC8+LCA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBsYW48Lz4sIGFu ZAohICAgICAgPGZ1bmN0aW9uPlBsYW5Gb3JlaWduTW9kaWZ5PC8+IG11c3Qg Zml0IGludG8gdGhlIHdvcmtpbmdzIG9mIHRoZQohICAgICAgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8Lz4gcGxhbm5lci4gIEhlcmUgYXJlIHNvbWUgbm90 ZXMgYWJvdXQgd2hhdAohICAgICAgdGhleSBtdXN0IGRvLgogICAgICA8L3Bh cmE+CiAgCiAgICAgIDxwYXJhPgotLS0gODM1LDg0NCAtLS0tCiAgCiAgICAg IDxwYXJhPgogICAgICAgVGhlIEZEVyBjYWxsYmFjayBmdW5jdGlvbnMgPGZ1 bmN0aW9uPkdldEZvcmVpZ25SZWxTaXplPC8+LAohICAgICAgPGZ1bmN0aW9u PkdldEZvcmVpZ25QYXRoczwvPiwgPGZ1bmN0aW9uPlJlcGFyYW1ldGVyaXpl Rm9yZWlnblBhdGg8Lz4sCiEgICAgICA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBs YW48Lz4sIGFuZCA8ZnVuY3Rpb24+UGxhbkZvcmVpZ25Nb2RpZnk8Lz4gbXVz dCBmaXQKISAgICAgIGludG8gdGhlIHdvcmtpbmdzIG9mIHRoZSA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvPiBwbGFubmVyLiAgSGVyZSBhcmUKISAgICAg IHNvbWUgbm90ZXMgYWJvdXQgd2hhdCB0aGV5IG11c3QgZG8uCiAgICAgIDwv cGFyYT4KICAKICAgICAgPHBhcmE+CioqKioqKioqKioqKioqKgoqKiogODM3 LDg1MCAqKioqIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKICAgICAgIHRvIGluaXRpYWxpemUg aXQgdG8gTlVMTCB3aGVuIHRoZSA8bGl0ZXJhbD5iYXNlcmVsPC8+IG5vZGUg aXMgY3JlYXRlZC4KICAgICAgIEl0IGlzIHVzZWZ1bCBmb3IgcGFzc2luZyBp bmZvcm1hdGlvbiBmb3J3YXJkIGZyb20KICAgICAgIDxmdW5jdGlvbj5HZXRG b3JlaWduUmVsU2l6ZTwvPiB0byA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhz PC8+IGFuZC9vcgohICAgICAgPGZ1bmN0aW9uPkdldEZvcmVpZ25QYXRoczwv PiB0byA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBsYW48Lz4sIHRoZXJlYnkKISAg ICAgIGF2b2lkaW5nIHJlY2FsY3VsYXRpb24uCiAgICAgIDwvcGFyYT4KICAK ICAgICAgPHBhcmE+CiEgICAgICA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhz PC8+IGNhbiBpZGVudGlmeSB0aGUgbWVhbmluZyBvZiBkaWZmZXJlbnQKISAg ICAgIGFjY2VzcyBwYXRocyBieSBzdG9yaW5nIHByaXZhdGUgaW5mb3JtYXRp b24gaW4gdGhlCiEgICAgICA8c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4g ZmllbGQgb2YgPHN0cnVjdG5hbWU+Rm9yZWlnblBhdGg8Lz4gbm9kZXMuCiAg ICAgICA8c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4gaXMgZGVjbGFyZWQg YXMgYSA8dHlwZT5MaXN0PC8+IHBvaW50ZXIsIGJ1dAogICAgICAgY291bGQg YWN0dWFsbHkgY29udGFpbiBhbnl0aGluZyBzaW5jZSB0aGUgY29yZSBwbGFu bmVyIGRvZXMgbm90IHRvdWNoCiAgICAgICBpdC4gIEhvd2V2ZXIsIGJlc3Qg cHJhY3RpY2UgaXMgdG8gdXNlIGEgcmVwcmVzZW50YXRpb24gdGhhdCdzIGR1 bXBhYmxlCi0tLSA4NjgsODg0IC0tLS0KICAgICAgIHRvIGluaXRpYWxpemUg aXQgdG8gTlVMTCB3aGVuIHRoZSA8bGl0ZXJhbD5iYXNlcmVsPC8+IG5vZGUg aXMgY3JlYXRlZC4KICAgICAgIEl0IGlzIHVzZWZ1bCBmb3IgcGFzc2luZyBp bmZvcm1hdGlvbiBmb3J3YXJkIGZyb20KICAgICAgIDxmdW5jdGlvbj5HZXRG b3JlaWduUmVsU2l6ZTwvPiB0byA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhz PC8+IGFuZC9vcgohICAgICAgPGZ1bmN0aW9uPkdldEZvcmVpZ25QYXRoczwv PiB0byA8ZnVuY3Rpb24+UmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aDwvPgoh ICAgICAgYW5kL29yCiEgICAgICA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBhdGhz PC8+IG9yIDxmdW5jdGlvbj5SZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRoPC8+ CiEgICAgICB0byA8ZnVuY3Rpb24+R2V0Rm9yZWlnblBsYW48Lz4sIHRoZXJl YnkgYXZvaWRpbmcgcmVjYWxjdWxhdGlvbi4KICAgICAgPC9wYXJhPgogIAog ICAgICA8cGFyYT4KISAgICAgIDxmdW5jdGlvbj5HZXRGb3JlaWduUGF0aHM8 Lz4gb3IgPGZ1bmN0aW9uPlJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGg8Lz4K ISAgICAgIGNhbiBpZGVudGlmeSB0aGUgbWVhbmluZyBvZiBkaWZmZXJlbnQg YWNjZXNzIHBhdGhzIGJ5IHN0b3JpbmcgcHJpdmF0ZQohICAgICAgaW5mb3Jt YXRpb24gaW4gdGhlIDxzdHJ1Y3RmaWVsZD5mZHdfcHJpdmF0ZTwvPiBmaWVs ZCBvZgohICAgICAgPHN0cnVjdG5hbWU+Rm9yZWlnblBhdGg8Lz4gbm9kZXMu CiAgICAgICA8c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4gaXMgZGVjbGFy ZWQgYXMgYSA8dHlwZT5MaXN0PC8+IHBvaW50ZXIsIGJ1dAogICAgICAgY291 bGQgYWN0dWFsbHkgY29udGFpbiBhbnl0aGluZyBzaW5jZSB0aGUgY29yZSBw bGFubmVyIGRvZXMgbm90IHRvdWNoCiAgICAgICBpdC4gIEhvd2V2ZXIsIGJl c3QgcHJhY3RpY2UgaXMgdG8gdXNlIGEgcmVwcmVzZW50YXRpb24gdGhhdCdz IGR1bXBhYmxlCioqKioqKioqKioqKioqKgoqKiogODg3LDg5NiAqKioqIEdl dEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBt aXNzaW5nX29rKTsKICAgICAgIDxyZXBsYWNlYWJsZT5zdWJfZXhwcmVzc2lv bjwvPiwgd2hpY2ggaXQgZGV0ZXJtaW5lcyBjYW4gYmUgZXhlY3V0ZWQgb24K ICAgICAgIHRoZSByZW1vdGUgc2VydmVyIGdpdmVuIHRoZSBsb2NhbGx5LWV2 YWx1YXRlZCB2YWx1ZSBvZiB0aGUKICAgICAgIDxyZXBsYWNlYWJsZT5zdWJf ZXhwcmVzc2lvbjwvPi4gIFRoZSBhY3R1YWwgaWRlbnRpZmljYXRpb24gb2Yg c3VjaCBhCiEgICAgICBjbGF1c2Ugc2hvdWxkIGhhcHBlbiBkdXJpbmcgPGZ1 bmN0aW9uPkdldEZvcmVpZ25QYXRoczwvPiwgc2luY2UgaXQgd291bGQKISAg ICAgIGFmZmVjdCB0aGUgY29zdCBlc3RpbWF0ZSBmb3IgdGhlIHBhdGguICBU aGUgcGF0aCdzCiEgICAgICA8c3RydWN0ZmllbGQ+ZmR3X3ByaXZhdGU8Lz4g ZmllbGQgd291bGQgcHJvYmFibHkgaW5jbHVkZSBhIHBvaW50ZXIgdG8KISAg ICAgIHRoZSBpZGVudGlmaWVkIGNsYXVzZSdzIDxzdHJ1Y3RuYW1lPlJlc3Ry aWN0SW5mbzwvPiBub2RlLiAgVGhlbgogICAgICAgPGZ1bmN0aW9uPkdldEZv cmVpZ25QbGFuPC8+IHdvdWxkIHJlbW92ZSB0aGF0IGNsYXVzZSBmcm9tIHNj YW5fY2xhdXNlcywKICAgICAgIGJ1dCBhZGQgdGhlIDxyZXBsYWNlYWJsZT5z dWJfZXhwcmVzc2lvbjwvPiB0byA8c3RydWN0ZmllbGQ+ZmR3X2V4cHJzPC8+ CiAgICAgICB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIG1hc3NhZ2VkIGludG8g ZXhlY3V0YWJsZSBmb3JtLiAgSXQgd291bGQgcHJvYmFibHkKLS0tIDkyMSw5 MzEgLS0tLQogICAgICAgPHJlcGxhY2VhYmxlPnN1Yl9leHByZXNzaW9uPC8+ LCB3aGljaCBpdCBkZXRlcm1pbmVzIGNhbiBiZSBleGVjdXRlZCBvbgogICAg ICAgdGhlIHJlbW90ZSBzZXJ2ZXIgZ2l2ZW4gdGhlIGxvY2FsbHktZXZhbHVh dGVkIHZhbHVlIG9mIHRoZQogICAgICAgPHJlcGxhY2VhYmxlPnN1Yl9leHBy ZXNzaW9uPC8+LiAgVGhlIGFjdHVhbCBpZGVudGlmaWNhdGlvbiBvZiBzdWNo IGEKISAgICAgIGNsYXVzZSBzaG91bGQgaGFwcGVuIGR1cmluZyA8ZnVuY3Rp b24+R2V0Rm9yZWlnblBhdGhzPC8+IG9yCiEgICAgICA8ZnVuY3Rpb24+UmVw YXJhbWV0ZXJpemVGb3JlaWduUGF0aDwvPiwgc2luY2UgaXQgd291bGQgYWZm ZWN0IHRoZSBjb3N0CiEgICAgICBlc3RpbWF0ZSBmb3IgdGhlIHBhdGguICBU aGUgcGF0aCdzIDxzdHJ1Y3RmaWVsZD5mZHdfcHJpdmF0ZTwvPiBmaWVsZAoh ICAgICAgd291bGQgcHJvYmFibHkgaW5jbHVkZSBhIHBvaW50ZXIgdG8gdGhl IGlkZW50aWZpZWQgY2xhdXNlJ3MKISAgICAgIDxzdHJ1Y3RuYW1lPlJlc3Ry aWN0SW5mbzwvPiBub2RlLiAgVGhlbgogICAgICAgPGZ1bmN0aW9uPkdldEZv cmVpZ25QbGFuPC8+IHdvdWxkIHJlbW92ZSB0aGF0IGNsYXVzZSBmcm9tIHNj YW5fY2xhdXNlcywKICAgICAgIGJ1dCBhZGQgdGhlIDxyZXBsYWNlYWJsZT5z dWJfZXhwcmVzc2lvbjwvPiB0byA8c3RydWN0ZmllbGQ+ZmR3X2V4cHJzPC8+ CiAgICAgICB0byBlbnN1cmUgdGhhdCBpdCBnZXRzIG1hc3NhZ2VkIGludG8g ZXhlY3V0YWJsZSBmb3JtLiAgSXQgd291bGQgcHJvYmFibHkKKioqIGEvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKLS0tIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9mb3JlaWduX3RhYmxlLnNnbWwKKioq KioqKioqKioqKioqCioqKiA0Miw0NyAqKioqIEFMVEVSIEZPUkVJR04gVEFC TEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+bmFtZTwvcmVwbGFjZWFiCi0tLSA0Miw1MSAtLS0tCiAgICAgIEFMVEVS IFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPmF0dHJpYnV0ZV9vcHRpb248L3JlcGxhY2VhYmxl PiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj52YWx1ZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkKICAgICAgQUxURVIgWyBDT0xVTU4gXSA8 cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBSRVNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1F VEVSIj5hdHRyaWJ1dGVfb3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KQogICAgICBBTFRFUiBbIENPTFVNTiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i UEFSQU1FVEVSIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IE9QVElPTlMg KCBbIEFERCB8IFNFVCB8IERST1AgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWyc8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxlPiddIFssIC4u LiBdKQorICAgICBBREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIi PnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPgorICAgICBEUk9QIENP TlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxlIGNsYXNzPSJQ QVJBTUVURVIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICAgSU5IRVJJVCA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4K KyAgICAgTk8gSU5IRVJJVCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRF UiI+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgT1dORVIgVE8g PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPm5ld19vd25lcjwvcmVw bGFjZWFibGU+CiAgICAgIE9QVElPTlMgKCBbIEFERCB8IFNFVCB8IERST1Ag XSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+b3B0aW9uPC9yZXBs YWNlYWJsZT4gWyc8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFs dWU8L3JlcGxhY2VhYmxlPiddIFssIC4uLiBdKQogIDwvc3lub3BzaXM+Cioq KioqKioqKioqKioqKgoqKiogMTQ5LDE1NCAqKioqIEFMVEVSIEZPUkVJR04g VEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFN RVRFUiI+bmFtZTwvcmVwbGFjZWFiCi0tLSAxNTMsMjAyIC0tLS0KICAgICA8 L3Zhcmxpc3RlbnRyeT4KICAKICAgICA8dmFybGlzdGVudHJ5PgorICAgICA8 dGVybT48bGl0ZXJhbD5BREQgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVU RVIiPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48 L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IFRoaXMgZm9ybSBhZGRzIGEgbmV3IGNvbnN0cmFpbnQgdG8gYSB0YWJsZSB1 c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAgICA8eHJlZiBsaW5rZW5k PSJTUUwtQ1JFQVRFRk9SRUlHTlRBQkxFIj4uCisgICAgICAgVW5saWtlIHRo ZSBjYXNlIHdoZW4gYWRkaW5nIGEgY29uc3RyYWludCB0byBhIHJlZ3VsYXIg dGFibGUsIG5vdGhpbmcgaGFwcGVucworICAgICAgIHRvIHRoZSB1bmRlcmx5 aW5nIHN0b3JhZ2U6IHRoaXMgYWN0aW9uIHNpbXBseSBkZWNsYXJlcyB0aGF0 CisgICAgICAgc29tZSBuZXcgY29uc3RyYWludCBob2xkcyBmb3IgYWxsIHJv d3MgaW4gdGhlIGZvcmVpZ24gdGFibGUuCisgICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisgCisgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+RFJPUCBDT05TVFJB SU5UIFsgSUYgRVhJU1RTIF08L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlz dGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm0gZHJvcHMg dGhlIHNwZWNpZmllZCBjb25zdHJhaW50IG9uIGEgdGFibGUuCisgICAgICAg SWYgPGxpdGVyYWw+SUYgRVhJU1RTPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQg YW5kIHRoZSBjb25zdHJhaW50CisgICAgICAgZG9lcyBub3QgZXhpc3QsIG5v IGVycm9yIGlzIHRocm93bi4gSW4gdGhpcyBjYXNlIGEgbm90aWNlIGlzIGlz c3VlZCBpbnN0ZWFkLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVt PgorICAgIDwvdmFybGlzdGVudHJ5PgorIAorICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgIDx0ZXJtPjxsaXRlcmFsPklOSEVSSVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+PC9s aXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBmb3JtIGFkZHMgdGhlIHRhcmdldCBmb3JlaWduIHRh YmxlIGFzIGEgbmV3IGNoaWxkIG9mIHRoZSBzcGVjaWZpZWQKKyAgICAgICBw YXJlbnQgdGFibGUuICBUaGUgcGFyZW50IHRhYmxlIG11c3QgYmUgYW4gb3Jk aW5hcnkgdGFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+ CisgICAgPC92YXJsaXN0ZW50cnk+CisgCisgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgPHRlcm0+PGxpdGVyYWw+Tk8gSU5IRVJJVCA8cmVwbGFjZWFibGUg Y2xhc3M9IlBBUkFNRVRFUiI+cGFyZW50X3RhYmxlPC9yZXBsYWNlYWJsZT48 L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICBUaGlzIGZvcm0gcmVtb3ZlcyB0aGUgdGFyZ2V0IGZvcmVp Z24gdGFibGUgZnJvbSB0aGUgbGlzdCBvZiBjaGlsZHJlbiBvZgorICAgICAg IHRoZSBzcGVjaWZpZWQgcGFyZW50IHRhYmxlLgorICAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorIAorICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxsaXRlcmFsPk9XTkVSPC9s aXRlcmFsPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+ CioqKioqKioqKioqKioqKgoqKiogMjcwLDI3NSAqKioqIEFMVEVSIEZPUkVJ R04gVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+bmFtZTwvcmVwbGFjZWFiCi0tLSAzMTgsMzQxIC0tLS0KICAg ICAgIDwvdmFybGlzdGVudHJ5PgogIAogICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBOZXcgdGFi bGUgY29uc3RyYWludCBmb3IgdGhlIHRhYmxlLgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5Pgor IAorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29uc3RyYWludF9uYW1lPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgIE5hbWUgb2YgYW4gZXhpc3RpbmcgY29uc3RyYWlu dCB0byBkcm9wLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRl bT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorIAorICAgICAgPHZhcmxpc3Rl bnRyeT4KICAgICAgICA8dGVybT48bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFs PjwvdGVybT4KICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgIDxwYXJhPgoq KioqKioqKioqKioqKioKKioqIDI5MCwyOTUgKioqKiBBTFRFUiBGT1JFSUdO IFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJB TUVURVIiPm5hbWU8L3JlcGxhY2VhYgotLS0gMzU2LDM3MSAtLS0tCiAgICAg ICA8L3Zhcmxpc3RlbnRyeT4KICAKICAgICAgIDx2YXJsaXN0ZW50cnk+Cisg ICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBh cmVudF90YWJsZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBIHBhcmVudCB0YWJs ZSB0byBhc3NvY2lhdGUgb3IgZGUtYXNzb2NpYXRlIHdpdGggdGhpcyBmb3Jl aWduIHRhYmxlLgorICAgICAgICAgVGhlIHBhcmVudCB0YWJsZSBtdXN0IGJl IGFuIG9yZGluYXJ5IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorIAorICAgICAg PHZhcmxpc3RlbnRyeT4KICAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9IlBBUkFNRVRFUiI+bmV3X293bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+ CiAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICA8cGFyYT4KKioqKioqKioq KioqKioqCioqKiAzMTksMzI4ICoqKiogQUxURVIgRk9SRUlHTiBUQUJMRSBb IElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5u YW1lPC9yZXBsYWNlYWIKICAgICA8cGFyYT4KICAgICAgQ29uc2lzdGVuY3kg d2l0aCB0aGUgZm9yZWlnbiBzZXJ2ZXIgaXMgbm90IGNoZWNrZWQgd2hlbiBh IGNvbHVtbiBpcyBhZGRlZAogICAgICBvciByZW1vdmVkIHdpdGggPGxpdGVy YWw+QUREIENPTFVNTjwvbGl0ZXJhbD4gb3IKISAgICAgPGxpdGVyYWw+RFJP UCBDT0xVTU48L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVCBOVUxMPC8+IGNv bnN0cmFpbnQgaXMKISAgICAgYWRkZWQsIG9yIGEgY29sdW1uIHR5cGUgaXMg Y2hhbmdlZCB3aXRoIDxsaXRlcmFsPlNFVCBEQVRBIFRZUEU8Lz4uICBJdCBp cwohICAgICB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0 aGF0IHRoZSB0YWJsZSBkZWZpbml0aW9uIG1hdGNoZXMgdGhlCiEgICAgIHJl bW90ZSBzaWRlLgogICAgIDwvcGFyYT4KICAKICAgICA8cGFyYT4KLS0tIDM5 NSw0MDQgLS0tLQogICAgIDxwYXJhPgogICAgICBDb25zaXN0ZW5jeSB3aXRo IHRoZSBmb3JlaWduIHNlcnZlciBpcyBub3QgY2hlY2tlZCB3aGVuIGEgY29s dW1uIGlzIGFkZGVkCiAgICAgIG9yIHJlbW92ZWQgd2l0aCA8bGl0ZXJhbD5B REQgQ09MVU1OPC9saXRlcmFsPiBvcgohICAgICA8bGl0ZXJhbD5EUk9QIENP TFVNTjwvbGl0ZXJhbD4sIGEgPGxpdGVyYWw+Tk9UIE5VTEw8Lz4gY29uc3Ry YWludCBvcgohICAgICA8bGl0ZXJhbD5DSEVDSzwvPiBjb25zdHJhaW50IGlz IGFkZGVkLCBvciBhIGNvbHVtbiB0eXBlIGlzIGNoYW5nZWQgd2l0aAohICAg ICA8bGl0ZXJhbD5TRVQgREFUQSBUWVBFPC8+LiAgSXQgaXMgdGhlIHVzZXIn cyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdAohICAgICB0aGUgdGFi bGUgZGVmaW5pdGlvbiBtYXRjaGVzIHRoZSByZW1vdGUgc2lkZS4KICAgICA8 L3BhcmE+CiAgCiAgICAgPHBhcmE+CioqKiBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfdGFibGUuc2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwKKioqKioqKioqKioqKioqCioqKiA5MzcsOTQyICoqKiog QUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+bmFtZTwvcmVwbGFjZWFibGU+Ci0tLSA5MzcsOTQ5IC0t LS0KICAgICA8L3BhcmE+CiAgCiAgICAgPHBhcmE+CisgICAgIElmIGEgdGFi bGUgaGFzIGFueSBkZXNjZW5kYW50IHRhYmxlcyB0aGF0IGFyZSBmb3JlaWdu LCBhIHJlY3Vyc2l2ZQorICAgICA8bGl0ZXJhbD5TRVQgU1RPUkFHRTwvbGl0 ZXJhbD4gb3BlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgc2luY2UgaXQKKyAg ICAgaXMgbm90IHBlcm1pdHRlZCB0byBhZGQgYW4gPGxpdGVyYWw+b2lkPC9s aXRlcmFsPiBzeXN0ZW0gY29sdW1uIHRvCisgICAgIGZvcmVpZ24gdGFibGVz LgorICAgIDwvcGFyYT4KKyAKKyAgICA8cGFyYT4KICAgICAgVGhlIDxsaXRl cmFsPlRSSUdHRVI8Lz4sIDxsaXRlcmFsPkNMVVNURVI8Lz4sIDxsaXRlcmFs Pk9XTkVSPC8+LAogICAgICBhbmQgPGxpdGVyYWw+VEFCTEVTUEFDRTwvPiBh Y3Rpb25zIG5ldmVyIHJlY3Vyc2UgdG8gZGVzY2VuZGFudCB0YWJsZXM7CiAg ICAgIHRoYXQgaXMsIHRoZXkgYWx3YXlzIGFjdCBhcyB0aG91Z2ggPGxpdGVy YWw+T05MWTwvPiB3ZXJlIHNwZWNpZmllZC4KKioqKioqKioqKioqKioqCioq KiA5NDUsOTUwICoqKiogQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+bmFtZTwvcmVwbGFjZWFibGU+ Ci0tLSA5NTIsOTcwIC0tLS0KICAgICA8L3BhcmE+CiAgCiAgICAgPHBhcmE+ CisgICAgIFdoZW4gYWRkaW5nIGEgPGxpdGVyYWw+Q0hFQ0s8Lz4gY29uc3Ry YWludCB3aXRoIHRoZSA8bGl0ZXJhbD5OT1QgVkFMSUQKKyAgICAgPC9saXRl cmFsPiBvcHRpb24gcmVjdXJzaXZlbHksIGFuIGluaGVyaXRlZCBjb25zdHJh aW50IG9uIGEgZGVzY2VuZGFudAorICAgICB0YWJsZSB0aGF0IGlzIGZvcmVp Z24gd2lsbCBiZSBtYXJrZWQgdmFsaWQgd2l0aG91dCBjaGVja2luZworICAg ICBjb25zaXN0ZW5jeSB3aXRoIHRoZSBmb3JlaWduIHNlcnZlci4KKyAgICA8 L3BhcmE+CisgCisgICAgPHBhcmE+CisgICAgIEEgcmVjdXJzaXZlIDxsaXRl cmFsPlNFVCBTVE9SQUdFPC9saXRlcmFsPiBvcGVyYXRpb24gd2lsbCBtYWtl IHRoZQorICAgICBzdG9yYWdlIG1vZGUgZm9yIGEgZGVzY2VuZGFudCB0YWJs ZSdzIGNvbHVtbiB1bmNoYW5nZWQgaWYgdGhlIHRhYmxlIGlzCisgICAgIGZv cmVpZ24uCisgICAgPC9wYXJhPgorIAorICAgIDxwYXJhPgogICAgICBDaGFu Z2luZyBhbnkgcGFydCBvZiBhIHN5c3RlbSBjYXRhbG9nIHRhYmxlIGlzIG5v dCBwZXJtaXR0ZWQuCiAgICAgPC9wYXJhPgogIAoqKiogYS9kb2Mvc3JjL3Nn bWwvcmVmL2FuYWx5emUuc2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvcmVmL2Fu YWx5emUuc2dtbAoqKioqKioqKioqKioqKioKKioqIDIwMCwyMDUgKioqKiBB TkFMWVpFIFsgVkVSQk9TRSBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJB TUVURVIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbCi0tLSAyMDAsMjEy IC0tLS0KICAgIDwvcGFyYT4KICAKICAgIDxwYXJhPgorICAgICBUaGUgaW5o ZXJpdGFuY2Ugc3RhdGlzdGljcyBmb3IgYSBwYXJlbnQgdGFibGUgdGhhdCBj b250YWlucyBvbmUgb3IgbW9yZQorICAgICBjaGlsZHJlbiB0aGF0IGFyZSBm b3JlaWduIHRhYmxlcyBhcmUgY29sbGVjdGVkIG9ubHkgd2hlbiBleHBsaWNp dGx5CisgICAgIHNlbGVjdGVkLiAgSWYgdGhlIGZvcmVpZ24gdGFibGUncyB3 cmFwcGVyIGRvZXMgbm90IHN1cHBvcnQKKyAgICAgPGNvbW1hbmQ+QU5BTFla RTwvY29tbWFuZD4sIHRoZSBjb21tYW5kIHByaW50cyBhIHdhcm5pbmcgYW5k IGRvZXMgbm90aGluZy4KKyAgIDwvcGFyYT4KKyAKKyAgIDxwYXJhPgogICAg ICBJZiB0aGUgdGFibGUgYmVpbmcgYW5hbHl6ZWQgaXMgY29tcGxldGVseSBl bXB0eSwgPGNvbW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4KICAgICAgd2lsbCBu b3QgcmVjb3JkIG5ldyBzdGF0aXN0aWNzIGZvciB0aGF0IHRhYmxlLiAgQW55 IGV4aXN0aW5nIHN0YXRpc3RpY3MKICAgICAgd2lsbCBiZSByZXRhaW5lZC4K KioqIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9yZWlnbl90YWJsZS5z Z21sCi0tLSBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2ZvcmVpZ25fdGFi bGUuc2dtbAoqKioqKioqKioqKioqKioKKioqIDE5LDI3ICoqKioKICAgPHJl ZnN5bm9wc2lzZGl2PgogIDxzeW5vcHNpcz4KICBDUkVBVEUgRk9SRUlHTiBU QUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ICggWwohICAgICA8 cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ZGF0 YV90eXBlPC9yZXBsYWNlYWJsZT4gWyBPUFRJT05TICggPHJlcGxhY2VhYmxl IGNsYXNzPSJQQVJBTUVURVIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ICc8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxl PicgWywgLi4uIF0gKSBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0 aW9uPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFS QU1FVEVSIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4u IF0gXQogICAgICBbLCAuLi4gXQogIF0gKQogICAgU0VSVkVSIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJfbmFtZTwvcmVwbGFjZWFi bGU+CiAgWyBPUFRJT05TICggPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVU RVIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ICc8cmVwbGFjZWFibGUgY2xhc3M9 IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxlPicgWywgLi4uIF0gKSBd CiAgCi0tLSAxOSwyOSAtLS0tCiAgIDxyZWZzeW5vcHNpc2Rpdj4KICA8c3lu b3BzaXM+CiAgQ1JFQVRFIEZPUkVJR04gVEFCTEUgWyBJRiBOT1QgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiAoIFsKISAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJQ QVJBTUVURVIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2Vh YmxlIGNsYXNzPSJQQVJBTUVURVIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+ IFsgT1BUSU9OUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iUEFSQU1FVEVSIj5v cHRpb248L3JlcGxhY2VhYmxlPiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJB TUVURVIiPnZhbHVlPC9yZXBsYWNlYWJsZT4nIFssIC4uLiBdICkgXSBbIENP TExBVEUgPHJlcGxhY2VhYmxlPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0g WyA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+Y29sdW1uX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KISAgICAgfCA8cmVwbGFj ZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICAg WywgLi4uIF0KICBdICkKKyBbIElOSEVSSVRTICggPHJlcGxhY2VhYmxlPnBh cmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgU0VS VkVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJfbmFt ZTwvcmVwbGFjZWFibGU+CiAgWyBPUFRJT05TICggPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ICc8cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dmFsdWU8L3JlcGxhY2VhYmxlPicg WywgLi4uIF0gKSBdCiAgCioqKioqKioqKioqKioqKgoqKiogMzAsMzYgKioq KiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVw bGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dGFibGVfbmFtZQotLS0gMzIs NDQgLS0tLQogIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9IlBB UkFNRVRFUiI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQogIHsg Tk9UIE5VTEwgfAogICAgTlVMTCB8CisgICBDSEVDSyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0iUEFSQU1FVEVSIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g KSB8CiAgICBERUZBVUxUIDxyZXBsYWNlYWJsZT5kZWZhdWx0X2V4cHI8L3Jl cGxhY2VhYmxlPiB9CisgCisgPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNs YXNzPSJQQVJBTUVURVIiPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxl PiBpczo8L3BocmFzZT4KKyAKKyBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxl IGNsYXNzPSJQQVJBTUVURVIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFi bGU+IF0KKyB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVU RVIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIH0KICA8L3N5bm9wc2lz PgogICA8L3JlZnN5bm9wc2lzZGl2PgogIAoqKioqKioqKioqKioqKioKKioq IDEzOCwxNDMgKioqKiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBbIElGIE5PVCBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+dGFibGVf bmFtZQotLS0gMTQ2LDE3MiAtLS0tCiAgICAgPC92YXJsaXN0ZW50cnk+CiAg CiAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+Q0hF Q0sgKCA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+ICk8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlz dGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGxpdGVyYWw+Q0hF Q0s8Lz4gY2xhdXNlIHNwZWNpZmllcyBhbiBleHByZXNzaW9uIHByb2R1Y2lu ZyBhCisgICAgICAgQm9vbGVhbiByZXN1bHQgd2hpY2ggZWFjaCByb3cgbXVz dCBzYXRpc2Z5LgorICAgICAgIEV4cHJlc3Npb25zIGV2YWx1YXRpbmcgdG8g VFJVRSBvciBVTktOT1dOIHN1Y2NlZWQuCisgICAgICAgQSBjaGVjayBjb25z dHJhaW50IHNwZWNpZmllZCBhcyBhIGNvbHVtbiBjb25zdHJhaW50IHNob3Vs ZAorICAgICAgIHJlZmVyZW5jZSB0aGF0IGNvbHVtbidzIHZhbHVlIG9ubHks IHdoaWxlIGFuIGV4cHJlc3Npb24KKyAgICAgICBhcHBlYXJpbmcgaW4gYSB0 YWJsZSBjb25zdHJhaW50IGNhbiByZWZlcmVuY2UgbXVsdGlwbGUgY29sdW1u cy4KKyAgICAgIDwvcGFyYT4KKyAKKyAgICAgIDxwYXJhPgorICAgICAgIEN1 cnJlbnRseSwgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGV4cHJlc3Npb25z IGNhbm5vdCBjb250YWluCisgICAgICAgc3VicXVlcmllcyBub3IgcmVmZXIg dG8gdmFyaWFibGVzIG90aGVyIHRoYW4gY29sdW1ucyBvZiB0aGUKKyAgICAg ICBjdXJyZW50IHJvdy4gIFRoZSBzeXN0ZW0gY29sdW1uIDxsaXRlcmFsPnRh Ymxlb2lkPC9saXRlcmFsPgorICAgICAgIG1heSBiZSByZWZlcmVuY2VkLCBi dXQgbm90IGFueSBvdGhlciBzeXN0ZW0gY29sdW1uLgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorIAor ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJtPjxsaXRlcmFsPkRFRkFV TFQKICAgICAgPHJlcGxhY2VhYmxlPmRlZmF1bHRfZXhwcjwvcmVwbGFjZWFi bGU+PC9saXRlcmFsPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgoqKioqKioq KioqKioqKioKKioqIDE1OSwxNjQgKioqKiBDUkVBVEUgRk9SRUlHTiBUQUJM RSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9IlBBUkFN RVRFUiI+dGFibGVfbmFtZQotLS0gMTg4LDIwNSAtLS0tCiAgICAgPC92YXJs aXN0ZW50cnk+CiAgCiAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJQQVJBTUVURVIiPnBhcmVudF90YWJsZTwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8 cGFyYT4KKyAgICAgICBUaGUgbmFtZSBvZiBhbiBleGlzdGluZyB0YWJsZSBm cm9tIHdoaWNoIHRoZSBuZXcgZm9yZWlnbiB0YWJsZQorICAgICAgIGF1dG9t YXRpY2FsbHkgaW5oZXJpdHMgYWxsIGNvbHVtbnMuICBUaGUgc3BlY2lmaWVk IHBhcmVudCB0YWJsZQorICAgICAgIG11c3QgYmUgYW4gb3JkaW5hcnkgdGFi bGUuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLWluaGVyaXQiPiBmb3IgdGhl CisgICAgICAgZGV0YWlscyBvZiB0YWJsZSBpbmhlcml0YW5jZS4KKyAgICAg IDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRy eT4KKyAKKyAgICA8dmFybGlzdGVudHJ5PgogICAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9IlBBUkFNRVRFUiI+c2VydmVyX25hbWU8L3JlcGxhY2Vh YmxlPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Cioq KioqKioqKioqKioqKgoqKiogMTg3LDE5MiAqKioqIENSRUFURSBGT1JFSUdO IFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i UEFSQU1FVEVSIj50YWJsZV9uYW1lCi0tLSAyMjgsMjUwIC0tLS0KICAKICAg PC9yZWZzZWN0MT4KICAKKyAgPHJlZnNlY3QxPgorICAgPHRpdGxlPk5vdGVz PC90aXRsZT4KKyAKKyAgICA8cGFyYT4KKyAgICAgQ29uc3RyYWludHMgb24g Zm9yZWlnbiB0YWJsZXMgYXJlIG5vdCBlbmZvcmNlZCBvbiBpbnNlcnQgb3Ig dXBkYXRlLgorICAgICBUaG9zZSBkZWZpbml0aW9ucyBzaW1wbHkgZGVjbGFy ZSB0aGUgY29uc3RyYWludHMgaG9sZCBmb3IgYWxsIHJvd3MKKyAgICAgaW4g dGhlIGZvcmVpZ24gdGFibGVzLiAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25z aWJpbGl0eSB0byBlbnN1cmUKKyAgICAgdGhhdCB0aG9zZSBkZWZpbml0aW9u cyBtYXRjaCB0aGUgcmVtb3RlIHNpZGUuICBTdWNoIGNvbnN0cmFpbnRzIGFy ZQorICAgICB1c2VkIGZvciBzb21lIGtpbmQgb2YgcXVlcnkgb3B0aW1pemF0 aW9uIHN1Y2ggYXMgY29uc3RyYWludCBleGNsdXNpb24uCisgICAgPC9wYXJh PgorIAorICAgIDxwYXJhPgorICAgICBTaW5jZSBpdCBpcyBub3QgcGVybWl0 dGVkIHRvIGFkZCBhbiA8bGl0ZXJhbD5vaWQ8Lz4gc3lzdGVtIGNvbHVtbiB0 bworICAgICBmb3JlaWduIHRhYmxlcywgdGhlIGNvbW1hbmQgd2lsbCBiZSBy ZWplY3RlZCBpZiBhbnkgcGFyZW50IHRhYmxlcworICAgICBoYXZlIDxsaXRl cmFsPm9pZDwvPiBzeXN0ZW0gY29sdW1ucy4KKyAgICA8L3BhcmE+CisgIDwv cmVmc2VjdDE+CiAgCiAgIDxyZWZzZWN0MSBpZD0iU1FMLUNSRUFURUZPUkVJ R05UQUJMRS1leGFtcGxlcyI+CiAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxl PgoqKiogYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwotLS0gYi9zcmMv YmFja2VuZC9jYXRhbG9nL2hlYXAuYwoqKioqKioqKioqKioqKioKKioqIDIy MTcsMjIyMiAqKioqIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRp b24gcmVsLAotLS0gMjIxNywyMjI4IC0tLS0KICAJCWlmIChjZGVmLT5jb250 eXBlICE9IENPTlNUUl9DSEVDSykKICAJCQljb250aW51ZTsKICAKKyAJCWlm IChjZGVmLT5pc19ub19pbmhlcml0ICYmCisgCQkJcmVsLT5yZF9yZWwtPnJl bGtpbmQgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKQorIAkJCWVyZXBvcnQo RVJST1IsCisgCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisgCQkJCQkgZXJybXNnKCJDSEVDSyBjb25zdHJhaW50cyBv biBmb3JlaWduIHRhYmxlcyBjYW5ub3QgYmUgbWFya2VkIE5PIElOSEVSSVQi KSkpOworIAogIAkJaWYgKGNkZWYtPnJhd19leHByICE9IE5VTEwpCiAgCQl7 CiAgCQkJQXNzZXJ0KGNkZWYtPmNvb2tlZF9leHByID09IE5VTEwpOwoqKiog YS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKLS0tIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCioqKioqKioqKioqKioqKgoqKiog ODIsODcgKioqKiBpbnQJCQlkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0ID0g MTAwOwotLS0gODIsODggLS0tLQogIAogIC8qIEEgZmV3IHZhcmlhYmxlcyB0 aGF0IGRvbid0IHNlZW0gd29ydGggcGFzc2luZyBhcm91bmQgYXMgcGFyYW1l dGVycyAqLwogIHN0YXRpYyBNZW1vcnlDb250ZXh0IGFubF9jb250ZXh0ID0g TlVMTDsKKyBzdGF0aWMgVmFjdXVtTW9kZSB2YWNfbW9kZTsKICBzdGF0aWMg QnVmZmVyQWNjZXNzU3RyYXRlZ3kgdmFjX3N0cmF0ZWd5OwogIAogIAoqKioq KioqKioqKioqKioKKioqIDExNSwxMjEgKioqKiBzdGF0aWMgRGF0dW0gaW5k X2ZldGNoX2Z1bmMoVmFjQXR0clN0YXRzUCBzdGF0cywgaW50IHJvd251bSwg Ym9vbCAqaXNOdWxsKTsKICAgKglhbmFseXplX3JlbCgpIC0tIGFuYWx5emUg b25lIHJlbGF0aW9uCiAgICovCiAgdm9pZAohIGFuYWx5emVfcmVsKE9pZCBy ZWxpZCwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgQnVmZmVyQWNjZXNzU3RyYXRl Z3kgYnN0cmF0ZWd5KQogIHsKICAJUmVsYXRpb24Jb25lcmVsOwogIAlpbnQJ CQllbGV2ZWw7Ci0tLSAxMTYsMTI1IC0tLS0KICAgKglhbmFseXplX3JlbCgp IC0tIGFuYWx5emUgb25lIHJlbGF0aW9uCiAgICovCiAgdm9pZAohIGFuYWx5 emVfcmVsKE9pZCByZWxpZCwKISAJCQlWYWN1dW1TdG10ICp2YWNzdG10LAoh IAkJCVZhY3V1bU1vZGUgdmFjbW9kZSwKISAJCQlCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kpCiAgewogIAlSZWxhdGlvbglvbmVyZWw7CiAgCWlu dAkJCWVsZXZlbDsKKioqKioqKioqKioqKioqCioqKiAxMjksMTM0ICoqKiog YW5hbHl6ZV9yZWwoT2lkIHJlbGlkLCBWYWN1dW1TdG10ICp2YWNzdG10LCBC dWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpCi0tLSAxMzMsMTM5IC0t LS0KICAJCWVsZXZlbCA9IERFQlVHMjsKICAKICAJLyogU2V0IHVwIHN0YXRp YyB2YXJpYWJsZXMgKi8KKyAJdmFjX21vZGUgPSB2YWNtb2RlOwogIAl2YWNf c3RyYXRlZ3kgPSBic3RyYXRlZ3k7CiAgCiAgCS8qCioqKioqKioqKioqKioq KgoqKiogMTQ1MiwxNDU3ICoqKiogYWNxdWlyZV9pbmhlcml0ZWRfc2FtcGxl X3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAotLS0gMTQ1Nywx NDYzIC0tLS0KICB7CiAgCUxpc3QJICAgKnRhYmxlT0lEczsKICAJUmVsYXRp b24gICAqcmVsczsKKyAJQWNxdWlyZVNhbXBsZVJvd3NGdW5jICphY3F1aXJl ZnVuYzsKICAJZG91YmxlCSAgICpyZWxibG9ja3M7CiAgCWRvdWJsZQkJdG90 YWxibG9ja3M7CiAgCWludAkJCW51bXJvd3MsCioqKioqKioqKioqKioqKgoq KiogMTQ4NiwxNDkxICoqKiogYWNxdWlyZV9pbmhlcml0ZWRfc2FtcGxlX3Jv d3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAotLS0gMTQ5MiwxNDk5 IC0tLS0KICAJICogQmxvY2tOdW1iZXIsIHNvIHdlIHVzZSBkb3VibGUgYXJp dGhtZXRpYy4KICAJICovCiAgCXJlbHMgPSAoUmVsYXRpb24gKikgcGFsbG9j KGxpc3RfbGVuZ3RoKHRhYmxlT0lEcykgKiBzaXplb2YoUmVsYXRpb24pKTsK KyAJYWNxdWlyZWZ1bmMgPSAoQWNxdWlyZVNhbXBsZVJvd3NGdW5jICopIHBh bGxvYyhsaXN0X2xlbmd0aCh0YWJsZU9JRHMpCisgCQkJCQkJCQkJCQkqIHNp emVvZihBY3F1aXJlU2FtcGxlUm93c0Z1bmMpKTsKICAJcmVsYmxvY2tzID0g KGRvdWJsZSAqKSBwYWxsb2MobGlzdF9sZW5ndGgodGFibGVPSURzKSAqIHNp emVvZihkb3VibGUpKTsKICAJdG90YWxibG9ja3MgPSAwOwogIAlucmVscyA9 IDA7CioqKioqKioqKioqKioqKgoqKiogMTUwNywxNTEzICoqKiogYWNxdWly ZV9pbmhlcml0ZWRfc2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQg ZWxldmVsLAogIAkJfQogIAogIAkJcmVsc1tucmVsc10gPSBjaGlsZHJlbDsK ISAJCXJlbGJsb2Nrc1tucmVsc10gPSAoZG91YmxlKSBSZWxhdGlvbkdldE51 bWJlck9mQmxvY2tzKGNoaWxkcmVsKTsKICAJCXRvdGFsYmxvY2tzICs9IHJl bGJsb2Nrc1tucmVsc107CiAgCQlucmVscysrOwogIAl9Ci0tLSAxNTE1LDE1 NTQgLS0tLQogIAkJfQogIAogIAkJcmVsc1tucmVsc10gPSBjaGlsZHJlbDsK ISAKISAJCWlmIChjaGlsZHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfRk9SRUlHTl9UQUJMRSkKISAJCXsKISAJCQlGZHdSb3V0aW5lICpmZHdy b3V0aW5lOwohIAkJCUJsb2NrTnVtYmVyIHJlbHBhZ2VzID0gMDsKISAJCQli b29sCQlvayA9IGZhbHNlOwohIAohIAkJCS8qIElnbm9yZSB1bmxlc3MgYW5h bHl6aW5nIGEgc3BlY2lmaWMgaW5oZXJpdGFuY2UgdHJlZSAqLwohIAkJCWlm ICh2YWNfbW9kZSAhPSBWQUNfTU9ERV9TSU5HTEUpCiEgCQkJCXJldHVybiAw OwohIAohIAkJCS8qIENoZWNrIHdoZXRoZXIgdGhlIEZEVyBzdXBwb3J0cyBh bmFseXNpcyAqLwohIAkJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9y UmVsYXRpb24oY2hpbGRyZWwsIGZhbHNlKTsKISAJCQlpZiAoZmR3cm91dGlu ZS0+QW5hbHl6ZUZvcmVpZ25UYWJsZSAhPSBOVUxMKQohIAkJCQlvayA9IGZk d3JvdXRpbmUtPkFuYWx5emVGb3JlaWduVGFibGUoY2hpbGRyZWwsCiEgCQkJ CQkJCQkJCQkJCSAmYWNxdWlyZWZ1bmNbbnJlbHNdLAohIAkJCQkJCQkJCQkJ CQkgJnJlbHBhZ2VzKTsKISAJCQlpZiAoIW9rKQohIAkJCXsKISAJCQkJLyog R2l2ZSB1cCBpZiB0aGUgRkRXIGRvZXNuJ3Qgc3VwcG9ydCBhbmFseXNpcyAq LwohIAkJCQllcmVwb3J0KFdBUk5JTkcsCiEgCQkJCQkJKGVycm1zZygic2tp cHBpbmcgYW5hbHl6ZSBvZiBpbmhlcml0YW5jZSB0cmVlIFwiJXNcIiAtLS0g Y2Fubm90IGFuYWx5emUgZm9yZWlnbiB0YWJsZSBcIiVzXCIiLAohIAkJCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUob25lcmVsKSwKISAJCQkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkcmVsKSkpKTsKISAJCQkJ cmV0dXJuIDA7CiEgCQkJfQohIAkJCXJlbGJsb2Nrc1tucmVsc10gPSAoZG91 YmxlKSByZWxwYWdlczsKISAJCX0KISAJCWVsc2UKISAJCXsKISAJCQlhY3F1 aXJlZnVuY1tucmVsc10gPSBhY3F1aXJlX3NhbXBsZV9yb3dzOwohIAkJCXJl bGJsb2Nrc1tucmVsc10gPSAoZG91YmxlKSBSZWxhdGlvbkdldE51bWJlck9m QmxvY2tzKGNoaWxkcmVsKTsKISAJCX0KISAKICAJCXRvdGFsYmxvY2tzICs9 IHJlbGJsb2Nrc1tucmVsc107CiAgCQlucmVscysrOwogIAl9CioqKioqKioq KioqKioqKgoqKiogMTUyNSwxNTMwICoqKiogYWNxdWlyZV9pbmhlcml0ZWRf c2FtcGxlX3Jvd3MoUmVsYXRpb24gb25lcmVsLCBpbnQgZWxldmVsLAotLS0g MTU2NiwxNTcyIC0tLS0KICAJewogIAkJUmVsYXRpb24JY2hpbGRyZWwgPSBy ZWxzW2ldOwogIAkJZG91YmxlCQljaGlsZGJsb2NrcyA9IHJlbGJsb2Nrc1tp XTsKKyAJCUFjcXVpcmVTYW1wbGVSb3dzRnVuYyBjaGlsZGFjcXVpcmVmdW5j ID0gYWNxdWlyZWZ1bmNbaV07CiAgCiAgCQlpZiAoY2hpbGRibG9ja3MgPiAw KQogIAkJewoqKioqKioqKioqKioqKioKKioqIDE1NDAsMTU1MSAqKioqIGFj cXVpcmVfaW5oZXJpdGVkX3NhbXBsZV9yb3dzKFJlbGF0aW9uIG9uZXJlbCwg aW50IGVsZXZlbCwKICAJCQkJCQkJdGRyb3dzOwogIAogIAkJCQkvKiBGZXRj aCBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIGNoaWxkJ3Mgcm93cyAqLwohIAkJ CQljaGlsZHJvd3MgPSBhY3F1aXJlX3NhbXBsZV9yb3dzKGNoaWxkcmVsLAoh IAkJCQkJCQkJCQkJCWVsZXZlbCwKISAJCQkJCQkJCQkJCQlyb3dzICsgbnVt cm93cywKISAJCQkJCQkJCQkJCQljaGlsZHRhcmdyb3dzLAohIAkJCQkJCQkJ CQkJCSZ0cm93cywKISAJCQkJCQkJCQkJCQkmdGRyb3dzKTsKICAKICAJCQkJ LyogV2UgbWF5IG5lZWQgdG8gY29udmVydCBmcm9tIGNoaWxkJ3Mgcm93dHlw ZSB0byBwYXJlbnQncyAqLwogIAkJCQlpZiAoY2hpbGRyb3dzID4gMCAmJgot LS0gMTU4MiwxNTkzIC0tLS0KICAJCQkJCQkJdGRyb3dzOwogIAogIAkJCQkv KiBGZXRjaCBhIHJhbmRvbSBzYW1wbGUgb2YgdGhlIGNoaWxkJ3Mgcm93cyAq LwohIAkJCQljaGlsZHJvd3MgPSBjaGlsZGFjcXVpcmVmdW5jKGNoaWxkcmVs LAohIAkJCQkJCQkJCQkJIGVsZXZlbCwKISAJCQkJCQkJCQkJCSByb3dzICsg bnVtcm93cywKISAJCQkJCQkJCQkJCSBjaGlsZHRhcmdyb3dzLAohIAkJCQkJ CQkJCQkJICZ0cm93cywKISAJCQkJCQkJCQkJCSAmdGRyb3dzKTsKICAKICAJ CQkJLyogV2UgbWF5IG5lZWQgdG8gY29udmVydCBmcm9tIGNoaWxkJ3Mgcm93 dHlwZSB0byBwYXJlbnQncyAqLwogIAkJCQlpZiAoY2hpbGRyb3dzID4gMCAm JgoqKiogYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwotLS0g Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwoqKioqKioqKioq KioqKioKKioqIDMxMSwzMTcgKioqKiBzdGF0aWMgQWx0ZXJlZFRhYmxlSW5m byAqQVRHZXRRdWV1ZUVudHJ5KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJl bCk7CiAgc3RhdGljIHZvaWQgQVRTaW1wbGVQZXJtaXNzaW9ucyhSZWxhdGlv biByZWwsIGludCBhbGxvd2VkX3RhcmdldHMpOwogIHN0YXRpYyB2b2lkIEFU V3JvbmdSZWxraW5kRXJyb3IoUmVsYXRpb24gcmVsLCBpbnQgYWxsb3dlZF90 YXJnZXRzKTsKICBzdGF0aWMgdm9pZCBBVFNpbXBsZVJlY3Vyc2lvbihMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsCiEgCQkJCSAgQWx0ZXJUYWJsZUNt ZCAqY21kLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2ttb2RlKTsKICBz dGF0aWMgdm9pZCBBVFR5cGVkVGFibGVSZWN1cnNpb24oTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAgCQkJCQkg IExPQ0tNT0RFIGxvY2ttb2RlKTsKICBzdGF0aWMgTGlzdCAqZmluZF90eXBl ZF90YWJsZV9kZXBlbmRlbmNpZXMoT2lkIHR5cGVPaWQsIGNvbnN0IGNoYXIg KnR5cGVOYW1lLAotLS0gMzExLDMxOCAtLS0tCiAgc3RhdGljIHZvaWQgQVRT aW1wbGVQZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludCBhbGxvd2VkX3Rh cmdldHMpOwogIHN0YXRpYyB2b2lkIEFUV3JvbmdSZWxraW5kRXJyb3IoUmVs YXRpb24gcmVsLCBpbnQgYWxsb3dlZF90YXJnZXRzKTsKICBzdGF0aWMgdm9p ZCBBVFNpbXBsZVJlY3Vyc2lvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsCiEgCQkJCSAgQWx0ZXJUYWJsZUNtZCAqY21kLCBib29sIHJlY3Vyc2Us CiEgCQkJCSAgYm9vbCBpbmNsdWRlX2ZvcmVpZ24sIExPQ0tNT0RFIGxvY2tt b2RlKTsKICBzdGF0aWMgdm9pZCBBVFR5cGVkVGFibGVSZWN1cnNpb24oTGlz dCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQs CiAgCQkJCQkgIExPQ0tNT0RFIGxvY2ttb2RlKTsKICBzdGF0aWMgTGlzdCAq ZmluZF90eXBlZF90YWJsZV9kZXBlbmRlbmNpZXMoT2lkIHR5cGVPaWQsIGNv bnN0IGNoYXIgKnR5cGVOYW1lLAoqKioqKioqKioqKioqKioKKioqIDQ2Nyw0 NzYgKioqKiBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFy IHJlbGtpbmQsIE9pZCBvd25lcklkKQogIAkJZXJlcG9ydChFUlJPUiwKICAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04p LAogIAkJCQkgZXJybXNnKCJPTiBDT01NSVQgY2FuIG9ubHkgYmUgdXNlZCBv biB0ZW1wb3JhcnkgdGFibGVzIikpKTsKLSAJaWYgKHN0bXQtPmNvbnN0cmFp bnRzICE9IE5JTCAmJiByZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJM RSkKLSAJCWVyZXBvcnQoRVJST1IsCi0gCQkJCShlcnJjb2RlKEVSUkNPREVf V1JPTkdfT0JKRUNUX1RZUEUpLAotIAkJCQkgZXJybXNnKCJjb25zdHJhaW50 cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxlcyIpKSk7CiAg CiAgCS8qCiAgCSAqIExvb2sgdXAgdGhlIG5hbWVzcGFjZSBpbiB3aGljaCB3 ZSBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIHRoZSByZWxhdGlvbiwKLS0tIDQ2 OCw0NzMgLS0tLQoqKioqKioqKioqKioqKioKKioqIDU1Nyw1NjIgKioqKiBE ZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQs IE9pZCBvd25lcklkKQotLS0gNTU0LDU4MyAtLS0tCiAgCQkJCQkJCSBzdG10 LT5yZWxhdGlvbi0+cmVscGVyc2lzdGVuY2UsCiAgCQkJCQkJCSAmaW5oZXJp dE9pZHMsICZvbGRfY29uc3RyYWludHMsICZwYXJlbnRPaWRDb3VudCk7CiAg CisgCWlmIChyZWxraW5kID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkKKyAJ eworIAkJLyoKKyAJCSAqIERvbid0IGFsbG93IGZvcmVpZ24gdGFibGVzIHRv IGluaGVyaXQgZnJvbSBwYXJlbnQgdGFibGVzIHRoYXQgaGF2ZQorIAkJICog T0lEIHN5c3RlbSBjb2x1bW5zLgorIAkJICovCisgCQlpZiAocGFyZW50T2lk Q291bnQgPiAwKQorIAkJCWVyZXBvcnQoRVJST1IsCisgCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisgCQkJCQkgZXJy bXNnKCJjYW5ub3QgaW5oZXJpdCBmcm9tIHBhcmVudCB0YWJsZXMgd2l0aCBP SURzIikpKTsKKyAKKyAJCS8qCisgCQkgKiBSZXNldCB0aGUgc3RvcmFnZSBw YXJhbWV0ZXIgZm9yIGluaGVyaXRlZCBjb2x1bW5zIHRoYXQgaGF2ZQorIAkJ ICogbm9uLWRlZmF1bHQgdmFsdWVzLgorIAkJICovCisgCQlmb3JlYWNoKGxp c3RwdHIsIHNjaGVtYSkKKyAJCXsKKyAJCQlDb2x1bW5EZWYgICpjb2xEZWYg PSBsZmlyc3QobGlzdHB0cik7CisgCQkKKyAJCQlpZiAoY29sRGVmLT5zdG9y YWdlICE9IDApCisgCQkJCWNvbERlZi0+c3RvcmFnZSA9IDA7CisgCQl9Cisg CX0KKyAKICAJLyoKICAJICogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBm cm9tIHRoZSByZWxhdGlvbiBzY2hlbWEuCU5vdGUgdGhhdCB0aGlzCiAgCSAq IGRlYWxzIHdpdGggY29sdW1uIG5hbWVzLCB0eXBlcywgYW5kIE5PVCBOVUxM IGNvbnN0cmFpbnRzLCBidXQgbm90CioqKioqKioqKioqKioqKgoqKiogMzAx OSwzMDQyICoqKiogQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9u IHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJCSAqIHJ1bGVzLgogIAkJ CSAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUg fCBBVFRfVklFVyB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQlBVFNpbXBs ZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCBsb2NrbW9k ZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAq LwogIAkJCXBhc3MgPSBjbWQtPmRlZiA/IEFUX1BBU1NfQUREX0NPTlNUUiA6 IEFUX1BBU1NfRFJPUDsKICAJCQlicmVhazsKICAJCWNhc2UgQVRfRHJvcE5v dE51bGw6CS8qIEFMVEVSIENPTFVNTiBEUk9QIE5PVCBOVUxMICovCiAgCQkJ QVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JF SUdOX1RBQkxFKTsKISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJl bCwgY21kLCByZWN1cnNlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFu ZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNT X0RST1A7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX1NldE5vdE51bGw6CQkv KiBBTFRFUiBDT0xVTU4gU0VUIE5PVCBOVUxMICovCiAgCQkJQVRTaW1wbGVQ ZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxF KTsKISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCBy ZWN1cnNlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZp YyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9DT05T VFI7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX1NldFN0YXRpc3RpY3M6CS8q IEFMVEVSIENPTFVNTiBTRVQgU1RBVElTVElDUyAqLwohIAkJCUFUU2ltcGxl UmVjdXJzaW9uKHdxdWV1ZSwgcmVsLCBjbWQsIHJlY3Vyc2UsIGxvY2ttb2Rl KTsKICAJCQkvKiBQZXJmb3JtcyBvd24gcGVybWlzc2lvbiBjaGVja3MgKi8K ICAJCQlBVFByZXBTZXRTdGF0aXN0aWNzKHJlbCwgY21kLT5uYW1lLCBjbWQt PmRlZiwgbG9ja21vZGUpOwogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7Ci0t LSAzMDQwLDMwNjcgLS0tLQogIAkJCSAqIHJ1bGVzLgogIAkJCSAqLwogIAkJ CUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfVklF VyB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQkvKiBSZWN1cnNlIHRvIGNo aWxkIHRhYmxlcyB0aGF0IGFyZSBmb3JlaWduLCB0b28gKi8KISAJCQlBVFNp bXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCB0cnVl LCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVw IG5lZWRlZCAqLwogIAkJCXBhc3MgPSBjbWQtPmRlZiA/IEFUX1BBU1NfQURE X0NPTlNUUiA6IEFUX1BBU1NfRFJPUDsKICAJCQlicmVhazsKICAJCWNhc2Ug QVRfRHJvcE5vdE51bGw6CS8qIEFMVEVSIENPTFVNTiBEUk9QIE5PVCBOVUxM ICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8 IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQkvKiBSZWN1cnNlIHRvIGNoaWxk IHRhYmxlcyB0aGF0IGFyZSBmb3JlaWduLCB0b28gKi8KISAJCQlBVFNpbXBs ZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNlLCB0cnVlLCBs b2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0RST1A7CiAgCQkJYnJlYWs7 CiAgCQljYXNlIEFUX1NldE5vdE51bGw6CQkvKiBBTFRFUiBDT0xVTU4gU0VU IE5PVCBOVUxMICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFU VF9UQUJMRSB8IEFUVF9GT1JFSUdOX1RBQkxFKTsKISAJCQkvKiBSZWN1cnNl IHRvIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBmb3JlaWduLCB0b28gKi8KISAJ CQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1cnNl LCB0cnVlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZp YyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9DT05T VFI7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX1NldFN0YXRpc3RpY3M6CS8q IEFMVEVSIENPTFVNTiBTRVQgU1RBVElTVElDUyAqLwohIAkJCS8qIFJlY3Vy c2UgdG8gY2hpbGQgdGFibGVzIHRoYXQgYXJlIGZvcmVpZ24sIHRvbyAqLwoh IAkJCUFUU2ltcGxlUmVjdXJzaW9uKHdxdWV1ZSwgcmVsLCBjbWQsIHJlY3Vy c2UsIHRydWUsIGxvY2ttb2RlKTsKICAJCQkvKiBQZXJmb3JtcyBvd24gcGVy bWlzc2lvbiBjaGVja3MgKi8KICAJCQlBVFByZXBTZXRTdGF0aXN0aWNzKHJl bCwgY21kLT5uYW1lLCBjbWQtPmRlZiwgbG9ja21vZGUpOwogIAkJCXBhc3Mg PSBBVF9QQVNTX01JU0M7CioqKioqKioqKioqKioqKgoqKiogMzA0OSwzMDU1 ICoqKiogQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9T ZXRTdG9yYWdlOgkJLyogQUxURVIgQ09MVU1OIFNFVCBTVE9SQUdFICovCiAg CQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9N QVRWSUVXKTsKISAJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwg Y21kLCByZWN1cnNlLCBsb2NrbW9kZSk7CiAgCQkJLyogTm8gY29tbWFuZC1z cGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogIAkJCXBhc3MgPSBBVF9QQVNTX01J U0M7CiAgCQkJYnJlYWs7Ci0tLSAzMDc0LDMwODEgLS0tLQogIAkJCWJyZWFr OwogIAkJY2FzZSBBVF9TZXRTdG9yYWdlOgkJLyogQUxURVIgQ09MVU1OIFNF VCBTVE9SQUdFICovCiAgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFU VF9UQUJMRSB8IEFUVF9NQVRWSUVXKTsKISAJCQkvKiBEb24ndCByZWN1cnNl IHRvIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBmb3JlaWduICovCiEgCQkJQVRT aW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwgcmVjdXJzZSwgZmFs c2UsIGxvY2ttb2RlKTsKICAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHBy ZXAgbmVlZGVkICovCiAgCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKICAJCQli cmVhazsKKioqKioqKioqKioqKioqCioqKiAzMDY3LDMwNzMgKioqKiBBVFBy ZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxl Q21kICpjbWQsCiAgCQkJcGFzcyA9IEFUX1BBU1NfQUREX0lOREVYOwogIAkJ CWJyZWFrOwogIAkJY2FzZSBBVF9BZGRDb25zdHJhaW50OgkvKiBBREQgQ09O U1RSQUlOVCAqLwohIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRf VEFCTEUpOwogIAkJCS8qIFJlY3Vyc2lvbiBvY2N1cnMgZHVyaW5nIGV4ZWN1 dGlvbiBwaGFzZSAqLwogIAkJCS8qIE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJl cCBuZWVkZWQgZXhjZXB0IHNhdmluZyByZWN1cnNlIGZsYWcgKi8KICAJCQlp ZiAocmVjdXJzZSkKLS0tIDMwOTMsMzA5OSAtLS0tCiAgCQkJcGFzcyA9IEFU X1BBU1NfQUREX0lOREVYOwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9BZGRD b25zdHJhaW50OgkvKiBBREQgQ09OU1RSQUlOVCAqLwohIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJM RSk7CiAgCQkJLyogUmVjdXJzaW9uIG9jY3VycyBkdXJpbmcgZXhlY3V0aW9u IHBoYXNlICovCiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5l ZWRlZCBleGNlcHQgc2F2aW5nIHJlY3Vyc2UgZmxhZyAqLwogIAkJCWlmIChy ZWN1cnNlKQoqKioqKioqKioqKioqKioKKioqIDMwODEsMzA4NyAqKioqIEFU UHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFi bGVDbWQgKmNtZCwKICAJCQlwYXNzID0gQVRfUEFTU19BRERfQ09OU1RSOwog IAkJCWJyZWFrOwogIAkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoJLyogRFJP UCBDT05TVFJBSU5UICovCiEgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWws IEFUVF9UQUJMRSk7CiAgCQkJLyogUmVjdXJzaW9uIG9jY3VycyBkdXJpbmcg ZXhlY3V0aW9uIHBoYXNlICovCiAgCQkJLyogTm8gY29tbWFuZC1zcGVjaWZp YyBwcmVwIG5lZWRlZCBleGNlcHQgc2F2aW5nIHJlY3Vyc2UgZmxhZyAqLwog IAkJCWlmIChyZWN1cnNlKQotLS0gMzEwNywzMTEzIC0tLS0KICAJCQlwYXNz ID0gQVRfUEFTU19BRERfQ09OU1RSOwogIAkJCWJyZWFrOwogIAkJY2FzZSBB VF9Ecm9wQ29uc3RyYWludDoJLyogRFJPUCBDT05TVFJBSU5UICovCiEgCQkJ QVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JF SUdOX1RBQkxFKTsKICAJCQkvKiBSZWN1cnNpb24gb2NjdXJzIGR1cmluZyBl eGVjdXRpb24gcGhhc2UgKi8KICAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmlj IHByZXAgbmVlZGVkIGV4Y2VwdCBzYXZpbmcgcmVjdXJzZSBmbGFnICovCiAg CQkJaWYgKHJlY3Vyc2UpCioqKioqKioqKioqKioqKgoqKiogMzE0OSwzMTU5 ICoqKiogQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwg QWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7 CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX0FkZEluaGVyaXQ6CQkvKiBJTkhF UklUICovCiEgCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJM RSk7CiAgCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2VzICovCiAg CQkJQVRQcmVwQWRkSW5oZXJpdChyZWwpOwogIAkJCXBhc3MgPSBBVF9QQVNT X01JU0M7CiAgCQkJYnJlYWs7CiAgCQljYXNlIEFUX0FsdGVyQ29uc3RyYWlu dDoJCS8qIEFMVEVSIENPTlNUUkFJTlQgKi8KICAJCQlBVFNpbXBsZVBlcm1p c3Npb25zKHJlbCwgQVRUX1RBQkxFKTsKICAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwotLS0gMzE3NSwzMTkxIC0tLS0KICAJCQlwYXNzID0gQVRfUEFTU19N SVNDOwogIAkJCWJyZWFrOwogIAkJY2FzZSBBVF9BZGRJbmhlcml0OgkJLyog SU5IRVJJVCAqLwohIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRf VEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAgCQkJLyogVGhpcyBjb21t YW5kIG5ldmVyIHJlY3Vyc2VzICovCiAgCQkJQVRQcmVwQWRkSW5oZXJpdChy ZWwpOwogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CiAgCQkJYnJlYWs7Cisg CQljYXNlIEFUX0Ryb3BJbmhlcml0OgkvKiBOTyBJTkhFUklUICovCisgCQkJ QVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFUVF9GT1JF SUdOX1RBQkxFKTsKKyAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJz ZXMgKi8KKyAJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVk ICovCisgCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKyAJCQlicmVhazsKICAJ CWNhc2UgQVRfQWx0ZXJDb25zdHJhaW50OgkJLyogQUxURVIgQ09OU1RSQUlO VCAqLwogIAkJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUp OwogIAkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CioqKioqKioqKioqKioqKgoq KiogMzE4NCwzMTkwICoqKiogQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogIAkJY2FzZSBBVF9F bmFibGVBbHdheXNSdWxlOgogIAkJY2FzZSBBVF9FbmFibGVSZXBsaWNhUnVs ZToKICAJCWNhc2UgQVRfRGlzYWJsZVJ1bGU6Ci0gCQljYXNlIEFUX0Ryb3BJ bmhlcml0OgkvKiBOTyBJTkhFUklUICovCiAgCQljYXNlIEFUX0FkZE9mOgkJ CS8qIE9GICovCiAgCQljYXNlIEFUX0Ryb3BPZjogLyogTk9UIE9GICovCiAg CQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSk7Ci0tLSAz MjE2LDMyMjEgLS0tLQoqKioqKioqKioqKioqKioKKioqIDQxMjUsNDEzMSAq KioqIEFUV3JvbmdSZWxraW5kRXJyb3IoUmVsYXRpb24gcmVsLCBpbnQgYWxs b3dlZF90YXJnZXRzKQogICAqLwogIHN0YXRpYyB2b2lkCiAgQVRTaW1wbGVS ZWN1cnNpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLAohIAkJCQkg IEFsdGVyVGFibGVDbWQgKmNtZCwgYm9vbCByZWN1cnNlLCBMT0NLTU9ERSBs b2NrbW9kZSkKICB7CiAgCS8qCiAgCSAqIFByb3BhZ2F0ZSB0byBjaGlsZHJl biBpZiBkZXNpcmVkLiAgTm9uLXRhYmxlIHJlbGF0aW9ucyBuZXZlciBoYXZl Ci0tLSA0MTU2LDQxNjMgLS0tLQogICAqLwogIHN0YXRpYyB2b2lkCiAgQVRT aW1wbGVSZWN1cnNpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLAoh IAkJCQkgIEFsdGVyVGFibGVDbWQgKmNtZCwgYm9vbCByZWN1cnNlLAohIAkJ CQkgIGJvb2wgaW5jbHVkZV9mb3JlaWduLCBMT0NLTU9ERSBsb2NrbW9kZSkK ICB7CiAgCS8qCiAgCSAqIFByb3BhZ2F0ZSB0byBjaGlsZHJlbiBpZiBkZXNp cmVkLiAgTm9uLXRhYmxlIHJlbGF0aW9ucyBuZXZlciBoYXZlCioqKioqKioq KioqKioqKgoqKiogNDE1Myw0MTYwICoqKiogQVRTaW1wbGVSZWN1cnNpb24o TGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLAogIAkJCQljb250aW51ZTsK ICAJCQkvKiBmaW5kX2FsbF9pbmhlcml0b3JzIGFscmVhZHkgZ290IGxvY2sg Ki8KICAJCQljaGlsZHJlbCA9IHJlbGF0aW9uX29wZW4oY2hpbGRyZWxpZCwg Tm9Mb2NrKTsKISAJCQlDaGVja1RhYmxlTm90SW5Vc2UoY2hpbGRyZWwsICJB TFRFUiBUQUJMRSIpOwohIAkJCUFUUHJlcENtZCh3cXVldWUsIGNoaWxkcmVs LCBjbWQsIGZhbHNlLCB0cnVlLCBsb2NrbW9kZSk7CiAgCQkJcmVsYXRpb25f Y2xvc2UoY2hpbGRyZWwsIE5vTG9jayk7CiAgCQl9CiAgCX0KLS0tIDQxODUs NDE5NiAtLS0tCiAgCQkJCWNvbnRpbnVlOwogIAkJCS8qIGZpbmRfYWxsX2lu aGVyaXRvcnMgYWxyZWFkeSBnb3QgbG9jayAqLwogIAkJCWNoaWxkcmVsID0g cmVsYXRpb25fb3BlbihjaGlsZHJlbGlkLCBOb0xvY2spOwohIAkJCWlmIChj aGlsZHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfRk9SRUlHTl9U QUJMRQohIAkJCQl8fCBpbmNsdWRlX2ZvcmVpZ24pCiEgCQkJewohIAkJCQlD aGVja1RhYmxlTm90SW5Vc2UoY2hpbGRyZWwsICJBTFRFUiBUQUJMRSIpOwoh IAkJCQlBVFByZXBDbWQod3F1ZXVlLCBjaGlsZHJlbCwgY21kLCBmYWxzZSwg dHJ1ZSwgbG9ja21vZGUpOwohIAkJCX0KICAJCQlyZWxhdGlvbl9jbG9zZShj aGlsZHJlbCwgTm9Mb2NrKTsKICAJCX0KICAJfQoqKioqKioqKioqKioqKioK KioqIDQ0NDQsNDQ1MCAqKioqIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1 ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKICAK ICAJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25l IGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLwogIAlpZiAocmVjdXJzaW5n KQohIAkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSk7CiAg CiAgCWF0dHJkZXNjID0gaGVhcF9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOwogIAotLS0gNDQ4MCw0NDg2IC0tLS0KICAK ICAJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25l IGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLwogIAlpZiAocmVjdXJzaW5n KQohIAkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9UQUJMRSB8IEFU VF9GT1JFSUdOX1RBQkxFKTsKICAKICAJYXR0cmRlc2MgPSBoZWFwX29wZW4o QXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAgCioq KioqKioqKioqKioqKgoqKiogNDc0MCw0NzQ1ICoqKiogQVRFeGVjQWRkQ29s dW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLAotLS0gNDc3Niw0Nzg2IC0tLS0KICAKICAJCS8qIGZpbmRf aW5oZXJpdGFuY2VfY2hpbGRyZW4gYWxyZWFkeSBnb3QgbG9jayAqLwogIAkJ Y2hpbGRyZWwgPSBoZWFwX29wZW4oY2hpbGRyZWxpZCwgTm9Mb2NrKTsKKyAJ CWlmIChjaGlsZHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfRk9S RUlHTl9UQUJMRSAmJiBpc09pZCkKKyAJCQllcmVwb3J0KEVSUk9SLAorIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAor IAkJCQkJIGVycm1zZygiY2Fubm90IGFkZCBPSUQgY29sdW1uIHRvIGZvcmVp Z24gdGFibGUgXCIlc1wiIiwKKyAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoY2hpbGRyZWwpKSkpOwogIAkJQ2hlY2tUYWJsZU5vdEluVXNlKGNo aWxkcmVsLCAiQUxURVIgVEFCTEUiKTsKICAKICAJCS8qIEZpbmQgb3IgY3Jl YXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KKioqKioq KioqKioqKioqCioqKiA1MzQwLDUzNDYgKioqKiBBVEV4ZWNEcm9wQ29sdW1u KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29s TmFtZSwKICAKICAJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNzaW9uIGNoZWNr IHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLwogIAlpZiAo cmVjdXJzaW5nKQohIAkJQVRTaW1wbGVQZXJtaXNzaW9ucyhyZWwsIEFUVF9U QUJMRSk7CiAgCiAgCS8qCiAgCSAqIGdldCB0aGUgbnVtYmVyIG9mIHRoZSBh dHRyaWJ1dGUKLS0tIDUzODEsNTM4NyAtLS0tCiAgCiAgCS8qIEF0IHRvcCBs ZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQs IGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykKISAJCUFUU2ltcGxl UGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRfRk9SRUlHTl9UQUJM RSk7CiAgCiAgCS8qCiAgCSAqIGdldCB0aGUgbnVtYmVyIG9mIHRoZSBhdHRy aWJ1dGUKKioqKioqKioqKioqKioqCioqKiA1NzMyLDU3MzggKioqKiBBVEFk ZENoZWNrQ29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKICAKICAJLyogQXQgdG9wIGxldmVs LCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxz ZSBkbyBpdCAqLwogIAlpZiAocmVjdXJzaW5nKQohIAkJQVRTaW1wbGVQZXJt aXNzaW9ucyhyZWwsIEFUVF9UQUJMRSk7CiAgCiAgCS8qCiAgCSAqIENhbGwg QWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyB0byBkbyB0aGUgd29yaywgbWFr aW5nIHN1cmUgaXQgd29ya3Mgb24KLS0tIDU3NzMsNTc4NiAtLS0tCiAgCiAg CS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBp biBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vyc2luZykK ISAJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUgfCBBVFRf Rk9SRUlHTl9UQUJMRSk7CiEgCiEgCS8qIERvbid0IGFsbG93IEFERCBDT05T VFJBSU5UIE5PVCBWQUxJRCB0byBiZSBhcHBsaWVkIHRvIGZvcmVpZ24gdGFi bGVzICovCiEgCWlmICh0YWItPnJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdO X1RBQkxFICYmCiEgCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiAmJiAhcmVj dXJzaW5nKQohIAkJZXJlcG9ydChFUlJPUiwKISAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAohIAkJCQkgZXJybXNnKCJO T1QgVkFMSUQgaXMgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxlcyIp KSk7CiAgCiAgCS8qCiAgCSAqIENhbGwgQWRkUmVsYXRpb25OZXdDb25zdHJh aW50cyB0byBkbyB0aGUgd29yaywgbWFraW5nIHN1cmUgaXQgd29ya3Mgb24K KioqKioqKioqKioqKioqCioqKiA1NzQzLDU3NTEgKioqKiBBVEFkZENoZWNr Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0 YWIsIFJlbGF0aW9uIHJlbCwKICAJICogb21pdHRlZCBmcm9tIHRoZSByZXR1 cm5lZCBsaXN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnQ6IHdlIGRvIG5vdCBu ZWVkCiAgCSAqIHRvIGRvIGFueSB2YWxpZGF0aW9uIHdvcmsuICBUaGF0IGNh biBvbmx5IGhhcHBlbiBhdCBjaGlsZCB0YWJsZXMsCiAgCSAqIHRob3VnaCwg c2luY2Ugd2UgZGlzYWxsb3cgbWVyZ2luZyBhdCB0aGUgdG9wIGxldmVsLgog IAkgKi8KICAJbmV3Y29ucyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMo cmVsLCBOSUwsCiEgCQkJCQkJCQkJCWxpc3RfbWFrZTEoY29weU9iamVjdChj b25zdHIpKSwKICAJCQkJCQkJCQkJcmVjdXJzaW5nLAkJLyogYWxsb3dfbWVy Z2UgKi8KICAJCQkJCQkJCQkJIXJlY3Vyc2luZywJCS8qIGlzX2xvY2FsICov CiAgCQkJCQkJCQkJCWlzX3JlYWRkKTsJCS8qIGlzX2ludGVybmFsICovCi0t LSA1NzkxLDU4MDcgLS0tLQogIAkgKiBvbWl0dGVkIGZyb20gdGhlIHJldHVy bmVkIGxpc3QsIHdoaWNoIGlzIHdoYXQgd2Ugd2FudDogd2UgZG8gbm90IG5l ZWQKICAJICogdG8gZG8gYW55IHZhbGlkYXRpb24gd29yay4gIFRoYXQgY2Fu IG9ubHkgaGFwcGVuIGF0IGNoaWxkIHRhYmxlcywKICAJICogdGhvdWdoLCBz aW5jZSB3ZSBkaXNhbGxvdyBtZXJnaW5nIGF0IHRoZSB0b3AgbGV2ZWwuCisg CSAqCisgCSAqIFdoZW4gcHJvcGFnYXRpbmcgYSBOT1QgVkFMSUQgb3B0aW9u IHRvIGNoaWxkcmVuIHRoYXQgYXJlIGZvcmVpZ24gdGFibGVzLAorIAkgKiB3 ZSBxdWlldGx5IGlnbm9yZSB0aGUgb3B0aW9uLiAgTm90ZSB0aGF0IHRoaXMg aXMgc2FmZSBiZWNhdXNlIGZvcmVpZ24KKyAJICogdGFibGVzIGRvbid0IGhh dmUgYW55IGNoaWxkcmVuLgogIAkgKi8KKyAJY29uc3RyID0gKENvbnN0cmFp bnQgKikgY29weU9iamVjdChjb25zdHIpOworIAlpZiAodGFiLT5yZWxraW5k ID09IFJFTEtJTkRfRk9SRUlHTl9UQUJMRSAmJgorIAkJY29uc3RyLT5za2lw X3ZhbGlkYXRpb24gJiYgcmVjdXJzaW5nKQorIAkJY29uc3RyLT5za2lwX3Zh bGlkYXRpb24gPSBmYWxzZTsKICAJbmV3Y29ucyA9IEFkZFJlbGF0aW9uTmV3 Q29uc3RyYWludHMocmVsLCBOSUwsCiEgCQkJCQkJCQkJCWxpc3RfbWFrZTEo Y29uc3RyKSwKICAJCQkJCQkJCQkJcmVjdXJzaW5nLAkJLyogYWxsb3dfbWVy Z2UgKi8KICAJCQkJCQkJCQkJIXJlY3Vyc2luZywJCS8qIGlzX2xvY2FsICov CiAgCQkJCQkJCQkJCWlzX3JlYWRkKTsJCS8qIGlzX2ludGVybmFsICovCioq KioqKioqKioqKioqKgoqKiogNzIyNSw3MjMxICoqKiogQVRFeGVjRHJvcENv bnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb25zdHJOYW1l LAogIAogIAkvKiBBdCB0b3AgbGV2ZWwsIHBlcm1pc3Npb24gY2hlY2sgd2Fz IGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0ICovCiAgCWlmIChyZWN1 cnNpbmcpCiEgCQlBVFNpbXBsZVBlcm1pc3Npb25zKHJlbCwgQVRUX1RBQkxF KTsKICAKICAJY29ucmVsID0gaGVhcF9vcGVuKENvbnN0cmFpbnRSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKICAKLS0tIDcyODEsNzI4NyAtLS0t CiAgCiAgCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMg ZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KICAJaWYgKHJlY3Vy c2luZykKISAJCUFUU2ltcGxlUGVybWlzc2lvbnMocmVsLCBBVFRfVEFCTEUg fCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAgCiAgCWNvbnJlbCA9IGhlYXBfb3Bl bihDb25zdHJhaW50UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAg CioqKioqKioqKioqKioqKgoqKiogNzU2MCw3NTY2ICoqKiogQVRQcmVwQWx0 ZXJDb2x1bW5UeXBlKExpc3QgKip3cXVldWUsCiAgCSAqIGFsdGVyIHdvdWxk IHB1dCB0aGVtIG91dCBvZiBzdGVwLgogIAkgKi8KICAJaWYgKHJlY3Vyc2Up CiEgCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCByZWN1 cnNlLCBsb2NrbW9kZSk7CiAgCWVsc2UgaWYgKCFyZWN1cnNpbmcgJiYKICAJ CQkgZmluZF9pbmhlcml0YW5jZV9jaGlsZHJlbihSZWxhdGlvbkdldFJlbGlk KHJlbCksIE5vTG9jaykgIT0gTklMKQogIAkJZXJlcG9ydChFUlJPUiwKLS0t IDc2MTYsNzYyNSAtLS0tCiAgCSAqIGFsdGVyIHdvdWxkIHB1dCB0aGVtIG91 dCBvZiBzdGVwLgogIAkgKi8KICAJaWYgKHJlY3Vyc2UpCiEgCXsKISAJCS8q IFJlY3Vyc2UgdG8gY2hpbGQgdGFibGVzIHRoYXQgYXJlIGZvcmVpZ24sIHRv byAqLwohIAkJQVRTaW1wbGVSZWN1cnNpb24od3F1ZXVlLCByZWwsIGNtZCwg cmVjdXJzZSwgdHJ1ZSwgbG9ja21vZGUpOwohIAl9CiAgCWVsc2UgaWYgKCFy ZWN1cnNpbmcgJiYKICAJCQkgZmluZF9pbmhlcml0YW5jZV9jaGlsZHJlbihS ZWxhdGlvbkdldFJlbGlkKHJlbCksIE5vTG9jaykgIT0gTklMKQogIAkJZXJl cG9ydChFUlJPUiwKKioqIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMKLS0tIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKKioqKioq KioqKioqKioqCioqKiA2MSw2NiAqKioqIGludAkJCXZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX3RhYmxlX2FnZTsKLS0tIDYxLDY3IC0tLS0KICAKICAvKiBB IGZldyB2YXJpYWJsZXMgdGhhdCBkb24ndCBzZWVtIHdvcnRoIHBhc3Npbmcg YXJvdW5kIGFzIHBhcmFtZXRlcnMgKi8KICBzdGF0aWMgTWVtb3J5Q29udGV4 dCB2YWNfY29udGV4dCA9IE5VTEw7Cisgc3RhdGljIFZhY3V1bU1vZGUgdmFj X21vZGU7CiAgc3RhdGljIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHZhY19zdHJh dGVneTsKICAKICAKKioqKioqKioqKioqKioqCioqKiAxNDYsMTUxICoqKiog dmFjdXVtKFZhY3V1bVN0bXQgKnZhY3N0bXQsIE9pZCByZWxpZCwgYm9vbCBk b190b2FzdCwKLS0tIDE0NywxNjYgLS0tLQogIAkJCQkJCQkJCQlBTExPQ1NF VF9ERUZBVUxUX01BWFNJWkUpOwogIAogIAkvKgorIAkgKiBJZGVudGlmeSB2 YWN1dW0gbW9kZS4gIElmIHJlbGlkIGlzIG5vdCBJbnZhbGlkT2lkLCB0aGUg Y2FsbGVyIHNob3VsZCBiZQorIAkgKiBhbiBhdXRvdmFjdXVtIHdvcmtlci4g IFNlZSB0aGUgYWJvdmUgY29tbWVudHMuCisgCSAqLworIAlpZiAocmVsaWQg IT0gSW52YWxpZE9pZCkKKyAJCXZhY19tb2RlID0gVkFDX01PREVfQVVUT1ZB Q1VVTTsKKyAJZWxzZQorIAl7CisgCQlpZiAoIXZhY3N0bXQtPnJlbGF0aW9u KQorIAkJCXZhY19tb2RlID0gVkFDX01PREVfQUxMOworIAkJZWxzZQorIAkJ CXZhY19tb2RlID0gVkFDX01PREVfU0lOR0xFOworIAl9CisgCisgCS8qCiAg CSAqIElmIGNhbGxlciBkaWRuJ3QgZ2l2ZSB1cyBhIGJ1ZmZlciBzdHJhdGVn eSBvYmplY3QsIG1ha2Ugb25lIGluIHRoZQogIAkgKiBjcm9zcy10cmFuc2Fj dGlvbiBtZW1vcnkgY29udGV4dC4KICAJICovCioqKioqKioqKioqKioqKgoq KiogMjQ4LDI1NCAqKioqIHZhY3V1bShWYWN1dW1TdG10ICp2YWNzdG10LCBP aWQgcmVsaWQsIGJvb2wgZG9fdG9hc3QsCiAgCQkJCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKICAJCQkJfQogIAoh IAkJCQlhbmFseXplX3JlbChyZWxpZCwgdmFjc3RtdCwgdmFjX3N0cmF0ZWd5 KTsKICAKICAJCQkJaWYgKHVzZV9vd25feGFjdHMpCiAgCQkJCXsKLS0tIDI2 MywyNjkgLS0tLQogIAkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CiAgCQkJCX0KICAKISAJCQkJYW5hbHl6ZV9y ZWwocmVsaWQsIHZhY3N0bXQsIHZhY19tb2RlLCB2YWNfc3RyYXRlZ3kpOwog IAogIAkJCQlpZiAodXNlX293bl94YWN0cykKICAJCQkJewoqKiogYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYwotLS0gYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwdW5pb24uYwoqKioqKioqKioq KioqKioKKioqIDEzMzcsMTM0NyAqKioqIGV4cGFuZF9pbmhlcml0ZWRfcnRl bnRyeShQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcnRlLCBJ bmRleCBydGkpCiAgCQkvKgogIAkJICogQnVpbGQgYW4gUlRFIGZvciB0aGUg Y2hpbGQsIGFuZCBhdHRhY2ggdG8gcXVlcnkncyByYW5nZXRhYmxlIGxpc3Qu CiAgCQkgKiBXZSBjb3B5IG1vc3QgZmllbGRzIG9mIHRoZSBwYXJlbnQncyBS VEUsIGJ1dCByZXBsYWNlIHJlbGF0aW9uIE9JRCwKISAJCSAqIGFuZCBzZXQg aW5oID0gZmFsc2UuICBBbHNvLCBzZXQgcmVxdWlyZWRQZXJtcyB0byB6ZXJv IHNpbmNlIGFsbAohIAkJICogcmVxdWlyZWQgcGVybWlzc2lvbnMgY2hlY2tz IGFyZSBkb25lIG9uIHRoZSBvcmlnaW5hbCBSVEUuCiAgCQkgKi8KICAJCWNo aWxkcnRlID0gY29weU9iamVjdChydGUpOwogIAkJY2hpbGRydGUtPnJlbGlk ID0gY2hpbGRPSUQ7CiAgCQljaGlsZHJ0ZS0+aW5oID0gZmFsc2U7CiAgCQlj aGlsZHJ0ZS0+cmVxdWlyZWRQZXJtcyA9IDA7CiAgCQlwYXJzZS0+cnRhYmxl ID0gbGFwcGVuZChwYXJzZS0+cnRhYmxlLCBjaGlsZHJ0ZSk7Ci0tLSAxMzM3 LDEzNDggLS0tLQogIAkJLyoKICAJCSAqIEJ1aWxkIGFuIFJURSBmb3IgdGhl IGNoaWxkLCBhbmQgYXR0YWNoIHRvIHF1ZXJ5J3MgcmFuZ2V0YWJsZSBsaXN0 LgogIAkJICogV2UgY29weSBtb3N0IGZpZWxkcyBvZiB0aGUgcGFyZW50J3Mg UlRFLCBidXQgcmVwbGFjZSByZWxhdGlvbiBPSUQsCiEgCQkgKiByZWxraW5k IGFuZCBzZXQgaW5oID0gZmFsc2UuICBBbHNvLCBzZXQgcmVxdWlyZWRQZXJt cyB0byB6ZXJvIHNpbmNlCiEgCQkgKiBhbGwgcmVxdWlyZWQgcGVybWlzc2lv bnMgY2hlY2tzIGFyZSBkb25lIG9uIHRoZSBvcmlnaW5hbCBSVEUuCiAgCQkg Ki8KICAJCWNoaWxkcnRlID0gY29weU9iamVjdChydGUpOwogIAkJY2hpbGRy dGUtPnJlbGlkID0gY2hpbGRPSUQ7CisgCQljaGlsZHJ0ZS0+cmVsa2luZCA9 IG5ld3JlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQ7CiAgCQljaGlsZHJ0ZS0+ aW5oID0gZmFsc2U7CiAgCQljaGlsZHJ0ZS0+cmVxdWlyZWRQZXJtcyA9IDA7 CiAgCQlwYXJzZS0+cnRhYmxlID0gbGFwcGVuZChwYXJzZS0+cnRhYmxlLCBj aGlsZHJ0ZSk7CioqKiBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bh dGhub2RlLmMKLS0tIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYwoqKioqKioqKioqKioqKioKKioqIDE2LDIxICoqKioKLS0tIDE2 LDIyIC0tLS0KICAKICAjaW5jbHVkZSA8bWF0aC5oPgogIAorICNpbmNsdWRl ICJmb3JlaWduL2Zkd2FwaS5oIgogICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAgI2luY2x1ZGUgIm9w dGltaXplci9jbGF1c2VzLmgiCioqKioqKioqKioqKioqKgoqKiogMjA2Miwy MDY3ICoqKiogcmVwYXJhbWV0ZXJpemVfcGF0aChQbGFubmVySW5mbyAqcm9v dCwgUGF0aCAqcGF0aCwKLS0tIDIwNjMsMjA5MyAtLS0tCiAgCQljYXNlIFRf U3VicXVlcnlTY2FuOgogIAkJCXJldHVybiBjcmVhdGVfc3VicXVlcnlzY2Fu X3BhdGgocm9vdCwgcmVsLCBwYXRoLT5wYXRoa2V5cywKICAJCQkJCQkJCQkJ CXJlcXVpcmVkX291dGVyKTsKKyAJCWNhc2UgVF9Gb3JlaWduU2NhbjoKKyAJ CQl7CisgCQkJCUZvcmVpZ25QYXRoICpuZXdwYXRoID0gTlVMTDsKKyAKKyAJ CQkJLyogTGV0IHRoZSBGRFcgcmVwYXJhbWV0ZXJpemUgdGhlIHBhdGggbm9k ZSBpZiBwb3NzaWJsZSAqLworIAkJCQlpZiAocmVsLT5mZHdyb3V0aW5lLT5S ZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRoICE9IE5VTEwpCisgCQkJCXsKKyAJ CQkJCUluZGV4CQlzY2FuX3JlbGlkID0gcmVsLT5yZWxpZDsKKyAJCQkJCVJh bmdlVGJsRW50cnkgKnJ0ZTsKKyAKKyAJCQkJCS8qIGl0IHNob3VsZCBiZSBh IGJhc2UgcmVsLi4uICovCisgCQkJCQlBc3NlcnQoc2Nhbl9yZWxpZCA+IDAp OworIAkJCQkJQXNzZXJ0KHJlbC0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04p OworIAkJCQkJcnRlID0gcGxhbm5lcl9ydF9mZXRjaChzY2FuX3JlbGlkLCBy b290KTsKKyAJCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFU SU9OKTsKKyAKKyAJCQkJCW5ld3BhdGggPQorIAkJCQkJCXJlbC0+ZmR3cm91 dGluZS0+UmVwYXJhbWV0ZXJpemVGb3JlaWduUGF0aChyb290LAorIAkJCQkJ CQkJCQkJCQkJCQkgICByZWwsCisgCQkJCQkJCQkJCQkJCQkJCSAgIHJ0ZS0+ cmVsaWQsCisgCQkJCQkJCQkJCQkJCQkgIChGb3JlaWduUGF0aCAqKSBwYXRo LAorIAkJCQkJCQkJCQkJCQkJCSAgIHJlcXVpcmVkX291dGVyKTsKKyAJCQkJ fQorIAkJCQlyZXR1cm4gKFBhdGggKikgbmV3cGF0aDsKKyAJCQl9CiAgCQlk ZWZhdWx0OgogIAkJCWJyZWFrOwogIAl9CioqKiBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKLS0tIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQoq KioqKioqKioqKioqKioKKioqIDQyMDksNDI0MCAqKioqIEFsdGVyRm9yZWln blNlcnZlclN0bXQ6IEFMVEVSIFNFUlZFUiBuYW1lIGZvcmVpZ25fc2VydmVy X3ZlcnNpb24gYWx0ZXJfZ2VuZXJpY19vCiAgQ3JlYXRlRm9yZWlnblRhYmxl U3RtdDoKICAJCUNSRUFURSBGT1JFSUdOIFRBQkxFIHF1YWxpZmllZF9uYW1l CiAgCQkJJygnIE9wdFRhYmxlRWxlbWVudExpc3QgJyknCiEgCQkJU0VSVkVS IG5hbWUgY3JlYXRlX2dlbmVyaWNfb3B0aW9ucwogIAkJCQl7CiAgCQkJCQlD cmVhdGVGb3JlaWduVGFibGVTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlRm9y ZWlnblRhYmxlU3RtdCk7CiAgCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSBS RUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ7CiAgCQkJCQluLT5iYXNlLnJlbGF0 aW9uID0gJDQ7CiAgCQkJCQluLT5iYXNlLnRhYmxlRWx0cyA9ICQ2OwohIAkJ CQkJbi0+YmFzZS5pbmhSZWxhdGlvbnMgPSBOSUw7CiAgCQkJCQluLT5iYXNl LmlmX25vdF9leGlzdHMgPSBmYWxzZTsKICAJCQkJCS8qIEZEVy1zcGVjaWZp YyBkYXRhICovCiEgCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDk7CiEgCQkJCQlu LT5vcHRpb25zID0gJDEwOwogIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogIAkJ CQl9CiAgCQl8IENSRUFURSBGT1JFSUdOIFRBQkxFIElGX1AgTk9UIEVYSVNU UyBxdWFsaWZpZWRfbmFtZQogIAkJCScoJyBPcHRUYWJsZUVsZW1lbnRMaXN0 ICcpJwohIAkJCVNFUlZFUiBuYW1lIGNyZWF0ZV9nZW5lcmljX29wdGlvbnMK ICAJCQkJewogIAkJCQkJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqbiA9IG1h a2VOb2RlKENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQpOwogIAkJCQkJJDctPnJl bHBlcnNpc3RlbmNlID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOwogIAkJ CQkJbi0+YmFzZS5yZWxhdGlvbiA9ICQ3OwogIAkJCQkJbi0+YmFzZS50YWJs ZUVsdHMgPSAkOTsKISAJCQkJCW4tPmJhc2UuaW5oUmVsYXRpb25zID0gTklM OwogIAkJCQkJbi0+YmFzZS5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKICAJCQkJ CS8qIEZEVy1zcGVjaWZpYyBkYXRhICovCiEgCQkJCQluLT5zZXJ2ZXJuYW1l ID0gJDEyOwohIAkJCQkJbi0+b3B0aW9ucyA9ICQxMzsKICAJCQkJCSQkID0g KE5vZGUgKikgbjsKICAJCQkJfQogIAkJOwotLS0gNDIwOSw0MjQwIC0tLS0K ICBDcmVhdGVGb3JlaWduVGFibGVTdG10OgogIAkJQ1JFQVRFIEZPUkVJR04g VEFCTEUgcXVhbGlmaWVkX25hbWUKICAJCQknKCcgT3B0VGFibGVFbGVtZW50 TGlzdCAnKScKISAJCQlPcHRJbmhlcml0IFNFUlZFUiBuYW1lIGNyZWF0ZV9n ZW5lcmljX29wdGlvbnMKICAJCQkJewogIAkJCQkJQ3JlYXRlRm9yZWlnblRh YmxlU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQp OwogIAkJCQkJJDQtPnJlbHBlcnNpc3RlbmNlID0gUkVMUEVSU0lTVEVOQ0Vf UEVSTUFORU5UOwogIAkJCQkJbi0+YmFzZS5yZWxhdGlvbiA9ICQ0OwogIAkJ CQkJbi0+YmFzZS50YWJsZUVsdHMgPSAkNjsKISAJCQkJCW4tPmJhc2UuaW5o UmVsYXRpb25zID0gJDg7CiAgCQkJCQluLT5iYXNlLmlmX25vdF9leGlzdHMg PSBmYWxzZTsKICAJCQkJCS8qIEZEVy1zcGVjaWZpYyBkYXRhICovCiEgCQkJ CQluLT5zZXJ2ZXJuYW1lID0gJDEwOwohIAkJCQkJbi0+b3B0aW9ucyA9ICQx MTsKICAJCQkJCSQkID0gKE5vZGUgKikgbjsKICAJCQkJfQogIAkJfCBDUkVB VEUgRk9SRUlHTiBUQUJMRSBJRl9QIE5PVCBFWElTVFMgcXVhbGlmaWVkX25h bWUKICAJCQknKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKISAJCQlPcHRJ bmhlcml0IFNFUlZFUiBuYW1lIGNyZWF0ZV9nZW5lcmljX29wdGlvbnMKICAJ CQkJewogIAkJCQkJQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAqbiA9IG1ha2VO b2RlKENyZWF0ZUZvcmVpZ25UYWJsZVN0bXQpOwogIAkJCQkJJDctPnJlbHBl cnNpc3RlbmNlID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOwogIAkJCQkJ bi0+YmFzZS5yZWxhdGlvbiA9ICQ3OwogIAkJCQkJbi0+YmFzZS50YWJsZUVs dHMgPSAkOTsKISAJCQkJCW4tPmJhc2UuaW5oUmVsYXRpb25zID0gJDExOwog IAkJCQkJbi0+YmFzZS5pZl9ub3RfZXhpc3RzID0gdHJ1ZTsKICAJCQkJCS8q IEZEVy1zcGVjaWZpYyBkYXRhICovCiEgCQkJCQluLT5zZXJ2ZXJuYW1lID0g JDEzOwohIAkJCQkJbi0+b3B0aW9ucyA9ICQxNDsKICAJCQkJCSQkID0gKE5v ZGUgKikgbjsKICAJCQkJfQogIAkJOwoqKiogYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCi0tLSBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKKioqKioqKioqKioqKioqCioqKiA1MTUsNTI2ICoq KiogdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKICAJCQkJYnJlYWs7CiAgCiAg CQkJY2FzZSBDT05TVFJfQ0hFQ0s6Ci0gCQkJCWlmIChjeHQtPmlzZm9yZWln bikKLSAJCQkJCWVyZXBvcnQoRVJST1IsCi0gCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLSAJCQkJCWVycm1zZygi Y29uc3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gZm9yZWlnbiB0YWJs ZXMiKSwKLSAJCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0 ZSwKLSAJCQkJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKICAJ CQkJY3h0LT5ja2NvbnN0cmFpbnRzID0gbGFwcGVuZChjeHQtPmNrY29uc3Ry YWludHMsIGNvbnN0cmFpbnQpOwogIAkJCQlicmVhazsKICAKLS0tIDUxNSw1 MjAgLS0tLQoqKioqKioqKioqKioqKioKKioqIDUyOSw1MzUgKioqKiB0cmFu c2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IENvbHVtbkRlZiAqY29sdW1uKQogIAkJCQlpZiAoY3h0LT5pc2ZvcmVpZ24p CiAgCQkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJCQllcnJtc2coImNv bnN0cmFpbnRzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVz IiksCiAgCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUs CiAgCQkJCQkJCQkJCQkJY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAgCQkJ CWlmIChjb25zdHJhaW50LT5rZXlzID09IE5JTCkKLS0tIDUyMyw1MjkgLS0t LQogIAkJCQlpZiAoY3h0LT5pc2ZvcmVpZ24pCiAgCQkJCQllcmVwb3J0KEVS Uk9SLAogIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCiEgCQkJCQllcnJtc2coInByaW1hcnkga2V5IG9yIHVuaXF1 ZSBjb25zdHJhaW50cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRh YmxlcyIpLAogIAkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0 YXRlLAogIAkJCQkJCQkJCQkJCWNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOwog IAkJCQlpZiAoY29uc3RyYWludC0+a2V5cyA9PSBOSUwpCioqKioqKioqKioq KioqKgoqKiogNTQ2LDU1MiAqKioqIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRp b24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4p CiAgCQkJCWlmIChjeHQtPmlzZm9yZWlnbikKICAJCQkJCWVyZXBvcnQoRVJS T1IsCiAgCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKISAJCQkJCWVycm1zZygiY29uc3RyYWludHMgYXJlIG5vdCBz dXBwb3J0ZWQgb24gZm9yZWlnbiB0YWJsZXMiKSwKICAJCQkJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKICAJCQkJCQkJCQkJCQljb25z dHJhaW50LT5sb2NhdGlvbikpKTsKICAKLS0tIDU0MCw1NDYgLS0tLQogIAkJ CQlpZiAoY3h0LT5pc2ZvcmVpZ24pCiAgCQkJCQllcmVwb3J0KEVSUk9SLAog IAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiEgCQkJCQllcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGFy ZSBub3Qgc3VwcG9ydGVkIG9uIGZvcmVpZ24gdGFibGVzIiksCiAgCQkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCiAgCQkJCQkJCQkJ CQkJY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAgCioqKioqKioqKioqKioq KgoqKiogNjA1LDYxNCAqKioqIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24o Q3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAg c3RhdGljIHZvaWQKICB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgQ29uc3RyYWludCAqY29uc3RyYWludCkKICB7 CiEgCWlmIChjeHQtPmlzZm9yZWlnbikKICAJCWVyZXBvcnQoRVJST1IsCiAg CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK ISAJCQkJIGVycm1zZygiY29uc3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQg b24gZm9yZWlnbiB0YWJsZXMiKSwKICAJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihjeHQtPnBzdGF0ZSwKICAJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlv bikpKTsKICAKLS0tIDU5OSw2MTIgLS0tLQogIHN0YXRpYyB2b2lkCiAgdHJh bnNmb3JtVGFibGVDb25zdHJhaW50KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpCiAgewohIAlpZiAoY3h0LT5pc2Zv cmVpZ24gJiYKISAJCShjb25zdHJhaW50LT5jb250eXBlID09IENPTlNUUl9Q UklNQVJZIHx8CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJf VU5JUVVFIHx8CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJf RVhDTFVTSU9OIHx8CiEgCQkgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05T VFJfRk9SRUlHTikpCiAgCQllcmVwb3J0KEVSUk9SLAogIAkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiEgCQkJCSBlcnJt c2coInByaW1hcnkga2V5LCB1bmlxdWUsIGV4Y2x1c2lvbiwgb3IgZm9yZWln biBrZXkgY29uc3RyYWludHMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gZm9yZWln biB0YWJsZXMiKSwKICAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBz dGF0ZSwKICAJCQkJCQkJCQljb25zdHJhaW50LT5sb2NhdGlvbikpKTsKICAK KioqIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKLS0tIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKioqKioqKioqKioqKioqCioq KiAxNDAsMTQ1ICoqKiogZXh0ZXJuIGludAl2YWN1dW1fbXVsdGl4YWN0X2Zy ZWV6ZV9taW5fYWdlOwotLS0gMTQwLDE1NCAtLS0tCiAgZXh0ZXJuIGludAl2 YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2U7CiAgCiAgCisgLyog UG9zc2libGUgbW9kZXMgZm9yIHZhY3V1bSgpICovCisgdHlwZWRlZiBlbnVt CisgeworIAlWQUNfTU9ERV9BTEwsCQkJCS8qIFZhY3V1bS9hbmFseXplIGFs bCByZWxhdGlvbnMgKi8KKyAJVkFDX01PREVfU0lOR0xFLAkJCS8qIFZhY3V1 bS9hbmFseXplIGEgc3BlY2lmaWMgcmVsYXRpb24gKi8KKyAJVkFDX01PREVf QVVUT1ZBQ1VVTQkJCS8qIEF1dG92YWN1dW0gd29ya2VyICovCisgfSBWYWN1 dW1Nb2RlOworIAorIAogIC8qIGluIGNvbW1hbmRzL3ZhY3V1bS5jICovCiAg ZXh0ZXJuIHZvaWQgdmFjdXVtKFZhY3V1bVN0bXQgKnZhY3N0bXQsIE9pZCBy ZWxpZCwgYm9vbCBkb190b2FzdCwKICAJICAgQnVmZmVyQWNjZXNzU3RyYXRl Z3kgYnN0cmF0ZWd5LCBib29sIGZvcl93cmFwYXJvdW5kLCBib29sIGlzVG9w TGV2ZWwpOwoqKioqKioqKioqKioqKioKKioqIDE3NCwxODAgKioqKiBleHRl cm4gdm9pZCBsYXp5X3ZhY3V1bV9yZWwoUmVsYXRpb24gb25lcmVsLCBWYWN1 dW1TdG10ICp2YWNzdG10LAogIAkJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBi c3RyYXRlZ3kpOwogIAogIC8qIGluIGNvbW1hbmRzL2FuYWx5emUuYyAqLwoh IGV4dGVybiB2b2lkIGFuYWx5emVfcmVsKE9pZCByZWxpZCwgVmFjdXVtU3Rt dCAqdmFjc3RtdCwKICAJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRl Z3kpOwogIGV4dGVybiBib29sIHN0ZF90eXBhbmFseXplKFZhY0F0dHJTdGF0 cyAqc3RhdHMpOwogIGV4dGVybiBkb3VibGUgYW5sX3JhbmRvbV9mcmFjdCh2 b2lkKTsKLS0tIDE4MywxOTEgLS0tLQogIAkJCQlCdWZmZXJBY2Nlc3NTdHJh dGVneSBic3RyYXRlZ3kpOwogIAogIC8qIGluIGNvbW1hbmRzL2FuYWx5emUu YyAqLwohIGV4dGVybiB2b2lkIGFuYWx5emVfcmVsKE9pZCByZWxpZCwKISAJ CQlWYWN1dW1TdG10ICp2YWNzdG10LAohIAkJCVZhY3V1bU1vZGUgdmFjbW9k ZSwKICAJCQlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogIGV4 dGVybiBib29sIHN0ZF90eXBhbmFseXplKFZhY0F0dHJTdGF0cyAqc3RhdHMp OwogIGV4dGVybiBkb3VibGUgYW5sX3JhbmRvbV9mcmFjdCh2b2lkKTsKKioq IGEvc3JjL2luY2x1ZGUvZm9yZWlnbi9mZHdhcGkuaAotLS0gYi9zcmMvaW5j bHVkZS9mb3JlaWduL2Zkd2FwaS5oCioqKioqKioqKioqKioqKgoqKiogMzEs MzYgKioqKiB0eXBlZGVmIHZvaWQgKCpHZXRGb3JlaWduUGF0aHNfZnVuY3Rp b24pIChQbGFubmVySW5mbyAqcm9vdCwKLS0tIDMxLDQyIC0tLS0KICAJCQkJ CQkJCQkJCQkJICBSZWxPcHRJbmZvICpiYXNlcmVsLAogIAkJCQkJCQkJCQkJ CQkgIE9pZCBmb3JlaWdudGFibGVpZCk7CiAgCisgdHlwZWRlZiBGb3JlaWdu UGF0aCAqKCpSZXBhcmFtZXRlcml6ZUZvcmVpZ25QYXRoX2Z1bmN0aW9uKSAo UGxhbm5lckluZm8gKnJvb3QsCisgCQkJCQkJCQkJCQkJCQkgUmVsT3B0SW5m byAqYmFzZXJlbCwKKyAJCQkJCQkJCQkJCQkJCSAgT2lkIGZvcmVpZ250YWJs ZWlkLAorIAkJCQkJCQkJCQkJCQkJCUZvcmVpZ25QYXRoICpwYXRoLAorIAkJ CQkJCQkJCQkJCQkgIFJlbGlkcyByZXF1aXJlZF9vdXRlcik7CisgCiAgdHlw ZWRlZiBGb3JlaWduU2NhbiAqKCpHZXRGb3JlaWduUGxhbl9mdW5jdGlvbikg KFBsYW5uZXJJbmZvICpyb290LAogIAkJCQkJCQkJCQkJCQkJIFJlbE9wdElu Zm8gKmJhc2VyZWwsCiAgCQkJCQkJCQkJCQkJCQkgIE9pZCBmb3JlaWdudGFi bGVpZCwKKioqKioqKioqKioqKioqCioqKiAxMTcsMTIyICoqKiogdHlwZWRl ZiBzdHJ1Y3QgRmR3Um91dGluZQotLS0gMTIzLDEyOSAtLS0tCiAgCS8qIEZ1 bmN0aW9ucyBmb3Igc2Nhbm5pbmcgZm9yZWlnbiB0YWJsZXMgKi8KICAJR2V0 Rm9yZWlnblJlbFNpemVfZnVuY3Rpb24gR2V0Rm9yZWlnblJlbFNpemU7CiAg CUdldEZvcmVpZ25QYXRoc19mdW5jdGlvbiBHZXRGb3JlaWduUGF0aHM7Cisg CVJlcGFyYW1ldGVyaXplRm9yZWlnblBhdGhfZnVuY3Rpb24gUmVwYXJhbWV0 ZXJpemVGb3JlaWduUGF0aDsKICAJR2V0Rm9yZWlnblBsYW5fZnVuY3Rpb24g R2V0Rm9yZWlnblBsYW47CiAgCUJlZ2luRm9yZWlnblNjYW5fZnVuY3Rpb24g QmVnaW5Gb3JlaWduU2NhbjsKICAJSXRlcmF0ZUZvcmVpZ25TY2FuX2Z1bmN0 aW9uIEl0ZXJhdGVGb3JlaWduU2NhbjsKKioqIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9mb3JlaWduX2RhdGEub3V0Ci0tLSBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9kYXRhLm91dAoqKioqKioqKioqKioq KioKKioqIDc1MCw3NjUgKioqKiBDUkVBVEUgVEFCTEUgdXNlX2Z0MV9jb2x1 bW5fdHlwZSAoeCBmdDEpOwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIEFM VEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVnZXI7CS0tIEVSUk9S CiAgRVJST1I6ICBjYW5ub3QgYWx0ZXIgZm9yZWlnbiB0YWJsZSAiZnQxIiBi ZWNhdXNlIGNvbHVtbiAidXNlX2Z0MV9jb2x1bW5fdHlwZS54IiB1c2VzIGl0 cyByb3cgdHlwZQogIERST1AgVEFCTEUgdXNlX2Z0MV9jb2x1bW5fdHlwZTsK ISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBBREQgQ09OU1RSQUlOVCBmdDFf YzlfY2hlY2sgQ0hFQ0sgKGM5IDwgMCk7IC0tIEVSUk9SCiEgRVJST1I6ICBj b25zdHJhaW50cyBhcmUgbm90IHN1cHBvcnRlZCBvbiBmb3JlaWduIHRhYmxl cwohIExJTkUgMTogQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgQUREIENPTlNU UkFJTlQgZnQxX2M5X2NoZWNrIENIRUNLIChjLi4uCiEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgogIEFMVEVSIEZPUkVJR04gVEFC TEUgZnQxIERST1AgQ09OU1RSQUlOVCBub19jb25zdDsgICAgICAgICAgICAg ICAtLSBFUlJPUgohIEVSUk9SOiAgImZ0MSIgaXMgbm90IGEgdGFibGUKICBB TFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgSUYgRVhJ U1RTIG5vX2NvbnN0OwohIEVSUk9SOiAgImZ0MSIgaXMgbm90IGEgdGFibGUK ISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJTlQgZnQx X2MxX2NoZWNrOwohIEVSUk9SOiAgImZ0MSIgaXMgbm90IGEgdGFibGUKICBB TFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBTRVQgV0lUSCBPSURTOyAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0gRVJST1IKICBFUlJPUjogICJmdDEiIGlz IG5vdCBhIHRhYmxlCiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgT1dORVIg VE8gcmVncmVzc190ZXN0X3JvbGU7Ci0tLSA3NTAsNzYxIC0tLS0KICBBTFRF UiBGT1JFSUdOIFRBQkxFIGZ0MSBBTFRFUiBDT0xVTU4gYzggU0VUIERBVEEg VFlQRSBpbnRlZ2VyOwktLSBFUlJPUgogIEVSUk9SOiAgY2Fubm90IGFsdGVy IGZvcmVpZ24gdGFibGUgImZ0MSIgYmVjYXVzZSBjb2x1bW4gInVzZV9mdDFf Y29sdW1uX3R5cGUueCIgdXNlcyBpdHMgcm93IHR5cGUKICBEUk9QIFRBQkxF IHVzZV9mdDFfY29sdW1uX3R5cGU7CiEgQUxURVIgRk9SRUlHTiBUQUJMRSBm dDEgQUREIENPTlNUUkFJTlQgZnQxX2M5X2NoZWNrIENIRUNLIChjOSA8IDAp OwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIERST1AgQ09OU1RSQUlOVCBu b19jb25zdDsgICAgICAgICAgICAgICAtLSBFUlJPUgohIEVSUk9SOiAgY29u c3RyYWludCAibm9fY29uc3QiIG9mIHJlbGF0aW9uICJmdDEiIGRvZXMgbm90 IGV4aXN0CiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJB SU5UIElGIEVYSVNUUyBub19jb25zdDsKISBOT1RJQ0U6ICBjb25zdHJhaW50 ICJub19jb25zdCIgb2YgcmVsYXRpb24gImZ0MSIgZG9lcyBub3QgZXhpc3Qs IHNraXBwaW5nCiEgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05T VFJBSU5UIGZ0MV9jOV9jaGVjazsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0 MSBTRVQgV0lUSCBPSURTOyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0g RVJST1IKICBFUlJPUjogICJmdDEiIGlzIG5vdCBhIHRhYmxlCiAgQUxURVIg Rk9SRUlHTiBUQUJMRSBmdDEgT1dORVIgVE8gcmVncmVzc190ZXN0X3JvbGU7 CioqKiBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fZGF0YS5zcWwK LS0tIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9kYXRhLnNxbAoq KioqKioqKioqKioqKioKKioqIDMxNCwzMjMgKioqKiBBTFRFUiBGT1JFSUdO IFRBQkxFIGZ0MSBBTFRFUiBDT0xVTU4gYzggU0VUIFNUQVRJU1RJQ1MgLTE7 CiAgQ1JFQVRFIFRBQkxFIHVzZV9mdDFfY29sdW1uX3R5cGUgKHggZnQxKTsK ICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBBTFRFUiBDT0xVTU4gYzggU0VU IERBVEEgVFlQRSBpbnRlZ2VyOwktLSBFUlJPUgogIERST1AgVEFCTEUgdXNl X2Z0MV9jb2x1bW5fdHlwZTsKISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBB REQgQ09OU1RSQUlOVCBmdDFfYzlfY2hlY2sgQ0hFQ0sgKGM5IDwgMCk7IC0t IEVSUk9SCiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJB SU5UIG5vX2NvbnN0OyAgICAgICAgICAgICAgIC0tIEVSUk9SCiAgQUxURVIg Rk9SRUlHTiBUQUJMRSBmdDEgRFJPUCBDT05TVFJBSU5UIElGIEVYSVNUUyBu b19jb25zdDsKISBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNU UkFJTlQgZnQxX2MxX2NoZWNrOwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQx IFNFVCBXSVRIIE9JRFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBF UlJPUgogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIE9XTkVSIFRPIHJlZ3Jl c3NfdGVzdF9yb2xlOwogIEFMVEVSIEZPUkVJR04gVEFCTEUgZnQxIE9QVElP TlMgKERST1AgZGVsaW1pdGVyLCBTRVQgcXVvdGUgJ34nLCBBREQgZXNjYXBl ICdAJyk7Ci0tLSAzMTQsMzIzIC0tLS0KICBDUkVBVEUgVEFCTEUgdXNlX2Z0 MV9jb2x1bW5fdHlwZSAoeCBmdDEpOwogIEFMVEVSIEZPUkVJR04gVEFCTEUg ZnQxIEFMVEVSIENPTFVNTiBjOCBTRVQgREFUQSBUWVBFIGludGVnZXI7CS0t IEVSUk9SCiAgRFJPUCBUQUJMRSB1c2VfZnQxX2NvbHVtbl90eXBlOwohIEFM VEVSIEZPUkVJR04gVEFCTEUgZnQxIEFERCBDT05TVFJBSU5UIGZ0MV9jOV9j aGVjayBDSEVDSyAoYzkgPCAwKTsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0 MSBEUk9QIENPTlNUUkFJTlQgbm9fY29uc3Q7ICAgICAgICAgICAgICAgLS0g RVJST1IKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0MSBEUk9QIENPTlNUUkFJ TlQgSUYgRVhJU1RTIG5vX2NvbnN0OwohIEFMVEVSIEZPUkVJR04gVEFCTEUg ZnQxIERST1AgQ09OU1RSQUlOVCBmdDFfYzlfY2hlY2s7CiAgQUxURVIgRk9S RUlHTiBUQUJMRSBmdDEgU0VUIFdJVEggT0lEUzsgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tIEVSUk9SCiAgQUxURVIgRk9SRUlHTiBUQUJMRSBmdDEg T1dORVIgVE8gcmVncmVzc190ZXN0X3JvbGU7CiAgQUxURVIgRk9SRUlHTiBU QUJMRSBmdDEgT1BUSU9OUyAoRFJPUCBkZWxpbWl0ZXIsIFNFVCBxdW90ZSAn ficsIEFERCBlc2NhcGUgJ0AnKTsK --------------020002030706090609010206 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 --------------020002030706090609010206--