Return-Path: X-Original-To: apmail-flink-dev-archive@www.apache.org Delivered-To: apmail-flink-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D803918F8A for ; Tue, 11 Aug 2015 12:48:44 +0000 (UTC) Received: (qmail 34663 invoked by uid 500); 11 Aug 2015 12:48:44 -0000 Delivered-To: apmail-flink-dev-archive@flink.apache.org Received: (qmail 34603 invoked by uid 500); 11 Aug 2015 12:48:44 -0000 Mailing-List: contact dev-help@flink.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flink.apache.org Delivered-To: mailing list dev@flink.apache.org Received: (qmail 34592 invoked by uid 99); 11 Aug 2015 12:48:44 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Aug 2015 12:48:44 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id CD7661A9CA5 for ; Tue, 11 Aug 2015 12:48:43 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.01 X-Spam-Level: X-Spam-Status: No, score=-0.01 tagged_above=-999 required=6.31 tests=[SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id h-EsP00mVtO7 for ; Tue, 11 Aug 2015 12:48:32 +0000 (UTC) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [119.145.14.66]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTPS id 1435B2136C for ; Tue, 11 Aug 2015 12:48:22 +0000 (UTC) Received: from 172.24.1.47 (EHLO szxeml427-hub.china.huawei.com) ([172.24.1.47]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id BKW22720; Tue, 11 Aug 2015 20:47:52 +0800 (CST) Received: from szxeml559-mbx.china.huawei.com ([169.254.1.37]) by szxeml427-hub.china.huawei.com ([10.82.67.182]) with mapi id 14.03.0235.001; Tue, 11 Aug 2015 20:47:35 +0800 From: "huangwei (G)" To: "dev@flink.apache.org" Subject: =?utf-8?B?562U5aSNOiBTb21lIHByb2JsZW1zIGFib3V0IEZsaW5rIGFwcGxpY2F0aW9u?= =?utf-8?Q?s?= Thread-Topic: Some problems about Flink applications Thread-Index: AdDRusmZhEqlrXkZSnaDzc7waWF9XQAAaX+AAGWOzQAAN+edIA== Date: Tue, 11 Aug 2015 12:47:34 +0000 Message-ID: <5597EA3A57BF184588054E89ECCAA3D349AA740A@szxeml559-mbx.china.huawei.com> References: <5597EA3A57BF184588054E89ECCAA3D349AA3CAD@szxeml559-mbx.china.huawei.com> <55C63BFD.4000704@informatik.hu-berlin.de> In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.177.37.44] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.55C9EEF8.024C,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=169.254.1.37, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 8f8b401f2e5f2b30458691ed94f48871 SGkgU3RlcGhhbiBhbmQgTWF0dGhpYXMsDQoNClNvcnJ5IGZvciByZXBseWluZyBsYXRlLg0KSWB2 ZSBkb3VibGUgY2hlY2tlZCB0aGF0IHRoaXMgY2xhc3MgU3Rvcm1TcG91dFdyYXBwZXIgaXMgcmVh bGx5IGV4aXN0IGluIG15IGphciBmaWxlLg0KQW5kIGl0IGdvdCB0aGUgc2FtZSB0cm91YmxlIHdo ZW4gSSByYW4gdGhlIGZsaW5rLXN0b3JtLWNvbXBhdGliaWxpbHR5LWV4YW1wbGUtIGNvcnJlc3Bv bmRpbmcgd29yZC1jb3VudC1zdG9ybS4NClRoZSB3YXkgSSBidWlsdCBteSBUaHJvdWdocHV0IGFw cGxpY2F0aW9uIHdhcyBqdXN0IGFkZGluZyBpdCBpbnRvIHRoZSBmbGluay1zdG9ybS1jb21wYXRp YmlsaWx0eS1leGFtcGxlIGFuZCBjaGFuZ2Ugc29tZSBjb25maWd1cmF0aW9ucyBpbiB0aGUgd29y ZC1jb3VudC1zdG9ybS54bWwuDQpIZXJlIGlzIHRoZSBlbnRpcmUgUE9NIGZpbGUuDQoNCg0KPD94 bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS0NCkxpY2Vuc2VkIHRvIHRo ZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCm9yIG1vcmUgY29u dHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KZGlzdHJp YnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCnJlZ2FyZGlu ZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCnRvIHlv dSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCiJMaWNlbnNlIik7 IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCndpdGggdGhl IExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCg0KICBo dHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVp cmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0Kc29mdHdhcmUg ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCiJBUyBJ UyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KS0lORCwg ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQpzcGVj aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQp1bmRl ciB0aGUgTGljZW5zZS4NCi0tPg0KPHByb2plY3QgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUu b3JnL1BPTS80LjAuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVt YS1pbnN0YW5jZSINCgl4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3Jn L1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4NCg0K CTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4NCg0KCTxwYXJlbnQ+DQoJCTxncm91 cElkPm9yZy5hcGFjaGUuZmxpbms8L2dyb3VwSWQ+DQoJCTxhcnRpZmFjdElkPmZsaW5rLXN0b3Jt LWNvbXBhdGliaWxpdHktcGFyZW50PC9hcnRpZmFjdElkPg0KCQk8dmVyc2lvbj4wLjEwLVNOQVBT SE9UPC92ZXJzaW9uPg0KCQk8cmVsYXRpdmVQYXRoPi4uPC9yZWxhdGl2ZVBhdGg+DQoJPC9wYXJl bnQ+DQoNCgk8YXJ0aWZhY3RJZD5mbGluay1zdG9ybS1jb21wYXRpYmlsaXR5LWV4YW1wbGVzPC9h cnRpZmFjdElkPg0KCTxuYW1lPmZsaW5rLXN0b3JtLWNvbXBhdGliaWxpdHktZXhhbXBsZXM8L25h bWU+DQoNCgk8cGFja2FnaW5nPmphcjwvcGFja2FnaW5nPg0KDQoJPGRlcGVuZGVuY2llcz4NCgkJ PGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJZD5vcmcuYXBhY2hlLmZsaW5rPC9ncm91cElkPg0KCQkJ PGFydGlmYWN0SWQ+Zmxpbmstc3Rvcm0tY29tcGF0aWJpbGl0eS1jb3JlPC9hcnRpZmFjdElkPg0K CQkJPHZlcnNpb24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPg0KCQk8L2RlcGVuZGVuY3k+ DQoNCgkJPGRlcGVuZGVuY3k+DQoJCQk8Z3JvdXBJZD5vcmcuYXBhY2hlLmZsaW5rPC9ncm91cElk Pg0KCQkJPGFydGlmYWN0SWQ+ZmxpbmstamF2YS1leGFtcGxlczwvYXJ0aWZhY3RJZD4NCgkJCTx2 ZXJzaW9uPiR7cHJvamVjdC52ZXJzaW9ufTwvdmVyc2lvbj4NCgkJPC9kZXBlbmRlbmN5Pg0KDQoJ CTxkZXBlbmRlbmN5Pg0KCQkJPGdyb3VwSWQ+b3JnLmFwYWNoZS5mbGluazwvZ3JvdXBJZD4NCgkJ CTxhcnRpZmFjdElkPmZsaW5rLXN0cmVhbWluZy1jb3JlPC9hcnRpZmFjdElkPg0KCQkJPHZlcnNp b24+JHtwcm9qZWN0LnZlcnNpb259PC92ZXJzaW9uPg0KCQkJPHNjb3BlPnRlc3Q8L3Njb3BlPg0K CQkJPHR5cGU+dGVzdC1qYXI8L3R5cGU+DQoJCTwvZGVwZW5kZW5jeT4NCg0KCQk8ZGVwZW5kZW5j eT4NCgkJCTxncm91cElkPm9yZy5hcGFjaGUuZmxpbms8L2dyb3VwSWQ+DQoJCQk8YXJ0aWZhY3RJ ZD5mbGluay10ZXN0LXV0aWxzPC9hcnRpZmFjdElkPg0KCQkJPHZlcnNpb24+JHtwcm9qZWN0LnZl cnNpb259PC92ZXJzaW9uPg0KCQkJPHNjb3BlPnRlc3Q8L3Njb3BlPg0KCQk8L2RlcGVuZGVuY3k+ DQoNCiAgICAgICAgPGRlcGVuZGVuY3k+DQogICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hl LnN0b3JtPC9ncm91cElkPg0KICAgICAgICAgICAgPGFydGlmYWN0SWQ+c3Rvcm0tY29yZTwvYXJ0 aWZhY3RJZD4NCiAgICAgICAgICAgIDx2ZXJzaW9uPjAuOS40PC92ZXJzaW9uPg0KICAgICAgICAg ICAgPCEtLSBrZWVwIHN0b3JtIG91dCBvZiB0aGUgamFyLXdpdGgtZGVwZW5kZW5jaWVzIC0tPg0K ICAgICAgICAgICAgPHNjb3BlPnByb3ZpZGVkPC9zY29wZT4NCiAgICAgICAgPC9kZXBlbmRlbmN5 Pg0KCTwvZGVwZW5kZW5jaWVzPg0KDQoJPGJ1aWxkPg0KCQk8cGx1Z2lucz4NCgkJCTwhLS0gZ2V0 IGRlZmF1bHQgZGF0YSBmcm9tIGZsaW5rLWphdmEtZXhhbXBsZXMgcGFja2FnZSAtLT4NCgkJCTxw bHVnaW4+DQoJCQkJPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zPC9ncm91cElkPg0K CQkJCTxhcnRpZmFjdElkPm1hdmVuLWRlcGVuZGVuY3ktcGx1Z2luPC9hcnRpZmFjdElkPg0KCQkJ CTx2ZXJzaW9uPjIuOTwvdmVyc2lvbj48IS0tJE5PLU1WTi1NQU4tVkVSJC0tPg0KCQkJCTxleGVj dXRpb25zPg0KCQkJCQk8ZXhlY3V0aW9uPg0KCQkJCQkJPGlkPnVucGFjazwvaWQ+DQoJCQkJCQk8 cGhhc2U+cHJlcGFyZS1wYWNrYWdlPC9waGFzZT4NCgkJCQkJCTxnb2Fscz4NCgkJCQkJCQk8Z29h bD51bnBhY2s8L2dvYWw+DQoJCQkJCQk8L2dvYWxzPg0KCQkJCQkJPGNvbmZpZ3VyYXRpb24+DQoJ CQkJCQkJPGFydGlmYWN0SXRlbXM+DQoJCQkJCQkJCTxhcnRpZmFjdEl0ZW0+DQoJCQkJCQkJCQk8 Z3JvdXBJZD5vcmcuYXBhY2hlLmZsaW5rPC9ncm91cElkPg0KCQkJCQkJCQkJPGFydGlmYWN0SWQ+ ZmxpbmstamF2YS1leGFtcGxlczwvYXJ0aWZhY3RJZD4NCgkJCQkJCQkJCTx2ZXJzaW9uPiR7cHJv amVjdC52ZXJzaW9ufTwvdmVyc2lvbj4NCgkJCQkJCQkJCTx0eXBlPmphcjwvdHlwZT4NCgkJCQkJ CQkJCTxvdmVyV3JpdGU+ZmFsc2U8L292ZXJXcml0ZT4NCgkJCQkJCQkJCTxvdXRwdXREaXJlY3Rv cnk+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vY2xhc3Nlczwvb3V0cHV0RGlyZWN0b3J5Pg0K CQkJCQkJCQkJPGluY2x1ZGVzPm9yZy9hcGFjaGUvZmxpbmsvZXhhbXBsZXMvamF2YS93b3JkY291 bnQvdXRpbC9Xb3JkQ291bnREYXRhLmNsYXNzPC9pbmNsdWRlcz4NCgkJCQkJCQkJPC9hcnRpZmFj dEl0ZW0+DQoJCQkJCQkJCTxhcnRpZmFjdEl0ZW0+DQoJCQkJCQkJCQk8Z3JvdXBJZD5vcmcuYXBh Y2hlLmZsaW5rPC9ncm91cElkPg0KCQkJCQkJCQkJPGFydGlmYWN0SWQ+Zmxpbmstc3Rvcm0tY29t cGF0aWJpbGl0eS1jb3JlPC9hcnRpZmFjdElkPg0KCQkJCQkJCQkJPHZlcnNpb24+JHtwcm9qZWN0 LnZlcnNpb259PC92ZXJzaW9uPg0KCQkJCQkJCQkJPHR5cGU+amFyPC90eXBlPg0KCQkJCQkJCQkJ PG92ZXJXcml0ZT5mYWxzZTwvb3ZlcldyaXRlPg0KCQkJCQkJCQkJPG91dHB1dERpcmVjdG9yeT4k e3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9jbGFzc2VzPC9vdXRwdXREaXJlY3Rvcnk+DQoJCQkJ CQkJCTwvYXJ0aWZhY3RJdGVtPg0KCQkJCQkJCQk8YXJ0aWZhY3RJdGVtPg0KCQkJCQkJCQkJPGdy b3VwSWQ+b3JnLmFwYWNoZS5zdG9ybTwvZ3JvdXBJZD4NCgkJCQkJCQkJCTxhcnRpZmFjdElkPnN0 b3JtLWNvcmU8L2FydGlmYWN0SWQ+DQoJCQkJCQkJCQk8dmVyc2lvbj4wLjkuNDwvdmVyc2lvbj4N CgkJCQkJCQkJCTx0eXBlPmphcjwvdHlwZT4NCgkJCQkJCQkJCTxvdmVyV3JpdGU+ZmFsc2U8L292 ZXJXcml0ZT4NCgkJCQkJCQkJCTxvdXRwdXREaXJlY3Rvcnk+JHtwcm9qZWN0LmJ1aWxkLmRpcmVj dG9yeX0vY2xhc3Nlczwvb3V0cHV0RGlyZWN0b3J5Pg0KCQkJCQkJCQkJPCEtLTxleGNsdWRlcz5k ZWZhdWx0cy55YW1sPC9leGNsdWRlcz4tLT4NCgkJCQkJCQkJPC9hcnRpZmFjdEl0ZW0+DQoJCQkJ CQkJCTxhcnRpZmFjdEl0ZW0+DQoJCQkJCQkJCQk8Z3JvdXBJZD5jb20uZ29vZ2xlY29kZS5qc29u LXNpbXBsZTwvZ3JvdXBJZD4NCgkJCQkJCQkJCTxhcnRpZmFjdElkPmpzb24tc2ltcGxlPC9hcnRp ZmFjdElkPg0KCQkJCQkJCQkJPHZlcnNpb24+MS4xPC92ZXJzaW9uPg0KCQkJCQkJCQkJPHR5cGU+ amFyPC90eXBlPg0KCQkJCQkJCQkJPG92ZXJXcml0ZT5mYWxzZTwvb3ZlcldyaXRlPg0KCQkJCQkJ CQkJPG91dHB1dERpcmVjdG9yeT4ke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9jbGFzc2VzPC9v dXRwdXREaXJlY3Rvcnk+DQoJCQkJCQkJCTwvYXJ0aWZhY3RJdGVtPnNuYWtleWFtbA0KCQkJCQkJ CQk8YXJ0aWZhY3RJdGVtPg0KCQkJCQkJCQkJPGdyb3VwSWQ+b3JnLnlhbWw8L2dyb3VwSWQ+DQoJ CQkJCQkJCQk8YXJ0aWZhY3RJZD5zbmFrZXlhbWw8L2FydGlmYWN0SWQ+DQoJCQkJCQkJCQk8dmVy c2lvbj4xLjExPC92ZXJzaW9uPg0KCQkJCQkJCQkJPHR5cGU+amFyPC90eXBlPg0KCQkJCQkJCQkJ PG92ZXJXcml0ZT5mYWxzZTwvb3ZlcldyaXRlPg0KCQkJCQkJCQkJPG91dHB1dERpcmVjdG9yeT4k e3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9jbGFzc2VzPC9vdXRwdXREaXJlY3Rvcnk+DQoJCQkJ CQkJCTwvYXJ0aWZhY3RJdGVtPg0KCQkJCQkJCTwvYXJ0aWZhY3RJdGVtcz4NCgkJCQkJCTwvY29u ZmlndXJhdGlvbj4NCgkJCQkJPC9leGVjdXRpb24+DQoJCQkJPC9leGVjdXRpb25zPg0KCQkJPC9w bHVnaW4+DQoNCgkJCTwhLS0gc2VsZi1jb250YWluZWQgamFycyBmb3IgZWFjaCBleGFtcGxlIC0t Pg0KCQkJPHBsdWdpbj4NCgkJCQk8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dy b3VwSWQ+DQoJCQkJPGFydGlmYWN0SWQ+bWF2ZW4tamFyLXBsdWdpbjwvYXJ0aWZhY3RJZD4NCg0K CQkJCTxleGVjdXRpb25zPg0KDQoJCQkJCTwhLS0gV29yZENvdW50IFNwb3V0IHNvdXJjZS0tPg0K CQkJCQk8ZXhlY3V0aW9uPg0KCQkJCQkJPGlkPldvcmRDb3VudC1TcG91dFNvdXJjZTwvaWQ+DQoJ CQkJCQk8cGhhc2U+cGFja2FnZTwvcGhhc2U+DQoJCQkJCQk8Z29hbHM+DQoJCQkJCQkJPGdvYWw+ amFyPC9nb2FsPg0KCQkJCQkJPC9nb2Fscz4NCgkJCQkJCTxjb25maWd1cmF0aW9uPg0KCQkJCQkJ CTxjbGFzc2lmaWVyPldvcmRDb3VudFNwb3V0U291cmNlPC9jbGFzc2lmaWVyPg0KDQoJCQkJCQkJ PGFyY2hpdmU+DQoJCQkJCQkJCTxtYW5pZmVzdEVudHJpZXM+DQoJCQkJCQkJCQk8cHJvZ3JhbS1j bGFzcz5vcmcuYXBhY2hlLmZsaW5rLnN0b3JtY29tcGF0aWJpbGl0eS53b3JkY291bnQuU3BvdXRT b3VyY2VXb3JkQ291bnQ8L3Byb2dyYW0tY2xhc3M+DQoJCQkJCQkJCTwvbWFuaWZlc3RFbnRyaWVz Pg0KCQkJCQkJCTwvYXJjaGl2ZT4NCg0KCQkJCQkJCTxpbmNsdWRlcz4NCgkJCQkJCQkJPCEtLSBm cm9tIHN0b3JtLWNvcmUgLS0+DQoJCQkJCQkJCTxpbmNsdWRlPmJhY2t0eXBlL3N0b3JtL3RvcG9s b2d5LyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJCTxpbmNsdWRlPmJhY2t0eXBlL3N0b3JtL3Nw b3V0LyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJCTxpbmNsdWRlPmJhY2t0eXBlL3N0b3JtL3Rh c2svKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vdHVw bGUvKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vZ2Vu ZXJhdGVkLyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJCTxpbmNsdWRlPmJhY2t0eXBlL3N0b3Jt L21ldHJpYy8qKi8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8aW5jbHVkZT5vcmcvYXBhY2hl L3RocmlmdDcvKiovKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPCEtLSBTdG9ybSdzIHJlY3Vy c2l2ZSBkZXBlbmRlbmNpZXMgLS0+DQoJCQkJCQkJCTxpbmNsdWRlPm9yZy9qc29uL3NpbXBsZS8q Ki8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8IS0tIGNvbXBhdGliaWxpdHkgbGF5ZXIgLS0+ DQoJCQkJCQkJCTxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L2Fw aS8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8aW5jbHVkZT5vcmcvYXBhY2hlL2ZsaW5rL3N0 b3JtY29tcGF0aWJpbGl0eS93cmFwcGVycy8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8IS0t IFdvcmQgQ291bnQgLS0+DQoJCQkJCQkJCTxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1j b21wYXRpYmlsaXR5L3dvcmRjb3VudC9TcG91dFNvdXJjZVdvcmRDb3VudC5jbGFzczwvaW5jbHVk ZT4NCgkJCQkJCQkJPGluY2x1ZGU+b3JnL2FwYWNoZS9mbGluay9zdG9ybWNvbXBhdGliaWxpdHkv d29yZGNvdW50L1Nwb3V0U291cmNlV29yZENvdW50JCouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJ CTxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L3dvcmRjb3VudC9z dG9ybW9wZXJhdG9ycy9BYnN0cmFjdFN0b3JtU3BvdXQuY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJ CTxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L3dvcmRjb3VudC9z dG9ybW9wZXJhdG9ycy9TdG9ybUZpbGVTcG91dC5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGlu Y2x1ZGU+b3JnL2FwYWNoZS9mbGluay9zdG9ybWNvbXBhdGliaWxpdHkvd29yZGNvdW50L3N0b3Jt b3BlcmF0b3JzL1N0b3JtSW5NZW1vcnlTcG91dC5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGlu Y2x1ZGU+b3JnL2FwYWNoZS9mbGluay9leGFtcGxlcy9qYXZhL3dvcmRjb3VudC91dGlsL1dvcmRD b3VudERhdGEuY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJPC9pbmNsdWRlcz4NCgkJCQkJCTwvY29u ZmlndXJhdGlvbj4NCgkJCQkJPC9leGVjdXRpb24+DQoNCgkJCQkJPCEtLSBXb3JkQ291bnQgQm9s dCB0b2tlbml6ZXItLT4NCgkJCQkJPGV4ZWN1dGlvbj4NCgkJCQkJCTxpZD5Xb3JkQ291bnQtQm9s dFRva2VuaXplcjwvaWQ+DQoJCQkJCQk8cGhhc2U+cGFja2FnZTwvcGhhc2U+DQoJCQkJCQk8Z29h bHM+DQoJCQkJCQkJPGdvYWw+amFyPC9nb2FsPg0KCQkJCQkJPC9nb2Fscz4NCgkJCQkJCTxjb25m aWd1cmF0aW9uPg0KCQkJCQkJCTxjbGFzc2lmaWVyPldvcmRDb3VudEJvbHRUb2tlbml6ZXI8L2Ns YXNzaWZpZXI+DQoNCgkJCQkJCQk8YXJjaGl2ZT4NCgkJCQkJCQkJPG1hbmlmZXN0RW50cmllcz4N CgkJCQkJCQkJCTxwcm9ncmFtLWNsYXNzPm9yZy5hcGFjaGUuZmxpbmsuc3Rvcm1jb21wYXRpYmls aXR5LndvcmRjb3VudC5Cb2x0VG9rZW5pemVyV29yZENvdW50PC9wcm9ncmFtLWNsYXNzPg0KCQkJ CQkJCQk8L21hbmlmZXN0RW50cmllcz4NCgkJCQkJCQk8L2FyY2hpdmU+DQoNCgkJCQkJCQk8aW5j bHVkZXM+DQoJCQkJCQkJCTwhLS0gZnJvbSBzdG9ybS1jb3JlIC0tPg0KCQkJCQkJCQk8aW5jbHVk ZT5iYWNrdHlwZS9zdG9ybS90b3BvbG9neS8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8aW5j bHVkZT5iYWNrdHlwZS9zdG9ybS9zcG91dC8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8aW5j bHVkZT5iYWNrdHlwZS9zdG9ybS90YXNrLyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJCTxpbmNs dWRlPmJhY2t0eXBlL3N0b3JtL3R1cGxlLyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJCQkJCTxpbmNs dWRlPmJhY2t0eXBlL3N0b3JtL2dlbmVyYXRlZC8qLmNsYXNzPC9pbmNsdWRlPg0KCQkJCQkJCQk8 aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS9tZXRyaWMvKiovKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJ CQkJPGluY2x1ZGU+b3JnL2FwYWNoZS90aHJpZnQ3LyoqLyouY2xhc3M8L2luY2x1ZGU+DQoJCQkJ CQkJCTwhLS0gU3Rvcm0ncyByZWN1cnNpdmUgZGVwZW5kZW5jaWVzIC0tPg0KCQkJCQkJCQk8aW5j bHVkZT5vcmcvanNvbi9zaW1wbGUvKiovKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPCEtLSBj b21wYXRpYmlsaXR5IGxheWVyIC0tPg0KCQkJCQkJCQk8aW5jbHVkZT5vcmcvYXBhY2hlL2ZsaW5r L3N0b3JtY29tcGF0aWJpbGl0eS9hcGkvKi5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGluY2x1 ZGU+b3JnL2FwYWNoZS9mbGluay9zdG9ybWNvbXBhdGliaWxpdHkvd3JhcHBlcnMvKi5jbGFzczwv aW5jbHVkZT4NCgkJCQkJCQkJPCEtLSBXb3JkIENvdW50IC0tPg0KCQkJCQkJCQk8aW5jbHVkZT5v cmcvYXBhY2hlL2ZsaW5rL3N0b3JtY29tcGF0aWJpbGl0eS93b3JkY291bnQvQm9sdFRva2VuaXpl cldvcmRDb3VudC5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGluY2x1ZGU+b3JnL2FwYWNoZS9m bGluay9zdG9ybWNvbXBhdGliaWxpdHkvd29yZGNvdW50L3N0b3Jtb3BlcmF0b3JzL1N0b3JtQm9s dFRva2VuaXplci5jbGFzczwvaW5jbHVkZT4NCgkJCQkJCQkJPGluY2x1ZGU+b3JnL2FwYWNoZS9m bGluay9leGFtcGxlcy9qYXZhL3dvcmRjb3VudC91dGlsL1dvcmRDb3VudERhdGEuY2xhc3M8L2lu Y2x1ZGU+DQoJCQkJCQkJPC9pbmNsdWRlcz4NCgkJCQkJCTwvY29uZmlndXJhdGlvbj4NCgkJCQkJ PC9leGVjdXRpb24+DQoNCiAgICAgICAgICAgICAgICAgICAgPCEtLSBUaHJvdWdocHV0IC0tPg0K ICAgICAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAg PGlkPlRocm91Z2hwdXQ8L2lkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPnBhY2th Z2U8L3BoYXNlPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxnb2FsPmphcjwvZ29hbD4NCiAgICAgICAgICAgICAgICAgICAgICAg IDwvZ29hbHM+DQogICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8Y2xhc3NpZmllcj5UaHJvdWdocHV0PC9jbGFzc2lmaWVy Pg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFyY2hpdmU+DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxtYW5pZmVzdEVudHJpZXM+DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvZ3JhbS1jbGFzcz5vcmcuYXBhY2hlLmZsaW5rLnN0b3JtY29t cGF0aWJpbGl0eS5leHBlcmltZW50cy5UaHJvdWdocHV0PC9wcm9ncmFtLWNsYXNzPg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hbmlmZXN0RW50cmllcz4NCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L2FyY2hpdmU+DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8aW5jbHVkZXM+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZnJvbSBz dG9ybS1jb3JlIC0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5k ZWZhdWx0cy55YW1sPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS9zZXJpYWxpemF0aW9uLyou Y2xhc3M8L2luY2x1ZGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRl PmJhY2t0eXBlL3N0b3JtL3RvcG9sb2d5LyouY2xhc3M8L2luY2x1ZGU+DQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPmJhY2t0eXBlL3N0b3JtL3RvcG9sb2d5L2Jhc2Uv Ki5jbGFzczwvaW5jbHVkZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1 ZGU+YmFja3R5cGUvc3Rvcm0vdXRpbHMvKi5jbGFzczwvaW5jbHVkZT4NCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vc3BvdXQvKi5jbGFzczwv aW5jbHVkZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+YmFja3R5 cGUvc3Rvcm0vdGFzay8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS90dXBsZS8qLmNsYXNzPC9pbmNsdWRlPg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS9n ZW5lcmF0ZWQvKi5jbGFzczwvaW5jbHVkZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vbWV0cmljLyoqLyouY2xhc3M8L2luY2x1ZGU+DQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPm9yZy9hcGFjaGUvc3Rvcm0v Y3VyYXRvci8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8aW5jbHVkZT5vcmcvYXBhY2hlL3RocmlmdDcvKiovKi5jbGFzczwvaW5jbHVkZT4NCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxpbmNsdWRlPm9yZy95YW1sL3NuYWtleWFt bC9jb25zdHJ1Y3Rvci8qLmNsYXNzPC9pbmNsdWRlPi0tPg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8aW5jbHVkZT5vcmcveWFtbC9zbmFrZXlhbWwvKiovKi5jbGFzczwvaW5jbHVk ZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTdG9ybSdzIHJlY3Vyc2l2 ZSBkZXBlbmRlbmNpZXMgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNs dWRlPm9yZy9qc29uL3NpbXBsZS8qKi8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8IS0tIGNvbXBhdGliaWxpdHkgbGF5ZXIgLS0+DQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21w YXRpYmlsaXR5L2FwaS8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW5jbHVkZT5vcmcvYXBhY2hlL2ZsaW5rL3N0b3JtY29tcGF0aWJpbGl0eS93cmFw cGVycy8qLmNsYXNzPC9pbmNsdWRlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 IS0tIFdvcmQgQ291bnQgLS0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNs dWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L2V4cGVyaW1lbnRzL1Rocm91 Z2hwdXQuY2xhc3M8L2luY2x1ZGU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxp bmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L2V4cGVyaW1lbnRzL1Ro cm91Z2hwdXQkKi5jbGFzczwvaW5jbHVkZT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L2luY2x1ZGVzPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPg0KICAg ICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbj4NCg0KCQkJCQk8ZXhlY3V0aW9uPg0KCQkJCQkJ PGdvYWxzPg0KCQkJCQkJCTxnb2FsPnRlc3QtamFyPC9nb2FsPg0KCQkJCQkJPC9nb2Fscz4NCgkJ CQkJPC9leGVjdXRpb24+DQoJCQkJPC9leGVjdXRpb25zPg0KCQkJPC9wbHVnaW4+DQoNCgkJCTwh LS0gV29yZENvdW50IFN0b3JtIHRvcG9sb2d5LS0+DQoJCQk8IS0tIENhbm5vdCB1c2UgbWF2ZW4t amFyLXBsdWdpbiBiZWNhdXNlICdkZWZhdWx0cy55YW1sJyBtdXN0IGJlIGluY2x1ZGVkIGluIGph ciAtLT4NCgkJCTxwbHVnaW4+DQoJCQkJPGFydGlmYWN0SWQ+bWF2ZW4tYXNzZW1ibHktcGx1Z2lu PC9hcnRpZmFjdElkPg0KCQkJCTxjb25maWd1cmF0aW9uPg0KCQkJCQk8ZGVzY3JpcHRvcnM+DQoJ CQkJCQk8ZGVzY3JpcHRvcj5zcmMvYXNzZW1ibHkvd29yZC1jb3VudC1zdG9ybS54bWw8L2Rlc2Ny aXB0b3I+DQoJCQkJCTwvZGVzY3JpcHRvcnM+DQoJCQkJCTxhcmNoaXZlPg0KCQkJCQkJPG1hbmlm ZXN0RW50cmllcz4NCgkJCQkJCQk8cHJvZ3JhbS1jbGFzcz5vcmcuYXBhY2hlLmZsaW5rLnN0b3Jt Y29tcGF0aWJpbGl0eS53b3JkY291bnQuU3Rvcm1Xb3JkQ291bnRSZW1vdGVCeVN1Ym1pdHRlcjwv cHJvZ3JhbS1jbGFzcz4NCgkJCQkJCTwvbWFuaWZlc3RFbnRyaWVzPg0KCQkJCQk8L2FyY2hpdmU+ DQoJCQkJPC9jb25maWd1cmF0aW9uPg0KDQoJCQkJPGV4ZWN1dGlvbnM+DQoJCQkJCTxleGVjdXRp b24+DQoJCQkJCQk8aWQ+V29yZENvdW50U3Rvcm08L2lkPg0KCQkJCQkJPHBoYXNlPnBhY2thZ2U8 L3BoYXNlPg0KCQkJCQkJPGdvYWxzPg0KCQkJCQkJCTxnb2FsPnNpbmdsZTwvZ29hbD4NCgkJCQkJ CTwvZ29hbHM+DQoJCQkJCTwvZXhlY3V0aW9uPg0KCQkJCTwvZXhlY3V0aW9ucz4NCgkJCTwvcGx1 Z2luPg0KCQk8L3BsdWdpbnM+DQoNCgkJPHBsdWdpbk1hbmFnZW1lbnQ+DQoJCQk8cGx1Z2lucz4N CgkJCQk8IS0tVGhpcyBwbHVnaW4ncyBjb25maWd1cmF0aW9uIGlzIHVzZWQgdG8gc3RvcmUgRWNs aXBzZSBtMmUgc2V0dGluZ3Mgb25seS4gSXQgaGFzIG5vIGluZmx1ZW5jZSBvbiB0aGUgTWF2ZW4g YnVpbGQgaXRzZWxmLi0tPg0KCQkJCTxwbHVnaW4+DQoJCQkJCTxncm91cElkPm9yZy5lY2xpcHNl Lm0yZTwvZ3JvdXBJZD4NCgkJCQkJPGFydGlmYWN0SWQ+bGlmZWN5Y2xlLW1hcHBpbmc8L2FydGlm YWN0SWQ+DQoJCQkJCTx2ZXJzaW9uPjEuMC4wPC92ZXJzaW9uPg0KCQkJCQk8Y29uZmlndXJhdGlv bj4NCgkJCQkJCTxsaWZlY3ljbGVNYXBwaW5nTWV0YWRhdGE+DQoJCQkJCQkJPHBsdWdpbkV4ZWN1 dGlvbnM+DQoJCQkJCQkJCTxwbHVnaW5FeGVjdXRpb24+DQoJCQkJCQkJCQk8cGx1Z2luRXhlY3V0 aW9uRmlsdGVyPg0KCQkJCQkJCQkJCTxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwv Z3JvdXBJZD4NCgkJCQkJCQkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1kZXBlbmRlbmN5LXBsdWdpbjwv YXJ0aWZhY3RJZD4NCgkJCQkJCQkJCQk8dmVyc2lvblJhbmdlPlsyLjksKTwvdmVyc2lvblJhbmdl Pg0KCQkJCQkJCQkJCTxnb2Fscz4NCgkJCQkJCQkJCQkJPGdvYWw+dW5wYWNrPC9nb2FsPg0KCQkJ CQkJCQkJCTwvZ29hbHM+DQoJCQkJCQkJCQk8L3BsdWdpbkV4ZWN1dGlvbkZpbHRlcj4NCgkJCQkJ CQkJCTxhY3Rpb24+DQoJCQkJCQkJCQkJPGlnbm9yZS8+DQoJCQkJCQkJCQk8L2FjdGlvbj4NCgkJ CQkJCQkJPC9wbHVnaW5FeGVjdXRpb24+DQoJCQkJCQkJPC9wbHVnaW5FeGVjdXRpb25zPg0KCQkJ CQkJPC9saWZlY3ljbGVNYXBwaW5nTWV0YWRhdGE+DQoJCQkJCTwvY29uZmlndXJhdGlvbj4NCgkJ CQk8L3BsdWdpbj4NCgkJCTwvcGx1Z2lucz4NCgkJPC9wbHVnaW5NYW5hZ2VtZW50Pg0KDQoJPC9i dWlsZD4NCg0KPC9wcm9qZWN0Pg0KDQotLS0tLemCruS7tuWOn+S7ti0tLS0tDQrlj5Hku7bkuro6 IGV3ZW5zdGVwaGFuQGdtYWlsLmNvbSBbbWFpbHRvOmV3ZW5zdGVwaGFuQGdtYWlsLmNvbV0g5Luj 6KGoIFN0ZXBoYW4gRXdlbg0K5Y+R6YCB5pe26Ze0OiAyMDE15bm0OOaciDEx5pelIDE6NTUNCuaU tuS7tuS6ujogZGV2QGZsaW5rLmFwYWNoZS5vcmcNCuS4u+mimDogUmU6IFNvbWUgcHJvYmxlbXMg YWJvdXQgRmxpbmsgYXBwbGljYXRpb25zDQoNCkl0IHdvdWxkIGFsc28gaGVscCBpZiB5b3UgY291 bGQgcGFzdGUgdGhlIGVudGlyZSBQT00gZmlsZSBvZiB5b3VyIHByb2plY3QuDQpNYXliZSBzb21l dGhpbmcgaXMgYW1pc3Mgd2l0aCB0aGUgZGVwZW5kZW5jaWVzLCBvciB0aGUgc2NvcGVzPw0KDQpP biBTYXQsIEF1ZyA4LCAyMDE1IGF0IDc6MjcgUE0sIE1hdHRoaWFzIEouIFNheCA8IG1qc2F4QGlu Zm9ybWF0aWsuaHUtYmVybGluLmRlPiB3cm90ZToNCg0KPiBIaSBIdWFuZywNCj4NCj4gYWJvdXQg U3Rvcm0gY29tcGF0aWJpbGl0eS4gRGlkIHlvdSBkb3VibGUgY2hlY2ssIHRoYXQgdGhlIGZpbGUg dGhhdCBpcyANCj4gbWlzc2luZyAoU3Rvcm1TcG91dFdyYXBwZXIpIGlzIGNvbnRhaW5lZCBpbiB5 b3VyIGphci4gTG9va2luZyBhdCANCj4gcG9tLnhtbCBkb2VzIG5vdCBoZWxwIGhlcmUsIGJlY2F1 c2UgaWYgeW91IHNwZWNpZnkgdG8gaW5jbHVkZSBhIGZpbGUsIA0KPiBidXQgbWF2ZW4gY2Fubm90 IGZpbmQgaXQsIGl0IHdpbGwganVzdCBub3QgYWRkIGl0IHRvIHRoZSBqYXIsIGJ1dCANCj4gYnVp bGQgd2lsbCBzdWNjZWVkLiBUaHVzLCB5b3UgbmVlZCB0byBjaGVjayB0aGUgamFyIGZpbGUgaXRz ZWxmIHZpYSBjb21tYW5kIGxpbmU6DQo+ICAgICB1bnppcCAtbCBteWphcmZpbGUuamFyDQo+IG9y DQo+ICAgICB1bnppcCAtbCBteWphcmZpbGUuamFyIHwgZ3JlcCBmaWxlLUktYW0tbG9va2luZy1m b3INCj4NCj4gSSBndWVzcyB5b3VyIGphciBpcyBub3QgYnVpbGQgY29ycmVjdGx5LCBpZSwgdGhl IGZpbGUgaXMgbm90IHRoZXJlLi4uDQo+DQo+IERpZCB5b3UgaGF2ZSBhIGxvb2sgaW50byBwb20u eG1sIGZvciANCj4gZmxpbmstc3Rvcm0tY29tcGF0aWJpbGlsdHktZXhhbXBsZQ0KPiBhbmQgdGhl IGNvcnJlc3BvbmRpbmcgd29yZC1jb3VudC1zdG9ybS54bWw/IFRoaXMgc2hvd3MgaG93IHRvIGJ1 aWxkIGEgDQo+IGphciBjb3JyZWN0bHkgKGl0IHdhcyByZWNlbnRseSBmaXhlZCwgc28gbWFrZSBz dXJlIHlvdSB1cGRhdGUgdG8gdGhlIA0KPiBsYXRlc3QgbWFzdGVyKQ0KPg0KPiBZb3UgY2FuIGFs c28gaGF2ZSBhIGxvb2sgaGVyZSBob3cgdG8gcGFja2FnZSBqYXJzIGNvcnJlY3RseSAoZXZlbiBp ZiANCj4gdGhpcyBleGFtcGxlIGlzIGFib3V0IEZsaW5rIE1MKToNCj4NCj4gaHR0cHM6Ly9zdGFj a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzE2NjE5MDAvbWF2ZW4tYnVpbGQtaGFzLW1pc3Npbmct cA0KPiBhY2thZ2UtbGlua2FnZXMvMzE2NjI2NDIjMzE2NjI2NDINCj4NCj4gLU1hdHRoaWFzDQo+ DQo+IE9uIDA4LzA4LzIwMTUgMTE6MTUgQU0sIGh1YW5nd2VpIChHKSB3cm90ZToNCj4gPiBIaSwN Cj4gPiBJIGdldCBzb21lIHRyb3VibGUgaW4gZGV2ZWxvcGluZyBGbGluayBhcHBsaWNhdGlvbnMu DQo+ID4NCj4gPiAxLg0KPiA+IEkgd2FudCB0byB0ZXN0IHRoZSBwZXJmb3JtYW5jZSBiZXR3ZWVu IFN0b3JtIGFuZA0KPiBmbGluay1zdG9ybS1jb21wYXRpYmlsaXR5IHVzaW5nIHRoZSB0ZXN0IHBy b2dyYW06DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0LWZsaW5rL2ZsaW5rLXBlcmYvYmxv Yi9tYXN0ZXIvc3Rvcm0tam9icy9zcmMNCj4gL2p2bS9leHBlcmltZW50cy9UaHJvdWdocHV0Lmph dmENCj4gLg0KPiA+IEFuZCB0aGVyZSBpcyBhIGJpdCBvZiBteSBjaGFuZ2VzIHdpdGggdGhpcyBU aHJvdWdocHV0LmphdmEgYmVsb3c6DQo+ID4NCj4gPg0KPiA+DQo+ID4gcHVibGljIHN0YXRpYyB2 b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7DQo+ID4gICAgICAgICAg ICAgICAgICAgIFBhcmFtZXRlclRvb2wgcHQgPSBQYXJhbWV0ZXJUb29sLmZyb21BcmdzKGFyZ3Mp Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgIGludCBwYXIgPSBwdC5nZXRJbnQoInBhcmEi KTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICBmaW5hbCBGbGlua1RvcG9sb2d5QnVpbGRl ciBidWlsZGVyID0gbmV3DQo+IEZsaW5rVG9wb2xvZ3lCdWlsZGVyKCk7DQo+ID4NCj4gPiAgICAg ICAgICAgICAgICAgICAgYnVpbGRlci5zZXRTcG91dCgic291cmNlMCIsIG5ldyBHZW5lcmF0b3Io cHQpLA0KPiBwdC5nZXRJbnQoInNvdXJjZVBhcmFsbGVsaXNtIikpOw0KPiA+DQo+ID4gICAgICAg ICAgICAgICAgICAgIGludCBpID0gMDsNCj4gPiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkg PCBwdC5nZXRJbnQoInJlcGFydGl0aW9ucyIsIDEpIC0gMTsgaSsrKSB7DQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYWRkaW5nIHNvdXJjZSIgKyBp ICsgIg0KPiAtLT4gc291cmNlIiArIChpICsgMSkpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBidWlsZGVyLnNldEJvbHQoInNvdXJjZSIgKyAoaSArIDEpLCBuZXcNCj4gUmVwYXJ0 UGFzc1Rocm91Z2hCb2x0KHB0KSwgcHQuZ2V0SW50KCJzaW5rUGFyYWxsZWxpc20iKSkNCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWVsZHNHcm91 cGluZygic291cmNlIg0KPiArIGksIG5ldyBGaWVsZHMoImlkIikpOw0KPiA+ICAgICAgICAgICAg ICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxu KCJhZGRpbmcgZmluYWwgc291cmNlIiArIGkgKyAiIA0KPiA+IC0tPg0KPiBzaW5rIik7DQo+ID4N Cj4gPiAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5zZXRCb2x0KCJzaW5rIiwgbmV3IFNpbmso cHQpLA0KPiBwdC5nZXRJbnQoInNpbmtQYXJhbGxlbGlzbSIpKS5maWVsZHNHcm91cGluZygic291 cmNlIiArIGksIG5ldyANCj4gRmllbGRzKCJpZCIpKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAg ICAgICBDb25maWcgY29uZiA9IG5ldyBDb25maWcoKTsNCj4gPiAgICAgICAgICAgICAgICAgICAg Y29uZi5zZXREZWJ1ZyhmYWxzZSk7IC8vU3lzdGVtLmV4aXQoMSk7DQo+ID4NCj4gPiAgICAgICAg ICAgICAgICAgICAgLy8gZXhlY3V0ZSBwcm9ncmFtIGxvY2FsbHkNCj4gPiAgICAgICAgICAgICAg ICAgICAgZmluYWwgRmxpbmtMb2NhbENsdXN0ZXIgY2x1c3RlciA9DQo+IEZsaW5rTG9jYWxDbHVz dGVyLmdldExvY2FsQ2x1c3RlcigpOw0KPiA+ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLnN1 Ym1pdFRvcG9sb2d5KCJ0aHJvdWdocHV0IiwgbnVsbCwNCj4gYnVpbGRlci5jcmVhdGVUb3BvbG9n eSgpKTsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICBVdGlscy5zbGVlcCgxMCAqIDEwMDAp Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8ga2lsbCBkb2VzIG5vIGRvIGFu eXRoaW5nIHNvIGZhcg0KPiA+ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLmtpbGxUb3BvbG9n eSgidGhyb3VnaHB1dCIpOw0KPiA+ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyLnNodXRkb3du KCk7DQo+ID4gICAgICAgICAgfQ0KPiA+DQo+ID4NCj4gPiBUaGlzIHByb2dyYW0gd2lsbCBydW4g d2VsbCBpbiBJREVBIHdpdGggZmxpbmstc3Rvcm0tY29tcGF0aWJpbGl0eS4NCj4gPiBIb3dldmVy LCB3aGVuIEkgcGFja2FnZWQgaXQgaW50byBhIGphciBmaWxlIGFuZCBydW4gb24gdGhlDQo+IGZs aW5rLTAuMTBTTkFQU0hPVCB0aGVyZSBpcyBhIHByb2JsZW0gaW4gZmxpbmstY2xpZW50IGxvZyBm aWxlOg0KPiA+DQo+ID4gamF2YS5sYW5nLkV4Y2VwdGlvbjogQ2FsbCB0byByZWdpc3RlcklucHV0 T3V0cHV0KCkgb2YgaW52b2thYmxlIGZhaWxlZA0KPiA+ICAgICAgICAgIGF0IG9yZy5hcGFjaGUu ZmxpbmsucnVudGltZS50YXNrbWFuYWdlci5UYXNrLnJ1bihUYXNrLmphdmE6NTIxKQ0KPiA+ICAg ICAgICAgIGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0NSkNCj4gPiBDYXVz ZWQgYnk6IG9yZy5hcGFjaGUuZmxpbmsuc3RyZWFtaW5nLnJ1bnRpbWUudGFza3MuU3RyZWFtVGFz a0V4Y2VwdGlvbjoNCj4gQ2Fubm90IGluc3RhbnRpYXRlIHVzZXIgZnVuY3Rpb24uDQo+ID4gICAg ICAgICAgYXQNCj4gb3JnLmFwYWNoZS5mbGluay5zdHJlYW1pbmcuYXBpLmdyYXBoLlN0cmVhbUNv bmZpZy5nZXRTdHJlYW1PcGVyYXRvcihTdA0KPiByZWFtQ29uZmlnLmphdmE6MTg3KQ0KPiA+ICAg ICAgICAgIGF0DQo+IG9yZy5hcGFjaGUuZmxpbmsuc3RyZWFtaW5nLnJ1bnRpbWUudGFza3MuU3Ry ZWFtVGFzay5yZWdpc3RlcklucHV0T3V0cHUNCj4gdChTdHJlYW1UYXNrLmphdmE6OTApDQo+ID4g ICAgICAgICAgYXQgb3JnLmFwYWNoZS5mbGluay5ydW50aW1lLnRhc2ttYW5hZ2VyLlRhc2sucnVu KFRhc2suamF2YTo1MTgpDQo+ID4gICAgICAgICAgLi4uIDEgbW9yZQ0KPiA+IENhdXNlZCBieTog amF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb246DQo+IG9yZy5hcGFjaGUuZmxpbmsuc3Rv cm1jb21wYXRpYmlsaXR5LndyYXBwZXJzLlN0b3JtU3BvdXRXcmFwcGVyDQo+ID4gICAgICAgICAg YXQgamF2YS5uZXQuVVJMQ2xhc3NMb2FkZXIuZmluZENsYXNzKFVSTENsYXNzTG9hZGVyLmphdmE6 MzgxKQ0KPiA+ICAgICAgICAgIGF0IGphdmEubGFuZy5DbGFzc0xvYWRlci5sb2FkQ2xhc3MoQ2xh c3NMb2FkZXIuamF2YTo0MjQpDQo+ID4gICAgICAgICAgYXQgamF2YS5sYW5nLkNsYXNzTG9hZGVy LmxvYWRDbGFzcyhDbGFzc0xvYWRlci5qYXZhOjM1NykNCj4gPiAgICAgICAgICBhdCBqYXZhLmxh bmcuQ2xhc3MuZm9yTmFtZTAoTmF0aXZlIE1ldGhvZCkNCj4gPiAgICAgICAgICBhdCBqYXZhLmxh bmcuQ2xhc3MuZm9yTmFtZShDbGFzcy5qYXZhOjM0OCkNCj4gPiAgICAgICAgICBhdA0KPiBvcmcu YXBhY2hlLmZsaW5rLnV0aWwuSW5zdGFudGlhdGlvblV0aWwkQ2xhc3NMb2FkZXJPYmplY3RJbnB1 dFN0cmVhbS5yDQo+IGVzb2x2ZUNsYXNzKEluc3RhbnRpYXRpb25VdGlsLmphdmE6NzEpDQo+ID4g ICAgICAgICAgYXQNCj4gamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbS5yZWFkTm9uUHJveHlEZXNj KE9iamVjdElucHV0U3RyZWFtLmphdmE6MTYxMw0KPiApDQo+ID4gICAgICAgICAgYXQNCj4gamF2 YS5pby5PYmplY3RJbnB1dFN0cmVhbS5yZWFkQ2xhc3NEZXNjKE9iamVjdElucHV0U3RyZWFtLmph dmE6MTUxOCkNCj4gPiAgICAgICAgICBhdA0KPiBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtLnJl YWRPcmRpbmFyeU9iamVjdChPYmplY3RJbnB1dFN0cmVhbS5qYXZhOjE3DQo+IDc0KQ0KPiA+ICAg ICAgICAgIGF0DQo+IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0ucmVhZE9iamVjdDAoT2JqZWN0 SW5wdXRTdHJlYW0uamF2YToxMzUxKQ0KPiA+ICAgICAgICAgIGF0DQo+IGphdmEuaW8uT2JqZWN0 SW5wdXRTdHJlYW0uZGVmYXVsdFJlYWRGaWVsZHMoT2JqZWN0SW5wdXRTdHJlYW0uamF2YToxOTkN Cj4gMykNCj4gPiAgICAgICAgICBhdA0KPiBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtLnJlYWRT ZXJpYWxEYXRhKE9iamVjdElucHV0U3RyZWFtLmphdmE6MTkxOCkNCj4gPiAgICAgICAgICBhdA0K PiBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtLnJlYWRPcmRpbmFyeU9iamVjdChPYmplY3RJbnB1 dFN0cmVhbS5qYXZhOjE4DQo+IDAxKQ0KPiA+ICAgICAgICAgIGF0DQo+IGphdmEuaW8uT2JqZWN0 SW5wdXRTdHJlYW0ucmVhZE9iamVjdDAoT2JqZWN0SW5wdXRTdHJlYW0uamF2YToxMzUxKQ0KPiA+ ICAgICAgICAgIGF0DQo+IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0ucmVhZE9iamVjdChPYmpl Y3RJbnB1dFN0cmVhbS5qYXZhOjM3MSkNCj4gPiAgICAgICAgICBhdA0KPiBvcmcuYXBhY2hlLmZs aW5rLnV0aWwuSW5zdGFudGlhdGlvblV0aWwuZGVzZXJpYWxpemVPYmplY3QoSW5zdGFudGlhdGlv DQo+IG5VdGlsLmphdmE6MzAyKQ0KPiA+ICAgICAgICAgIGF0DQo+IG9yZy5hcGFjaGUuZmxpbmsu dXRpbC5JbnN0YW50aWF0aW9uVXRpbC5yZWFkT2JqZWN0RnJvbUNvbmZpZyhJbnN0YW50aWENCj4g dGlvblV0aWwuamF2YToyNjQpDQo+ID4gICAgICAgICAgYXQNCj4gb3JnLmFwYWNoZS5mbGluay5z dHJlYW1pbmcuYXBpLmdyYXBoLlN0cmVhbUNvbmZpZy5nZXRTdHJlYW1PcGVyYXRvcihTdA0KPiBy ZWFtQ29uZmlnLmphdmE6MTg1KQ0KPiA+ICAgICAgICAgIC4uLiAzIG1vcmUNCj4gPg0KPiA+DQo+ ID4gQW5kIHRoaXMgY2xhc3MoU3Rvcm1TcG91dFdyYXBwZXIpIHdhcyBleGlzdCBpbiBteSBwYWNr YWdlZCBqYXIgZmlsZS4NCj4gPiBBcyB5b3UgY2FuIHNlZSBwYXJ0IG9mIG15IHBvbS54bWw6DQo+ ID4NCj4gPiA8IS0tIFRocm91Z2hwdXQgLS0+DQo+ID4gICAgICAgICAgICAgICAgICAgICA8ZXhl Y3V0aW9uPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIDxpZD5UaHJvdWdocHV0PC9pZD4N Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICA8cGhhc2U+cGFja2FnZTwvcGhhc2U+DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8Z29hbD5qYXI8L2dvYWw+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgPC9n b2Fscz4NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4NCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsYXNzaWZpZXI+VGhyb3VnaHB1dDwvY2xhc3Np Zmllcj4NCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJjaGl2ZT4NCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYW5pZmVzdEVudHJpZXM+DQo+ID4N Cj4gIA0KPiA8cHJvZ3JhbS1jbGFzcz5vcmcuYXBhY2hlLmZsaW5rLnN0b3JtY29tcGF0aWJpbGl0 eS5leHBlcmltZW50cy5UaHJvdWdoDQo+IHB1dDwvcHJvZ3JhbS1jbGFzcz4NCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWFuaWZlc3RFbnRyaWVzPg0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2FyY2hpdmU+DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGluY2x1ZGVzPg0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPCEtLSBmcm9tIHN0b3JtLWNvcmUgLS0+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8aW5jbHVkZT5kZWZhdWx0cy55YW1sPC9pbmNsdWRlPg0KPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgDQo+ID4gPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vKi5jbGFz czwvaW5jbHVkZT4NCj4gPg0KPiAgPGluY2x1ZGU+YmFja3R5cGUvc3Rvcm0vc2VyaWFsaXphdGlv bi8qLmNsYXNzPC9pbmNsdWRlPg0KPiA+DQo+ICA8aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS90b3Bv bG9neS8qLmNsYXNzPC9pbmNsdWRlPg0KPiA+DQo+ICA8aW5jbHVkZT5iYWNrdHlwZS9zdG9ybS90 b3BvbG9neS9iYXNlLyouY2xhc3M8L2luY2x1ZGU+DQo+ID4NCj4gIDxpbmNsdWRlPmJhY2t0eXBl L3N0b3JtL3V0aWxzLyouY2xhc3M8L2luY2x1ZGU+DQo+ID4NCj4gIDxpbmNsdWRlPmJhY2t0eXBl L3N0b3JtL3Nwb3V0LyouY2xhc3M8L2luY2x1ZGU+DQo+ID4NCj4gIDxpbmNsdWRlPmJhY2t0eXBl L3N0b3JtL3Rhc2svKi5jbGFzczwvaW5jbHVkZT4NCj4gPg0KPiAgPGluY2x1ZGU+YmFja3R5cGUv c3Rvcm0vdHVwbGUvKi5jbGFzczwvaW5jbHVkZT4NCj4gPg0KPiAgPGluY2x1ZGU+YmFja3R5cGUv c3Rvcm0vZ2VuZXJhdGVkLyouY2xhc3M8L2luY2x1ZGU+DQo+ID4NCj4gIDxpbmNsdWRlPmJhY2t0 eXBlL3N0b3JtL21ldHJpYy8qKi8qLmNsYXNzPC9pbmNsdWRlPg0KPiA+DQo+ICA8aW5jbHVkZT5v cmcvYXBhY2hlL3N0b3JtL2N1cmF0b3IvKi5jbGFzczwvaW5jbHVkZT4NCj4gPg0KPiAgPGluY2x1 ZGU+b3JnL2FwYWNoZS90aHJpZnQ3LyoqLyouY2xhc3M8L2luY2x1ZGU+DQo+ID4NCj4gIDwhLS08 aW5jbHVkZT5vcmcveWFtbC9zbmFrZXlhbWwvY29uc3RydWN0b3IvKi5jbGFzczwvaW5jbHVkZT4t LT4NCj4gPg0KPiAgPGluY2x1ZGU+b3JnL3lhbWwvc25ha2V5YW1sLyoqLyouY2xhc3M8L2luY2x1 ZGU+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFN0b3JtJ3MgcmVj dXJzaXZlIGRlcGVuZGVuY2llcyANCj4gPiAtLT4NCj4gPg0KPiAgPGluY2x1ZGU+b3JnL2pzb24v c2ltcGxlLyoqLyouY2xhc3M8L2luY2x1ZGU+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8IS0tIGNvbXBhdGliaWxpdHkgbGF5ZXIgLS0+DQo+ID4NCj4gIDxpbmNsdWRlPm9y Zy9hcGFjaGUvZmxpbmsvc3Rvcm1jb21wYXRpYmlsaXR5L2FwaS8qLmNsYXNzPC9pbmNsdWRlPg0K PiA+DQo+ICANCj4gPGluY2x1ZGU+b3JnL2FwYWNoZS9mbGluay9zdG9ybWNvbXBhdGliaWxpdHkv d3JhcHBlcnMvKi5jbGFzczwvaW5jbHVkZQ0KPiA+DQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8IS0tIFdvcmQgQ291bnQgLS0+DQo+ID4NCj4gIA0KPiA8aW5jbHVkZT5vcmcv YXBhY2hlL2ZsaW5rL3N0b3JtY29tcGF0aWJpbGl0eS9leHBlcmltZW50cy9UaHJvdWdocHV0LmNs DQo+IGFzczwvaW5jbHVkZT4NCj4gPg0KPiAgDQo+IDxpbmNsdWRlPm9yZy9hcGFjaGUvZmxpbmsv c3Rvcm1jb21wYXRpYmlsaXR5L2V4cGVyaW1lbnRzL1Rocm91Z2hwdXQkKi4NCj4gY2xhc3M8L2lu Y2x1ZGU+DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZXM+DQo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPg0KPiA+ICAgICAgICAgICAg ICAgICAgICAgPC9leGVjdXRpb24+DQo+ID4NCj4gPiBTbyBob3cgY2FuIEkgZml4IGl0Pw0KPiA+ DQo+ID4NCj4gPiAyLg0KPiA+IFRoZXJlIGlzIGEgY2FzZSBmb2xsb3dpbmcgdXNpbmcgb3BlcmF0 b3Igam9pbjoNCj4gPg0KPiA+IERhdGFTdHJlYW08VHVwbGUzPFN0cmluZywgSW50ZWdlciwgTG9u Zz4+IHVzZXIgPSBlbnYuYWRkU291cmNlKG5ldw0KPiBzb3VyY2VVc2VyRnVuY3Rpb24oKSk7DQo+ ID4gRGF0YVN0cmVhbTxUdXBsZTI8U3RyaW5nLCBJbnRlZ2VyPj4gYXJlYSA9IGVudi5hZGRTb3Vy Y2UobmV3DQo+IHNvdXJjZUFyZWFGdW5jdGlvbigpKTsNCj4gPg0KPiA+IERhdGFTdHJlYW08VHVw bGUyPFN0cmluZywgSW50ZWdlcj4+IHNpbmsgPSB1c2VyDQo+ID4gICAgICAgLmpvaW4oYXJlYSkN Cj4gPiAgICAgICAub25XaW5kb3coMTUsIFRpbWVVbml0Lk1JTlVURVMpDQo+ID4gICAgICAgLndo ZXJlKDApDQo+ID4gICAgICAgLmVxdWFsVG8oMCkNCj4gPiAgICAgICAud2l0aChuZXcgSm9pbkZ1 bmN0aW9uPFR1cGxlMzxTdHJpbmcsIEludGVnZXIsIExvbmc+LA0KPiBUdXBsZTI8U3RyaW5nLCBJ bnRlZ2VyPiwgVHVwbGUyPFN0cmluZywgSW50ZWdlcj4+KCkgew0KPiA+ICAgICAgICAgIEBPdmVy cmlkZQ0KPiA+ICAgICAgICAgIHB1YmxpYyBUdXBsZTI8U3RyaW5nLCBJbnRlZ2VyPiBqb2luKFR1 cGxlMzxTdHJpbmcsIEludGVnZXIsDQo+IExvbmc+IGZpcnN0LCBUdXBsZTI8U3RyaW5nLCBJbnRl Z2VyPiBzZWNvbmQpIHRocm93cyBFeGNlcHRpb24gew0KPiA+ICAgICAgICAgICAgIGlmIChmaXJz dC5mMSArIHNlY29uZC5mMSA+IDEwKXsNCj4gPiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFR1 cGxlMjxTdHJpbmcsIEludGVnZXI+KGZpcnN0LmYwLCBmaXJzdC5mMSANCj4gPiArDQo+IHNlY29u ZC5mMSk7DQo+ID4gICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgIHJldHVybiBudWxsOw0K PiA+ICAgICAgICAgIH0NCj4gPiAgICAgICB9KTsNCj4gPg0KPiA+IEFzIHlvdSBzZWUsIEkgZG9u YHQgd2FudCB0byByZXR1cm4gbnVsbCB3aGVuIHRoZSBjb25kaXRpb24gaXMgbm90DQo+IHNhdGlz ZmllZC4NCj4gPiBCdXQgdGhlcmUgaXMgbm90IGFueSBKb2luRnVuY3Rpb24gd2l0aCBDb2xsZWN0 b3IuDQo+ID4gSSBmb3VuZCBhIEZsYXRKb2luRnVuY3Rpb24gd2hpY2ggYWxsb3dzIHRoZSBDb2xs ZWN0b3IuDQo+ID4gSG93ZXZlciwgdGhlIEZsYXRKb2luRnVuY3Rpb24gc2VlbSBvbmx5IGNhbiBi ZSB1c2VkIGluIERhdGFTZXQgDQo+ID4gaW5zdGVhZA0KPiBEYXRhU3RyZWFtLg0KPiA+IElzIHRo ZXJlIGFueSBvdGhlciB3YXkgdG8gaW1wcm92ZSB0aGlzIGNhc2U/DQo+ID4NCj4gPiBQUy4gSWBt IHNvcnJ5IGFib3V0IHRoaXMgZW1haWwuIFlvdSBtYXkgaWdub3JlIG1lIGR1cmluZyB0aGUgd2Vl a2VuZC4NCj4gPg0KPiA+IEdyZWV0aW5ncywNCj4gPiBIdWFuZyBXZWkNCj4gPiDljY7kuLrmioDm nK/mnInpmZDlhazlj7ggSHVhd2VpIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4NCj4gPg0KPiA+DQo+ ID4gVGVsOis4NiAxODEwNjUxMjYwMg0KPiA+IEVtYWlsOmh1YW5nd2VpMTExQGh1YXdlaS5jb20N Cj4gPg0KPg0KPg0K