From owner-rancid-discuss@shrubbery.net Mon Jun 3 17:52:50 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g53HqoL12110 for ; Mon, 3 Jun 2002 17:52:50 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g53Hlte06729 for rancid-discuss-outgoing; Mon, 3 Jun 2002 17:47:55 GMT Received: (from heas@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g53HlqZ06723 for rancid-discuss@shrubbery.net; Mon, 3 Jun 2002 17:47:52 GMT Received: from budapest.dante.org.uk (budapest.dante.org.uk [193.63.211.72]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g53HiTT06669; Mon, 3 Jun 2002 17:44:29 GMT Received: from budapest.dante.org.uk (localhost [127.0.0.1]) by budapest.dante.org.uk (8.12.3/8.12.3) with ESMTP id g53HiLLt052200; Mon, 3 Jun 2002 18:44:21 +0100 (BST) (envelope-from janos@budapest.dante.org.uk) Received: from localhost (janos@localhost) by budapest.dante.org.uk (8.12.3/8.12.3/Submit) with ESMTP id g53HiKOB052197; Mon, 3 Jun 2002 18:44:21 +0100 (BST) Date: Mon, 3 Jun 2002 18:44:20 +0100 (BST) From: Janos Mohacsi To: rancid@shrubbery.net cc: rancid-discuss@shrubbery.net Subject: modified Cisco addition patch for Rancid Message-ID: <20020603181410.I45383-200000@budapest.dante.org.uk> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1310549230-1023126260=:45383" Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1310549230-1023126260=:45383 Content-Type: TEXT/PLAIN; charset=US-ASCII Dear All, I have created modified Cisco handler. It was annoying that to be able to see the configuration you should have the enable password. In the rancid the 'write term' command to display the currently running configuration on the terminal and then store in the database. We are using a 'hack' to remove this limitation: 1. The logged in user, that is collecting the configuration is runnuing on privilege level 2 e.g. : username privilege 2 password 2. We allow these users to execute show configuration: privilege exec level 2 show configuration This way we don't need the enable password. To support this changes I invented a new type of rancid command: 'mcrancid' and a corresponding config entry 'mcisco'. The patch is available in the attachment. I don't know in detail how the gnu automake was used, so some changes might happened. Feel free to comment and integrate to the next version of rancid. Best Regards, Janos Mohacsi --0-1310549230-1023126260=:45383 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="rancid_1.diff" Content-Transfer-Encoding: BASE64 Content-ID: <20020603184420.J45383@budapest.dante.org.uk> Content-Description: Content-Disposition: attachment; filename="rancid_1.diff" ZGlmZiAtcmNOIHJhbmNpZC0yLjIuMS5vcmlnL2Jpbi9NYWtlZmlsZS5pbiBy YW5jaWQtMi4yLjEvYmluL01ha2VmaWxlLmluDQoqKiogcmFuY2lkLTIuMi4x Lm9yaWcvYmluL01ha2VmaWxlLmluCUZyaSBNYXkgIDMgMDA6MDg6MDUgMjAw Mg0KLS0tIHJhbmNpZC0yLjIuMS9iaW4vTWFrZWZpbGUuaW4JTW9uIEp1biAg MyAxODozMjoyMiAyMDAyDQoqKioqKioqKioqKioqKioNCioqKiAxMjMsMTMw ICoqKioNCiAgQ09ORklHX0hFQURFUiA9IC4uL2luY2x1ZGUvY29uZmlnLmgN CiAgQ09ORklHX0NMRUFOX0ZJTEVTID0gIGFsb2dpbiBhcmFuY2lkIGJsb2dp biBicmFuY2lkIGNhdDVyYW5jaWQgY2xvZ2luIFwNCiAgY29udHJvbF9yYW5j aWQgY3JlYXRlX2N2cyBkby1kaWZmcyBlbG9naW4gZW52IGVyYW5jaWQgZjEw cmFuY2lkIGZsb2dpbiBcDQohIGZyYW5jaWQgamxvZ2luIGpyYW5jaWQgaGxv Z2luIGhyYW5jaWQgbXJhbmNpZCBwYXIgcmFuY2lkLWZlIHJhbmNpZCBcDQoh IHJlbmFtZSBycmFuY2lkIHhyYW5jaWQNCiAgUFJPR1JBTVMgPSAgJChiaW5f UFJPR1JBTVMpDQogIA0KICANCi0tLSAxMjMsMTMwIC0tLS0NCiAgQ09ORklH X0hFQURFUiA9IC4uL2luY2x1ZGUvY29uZmlnLmgNCiAgQ09ORklHX0NMRUFO X0ZJTEVTID0gIGFsb2dpbiBhcmFuY2lkIGJsb2dpbiBicmFuY2lkIGNhdDVy YW5jaWQgY2xvZ2luIFwNCiAgY29udHJvbF9yYW5jaWQgY3JlYXRlX2N2cyBk by1kaWZmcyBlbG9naW4gZW52IGVyYW5jaWQgZjEwcmFuY2lkIGZsb2dpbiBc DQohIGZyYW5jaWQgamxvZ2luIGpyYW5jaWQgaGxvZ2luIGhyYW5jaWQgbXJh bmNpZCBtY3JhbmNpZCBwYXIgcmFuY2lkLWZlIFwNCiEgcmFuY2lkIHJlbmFt ZSBycmFuY2lkIHhyYW5jaWQNCiAgUFJPR1JBTVMgPSAgJChiaW5fUFJPR1JB TVMpDQogIA0KICANCioqKioqKioqKioqKioqKg0KKioqIDE0MiwxNTQgKioq Kg0KICBESVNUX0NPTU1PTiA9ICBNYWtlZmlsZS5hbSBNYWtlZmlsZS5pbiBh bG9naW4uaW4gYXJhbmNpZC5pbiBibG9naW4uaW4gXA0KICBicmFuY2lkLmlu IGNhdDVyYW5jaWQuaW4gY2xvZ2luLmluIGNvbnRyb2xfcmFuY2lkLmluIGNy ZWF0ZV9jdnMuaW4gXA0KICBkby1kaWZmcy5pbiBlbG9naW4uaW4gZW52Lmlu IGVyYW5jaWQuaW4gZjEwcmFuY2lkLmluIGZsb2dpbi5pbiBcDQohIGZyYW5j aWQuaW4gaGxvZ2luLmluIGhyYW5jaWQuaW4gamxvZ2luLmluIGpyYW5jaWQu aW4gbXJhbmNpZC5pbiBwYXIuaW4gXA0KISByYW5jaWQtZmUuaW4gcmFuY2lk LmluIHJlbmFtZS5pbiBycmFuY2lkLmluIHhyYW5jaWQuaW4NCiAgDQogIA0K ICBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKFNPVVJDRVMpICQoSEVB REVSUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQ0KICANCiAgR1pJUF9F TlYgPSAtLWJlc3QNCiAgU09VUkNFUyA9ICQoaHBmaWx0ZXJfU09VUkNFUykN CiAgT0JKRUNUUyA9ICQoaHBmaWx0ZXJfT0JKRUNUUykNCiAgDQotLS0gMTQy LDE1NiAtLS0tDQogIERJU1RfQ09NTU9OID0gIE1ha2VmaWxlLmFtIE1ha2Vm aWxlLmluIGFsb2dpbi5pbiBhcmFuY2lkLmluIGJsb2dpbi5pbiBcDQogIGJy YW5jaWQuaW4gY2F0NXJhbmNpZC5pbiBjbG9naW4uaW4gY29udHJvbF9yYW5j aWQuaW4gY3JlYXRlX2N2cy5pbiBcDQogIGRvLWRpZmZzLmluIGVsb2dpbi5p biBlbnYuaW4gZXJhbmNpZC5pbiBmMTByYW5jaWQuaW4gZmxvZ2luLmluIFwN CiEgZnJhbmNpZC5pbiBobG9naW4uaW4gaHJhbmNpZC5pbiBqbG9naW4uaW4g anJhbmNpZC5pbiBtY3JhbmNpZC5pbiBcDQohIG1yYW5jaWQuaW4gcGFyLmlu IHJhbmNpZC1mZS5pbiByYW5jaWQuaW4gcmVuYW1lLmluIHJyYW5jaWQuaW4g XA0KISB4cmFuY2lkLmluDQogIA0KICANCiAgRElTVEZJTEVTID0gJChESVNU X0NPTU1PTikgJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoVEVYSU5GT1MpICQo RVhUUkFfRElTVCkNCiAgDQogIEdaSVBfRU5WID0gLS1iZXN0DQorIERFUF9G SUxFUyA9ICAuZGVwcy9ocGZpbHRlci5QDQogIFNPVVJDRVMgPSAkKGhwZmls dGVyX1NPVVJDRVMpDQogIE9CSkVDVFMgPSAkKGhwZmlsdGVyX09CSkVDVFMp DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMTU2LDE2NCAqKioqDQogIC5T VUZGSVhFUzoNCiAgLlNVRkZJWEVTOiAuUyAuYyAubyAucw0KICAkKHNyY2Rp cikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgTWFrZWZp bGUuYW0gJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuaW4gJChBQ0xPQ0FMX000 KSANCiEgCWNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1mb3Jl aWduIC0taW5jbHVkZS1kZXBzIGJpbi9NYWtlZmlsZQ0KICANCiEgTWFrZWZp bGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAgJCh0b3BfYnVpbGRkaXIpL2Nv bmZpZy5zdGF0dXMNCiAgCWNkICQodG9wX2J1aWxkZGlyKSBcDQogIAkgICYm IENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQo U0hFTEwpIC4vY29uZmlnLnN0YXR1cw0KICANCi0tLSAxNTgsMTY2IC0tLS0N CiAgLlNVRkZJWEVTOg0KICAuU1VGRklYRVM6IC5TIC5jIC5vIC5zDQogICQo c3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCBN YWtlZmlsZS5hbSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5pbiAkKEFDTE9D QUxfTTQpIA0KISAJY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAt LWZvcmVpZ24gYmluL01ha2VmaWxlDQogIA0KISBNYWtlZmlsZTogJChzcmNk aXIpL01ha2VmaWxlLmluICAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1 cyAkKEJVSUxUX1NPVVJDRVMpDQogIAljZCAkKHRvcF9idWlsZGRpcikgXA0K ICAJICAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFE RVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMNCiAgDQoqKioqKioqKioq KioqKioNCioqKiAyMDIsMjA3ICoqKioNCi0tLSAyMDQsMjExIC0tLS0NCiAg CWNkICQodG9wX2J1aWxkZGlyKSAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIp LyRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMN CiAgbXJhbmNpZDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgbXJh bmNpZC5pbg0KICAJY2QgJCh0b3BfYnVpbGRkaXIpICYmIENPTkZJR19GSUxF Uz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29u ZmlnLnN0YXR1cw0KKyBtY3JhbmNpZDogJCh0b3BfYnVpbGRkaXIpL2NvbmZp Zy5zdGF0dXMgbWNyYW5jaWQuaW4NCisgCWNkICQodG9wX2J1aWxkZGlyKSAm JiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSAk KFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMNCiAgcGFyOiAkKHRvcF9idWlsZGRp cikvY29uZmlnLnN0YXR1cyBwYXIuaW4NCiAgCWNkICQodG9wX2J1aWxkZGly KSAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJT PSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMNCiAgcmFuY2lkLWZlOiAkKHRv cF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyByYW5jaWQtZmUuaW4NCioqKioq KioqKioqKioqKg0KKioqIDI0MCwyNDggKioqKg0KICAJICBybSAtZiAkKERF U1RESVIpJChiaW5kaXIpL2BlY2hvICQkcHxzZWQgJ3MvJChFWEVFWFQpJCQv Lyd8c2VkICckKHRyYW5zZm9ybSknfHNlZCAncy8kJC8kKEVYRUVYVCkvJ2A7 IFwNCiAgCWRvbmUNCiAgDQotIC5jLm86DQotIAkkKENPTVBJTEUpIC1jICQ8 DQotIA0KICAucy5vOg0KICAJJChDT01QSUxFKSAtYyAkPA0KICANCi0tLSAy NDQsMjQ5IC0tLS0NCioqKioqKioqKioqKioqKg0KKioqIDI4OSwyOTQgKioq Kg0KLS0tIDI5MCwzMDAgLS0tLQ0KICBzdWJkaXIgPSBiaW4NCiAgDQogIGRp c3RkaXI6ICQoRElTVEZJTEVTKQ0KKyAJaGVyZT1gY2QgJCh0b3BfYnVpbGRk aXIpICYmIHB3ZGA7IFwNCisgCXRvcF9kaXN0ZGlyPWBjZCAkKHRvcF9kaXN0 ZGlyKSAmJiBwd2RgOyBcDQorIAlkaXN0ZGlyPWBjZCAkKGRpc3RkaXIpICYm IHB3ZGA7IFwNCisgCWNkICQodG9wX3NyY2RpcikgXA0KKyAJICAmJiAkKEFV VE9NQUtFKSAtLWluY2x1ZGUtZGVwcyAtLWJ1aWxkLWRpcj0kJGhlcmUgLS1z cmNkaXItbmFtZT0kKHRvcF9zcmNkaXIpIC0tb3V0cHV0LWRpcj0kJHRvcF9k aXN0ZGlyIC0tZm9yZWlnbiBiaW4vTWFrZWZpbGUNCiAgCUBmb3IgZmlsZSBp biAkKERJU1RGSUxFUyk7IGRvIFwNCiAgCSAgZD0kKHNyY2Rpcik7IFwNCiAg CSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwNCioqKioqKioqKioq KioqKg0KKioqIDI5OSwzMDYgKioqKg0KICAJICAgIHx8IGNwIC1wICQkZC8k JGZpbGUgJChkaXN0ZGlyKS8kJGZpbGUgfHwgOjsgXA0KICAJICBmaTsgXA0K ICAJZG9uZQ0KLSBocGZpbHRlci5vOiBocGZpbHRlci5jIC4uL2luY2x1ZGUv Y29uZmlnLmggLi4vaW5jbHVkZS92ZXJzaW9uLmgNCiAgDQogIGluZm8tYW06 DQogIGluZm86IGluZm8tYW0NCiAgZHZpLWFtOg0KLS0tIDMwNSwzNDIgLS0t LQ0KICAJICAgIHx8IGNwIC1wICQkZC8kJGZpbGUgJChkaXN0ZGlyKS8kJGZp bGUgfHwgOjsgXA0KICAJICBmaTsgXA0KICAJZG9uZQ0KICANCisgREVQU19N QUdJQyA6PSAkKHNoZWxsIG1rZGlyIC5kZXBzID4gL2Rldi9udWxsIDI+JjEg fHwgOikNCisgDQorIC1pbmNsdWRlICQoREVQX0ZJTEVTKQ0KKyANCisgbW9z dGx5Y2xlYW4tZGVwZW5kOg0KKyANCisgY2xlYW4tZGVwZW5kOg0KKyANCisg ZGlzdGNsZWFuLWRlcGVuZDoNCisgCS1ybSAtcmYgLmRlcHMNCisgDQorIG1h aW50YWluZXItY2xlYW4tZGVwZW5kOg0KKyANCisgJS5vOiAlLmMNCisgCUBl Y2hvICckKENPTVBJTEUpIC1jICQ8JzsgXA0KKyAJJChDT01QSUxFKSAtV3As LU1ELC5kZXBzLyQoKkYpLnBwIC1jICQ8DQorIAlALWNwIC5kZXBzLyQoKkYp LnBwIC5kZXBzLyQoKkYpLlA7IFwNCisgCXRyICcgJyAnXDAxMicgPCAuZGVw cy8kKCpGKS5wcCBcDQorIAkgIHwgc2VkIC1lICdzL15cXCQkLy8nIC1lICcv XiQkLyBkJyAtZSAnLzokJC8gZCcgLWUgJ3MvJCQvIDovJyBcDQorIAkgICAg Pj4gLmRlcHMvJCgqRikuUDsgXA0KKyAJcm0gLmRlcHMvJCgqRikucHANCisg DQorICUubG86ICUuYw0KKyAJQGVjaG8gJyQoTFRDT01QSUxFKSAtYyAkPCc7 IFwNCisgCSQoTFRDT01QSUxFKSAtV3AsLU1ELC5kZXBzLyQoKkYpLnBwIC1j ICQ8DQorIAlALXNlZCAtZSAncy9eXChbXjpdKlwpXC5vWyAJXSo6L1wxLmxv IFwxLm8gOi8nIFwNCisgCSAgPCAuZGVwcy8kKCpGKS5wcCA+IC5kZXBzLyQo KkYpLlA7IFwNCisgCXRyICcgJyAnXDAxMicgPCAuZGVwcy8kKCpGKS5wcCBc DQorIAkgIHwgc2VkIC1lICdzL15cXCQkLy8nIC1lICcvXiQkLyBkJyAtZSAn LzokJC8gZCcgLWUgJ3MvJCQvIDovJyBcDQorIAkgICAgPj4gLmRlcHMvJCgq RikuUDsgXA0KKyAJcm0gLWYgLmRlcHMvJCgqRikucHANCiAgaW5mby1hbToN CiAgaW5mbzogaW5mby1hbQ0KICBkdmktYW06DQoqKioqKioqKioqKioqKioN CioqKiAzMzgsMzYwICoqKioNCiAgDQogIG1haW50YWluZXItY2xlYW4tZ2Vu ZXJpYzoNCiAgbW9zdGx5Y2xlYW4tYW06ICBtb3N0bHljbGVhbi1iaW5QUk9H UkFNUyBtb3N0bHljbGVhbi1jb21waWxlIFwNCiEgCQltb3N0bHljbGVhbi10 YWdzIG1vc3RseWNsZWFuLWdlbmVyaWMNCiAgDQogIG1vc3RseWNsZWFuOiBt b3N0bHljbGVhbi1hbQ0KICANCiEgY2xlYW4tYW06ICBjbGVhbi1iaW5QUk9H UkFNUyBjbGVhbi1jb21waWxlIGNsZWFuLXRhZ3MgY2xlYW4tZ2VuZXJpYyBc DQohIAkJbW9zdGx5Y2xlYW4tYW0NCiAgDQogIGNsZWFuOiBjbGVhbi1hbQ0K ICANCiAgZGlzdGNsZWFuLWFtOiAgZGlzdGNsZWFuLWJpblBST0dSQU1TIGRp c3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi10YWdzIFwNCiEgCQlkaXN0Y2xl YW4tZ2VuZXJpYyBjbGVhbi1hbQ0KICANCiAgZGlzdGNsZWFuOiBkaXN0Y2xl YW4tYW0NCiAgDQogIG1haW50YWluZXItY2xlYW4tYW06ICBtYWludGFpbmVy LWNsZWFuLWJpblBST0dSQU1TIFwNCiAgCQltYWludGFpbmVyLWNsZWFuLWNv bXBpbGUgbWFpbnRhaW5lci1jbGVhbi10YWdzIFwNCiEgCQltYWludGFpbmVy LWNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWFtDQogIAlAZWNobyAiVGhpcyBj b21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7Ig0K ICAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBz cGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIg0KICANCi0tLSAzNzQsMzk3IC0t LS0NCiAgDQogIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYzoNCiAgbW9zdGx5 Y2xlYW4tYW06ICBtb3N0bHljbGVhbi1iaW5QUk9HUkFNUyBtb3N0bHljbGVh bi1jb21waWxlIFwNCiEgCQltb3N0bHljbGVhbi10YWdzIG1vc3RseWNsZWFu LWRlcGVuZCBtb3N0bHljbGVhbi1nZW5lcmljDQogIA0KICBtb3N0bHljbGVh bjogbW9zdGx5Y2xlYW4tYW0NCiAgDQohIGNsZWFuLWFtOiAgY2xlYW4tYmlu UFJPR1JBTVMgY2xlYW4tY29tcGlsZSBjbGVhbi10YWdzIGNsZWFuLWRlcGVu ZCBcDQohIAkJY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1hbQ0KICANCiAg Y2xlYW46IGNsZWFuLWFtDQogIA0KICBkaXN0Y2xlYW4tYW06ICBkaXN0Y2xl YW4tYmluUFJPR1JBTVMgZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLXRh Z3MgXA0KISAJCWRpc3RjbGVhbi1kZXBlbmQgZGlzdGNsZWFuLWdlbmVyaWMg Y2xlYW4tYW0NCiAgDQogIGRpc3RjbGVhbjogZGlzdGNsZWFuLWFtDQogIA0K ICBtYWludGFpbmVyLWNsZWFuLWFtOiAgbWFpbnRhaW5lci1jbGVhbi1iaW5Q Uk9HUkFNUyBcDQogIAkJbWFpbnRhaW5lci1jbGVhbi1jb21waWxlIG1haW50 YWluZXItY2xlYW4tdGFncyBcDQohIAkJbWFpbnRhaW5lci1jbGVhbi1kZXBl bmQgbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwNCiEgCQlkaXN0Y2xlYW4t YW0NCiAgCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1h aW50YWluZXJzIHRvIHVzZTsiDQogIAlAZWNobyAiaXQgZGVsZXRlcyBmaWxl cyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4i DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMzY0LDM3NSAqKioqDQogIG1h aW50YWluZXItY2xlYW4tYmluUFJPR1JBTVMgdW5pbnN0YWxsLWJpblBST0dS QU1TIGluc3RhbGwtYmluUFJPR1JBTVMgXA0KICBtb3N0bHljbGVhbi1jb21w aWxlIGRpc3RjbGVhbi1jb21waWxlIGNsZWFuLWNvbXBpbGUgXA0KICBtYWlu dGFpbmVyLWNsZWFuLWNvbXBpbGUgdGFncyBtb3N0bHljbGVhbi10YWdzIGRp c3RjbGVhbi10YWdzIFwNCiEgY2xlYW4tdGFncyBtYWludGFpbmVyLWNsZWFu LXRhZ3MgZGlzdGRpciBpbmZvLWFtIGluZm8gZHZpLWFtIGR2aSBjaGVjayBc DQohIGNoZWNrLWFtIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsY2hlY2sgaW5z dGFsbC1leGVjLWFtIGluc3RhbGwtZXhlYyBcDQohIGluc3RhbGwtZGF0YS1h bSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1hbSBpbnN0YWxsIHVuaW5zdGFsbC1h bSB1bmluc3RhbGwgXA0KISBhbGwtcmVkaXJlY3QgYWxsLWFtIGFsbCBpbnN0 YWxsZGlycyBtb3N0bHljbGVhbi1nZW5lcmljIFwNCiEgZGlzdGNsZWFuLWdl bmVyaWMgY2xlYW4tZ2VuZXJpYyBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMg Y2xlYW4gXA0KISBtb3N0bHljbGVhbiBkaXN0Y2xlYW4gbWFpbnRhaW5lci1j bGVhbg0KICANCiAgDQogIGluc3RhbGw6IGFsbA0KLS0tIDQwMSw0MTMgLS0t LQ0KICBtYWludGFpbmVyLWNsZWFuLWJpblBST0dSQU1TIHVuaW5zdGFsbC1i aW5QUk9HUkFNUyBpbnN0YWxsLWJpblBST0dSQU1TIFwNCiAgbW9zdGx5Y2xl YW4tY29tcGlsZSBkaXN0Y2xlYW4tY29tcGlsZSBjbGVhbi1jb21waWxlIFwN CiAgbWFpbnRhaW5lci1jbGVhbi1jb21waWxlIHRhZ3MgbW9zdGx5Y2xlYW4t dGFncyBkaXN0Y2xlYW4tdGFncyBcDQohIGNsZWFuLXRhZ3MgbWFpbnRhaW5l ci1jbGVhbi10YWdzIGRpc3RkaXIgbW9zdGx5Y2xlYW4tZGVwZW5kIFwNCiEg ZGlzdGNsZWFuLWRlcGVuZCBjbGVhbi1kZXBlbmQgbWFpbnRhaW5lci1jbGVh bi1kZXBlbmQgaW5mby1hbSBpbmZvIFwNCiEgZHZpLWFtIGR2aSBjaGVjayBj aGVjay1hbSBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGNoZWNrIGluc3RhbGwt ZXhlYy1hbSBcDQohIGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEtYW0gaW5z dGFsbC1kYXRhIGluc3RhbGwtYW0gaW5zdGFsbCBcDQohIHVuaW5zdGFsbC1h bSB1bmluc3RhbGwgYWxsLXJlZGlyZWN0IGFsbC1hbSBhbGwgaW5zdGFsbGRp cnMgXA0KISBtb3N0bHljbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1nZW5lcmlj IGNsZWFuLWdlbmVyaWMgXA0KISBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMg Y2xlYW4gbW9zdGx5Y2xlYW4gZGlzdGNsZWFuIG1haW50YWluZXItY2xlYW4N CiAgDQogIA0KICBpbnN0YWxsOiBhbGwNCmRpZmYgLXJjTiByYW5jaWQtMi4y LjEub3JpZy9iaW4vbWNyYW5jaWQuaW4gcmFuY2lkLTIuMi4xL2Jpbi9tY3Jh bmNpZC5pbg0KKioqIHJhbmNpZC0yLjIuMS5vcmlnL2Jpbi9tY3JhbmNpZC5p bglUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCi0tLSByYW5jaWQtMi4yLjEv YmluL21jcmFuY2lkLmluCU1vbiBKdW4gIDMgMTc6NDQ6MTUgMjAwMg0KKioq KioqKioqKioqKioqDQoqKiogMCAqKioqDQotLS0gMSwxMjUxIC0tLS0NCisg IyFAUEVSTFZfUEFUSEANCisgIyMNCisgIyMNCisgIyMgQ29weXJpZ2h0IChD KSAxOTk3LTIwMDEgYnkgSGVucnkgS2lsbWVyLg0KKyAjIyBBbGwgcmlnaHRz IHJlc2VydmVkLg0KKyAjIw0KKyAjIyBUaGlzIHNvZnR3YXJlIG1heSBiZSBm cmVlbHkgY29waWVkLCBtb2RpZmllZCBhbmQgcmVkaXN0cmlidXRlZCB3aXRo b3V0DQorICMjIGZlZSBmb3Igbm9uLWNvbW1lcmljYWwgcHVycG9zZXMgcHJv dmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodCBub3RpY2UgaXMNCisgIyMgcHJl c2VydmVkIGludGFjdCBvbiBhbGwgY29waWVzIGFuZCBtb2RpZmllZCBjb3Bp ZXMuDQorICMjDQorICMjIFRoZXJlIGlzIG5vIHdhcnJhbnR5IG9yIG90aGVy IGd1YXJhbnRlZSBvZiBmaXRuZXNzIG9mIHRoaXMgc29mdHdhcmUuDQorICMj IEl0IGlzIHByb3ZpZGVkIHNvbGVseSAiYXMgaXMiLiBUaGUgYXV0aG9yKHMp IGRpc2NsYWltKHMpIGFsbA0KKyAjIyByZXNwb25zaWJpbGl0eSBhbmQgbGlh YmlsaXR5IHdpdGggcmVzcGVjdCB0byB0aGlzIHNvZnR3YXJlJ3MgdXNhZ2UN CisgIyMgb3IgaXRzIGVmZmVjdCB1cG9uIGhhcmR3YXJlLCBjb21wdXRlciBz eXN0ZW1zLCBvdGhlciBzb2Z0d2FyZSwgb3INCisgIyMgYW55dGhpbmcgZWxz ZS4NCisgIyMNCisgIyMNCisgIw0KKyAjICBSQU5DSUQgLSBSZWFsbHkgQXdl c29tZSBOZXcgQ2lzY28gY29uZklnIERpZmZlcg0KKyAjDQorICMgdXNhZ2U6 IHJhbmNpZCBbLWRdIFstbF0gWy1mIGZpbGVuYW1lIHwgJGhvc3RdDQorICMN CisgdXNlIEdldG9wdDo6U3RkOw0KKyBnZXRvcHRzKCdkZmxtJyk7DQorICRs b2cgPSAkb3B0X2w7DQorICRkZWJ1ZyA9ICRvcHRfZDsNCisgJGZpbGUgPSAk b3B0X2Y7DQorICRob3N0ID0gJEFSR1ZbMF07DQorICRjbGVhbl9ydW4gPSAw Ow0KKyAkZm91bmRfZW5kID0gMDsNCisgJHRpbWVvID0gOTA7CQkJIyBjbG9n aW4gdGltZW91dCBpbiBzZWNvbmRzDQorIA0KKyBteSglZmlsdGVyX3B3ZHMp OwkJIyBwYXNzd29yZCBmaWx0ZXJpbmcgbW9kZQ0KKyANCisgIyBUaGlzIHJv dXRpbmUgaXMgdXNlZCB0byBwcmludCBvdXQgdGhlIHJvdXRlciBjb25maWd1 cmF0aW9uDQorIHN1YiBQcm9jZXNzSGlzdG9yeSB7DQorICAgICBteSgkbmV3 X2hpc3RfdGFnLCRuZXdfY29tbWFuZCwkY29tbWFuZF9zdHJpbmcsQHN0cmlu Zyk9KEBfKTsNCisgICAgIGlmKCgoJG5ld19oaXN0X3RhZyBuZSAkaGlzdF90 YWcpIHx8ICgkbmV3X2NvbW1hbmQgbmUgJGNvbW1hbmQpKQ0KKyAgICAgICAg JiYgZGVmaW5lZCAlaGlzdG9yeSkgew0KKyAJcHJpbnQgZXZhbCAiJGNvbW1h bmQgXCVoaXN0b3J5IjsNCisgCXVuZGVmICVoaXN0b3J5Ow0KKyAgICAgfQ0K KyAgICAgaWYgKCgkbmV3X2hpc3RfdGFnKSAmJiAoJG5ld19jb21tYW5kKSAm JiAoJGNvbW1hbmRfc3RyaW5nKSkgew0KKyAJaWYgKCRoaXN0b3J5eyRjb21t YW5kX3N0cmluZ30pIHsNCisgCSAgICAkaGlzdG9yeXskY29tbWFuZF9zdHJp bmd9ID0gIiRoaXN0b3J5eyRjb21tYW5kX3N0cmluZ31Ac3RyaW5nIjsNCisg CX0gZWxzZSB7DQorIAkgICAgJGhpc3Rvcnl7JGNvbW1hbmRfc3RyaW5nfSA9 ICJAc3RyaW5nIjsNCisgCX0NCisgICAgIH0gZWxzaWYgKCgkbmV3X2hpc3Rf dGFnKSAmJiAoJG5ld19jb21tYW5kKSkgew0KKyAJJGhpc3Rvcnl7KyskI2hp c3Rvcnl9ID0gIkBzdHJpbmciOw0KKyAgICAgfSBlbHNlIHsNCisgCXByaW50 ICJAc3RyaW5nIjsNCisgICAgIH0NCisgICAgICRoaXN0X3RhZyA9ICRuZXdf aGlzdF90YWc7DQorICAgICAkY29tbWFuZCA9ICRuZXdfY29tbWFuZDsNCisg ICAgIDE7DQorIH0NCisgDQorIHN1YiBudW1lcmljYWxseSB7ICRhIDw9PiAk YjsgfQ0KKyANCisgIyBUaGlzIGlzIGEgc29ydCByb3V0aW5nIHRoYXQgd2ls bCBzb3J0IG51bWVyaWNhbGx5IG9uIHRoZQ0KKyAjIGtleXMgb2YgYSBoYXNo IGFzIGlmIGl0IHdlcmUgYSBub3JtYWwgYXJyYXkuDQorIHN1YiBrZXluc29y dCB7DQorICAgICBsb2NhbCglbGluZXMpPUBfOw0KKyAgICAgbG9jYWwoJGkp ID0gMDsNCisgICAgIGxvY2FsKEBzb3J0ZWRfbGluZXMpOw0KKyAgICAgZm9y ZWFjaCAka2V5IChzb3J0IG51bWVyaWNhbGx5IGtleXMoJWxpbmVzKSkgew0K KyAJJHNvcnRlZF9saW5lc1skaV0gPSAkbGluZXN7JGtleX07DQorIAkkaSsr Ow0KKyAgICAgfQ0KKyAgICAgQHNvcnRlZF9saW5lczsNCisgfQ0KKyANCisg IyBUaGlzIGlzIGEgc29ydCByb3V0aW5nIHRoYXQgd2lsbCBzb3J0IG9uIHRo ZQ0KKyAjIGtleXMgb2YgYSBoYXNoIGFzIGlmIGl0IHdlcmUgYSBub3JtYWwg YXJyYXkuDQorIHN1YiBrZXlzb3J0IHsNCisgICAgIGxvY2FsKCVsaW5lcyk9 QF87DQorICAgICBsb2NhbCgkaSkgPSAwOw0KKyAgICAgbG9jYWwoQHNvcnRl ZF9saW5lcyk7DQorICAgICBmb3JlYWNoICRrZXkgKHNvcnQga2V5cyglbGlu ZXMpKSB7DQorIAkkc29ydGVkX2xpbmVzWyRpXSA9ICRsaW5lc3ska2V5fTsN CisgCSRpKys7DQorICAgICB9DQorICAgICBAc29ydGVkX2xpbmVzOw0KKyB9 DQorIA0KKyAjIFRoaXMgaXMgYSBzb3J0IHJvdXRpbmcgdGhhdCB3aWxsIHNv cnQgb24gdGhlDQorICMgdmFsdWVzIG9mIGEgaGFzaCBhcyBpZiBpdCB3ZXJl IGEgbm9ybWFsIGFycmF5Lg0KKyBzdWIgdmFsc29ydHsNCisgICAgIGxvY2Fs KCVsaW5lcyk9QF87DQorICAgICBsb2NhbCgkaSkgPSAwOw0KKyAgICAgbG9j YWwoQHNvcnRlZF9saW5lcyk7DQorICAgICBmb3JlYWNoICRrZXkgKHNvcnQg dmFsdWVzICVsaW5lcykgew0KKyAJJHNvcnRlZF9saW5lc1skaV0gPSAka2V5 Ow0KKyAJJGkrKzsNCisgICAgIH0NCisgICAgIEBzb3J0ZWRfbGluZXM7DQor IH0NCisgDQorICMgVGhpcyBpcyBhIG51bWVyaWNhbCBzb3J0IHJvdXRpbmcg KGFzY2VuZGluZykuDQorIHN1YiBudW1zb3J0IHsNCisgICAgIGxvY2FsKCVs aW5lcyk9QF87DQorICAgICBsb2NhbCgkaSkgPSAwOw0KKyAgICAgbG9jYWwo QHNvcnRlZF9saW5lcyk7DQorICAgICBmb3JlYWNoICRudW0gKHNvcnQgeyRh IDw9PiAkYn0ga2V5cyAlbGluZXMpIHsNCisgCSRzb3J0ZWRfbGluZXNbJGld ID0gJGxpbmVzeyRudW19Ow0KKyAJJGkrKzsNCisgICAgIH0NCisgICAgIEBz b3J0ZWRfbGluZXM7DQorIH0NCisgDQorICMgVGhpcyBpcyBhIHNvcnQgcm91 dGluZSB0aGF0IHdpbGwgc29ydCBvbiB0aGUNCisgIyBpcCBhZGRyZXNzIHdo ZW4gdGhlIGlwIGFkZHJlc3MgaXMgYW55d2hlcmUgaW4NCisgIyB0aGUgc3Ry aW5ncy4NCisgc3ViIGlwc29ydCB7DQorICAgICBsb2NhbCglbGluZXMpPUBf Ow0KKyAgICAgbG9jYWwoJGkpID0gMDsNCisgICAgIGxvY2FsKEBzb3J0ZWRf bGluZXMpOw0KKyAgICAgZm9yZWFjaCAkYWRkciAoc29ydCBzb3J0YnlpcGFk ZHIga2V5cyAlbGluZXMpIHsNCisgCSRzb3J0ZWRfbGluZXNbJGldID0gJGxp bmVzeyRhZGRyfTsNCisgCSRpKys7DQorICAgICB9DQorICAgICBAc29ydGVk X2xpbmVzOw0KKyB9DQorIA0KKyAjIFRoZXNlIHR3byByb3V0aW5lcyB3aWxs IHNvcnQgYmFzZWQgdXBvbiBJUCBhZGRyZXNzZXMNCisgc3ViIGlwYWRkcnZh bCB7DQorICAgICBteShAYSkgPSAoJF9bMF0gPX4gbSNeKFxkKylcLihcZCsp XC4oXGQrKVwuKFxkKykkIyk7DQorICAgICAkYVszXSsyNTYqKCRhWzJdKzI1 NiooJGFbMV0rMjU2KiRhWzBdKSk7DQorIH0NCisgc3ViIHNvcnRieWlwYWRk ciB7DQorICAgICAmaXBhZGRydmFsKCRhKSA8PT4gJmlwYWRkcnZhbCgkYik7 DQorIH0NCisgDQorICMgVGhpcyByb3V0aW5lIHBhcnNlcyAic2hvdyB2ZXJz aW9uIg0KKyBzdWIgU2hvd1ZlcnNpb24gew0KKyAgICAgcHJpbnQgU1RERVJS ICIgICAgSW4gU2hvd1ZlcnNpb246ICRfIiBpZiAoJGRlYnVnKTsNCisgDQor ICAgICB3aGlsZSAoPElOUFVUPikgew0KKyAJdHIvXDAxNS8vZDsNCisgCXN0 dWR5Ow0KKyAJbGFzdCBpZigvXiRwcm9tcHQvKTsNCisgCW5leHQgaWYoL14o XHMqfFxzKiRjbWRccyopJC8pOw0KKyAJcmV0dXJuKC0xKSBpZiAoL2NvbW1h bmQgYXV0aG9yaXphdGlvbiBmYWlsZWQvaSk7DQorIAlpZiAoL15TbGF2ZSBp biBzbG90IChcZCspIGlzIHJ1bm5pbmcvKSB7DQorIAkgICAgJHNsYXZlID0g IiBTbGF2ZToiOw0KKyAJICAgIG5leHQ7DQorIAl9DQorIAkvXkNpc2NvIFNl Y3VyZSBQSVggL2kgJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVO VFMiLCJrZXlzb3J0IiwiRjEiLCAiIUltYWdlOiAkXyIpICYmIG5leHQ7DQor IAkvXklPUyAuKiBTb2Z0d2FyZSBcKChbQS1aYS16LTAtOV0qKVwpLCAuKlZl cnNpb25ccysoLiopJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09N TUVOVFMiLCJrZXlzb3J0IiwiRjEiLA0KKyAJCSIhSW1hZ2U6JHNsYXZlIFNv ZnR3YXJlOiAkMSwgJDJcbiIpICYmIG5leHQ7DQorIAkvXihbQS1aYS16LTAt OV9dKikgU3luY2VkIHRvIG1haW5saW5lIHZlcnNpb246ICguKikkLyAmJg0K KyAJICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJG MiIsDQorIAkJIiFJbWFnZTokc2xhdmUgJDEgU3luY2VkIHRvIG1haW5saW5l IHZlcnNpb246ICQyXG4iKSAmJiBuZXh0Ow0KKyAJL15Db21waWxlZCAoLiop JC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlz b3J0IiwiRjMiLA0KKyAJCSIhSW1hZ2U6JHNsYXZlIENvbXBpbGVkOiAkMVxu IikgJiYgbmV4dDsNCisgCS9eUk9NOiAoU3lzdGVtICk/Qm9vdHN0cmFwLioo VmVyc2lvbi4qKSQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1F TlRTIiwia2V5c29ydCIsIkcxIiwNCisgCQkiIVJPTSBCb290c3RyYXA6ICQy XG4iKSAmJiBuZXh0Ow0KKyAJaWYgKC9eSGFyZHdhcmU6XHMrKC4qKSwgKC4q IFJBTSksIENQVSAoLiopJC8pIHsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgi Q09NTUVOVFMiLCJrZXlzb3J0IiwiQTEiLA0KKyAJCSIhQ2hhc3NpcyB0eXBl OiAkMSAtIGEgUElYXG4iKTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09N TUVOVFMiLCJrZXlzb3J0IiwiQTIiLA0KKyAJCSIhQ1BVOiAkM1xuIik7DQor IAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkIx IiwgIiFNZW1vcnk6ICQyXG4iKTsNCisgCX0NCisgCS9eU2VyaWFsIE51bWJl cjpccysoLiopJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVO VFMiLCJrZXlzb3J0IiwiQzEiLCAiISRfIikgJiYgbmV4dDsNCisgCS9eQWN0 aXZhdGlvbiBLZXk6XHMrKC4qKSQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3Rv cnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkMyIiwgIiEkXyIpICYmIG5leHQ7 DQorIAkvXlJPTTogXGQrIEJvb3RzdHJhcCAuKihWZXJzaW9uLiopJC8gJiYN CisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0Iiwi RzIiLA0KKyAJCSIhUk9NIEltYWdlOiBCb290c3RyYXAgJDFcbiFcbiIpICYm IG5leHQ7DQorIAkvXlJPTTogLiooVmVyc2lvbi4qKSQvICYmDQorIAkgICAg UHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkczIiwiIVJP TSBJbWFnZTogJDFcbiIpICYmIG5leHQ7DQorIAkvXkJPT1RGTEFTSDogLioo VmVyc2lvbi4qKSQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1F TlRTIiwia2V5c29ydCIsIkc0IiwiIUJPT1RGTEFTSDogJDFcbiIpICYmIG5l eHQ7DQorIAkvXkJPT1RMRFI6IC4qKFZlcnNpb24uKikkLyAmJg0KKyAJICAg IFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJHNCIsIiFC T09UTERSOiAkMVxuIikgJiYgbmV4dDsNCisgCS9eU3lzdGVtIGltYWdlIGZp bGUgaXMgIihbXlwiXSopIiwgYm9vdGVkIHZpYSAoXFMqKS8gJiYNCisgIyBy ZW1vdmVkIHRoZSBib290ZWQgc291cmNlIGR1ZSB0bw0KKyAjIENTQ2RrMjgx MzE6IGN5Y2xpbmcgaW5mbyBpbiAnc2ggdmVyJw0KKyAjCVByb2Nlc3NIaXN0 b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJGNCIsIiFJbWFnZTogYm9vdGVk IHZpYSAkMiwgJDFcbiIpICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNP TU1FTlRTIiwia2V5c29ydCIsIkY0IiwiIUltYWdlOiBib290ZWQgJDFcbiIp ICYmDQorIAkgICAgbmV4dDsNCisgCS9eU3lzdGVtIGltYWdlIGZpbGUgaXMg IihbXlwiXSopIiQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1F TlRTIiwia2V5c29ydCIsIkY1IiwiIUltYWdlOiAkMVxuIikgJiYgbmV4dDsN CisgCWlmICgvKFxTKylccytcKChcUyspXClccytwcm9jZXNzb3IuKndpdGgg KFxTK1trS10pIGJ5dGVzLykgew0KKyAJICAgIG15KCRwcm9jKSA9ICQxOw0K KyAJICAgIG15KCRjcHUpID0gJDI7DQorIAkgICAgbXkoJG1lbSkgPSAkMzsN CisgCSAgICBteSgkZGV2aWNlKSA9ICJyb3V0ZXIiOw0KKyAJICAgIGlmICgg JDEgZXEgIkNTQyIpIHsNCisgCQkkdHlwZSA9ICJBR1MiOw0KKyAJICAgIH0g ZWxzaWYgKCAkMSBlcSAiQ1NDNCIpIHsNCisgCQkkdHlwZSA9ICJBR1MrIjsN CisgCSAgICB9IGVsc2lmICggJDEgZXEgIjI1MTEiIHx8ICQxIGVxICIyNTI0 IiB8fCAkMSBlcSAiQVMyNTExLVJKIikgew0KKyAJCSR0eXBlID0gIjI1MDAi Ow0KKyAJICAgIH0gZWxzaWYgKCAkMSA9fiAvMjYxWzAxXS8gfHwgJDEgPX4g LzI2MlswMV0vICkgew0KKyAJCSR0eXBlID0gIjI2MDAiOw0KKyAJICAgIH0g ZWxzaWYgKCAkMSBlcSAiMzYyMCIgfHwgJDEgZXEgIjM2NDAiKSB7DQorIAkJ JHR5cGUgPSAiMzYwMCI7DQorIAkgICAgfSBlbHNpZiAoICQxIGVxICJSU1A3 MDAwIikgew0KKyAJCSR0eXBlID0gIjc1MDAiOw0KKyAJICAgIH0gZWxzaWYg KCAkMSA9fiAvUlNQXGQvKSB7DQorIAkJJHR5cGUgPSAiNzUwMCI7DQorIAkg ICAgfSBlbHNpZiAoICQxIGVxICJSUDEiKSB7DQorIAkJJHR5cGUgPSAiNzAw MCI7DQorIAkgICAgfSBlbHNpZiAoICQxIGVxICJSUCIpIHsNCisgCQkkdHlw ZSA9ICI3MDAwIjsNCisgCSAgICB9IGVsc2lmICggJDEgPX4gLzcyMFsyNDZd Lykgew0KKyAJCSR0eXBlID0gIjcyMDAiOw0KKyAJICAgIH0gZWxzaWYgKCAk MSA9fiAvMTIwMFs0OF1cL0dSUC8gfHwgJDEgPX4gLzEyMDFbMjZdXC9HUlAv KSB7DQorIAkJJHR5cGUgPSAiMTIwMDAiOw0KKyAJICAgIH0gZWxzaWYgKCAk MSA9fiAvMTIwMVsyNl0tOFJcL0dSUC8pIHsNCisgCQkkdHlwZSA9ICIxMjAw MCI7DQorIAkgICAgfSBlbHNpZiAoICQxID1+IC9XUy1DMjkvKSB7DQorIAkJ JHR5cGUgPSAiMjkwMFhMIjsNCisgCQkkZGV2aWNlID0gInN3aXRjaCI7DQor IAkgICAgfSBlbHNpZiAoICQxID1+IC9XUy1DMzUvKSB7DQorIAkJJHR5cGUg PSAiMzUwMFhMIjsNCisgCQkkZGV2aWNlID0gInN3aXRjaCI7DQorIAkgICAg fSBlbHNpZiAoICQxID1+IC82MDAwLykgew0KKyAJCSR0eXBlID0gIjYwMDAi Ow0KKyAJCSRkZXZpY2UgPSAic3dpdGNoIjsNCisgCSAgICB9IGVsc2Ugew0K KyAJCSR0eXBlID0gJDE7DQorIAkgICAgfQ0KKyAJICAgIHByaW50IFNUREVS UiAiVFlQRSA9ICR0eXBlXG4iIGlmICgkZGVidWcpOw0KKyAJICAgIFByb2Nl c3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJBMSIsDQorIAkJIiFD aGFzc2lzIHR5cGU6JHNsYXZlICRwcm9jIC0gYSAkdHlwZSAkZGV2aWNlXG4i KTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0 IiwiQjEiLA0KKyAJCSIhTWVtb3J5OiRzbGF2ZSBtYWluICRtZW1cbiIpOw0K KyAJICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJB MyIsIiFDUFU6JHNsYXZlICRjcHVcbiIpOw0KKyAJICAgIG5leHQ7DQorIAl9 DQorIAlpZiAoLyhcUyspIFNpbGljb25ccypTd2l0Y2ggUHJvY2Vzc29yLykg ew0KKyAJICAgIGlmICghZGVmaW5lZCgkQzApKSB7DQorIAkJJEMwPTE7IFBy b2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJDMCIsIiFcbiIp Ow0KKyAJICAgIH0NCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMi LCJrZXlzb3J0IiwiQzIiLCIhU1NQOiAkMVxuIik7DQorIAkgICAgJHNzcCA9 IDE7DQorIAkgICAgJHNzcG1lbSA9ICQxOw0KKyAJICAgIG5leHQ7DQorIAl9 DQorIAkvXihcZCtba0tdKSBieXRlcyBvZiBtdWx0aWJ1cy8gJiYNCisgCSAg ICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiQjIiLA0K KyAJCSIhTWVtb3J5OiBtdWx0aWJ1cyAkMVxuIikgJiYgbmV4dDsNCisgCS9e KFxkK1trS10pIGJ5dGVzIG9mIG5vbi12b2xhdGlsZS8gJiYNCisgCSAgICBQ cm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiQjMiLA0KKyAJ CSIhTWVtb3J5OiBudnJhbSAkMVxuIikgJiYgbmV4dDsNCisgCS9eKFxkK1tr S10pIGJ5dGVzIG9mIGZsYXNoIG1lbW9yeS8gJiYNCisgCSAgICBQcm9jZXNz SGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiQjUiLCIhTWVtb3J5OiBm bGFzaCAkMVxuIikgJiYNCisgCSAgICBuZXh0Ow0KKyAJL14oXGQrW2tLXSkg Ynl0ZXMgb2YgLipmbGFzaCBwYXJ0aXRpb24vICYmDQorIAkgICAgUHJvY2Vz c0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkI2IiwNCisgCQkiIU1l bW9yeTogZmxhc2ggcGFydGl0aW9uICQxXG4iKSAmJiBuZXh0Ow0KKyAJL14o XGQrW2tLXSkgYnl0ZXMgb2YgRmxhc2ggaW50ZXJuYWwvICYmDQorIAkgICAg UHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkI0IiwNCisg CQkiIU1lbW9yeTogYm9vdGZsYXNoICQxXG4iKSAmJiBuZXh0Ow0KKyAJaWYo L14oXGQrW2tLXSkgYnl0ZXMgb2YgKEZsYXNofEFUQSk/LipQQ01DSUEgLioo c2xvdHxkaXNrKSA/KFxkKS9pKSB7DQorIAkgICAgUHJvY2Vzc0hpc3Rvcnko IkNPTU1FTlRTIiwia2V5c29ydCIsIkI3IiwNCisgCQkiIU1lbW9yeTogcGNt Y2lhICQyICQzJDQgJDFcbiIpOw0KKyAJICAgIG5leHQ7DQorIAl9DQorIAlp ZigvXldBUk5JTkcvKSB7DQorIAkgICAgaWYgKCFkZWZpbmVkKCRJMCkpIHsN CisgCQkkSTA9MTsNCisgCQlQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJr ZXlzb3J0IiwiSTAiLCIhXG4iKTsNCisgCSAgICB9DQorIAkgICAgUHJvY2Vz c0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkkxIiwiISAkXyIpOw0K KyAJICAgICMgVGhlIGxpbmUgYWZ0ZXIgdGhlIFdBUk5JTkcgaXMgd2hhdCB0 byBkbyBhYm91dCBpdC4NCisgCSAgICAkXyA9IDxJTlBVVD47IHRyL1wwMTUv L2Q7DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29y dCIsIkkxIiwiISAgICAgICAgICAkXyIpOw0KKyAJfQ0KKyAJaWYgKC9eQ29u ZmlndXJhdGlvbiByZWdpc3RlciBpcyAoLiopJC8pIHsNCisgCSAgICAkY29u ZmlnX3JlZ2lzdGVyPSQxOw0KKyAJICAgIG5leHQ7DQorIAl9DQorICAgICB9 DQorICAgICByZXR1cm4oMCk7DQorIH0NCisgDQorICMgVGhpcyByb3V0aW5l IHBhcnNlcyAic2hvdyBpbnN0YWxsIGFjdGl2ZSINCisgc3ViIFNob3dJbnN0 YWxsQWN0aXZlIHsNCisgICAgIHByaW50IFNUREVSUiAiICAgIEluIFNob3dJ bnN0YWxsQWN0aXZlOiAkXyIgaWYgKCRkZWJ1Zyk7DQorIA0KKyAgICAgd2hp bGUgKDxJTlBVVD4pIHsNCisgCXRyL1wwMTUvL2Q7DQorIAlsYXN0IGlmICgv XiRwcm9tcHQvKTsNCisgCW5leHQgaWYgKC9eKFxzKnxccyokY21kXHMqKSQv KTsNCisgCXJldHVybigxKSBpZiAvXlxzKlxeXHMqJC87DQorIAlyZXR1cm4o MSkgaWYgLyhJbnZhbGlkIGlucHV0IGRldGVjdGVkfFR5cGUgaGVscCBvciAp LzsNCisgCXJldHVybigtMSkgaWYgKC9jb21tYW5kIGF1dGhvcml6YXRpb24g ZmFpbGVkL2kpOw0KKyAJUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5 c29ydCIsIkY1IiwiIUltYWdlOiAkXyIpICYmIG5leHQ7DQorICAgICB9DQor ICAgICByZXR1cm4oMCk7DQorIH0NCisgDQorICMgVGhpcyByb3V0aW5lIHBh cnNlcyAic2hvdyBlbnYgYWxsIg0KKyBzdWIgU2hvd0VudiB7DQorICAgICAj IFNraXAgaWYgdGhpcyBpcyBub3QgYSA3NTAwLCA3MjAwLCBvciA3MDAwLg0K KyAgICAgcHJpbnQgU1RERVJSICIgICAgSW4gU2hvd0VudjogJF8iIGlmICgk ZGVidWcpOw0KKyANCisgICAgIHdoaWxlICg8SU5QVVQ+KSB7DQorIAl0ci9c MDE1Ly9kOw0KKyAJbGFzdCBpZiAoL14kcHJvbXB0Lyk7DQorIAluZXh0IGlm ICgvXihccyp8XHMqJGNtZFxzKikkLyk7DQorIAkjcmV0dXJuKDEpIGlmICgk dHlwZSAhfiAvXjcvKTsNCisgCXJldHVybigtMSkgaWYgKC9jb21tYW5kIGF1 dGhvcml6YXRpb24gZmFpbGVkL2kpOw0KKyAJaWYgKCFkZWZpbmVkKCRFMCkp IHsNCisgCSAgICAkRTA9MTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09N TUVOVFMiLCJrZXlzb3J0IiwiRTAiLCIhXG4iKTsNCisgCX0NCisgCWlmICgv XkFyYml0ZXIgdHlwZSAoXGQpLCBiYWNrcGxhbmUgdHlwZSAoXFMrKS8pIHsN CisgCSAgICBpZiAoIWRlZmluZWQoJEMwKSkgew0KKyAJCSRDMD0xOyBQcm9j ZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiQzAiLCIhXG4iKTsN CisgCSAgICB9DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwi a2V5c29ydCIsIkMxIiwNCisgCQkiIUVudmlyb21lbnRhbCBBcmJpdGVyIFR5 cGU6ICQxXG4iKTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMi LCJrZXlzb3J0IiwiQTIiLA0KKyAJCSIhQ2hhc3NpcyB0eXBlOiAkMiBiYWNr cGxhbmVcbiIpOw0KKyAJICAgIG5leHQ7DQorIAl9DQorIAkvXlxzKihQb3dl ciBbXjpcbl0rKSQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1F TlRTIiwia2V5c29ydCIsIkUxIiwiIVBvd2VyOiAkMVxuIikgJiYgbmV4dDsN CisgCS9eXHMqKExvd2VyIFBvd2VyIC4qKS9pICYmDQorIAkgICAgUHJvY2Vz c0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkUyIiwiIVBvd2VyOiAk MVxuIikgJiYgbmV4dDsNCisgCS9eXHMqKHJlZHVuZGFudCAuKikvaSAmJg0K KyAJICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJF MiIsIiFQb3dlcjogJDFcbiIpICYmIG5leHQ7DQorICAgICB9DQorICAgICBQ cm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCIiLCIiLCIhXG4iKTsNCisgICAg IHJldHVybigwKTsNCisgfQ0KKyANCisgIyBUaGlzIHJvdXRpbmUgcGFyc2Vz ICJzaG93IGdzciBjaGFzc2lzLWluZm8iIGZvciB0aGUgZ3NyDQorICMgVGhp cyB3aWxsIGNyZWF0ZSBhcnJheXMgZm9yIGh3IGluZm8uDQorIHN1YiBTaG93 R1NSIHsNCisgICAgICMgU2tpcCBpZiB0aGlzIGlzIG5vdCBhIDEyMDBuLg0K KyAgICAgcHJpbnQgU1RERVJSICIgICAgSW4gU2hvd0dTUjogJF8iIGlmICgk ZGVidWcpOw0KKyANCisgICAgIHdoaWxlICg8SU5QVVQ+KSB7DQorIAl0ci9c MDE1Ly9kOw0KKyAJbGFzdCBpZiAoL14kcHJvbXB0Lyk7DQorIAluZXh0IGlm ICgvXihccyp8XHMqJGNtZFxzKikkLyk7DQorIAlyZXR1cm4oLTEpIGlmICgv Y29tbWFuZCBhdXRob3JpemF0aW9uIGZhaWxlZC9pKTsNCisgCSMgcmV0dXJu KDEpIGlmICgkdHlwZSAhfiAvXjEyWzQwXS8pOw0KKyAJL14kLyAmJiBuZXh0 Ow0KKyAJL15ccytDaGFzc2lzOiB0eXBlIChcUyspIEZhYiBWZXI6IChcUysp LyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNv cnQiLCJEMCIsIiFcbiIpICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkNP TU1FTlRTIiwia2V5c29ydCIsIkQxIiwNCisgCQkJCSIhR1NSIENoYXNzaXMg dHlwZTogJDEgRmFiIFZlcjogJDJcbiIpICYmDQorIAkgICAgbmV4dDsNCisg CS9eXHMrQ2hhc3NpcyBTXC9OOiAoLiopJC8gJiYNCisgCSAgICBQcm9jZXNz SGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiRDIiLA0KKyAJCQkJIiFH U1IgQ2hhc3NpcyBTL046ICQxXG4iKSAmJg0KKyAJICAgIG5leHQ7DQorIAkv XlxzK1BDQTogKFxTKylccypyZXY6IChcUyspXHMqZGV2OiBcUytccypIVyB2 ZXI6IChcUyspJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVO VFMiLCJrZXlzb3J0IiwiRDMiLA0KKyAJCQkJIiFHU1IgQmFja3BsYW5lIFBD QTogJDEsIHJldiAkMiwgdmVyICQzXG4iKSAmJg0KKyAJICAgIG5leHQ7DQor IAkvXlxzK0JhY2twbGFuZSBTXC9OOiAoXFMrKSQvICYmDQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkQ0IiwNCisgCQkJ CSIhR1NSIEJhY2twbGFuZSBTL046ICQxXG4iKSAmJg0KKyAJICAgIG5leHQ7 DQorICAgICB9DQorICAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCIi LCIiLCIhXG4iKTsNCisgICAgIHJldHVybigwKTsNCisgfQ0KKyANCisgIyBU aGlzIHJvdXRpbmUgcGFyc2VzICJzaG93IGJvb3QiDQorIHN1YiBTaG93Qm9v dCB7DQorICAgICAjIFBpY2sgdXAgYm9vdCB2YXJpYWJsZXMgaWYgNzAwMC83 MjAwLzc1MDAvMTIwMDAvMjkwMC8zNTAwOw0KKyAgICAgIyBvdGhlcndpc2Ug cGljayB1cCBib290Zmxhc2guDQorICAgICBwcmludCBTVERFUlIgIiAgICBJ biBTaG93Qm9vdDogJF8iIGlmICgkZGVidWcpOw0KKyANCisgICAgIHdoaWxl ICg8SU5QVVQ+KSB7DQorIAl0ci9cMDE1Ly9kOw0KKyAJbGFzdCBpZiAoL14k cHJvbXB0Lyk7DQorIAluZXh0IGlmICgvXihccyp8XHMqJGNtZFxzKikkLyk7 DQorIAlyZXR1cm4oMSkgaWYgL15ccypcXlxzKiQvOw0KKyAJcmV0dXJuKC0x KSBpZiAoL2NvbW1hbmQgYXV0aG9yaXphdGlvbiBmYWlsZWQvaSk7DQorIAly ZXR1cm4oMSkgaWYgL0FtYmlndW91cyBjb21tYW5kL2k7DQorIAlyZXR1cm4o MSkgaWYgLyhJbnZhbGlkIGlucHV0IGRldGVjdGVkfFR5cGUgaGVscCBvciAp LzsNCisgCXJldHVybigxKSBpZiAvKE9wZW4gZGV2aWNlIFxTKyBmYWlsZWR8 RXJyb3Igb3BlbmluZyBcUys6KS87DQorIAluZXh0IGlmIC9DT05GR0VOIHZh cmlhYmxlLzsNCisgCWlmICghZGVmaW5lZCgkSDApKSB7DQorIAkgICAgJEgw PTE7IFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJIMCIs IiFcbiIpOw0KKyAJfQ0KKyAJaWYgKCR0eXBlICF+IC9eKDEyWzA0XXw3KS8p IHsNCisgCSAgICBpZiAoJHR5cGUgIX4gL14oMjl8MzUpMDAvKSB7DQorIAkg ICAgICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJI MiIsIiFCb290Rmxhc2g6ICRfIik7DQorIAkgICAgfSBlbHNlIHsNCisgCSAg ICAgICAgUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29ydCIsIkgx IiwiIVZhcmlhYmxlOiAkXyIpOw0KKyAJICAgIH0NCisgCX0gZWxzaWYgKC92 YXJpYWJsZS8pIHsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMi LCJrZXlzb3J0IiwiSDEiLCIhVmFyaWFibGU6ICRfIik7DQorIAl9DQorICAg ICB9DQorICAgICBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCIiLCIiLCIh XG4iKTsNCisgICAgIHJldHVybigwKTsNCisgfQ0KKyANCisgIyBUaGlzIHJv dXRpbmUgcGFyc2VzICJzaG93IGZsYXNoIg0KKyBzdWIgU2hvd0ZsYXNoIHsN CisgICAgICMgc2tpcCBpZiB0aGlzIGlzIDcwMDAsIDcyMDAsIDc1MDAsIG9y IDEyMDAwOyBlbHNlIHdlIGVuZCB1cCB3aXRoDQorICAgICAjIHJlZHVuZGFu dCBkYXRhIGZyb20gZGlyIC9hbGwgc2xvdDA6DQorICAgICBwcmludCBTVERF UlIgIiAgICBJbiBTaG93Rmxhc2g6ICRfIiBpZiAoJGRlYnVnKTsNCisgDQor ICAgICB3aGlsZSAoPElOUFVUPikgew0KKyAJdHIvXDAxNS8vZDsNCisgCWxh c3QgaWYgKC9eJHByb21wdC8pOw0KKyAJbmV4dCBpZiAoL14oXHMqfFxzKiRj bWRccyopJC8pOw0KKyAJcmV0dXJuKDEpIGlmICgkdHlwZSA9fiAvXigxMls0 MF18NykvKTsNCisgCXJldHVybigtMSkgaWYgKC9jb21tYW5kIGF1dGhvcml6 YXRpb24gZmFpbGVkL2kpOw0KKyAJcmV0dXJuKDEpIGlmIC9eXHMqXF5ccyok LzsNCisgCXJldHVybigxKSBpZiAvKEludmFsaWQgaW5wdXQgZGV0ZWN0ZWR8 VHlwZSBoZWxwIG9yICkvOw0KKyAJUHJvY2Vzc0hpc3RvcnkoIkZMQVNIIiwi IiwiIiwiIUZsYXNoOiAkXyIpOw0KKyAgICAgfQ0KKyAgICAgUHJvY2Vzc0hp c3RvcnkoIiIsIiIsIiIsIiFcbiIpOw0KKyAgICAgcmV0dXJuOw0KKyB9DQor IA0KKyAjIFRoaXMgcm91dGluZSBwYXJzZXMgImRpciAvYWxsICgoZGlza3xz bG90KU58Ym9vdGZsYXNofG52cmFtKToiDQorIHN1YiBEaXJTbG90TiB7DQor ICAgICAjIFNraXAgaWYgdGhpcyBpcyBub3QgYSAzNjAwLCA3MDAwLCA3MjAw LCA3NTAwLCBvciAxMjAwMC4NCisgICAgIHByaW50IFNUREVSUiAiICAgIElu IERpclNsb3ROOiAkXyIgaWYgKCRkZWJ1Zyk7DQorIA0KKyAgICAgbXkoJGRl dikgPSAoL1xzKFteXHNdKyk6Lyk7DQorIA0KKyAgICAgd2hpbGUgKDxJTlBV VD4pIHsNCisgCXRyL1wwMTUvL2Q7DQorIAlsYXN0IGlmICgvXiRwcm9tcHQv KTsNCisgCW5leHQgaWYgKC9eKFxzKnxccyokY21kXHMqKSQvKTsNCisgCSMg cmV0dXJuKDEpIGlmICgkdHlwZSAhfiAvXigxMls0MF18N3wzNikvKTsNCisg CXJldHVybigxKSBpZiAvXlxzKlxeXHMqJC87DQorIAlyZXR1cm4oMSkgaWYg LyhJbnZhbGlkIGlucHV0IGRldGVjdGVkfFR5cGUgaGVscCBvciApLzsNCisg CXJldHVybigxKSBpZiAvTm8gc3VjaCBkZXZpY2UvaTsNCisgCXJldHVybigx KSBpZiAvXCVFcnJvcjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeS87DQor IAlyZXR1cm4oMSkgaWYgL05vIHNwYWNlIGluZm9ybWF0aW9uIGF2YWlsYWJs ZS87DQorIAlyZXR1cm4oLTEpIGlmIC9cJUVycm9yIGNhbGxpbmcvOw0KKyAJ cmV0dXJuKC0xKSBpZiAvKDogZGV2aWNlIGJlaW5nIHNxdWVlemVkfEFUQV9T dGF0dXMgdGltZSBvdXQpL2k7ICMgYnVzeQ0KKyAJcmV0dXJuKC0xKSBpZiAo L2NvbW1hbmQgYXV0aG9yaXphdGlvbiBmYWlsZWQvaSk7DQorIAlyZXR1cm4o MSkgaWYgLyhPcGVuIGRldmljZSBcUysgZmFpbGVkfEVycm9yIG9wZW5pbmcg XFMrOikvOw0KKyAJUHJvY2Vzc0hpc3RvcnkoIkZMQVNIIiwiIiwiIiwiIUZs YXNoOiAkZGV2OiAkXyIpOw0KKyAgICAgfQ0KKyAgICAgUHJvY2Vzc0hpc3Rv cnkoIiIsIiIsIiIsIiFcbiIpOw0KKyAgICAgcmV0dXJuKDApOw0KKyB9DQor IA0KKyAjIFRoaXMgcm91dGluZSBwYXJzZXMgInNob3cgY29udHJvbGxlcnMi DQorIHN1YiBTaG93Q29udEFsbCB7DQorICAgICAjIFNraXAgaWYgdGhpcyBp cyBhIDcwWzAxXTAsIDc1MDAsIG9yIDEyMDAwLg0KKyAgICAgcHJpbnQgU1RE RVJSICIgICAgSW4gU2hvd0NvbnRBbGw6ICRfIiBpZiAoJGRlYnVnKTsNCisg DQorICAgICB3aGlsZSAoPElOUFVUPikgew0KKyAJdHIvXDAxNS8vZDsNCisg CXN0dWR5Ow0KKyAJbGFzdCBpZiAoL14kcHJvbXB0Lyk7DQorIAluZXh0IGlm ICgvXihccyp8XHMqJGNtZFxzKikkLyk7DQorIAkjIHJldHVybigxKSBpZiAo JHR5cGUgPX4gL14oMTJbNDBdfDdbMDVdKS8pOw0KKyAJcmV0dXJuKC0xKSBp ZiAoL2NvbW1hbmQgYXV0aG9yaXphdGlvbiBmYWlsZWQvaSk7DQorIAlpZiAo L15JbnRlcmZhY2UgKFteIFxuKF0qKS8pIHsgJElOVCA9ICIkMSwgIjsgbmV4 dDsgfQ0KKyAJL14oQlJJIHVuaXQgXGQpLyAmJg0KKyAJICAgIFByb2Nlc3NI aXN0b3J5KCJJTlQiLCIiLCIiLCIhSW50ZXJmYWNlOiAkMVxuIikgJiYgbmV4 dDsNCisgCS9eTEFOQ0UgdW5pdCBcZCwgTklNLyAmJg0KKyAJICAgIFByb2Nl c3NIaXN0b3J5KCJJTlQiLCIiLCIiLCIhSW50ZXJmYWNlOiAkXyIpICYmIG5l eHQ7DQorIAkvXihMQU5DRSB1bml0IFxkKS8gJiYNCisgCSAgICBQcm9jZXNz SGlzdG9yeSgiSU5UIiwiIiwiIiwiIUludGVyZmFjZTogJDFcbiIpICYmIG5l eHQ7DQorIAkvKE1lZGlhIFR5cGUgaXMgXFMrKSwvICYmDQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIklOVCIsIiIsIiIsIiFcdCQxXG4iKTsNCisgCSAgICBp ZiAoLyhNXGRUW14gOl0qOikgc2hvdyBjb250cm9sbGVyOiQvKSB7DQorIAkJ bXkoJGN0bHIpID0gJDE7DQorIAkJJF8gPSA8SU5QVVQ+OyB0ci9cMDE1Ly9k OyBzLyBzdWJ1bml0IFxkLC8vOw0KKyAJCVByb2Nlc3NIaXN0b3J5KCJJTlQi LCIiLCIiLCIhSW50ZXJmYWNlOiAkY3RsciAkXyIpOw0KKyAJICAgIH0NCisg CWlmICgvXihcUyspIDogc2hvdyBjb250cm9sbGVyOiQvKSB7DQorIAkgICAg bXkoJGN0bHIpID0gJDE7DQorIAkgICAgJF8gPSA8SU5QVVQ+OyB0ci9cMDE1 Ly9kOyBzLyBzdWJ1bml0IFxkLC8vOw0KKyAJICAgIFByb2Nlc3NIaXN0b3J5 KCJJTlQiLCIiLCIiLCIhSW50ZXJmYWNlOiAkY3RscjogJF8iKTsNCisgCX0N CisgCS9eKEhEIHVuaXQgXGQpLCBpZGIvICYmDQorIAkgICAgUHJvY2Vzc0hp c3RvcnkoIklOVCIsIiIsIiIsIiFJbnRlcmZhY2U6ICQxXG4iKSAmJiBuZXh0 Ow0KKyAJL15IRCB1bml0IFxkLCBOSU0vICYmDQorIAkgICAgUHJvY2Vzc0hp c3RvcnkoIklOVCIsIiIsIiIsIiFJbnRlcmZhY2U6ICRfIikgJiYgbmV4dDsN CisgCS9eYnVmZmVyIHNpemUgXGQrICBIRCB1bml0IFxkLCAoLiopLyAmJg0K KyAJICAgIFByb2Nlc3NIaXN0b3J5KCJJTlQiLCIiLCIiLCIhXHQkMVxuIikg JiYgbmV4dDsNCisgCS9eQU03OTk3MCAvICYmIFByb2Nlc3NIaXN0b3J5KCJJ TlQiLCIiLCIiLCIhSW50ZXJmYWNlOiAkXyIpICYmIG5leHQ7DQorIAkvXmJ1 ZmZlciBzaXplIFxkKyAgKFVuaXZlcnNhbCBTZXJpYWw6IC4qKS8gJiYNCisg CSAgICBQcm9jZXNzSGlzdG9yeSgiSU5UIiwiIiwiIiwiIVx0JDFcbiIpICYm IG5leHQ7DQorIAkvXkhhcmR3YXJlIGlzICguKikvICYmDQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIklOVCIsIiIsIiIsIiFJbnRlcmZhY2U6ICRJTlQkMVxu IikgJiYgbmV4dDsNCisgCS9eKFFVSUNDIFNlcmlhbCB1bml0IFxkKSwvICYm DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIklOVCIsIiIsIiIsIiEkMVxuIikg JiYgbmV4dDsNCisgCS9eUVVJQ0MgRXRoZXJuZXQgLiovICYmDQorIAkgICAg UHJvY2Vzc0hpc3RvcnkoIklOVCIsIiIsIiIsIiEkXyIpICYmIG5leHQ7DQor IAkvXkRURSAuKlwuJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiSU5U IiwiIiwiIiwiIVx0JF8iKSAmJiBuZXh0Ow0KKyAJL14oY2FibGUgdHlwZSA6 LiopLC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiSU5UIiwiIiwiIiwi IVx0JDFcbiIpICYmIG5leHQ7DQorIAkvXiguKiBjYWJsZS4qKSwgcmVjZWl2 ZWQgY2xvY2tyYXRlIFxkKyQvICYmDQorIAkgICAgUHJvY2Vzc0hpc3Rvcnko IklOVCIsIiIsIiIsIiFcdCQxXG4iKSAmJiBuZXh0Ow0KKyAJL14uKiBjYWJs ZS4qJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiSU5UIiwiIiwiIiwi IVx0JF8iKSAmJiBuZXh0Ow0KKyAgICAgfQ0KKyAgICAgcmV0dXJuKDApOw0K KyB9DQorIA0KKyAjIFRoaXMgcm91dGluZSBwYXJzZXMgInNob3cgY29udHJv bGxlcnMgY2J1cyINCisgIyBTb21lIG9mIHRoaXMgaXMgcHJpbnRlZCBvdXQg aW4gU2hvd0RpYWdidXMuDQorIHN1YiBTaG93Q29udENidXMgew0KKyAgICAg IyBTa2lwIGlmIHRoaXMgaXMgbm90IGEgNzAwMCBvciA3NTAwLg0KKyAgICAg cHJpbnQgU1RERVJSICIgICAgSW4gU2hvd0NvbnRDYnVzOiAkXyIgaWYgKCRk ZWJ1Zyk7DQorIA0KKyAgICAgd2hpbGUgKDxJTlBVVD4pIHsNCisgCXRyL1ww MTUvL2Q7DQorIAlsYXN0IGlmICgvXiRwcm9tcHQvKTsNCisgCW5leHQgaWYg KC9eKFxzKnxccyokY21kXHMqKSQvKTsNCisgCSNyZXR1cm4oMSkgaWYgKCR0 eXBlICF+IC9eN1swNV0wLyk7DQorIAlyZXR1cm4oLTEpIGlmICgvY29tbWFu ZCBhdXRob3JpemF0aW9uIGZhaWxlZC9pKTsNCisgCWlmICgvXlxzKnNsb3Qo XGQrKTogKFteLF0rKSwgaHcgKFxTKyksIHN3IChcUyspLCBjY2IvKSB7DQor IAkgICAgJHNsb3QgPSAkMTsNCisgCSAgICAkYm9hcmR7JHNsb3R9ID0gJDI7 DQorIAkgICAgJGh3dmVyeyRzbG90fSA9ICQzOw0KKyAJICAgICRod3Vjb2Rl eyRzbG90fSA9ICQ0Ow0KKyAJfSBlbHNpZiAoL15ccyooXFMrKSAoXGQrKSwg aGFyZHdhcmUgdmVyc2lvbiAoXFMrKSwgbWljcm9jb2RlIHZlcnNpb24gKFxT KykvKSB7DQorIAkgICAgJHNsb3QgPSAkMjsNCisgCSAgICAkYm9hcmR7JHNs b3R9ID0gJDE7DQorIAkgICAgJGh3dmVyeyRzbG90fSA9ICQzOw0KKyAJICAg ICRod3Vjb2RleyRzbG90fSA9ICQ0Ow0KKyAJfSBlbHNpZiAoLyhNaWNyb2Nv ZGUgLiopLykgew0KKyAJICAgICR1Y29kZXskc2xvdH0gPSAkMTsNCisgCX0g ZWxzaWYgKC8oc29mdHdhcmUgbG9hZGVkIC4qKS8pIHsNCisgCSAgICAkdWNv ZGV7JHNsb3R9ID0gJDE7DQorIAl9IGVsc2lmICgvKFxkKykgS2J5dGVzIG9m IG1haW4gbWVtb3J5LCAoXGQrKSBLYnl0ZXMgY2FjaGUgbWVtb3J5Lykgew0K KyAJICAgICRod21lbWR7JHNsb3R9ID0gJDE7DQorIAkgICAgJGh3bWVtY3sk c2xvdH0gPSAkMjsNCisgCX0gZWxzaWYgKC9ieXRlIGJ1ZmZlcnMvKSB7DQor IAkgICAgY2hvcDsNCisgCSAgICBzL15ccyovLzsNCisgCSAgICAkaHdidWZ7 JHNsb3R9ID0gJF87DQorIAl9IGVsc2lmICgvSW50ZXJmYWNlIChcZCspIC0g KFxTKyBcUyspLC8pIHsNCisgCSAgICAkaW50ZXJmYWNlID0gJDE7DQorIAkg ICAgUHJvY2Vzc0hpc3RvcnkoIkhXIiwiIiwiIiwNCisgCQkiIVxuIUludCAk aW50ZXJmYWNlOiBpbiBzbG90ICRzbG90LCBuYW1lZCAkMlxuIik7IG5leHQ7 DQorIAl9IGVsc2lmICgvKFxkKykgYnVmZmVyIFJYIHF1ZXVlIHRocmVzaG9s ZCwgKFxkKykgYnVmZmVyIFRYIHF1ZXVlIGxpbWl0LCBidWZmZXIgc2l6ZSAo XGQrKS8pIHsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiSFciLCIiLCIiLCIh SW50ICRpbnRlcmZhY2U6IHJ4cSAkMSwgdHhxICQyLCBidWZzaXplICQzXG4i KTsNCisgCSAgICBuZXh0Ow0KKyAJfQ0KKyAgICAgfQ0KKyAgICAgcmV0dXJu KDApOw0KKyB9DQorIA0KKyAjIFRoaXMgcm91dGluZSBwYXJzZXMgInNob3cg ZGlhZ2J1cyINCisgIyBUaGlzIHdpbGwgY3JlYXRlIGFycmFyeXMgZm9yIGh3 IGluZm8uDQorIHN1YiBTaG93RGlhZ2J1cyB7DQorICAgICAjIFNraXAgaWYg dGhpcyBpcyBub3QgYSA3MDAwLCA3MFswMV0wLCBvciA3NTAwLg0KKyAgICAg cHJpbnQgU1RERVJSICIgICAgSW4gU2hvd0RpYWdidXM6ICRfIiBpZiAoJGRl YnVnKTsNCisgDQorICAgICB3aGlsZSAoPElOUFVUPikgew0KKyAJdHIvXDAx NS8vZDsNCisgCXN0dWR5Ow0KKyAJbGFzdCBpZiAoL14kcHJvbXB0Lyk7DQor IAluZXh0IGlmICgvXihccyp8XHMqJGNtZFxzKikkLyk7DQorIAkjcmV0dXJu KDEpIGlmICgkdHlwZSAhfiAvXjdbMDVdLyk7DQorIAlyZXR1cm4oLTEpIGlm ICgvY29tbWFuZCBhdXRob3JpemF0aW9uIGZhaWxlZC9pKTsNCisgCWlmICgv XlxzKlNsb3QgKFxkKyk6L2kpIHsNCisgCSAgICAkc2xvdCA9ICQxOw0KKyAJ ICAgIG5leHQ7DQorIAl9IGVsc2lmICgvXlxzKlNsb3QgKFxkKykgXCh2aXJ0 dWFsXCk6L2kpIHsNCisgCSAgICAkc2xvdCA9ICQxOw0KKyAJICAgIG5leHQ7 DQorIAl9IGVsc2lmICgvXlxzKiguKlByb2Nlc3Nvci4qfC4qY29udHJvbGxl cnwuKmNvbnRyb2xlcnwuKkNoYXNzaXMgSW50ZXJmYWNlKSgsIEZSVVxzPzou Kik/LCBIVyByZXYgKFxTKyksIGJvYXJkIHJldmlzaW9uIChcUyspL2kpIHsN CisgCSAgICAkYm9hcmQgPSAkMTsNCisgCSAgICAkaHd2ZXIgPSAkMzsNCisg CSAgICAkYm9hcmRyZXYgPSAkNDsNCisgCSAgICBpZiAoJGJvYXJkID1+IC9Q cm9jZXNzb3IvKSB7DQorIAkJaWYgKCRib2FyZCA9fiAvNzAwMCBSb3V0ZVwv U3dpdGNoLykgew0KKyAJCSAgICAkYm9hcmQgPSAiUlNQNzAwMCI7DQorIAkJ fSBlbHNpZiAoJGJvYXJkID1+IC9Sb3V0ZVwvU3dpdGNoIFByb2Nlc3NvciAo XGQpLykgew0KKyAJCSAgICAkYm9hcmQgPSAiUlNQJDEiOw0KKyAJCX0gZWxz aWYgKCRib2FyZCA9fiAvUm91dGUvKSB7DQorIAkJICAgICRib2FyZCA9ICJS UCI7DQorIAkJfSBlbHNpZiAoJGJvYXJkID1+IC9TaWxpY29uIFN3aXRjaC8p IHsNCisgCQkgICAgJGJvYXJkID0gIlNTUCI7DQorIAkJfSBlbHNpZiAoJGJv YXJkID1+IC9Td2l0Y2gvKSB7DQorIAkJICAgICRib2FyZCA9ICJTUCI7DQor IAkJICAgICRib2FyZCA9ICJTU1AgJHNzcG1lbSIgaWYgJHNzcDsNCisgCQl9 IGVsc2lmICgkYm9hcmQgPX4gL0FUTS8pIHsNCisgCQkgICAgJGJvYXJkID0g IkFJUCI7DQorIAkJfQ0KKyAJICAgIH0gZWxzaWYgKCRib2FyZCA9fiAvKC4q KSBjb250cm9sbGVyL2kpIHsNCisgCQkkYm9hcmQgPSAkMTsNCisgCSAgICB9 DQorIAkgICAgIyBod3Vjb2RleyRzbG90fSBkZWZpbmVkIGluIFNob3dDb250 Q2J1cw0KKyAJICAgIGlmIChkZWZpbmVkICRod3Vjb2RleyRzbG90fSkgew0K KyAJCVByb2Nlc3NIaXN0b3J5KCJTTE9UIiwiIiwiIiwiIVxuIVNsb3QgJHNs b3QvJGJvYXJkOiBodmVycyAkaHd2ZXIgcmV2ICRib2FyZHJldiB1Y29kZSAk aHd1Y29kZXskc2xvdH1cbiIpOw0KKyAJICAgIH0gZWxzZSB7DQorIAkJUHJv Y2Vzc0hpc3RvcnkoIlNMT1QiLCIiLCIiLCIhXG4hU2xvdCAkc2xvdC8kYm9h cmQ6IGh2ZXJzICRod3ZlciByZXYgJGJvYXJkcmV2XG4iKTsNCisgCSAgICB9 DQorIAkgICAgIyBUaGVzZSBhcmUgYWxzbyBmcm9tIHRoZSBTaG93Q29udENi dXMNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIsIiFTbG90 ICRzbG90LyRib2FyZDogJHVjb2RleyRzbG90fVxuIikgaWYgKGRlZmluZWQg JHVjb2RleyRzbG90fSk7DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIlNMT1Qi LCIiLCIiLCIhU2xvdCAkc2xvdC8kYm9hcmQ6IG1lbWQgJGh3bWVtZHskc2xv dH0sIGNhY2hlICRod21lbWN7JHNsb3R9XG4iKQ0KKyAJICAgIGlmICgoZGVm aW5lZCAkaHdtZW1keyRzbG90fSkgJiYgKGRlZmluZWQgJGh3bWVtY3skc2xv dH0pKTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIsIiFT bG90ICRzbG90LyRib2FyZDogJGh3YnVmeyRzbG90fVxuIikgaWYgKGRlZmlu ZWQgJGh3YnVmeyRzbG90fSk7DQorIAkgICAgbmV4dDsNCisgCX0NCisgCS9T ZXJpYWwgbnVtYmVyOiAoXFMrKVxzKlBhcnQgbnVtYmVyOiAoXFMrKS8gJiYN CisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIsDQorIAkJCSIh U2xvdCAkc2xvdC8kYm9hcmQ6IHBhcnQgJDIsIHNlcmlhbCAkMVxuIikgJiYN CisgCSAgICBuZXh0Ow0KKyAJL15ccypDb250cm9sbGVyIE1lbW9yeSBTaXpl OiAoLiopJC8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIs IiIsIiFTbG90ICRzbG90LyRib2FyZDogJDFcbiIpICYmDQorIAkgICAgbmV4 dDsNCisgCWlmICgvUEEgQmF5IChcZCkgSW5mb3JtYXRpb24vKSB7DQorIAkg ICAgJHBhbm8gPSAkMTsNCisgCSAgICBpZiAoIlBBIiA9fiAvJGJvYXJkLykg ew0KKyAJCSgkcywkYykgPSBzcGxpdCgvXC8vLCRib2FyZCk7DQorIAkJJGJv YXJkID0gIiRzLyRjL1BBICRwYW5vIjsNCisgCSAgICB9IGVsc2Ugew0KKyAJ CSRib2FyZCA9fiBzL1wvUEEgXGQvLzsNCisgCQkkYm9hcmQgPSAiJGJvYXJk L1BBICRwYW5vIjsNCisgCSAgICB9DQorIAkgICAgbmV4dDsNCisgCX0NCisg CS9ccysoLiopIChJUHxQQSksIChcZCkgcG9ydHM/LCggXFMrLCk/IChGUlVc cz86ICk/KFxTKykvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIlNMT1Qi LCIiLCIiLCIhU2xvdCAkc2xvdC8kYm9hcmQ6IHR5cGUgJDYsICQzIHBvcnRz XG4iKSAmJg0KKyAJICAgIG5leHQ7DQorIAkvXHMrKC4qKSAoSVB8UEEpKCBc KFxTK1wpKT8sIChcZCkgcG9ydHM/LyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0 b3J5KCJTTE9UIiwiIiwiIiwiIVNsb3QgJHNsb3QvJGJvYXJkOiB0eXBlICQx JDMsICQ0IHBvcnRzXG4iKSAmJg0KKyAJICAgIG5leHQ7DQorIAkvXlxzKkhX IHJldiAoXFMrKSwgQm9hcmQgcmV2aXNpb24gKFxTKykvICYmDQorIAkgICAg UHJvY2Vzc0hpc3RvcnkoIlNMT1QiLCIiLCIiLCIhU2xvdCAkc2xvdC8kYm9h cmQ6IGh2ZXJzICQxIHJldiAkMlxuIikgJiYNCisgCSAgICBuZXh0Ow0KKyAJ L1NlcmlhbCBudW1iZXI6IChcUyspXHMqUGFydCBudW1iZXI6IChcUyspLyAm Jg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9UIiwiIiwiIiwiIVNsb3Qg JHNsb3QvJGJvYXJkOiBwYXJ0ICQyLCBzZXJpYWwgJDFcbiIpICYmIG5leHQ7 DQorICAgICB9DQorICAgICByZXR1cm4oMCk7DQorIH0NCisgDQorICMgVGhp cyByb3V0aW5lIHBhcnNlcyAic2hvdyBkaWFnIiBmb3IgdGhlIGdzciwgNzIw MCwgMzYwMCwgMjYwMC4NCisgIyBUaGlzIHdpbGwgY3JlYXRlIGFycmFyeXMg Zm9yIGh3IGluZm8uDQorIHN1YiBTaG93RGlhZyB7DQorICAgICAjIFNraXAg aWYgdGhpcyBpcyBub3QgYSAxMjAwMC4NCisgICAgIHByaW50IFNUREVSUiAi ICAgIEluIFNob3dEaWFnOiAkXyIgaWYgKCRkZWJ1Zyk7DQorIA0KKyAgICAg d2hpbGUgKDxJTlBVVD4pIHsNCisgCXRyL1wwMTUvL2Q7DQorIAlzdHVkeTsN CisgCWxhc3QgaWYgKC9eJHByb21wdC8pOw0KKyAJbmV4dCBpZiAoL14oXHMq fFxzKiRjbWRccyopJC8pOw0KKyAJIyByZXR1cm4oMSkgaWYgKCR0eXBlICF+ IC9eKDEyWzQwXXw3MjB8MzZ8MjYpLyk7DQorIAlyZXR1cm4oLTEpIGlmICgv Y29tbWFuZCBhdXRob3JpemF0aW9uIGZhaWxlZC9pKTsNCisgCS9eJC8gJiYg bmV4dDsNCisgCXMvUG9ydCBQYWNrZXQgT3ZlciBTT05FVC9QT1MvOw0KKyAJ aWYgKC9eXHMqU0xPVFxzKyhcZCspXHMrXCgoLiopXCk6ICguKikvKSB7DQor IAkgICAgJHNsb3QgPSAkMTsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xP VCIsIiIsIiIsIiFcbiIpOw0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9U Iiwia2V5c29ydCIsIkEiLCIhU2xvdCAkc2xvdDogJDNcbiIpOw0KKyAJICAg IG5leHQ7DQorIAl9DQorIAlpZiAoL15ccytNQUlOOlxzKiB0eXBlIFxkKyxc cysoLiopLykgew0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5 c29ydCIsIkFNIiwiIVNsb3QgJHNsb3QvTUFJTjogcGFydCAkMVxuIikgJiYg bmV4dDsNCisgCX0NCisgCWlmICgvIEVuZ2luZTpccysoLiopLykgew0KKyAJ ICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIkFFIiwiIVNs b3QgJHNsb3QvRW5naW5lOiAkMVxuIik7DQorIAl9DQorIAlpZiAoL15ccytQ Q0E6XHMrKC4qKS8pIHsNCisgCSAgICBsb2NhbCgkcGFydCkgPSAkMTsNCisg CSAgICAkXyA9IDxJTlBVVD47DQorIAkgICAgL15ccytIVyB2ZXJzaW9uIChc UyspXHMrU1wvTiAoXFMrKS8gJiYNCisgCQlQcm9jZXNzSGlzdG9yeSgiU0xP VCIsImtleXNvcnQiLCJDMSIsIiFTbG90ICRzbG90L1BDQTogcGFydCAkcGFy dCwgc2VyaWFsICQyXG4iKSAmJg0KKyAJCVByb2Nlc3NIaXN0b3J5KCJTTE9U Iiwia2V5c29ydCIsIkMyIiwiIVNsb3QgJHNsb3QvUENBOiBodmVycyAkMVxu Iik7DQorIAkgICAgbmV4dDsNCisgCX0NCisgCWlmICgvXlxzK01CVVM6IC4q XClccysoLiopLykgew0KKyAJICAgIGxvY2FsKCR0bXApID0gIiFTbG90ICRz bG90L01CVVM6IHBhcnQgJDEiOw0KKyAJICAgICRfID0gPElOUFVUPjsNCisg CSAgICAvXlxzK0hXIHZlcnNpb24gKFxTKylccytTXC9OIChcUyspLyAmJg0K KyAJCVByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIk1CMSIsIiR0 bXAsIHNlcmlhbCAkMlxuIikgJiYNCisgCQlQcm9jZXNzSGlzdG9yeSgiU0xP VCIsImtleXNvcnQiLCJNQjIiLCIhU2xvdCAkc2xvdC9NQlVTOiBodmVycyAk MVxuIik7DQorIAkgICAgbmV4dDsNCisgCX0NCisgCWlmICgvXlxzK01CVVMg QWdlbnQgU29mdHdhcmUgdmVyc2lvbiAoLiopLykgew0KKyAJICAgIFByb2Nl c3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIk1CMyIsIiFTbG90ICRzbG90 L01CVVM6IHNvZnR3YXJlICQxXG4iKTsNCisgCSAgICBuZXh0Ow0KKyAJfQ0K KyAJaWYgKC9eXHMrUk9NIE1vbml0b3IgdmVyc2lvbiAoLiopLykgew0KKyAJ ICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIlIiLCIhU2xv dCAkc2xvdC9ST00gTW9uaXRvcjogdmVyc2lvbiAkMVxuIik7DQorIAkgICAg bmV4dDsNCisgCX0NCisgCWlmICgvXlxzK0ZhYnJpYyBEb3dubG9hZGVyIHZl cnNpb24gdXNlZCAoLiopLykgew0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJT TE9UIiwia2V5c29ydCIsIloiLCIhU2xvdCAkc2xvdC9GYWJyaWMgRG93bmxv YWRlcjogdmVyc2lvbiAkMVxuIik7DQorIAkgICAgbmV4dDsNCisgCX0NCisg CWlmICgvXlxzK0RSQU0gc2l6ZTogKFxkKykvKSB7DQorIAkgICAgbG9jYWwo JGRyYW0pID0gJDEgLyAxMDQ4NTc2Ow0KKyAJICAgICRfID0gPElOUFVUPjsN CisgCSAgICBpZiAoL15ccytGckZhYiBTRFJBTSBzaXplOiAoXGQrKS8pIHsN CisgCQlQcm9jZXNzSGlzdG9yeSgiU0xPVCIsImtleXNvcnQiLCJNQjQiLCIh U2xvdCAkc2xvdC9NQlVTOiAkZHJhbSBNYnl0ZXMgRFJBTSwgIg0KKyAJCQkg ICAuICQxIC8gMTAyNCAuICIgS2J5dGVzIFNEUkFNXG4iKTsNCisgCSAgICB9 IGVsc2Ugew0KKyAJCVByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIs Ik1CNCIsIiFTbG90ICRzbG90L01CVVM6ICRkcmFtIE1ieXRlcyBEUkFNXG4i KTsNCisgCSAgICB9DQorIAkgICAgbmV4dDsNCisgCX0NCisgCSMgNzIwMCBh bmQgMzYwMCBzdHVmZg0KKyAJaWYgKC9eKFNsb3QpXHMrKFxkKyhcL1xkKyk/ KTovIHx8IC9eXHMrKFdJQ3xWSUMpIFNsb3QgKFxkKTovKSB7DQorIAkgICAg aWYgKCQxIGVxICJXSUMiKSB7DQorIAkJJFdJQyA9ICIvJDIiOw0KKyAJICAg IH0gZWxzaWYgKCQxIGVxICJWSUMiKSB7DQorIAkJJFdJQyA9ICIvJDIiOw0K KyAJICAgIH0gZWxzZSB7DQorIAkJJHNsb3QgPSAkMjsNCisgCQl1bmRlZigk V0lDKTsNCisgCSAgICB9DQorIAkgICAgJF8gPSA8SU5QVVQ+OyB0ci9cMDE1 Ly9kOw0KKyANCisgCSAgICAjIGNsZWFuIHVwIGhpZGVvdXMgNzIwMCBmb3Jt YXQgdG8gbG9vayBtb3JlIGxpa2UgNzUwMCBvdXRwdXQNCisgCSAgICBzL0Zh c3QtZXRoZXJuZXQgb24gQzcyMDAgSVwvTyBjYXJkL0ZFLUlPLzsNCisgCSAg ICBzLyB3aXRoIE1JSSBvciBSSjQ1Ly1UWC87DQorIAkgICAgcy9GYXN0LWV0 aGVybmV0IC8xMDBCYXNlLzsgcy9bKShdLy9nOw0KKyANCisgCSAgICBQcm9j ZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIsIiFcbiIpOw0KKyAJICAgIC9ccyso LiopIHBvcnQgYWRhcHRlciw/XHMrKFxkKylccysvaSAmJg0KKyAJCVByb2Nl c3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIkIiLCIhU2xvdCAkc2xvdDog dHlwZSAkMSwgJDIgcG9ydHNcbiIpOw0KKyAJICAgICMgSS9PIGNvbnRyb2xs ZXIgd2l0aCBubyBpbnRlcmZhY2VzDQorIAkgICAgL1xzKyguKilccytwb3J0 IGFkYXB0ZXJccyokL2kgJiYNCisgCQlQcm9jZXNzSGlzdG9yeSgiU0xPVCIs ImtleXNvcnQiLCJCIiwiIVNsb3QgJHNsb3Q6IHR5cGUgJDEsIDAgcG9ydHNc biIpOw0KKyAJICAgIC9ccysoLiopXHMrZGF1Z2h0ZXIgY2FyZCguKikkLyAm Jg0KKyAJCVByb2Nlc3NIaXN0b3J5KCJTTE9UIiwia2V5c29ydCIsIkIiLCIh U2xvdCAkc2xvdCRXSUM6IHR5cGUgJDEkMlxuIik7DQorIAkgICAgL1xzKyhG VDEpJC8gJiYNCisgCQlQcm9jZXNzSGlzdG9yeSgiU0xPVCIsImtleXNvcnQi LCJCIiwiIVNsb3QgJHNsb3QkV0lDOiB0eXBlICQxXG4iKTsNCisgCSAgICBu ZXh0Ow0KKyAJfQ0KKyAJL3JldmlzaW9uXHMrKFxTKykuKnJldmlzaW9uXHMr KFxTKykvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIlNMT1QiLCJrZXlz b3J0IiwiQyIsIiFTbG90ICRzbG90JFdJQzogaHZlcnMgJDEgcmV2ICQyXG4i KSAmJg0KKyAJICAgIG5leHQ7DQorIAkvbnVtYmVyXHMrKFxTKylccytQYXJ0 IG51bWJlclxzKyhcUyspLyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJT TE9UIiwia2V5c29ydCIsIkQiLCIhU2xvdCAkc2xvdCRXSUM6IHBhcnQgJDIs IHNlcmlhbCAkMVxuIikgJiYNCisgCSAgICBuZXh0Ow0KKyAgICAgfQ0KKyAg ICAgUHJvY2Vzc0hpc3RvcnkoIlNMT1QiLCIiLCIiLCIhXG4iKTsNCisgICAg IHJldHVybigwKTsNCisgfQ0KKyANCisgIyBUaGlzIHJvdXRpbmUgcGFyc2Vz ICJzaG93IG1vZHVsZSIuDQorIHN1YiBTaG93TW9kdWxlIHsNCisgICAgIHBy aW50IFNUREVSUiAiICAgIEluIFNob3dNb2R1bGU6ICRfIiBpZiAoJGRlYnVn KTsNCisgDQorICAgICBteShAbGluZXMpOw0KKyAgICAgbXkoJHNsb3QpOw0K KyANCisgICAgIHdoaWxlICg8SU5QVVQ+KSB7DQorIAl0ci9cMDE1Ly9kOw0K KyAJcmV0dXJuIGlmICgvXlxzKlxeJC8pOw0KKyAJbGFzdCBpZiAoL14kcHJv bXB0Lyk7DQorIAluZXh0IGlmICgvXihccyp8XHMqJGNtZFxzKikkLyk7DQor IAlyZXR1cm4oLTEpIGlmICgvY29tbWFuZCBhdXRob3JpemF0aW9uIGZhaWxl ZC9pKTsNCisgDQorIAkjIG1hdGNoIHNsb3QvY2FyZCBpbmZvIGxpbmUNCisg CWlmICgvXiAqKFxkKylccysoXGQrKVxzKyguKilccysoXFMrKVxzKyhcUysp XHMqJC8pIHsNCisgCSAgICAkbGluZXNbJDFdIC49ICIhU2xvdCAkMTogdHlw ZSAkMywgJDIgcG9ydHNcbiFTbG90ICQxOiBwYXJ0ICQ0LCBzZXJpYWwgJDVc biI7DQorIAkgICAgJGxpbmVzWyQxXSA9fiBzL1xzKywvLC9nOw0KKyAJfQ0K KyAJIyBub3cgbWF0Y2ggdGhlIFJldnMgaW4gdGhlIHNlY29uZCBwYXJhZ3Jh cGggb2Ygby9wIGFuZCBzdGljayBpdCBpbg0KKyAJIyB0aGUgYXJyYXkgd2l0 aCB0aGUgcHJldmlvdXMgYml0cy4uLmdydW1ibGUuDQorIAlpZiAoL14gKihc ZCspXHMrXFMrXHMrdG9ccytcUytccysoXFMrKVxzKyhcUyopXHMrKFxTKyko XHMrXFMrKT9ccyokLykgew0KKyAJICAgICRsaW5lc1skMV0gLj0gIiFTbG90 ICQxOiBodmVycyAkMiwgZmlybXdhcmUgJDMsIHN3ICQ0XG4iOw0KKyAJICAg ICRsaW5lc1skMV0gPX4gcy9ccyssLywvZzsNCisgCX0NCisgICAgIH0NCisg ICAgIGZvcmVhY2ggJHNsb3QgKEBsaW5lcykgew0KKyAJbmV4dCBpZiAoJHNs b3QgPX4gL15ccyokLyk7DQorIAlQcm9jZXNzSGlzdG9yeSgiTW9kdWxlIiwi IiwiIiwiJHNsb3QhXG4iKTsNCisgICAgIH0NCisgDQorICAgICByZXR1cm4o MCk7DQorIH0NCisgDQorICMgVGhpcyByb3V0aW5lIHBhcnNlcyAic2hvdyBj NzIwMCIgZm9yIHRoZSA3MjAwDQorICMgVGhpcyB3aWxsIGNyZWF0ZSBhcnJh eXMgZm9yIGh3IGluZm8uDQorIHN1YiBTaG93QzcyMDAgew0KKyAgICAgIyBT a2lwIGlmIHRoaXMgaXMgbm90IGEgNzIwMC4NCisgICAgIHByaW50IFNUREVS UiAiICAgIEluIFNob3dDNzIwMDogJF8iIGlmICgkZGVidWcpOw0KKyANCisg ICAgIHdoaWxlICg8SU5QVVQ+KSB7DQorIAl0ci9cMDE1Ly9kOw0KKyAJbGFz dCBpZiAoL14kcHJvbXB0Lyk7DQorIAluZXh0IGlmICgvXihccyp8XHMqJGNt ZFxzKikkLyk7DQorIAkjcmV0dXJuKDEpIGlmICgkdHlwZSAhfiAvXjcyLyk7 DQorIAlyZXR1cm4oLTEpIGlmICgvY29tbWFuZCBhdXRob3JpemF0aW9uIGZh aWxlZC9pKTsNCisgCS9eJC8gJiYgbmV4dDsNCisgCWlmICgvXihDNzIwMCAp P01pZHBsYW5lIEVFUFJPTTovKSB7DQorIAkgICAgJF8gPSA8SU5QVVQ+Ow0K KyAJICAgIC9yZXZpc2lvblxzKyhcUyspLipyZXZpc2lvblxzKyhcUyspLzsN CisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIsIiFTbG90IE1p ZHBsYW5lOiBodmVycyAkMSByZXYgJDJcbiIpOw0KKyAJICAgICRfID0gPElO UFVUPjsNCisgCSAgICAvbnVtYmVyXHMrKFxTKylccytQYXJ0IG51bWJlclxz KyhcUyspLzsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiU0xPVCIsIiIsIiIs IiFTbG90IE1pZHBsYW5lOiBwYXJ0ICQyLCBzZXJpYWwgJDFcbiFcbiIpOw0K KyAJICAgIG5leHQ7DQorIAl9DQorIAlpZiAoL0M3MjBcZChWWFIpPyBDUFUg RUVQUk9NOi8pIHsNCisgCSAgICBteSAoJGh2ZXJzLCRyZXYsJHBhcnQsJHNl cmlhbCk7DQorIAkgICAgIyBucGU0MDBzIHJlcG9ydCB0aGVpciBjcHUgZWVw cm9tIGluZm8gZGlmZmVyZW50bHkgdy8gMTIuMC4yMVMNCisgCSAgICB3aGls ZSAoPElOUFVUPikgew0KKyAJCS9IYXJkd2FyZSBSZXZpc2lvblxzKzogKFxT KykvICYmICgkaHZlcnMgPSAkMSkgJiYgbmV4dDsNCisgCQkvQm9hcmQgUmV2 aXNpb25ccys6IChcUyspLyAmJiAoJHJldiA9ICQxKSAmJiBuZXh0Ow0KKyAJ CS9QYXJ0IE51bWJlclxzKzogKFxTKykvICYmICgkcGFydCA9ICQxKSAmJiBu ZXh0Ow0KKyAJCS9TZXJpYWwgTnVtYmVyXHMrOiAoXFMrKS8gJiYgKCRzZXJp YWwgPSAkMSkgJiYgbmV4dDsNCisgCQkvcmV2aXNpb25ccysoXFMrKS4qcmV2 aXNpb25ccysoXFMrKS8gJiYNCisgCQkgICAgKCRodmVycyA9ICQxLCAkcmV2 ID0gJDIpICYmIG5leHQ7DQorIAkJL251bWJlclxzKyhcUyspXHMrUGFydCBu dW1iZXJccysoXFMrKS8gJiYNCisgCQkgICAgKCRzZXJpYWwgPSAkMSwgJHBh cnQgPSAkMikgJiYgbmV4dDsNCisgCQkvXlxzKiQvICYmIGxhc3Q7DQorIAkg ICAgfQ0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJTTE9UIiwiIiwiIiwiIVNs b3QgQ1BVOiBodmVycyAkaHZlcnMgcmV2ICRyZXZcbiIpOw0KKyAJICAgIFBy b2Nlc3NIaXN0b3J5KCJTTE9UIiwiIiwiIiwiIVNsb3QgQ1BVOiBwYXJ0ICRw YXJ0LCBzZXJpYWwgJHNlcmlhbFxuIVxuIik7DQorIAkgICAgbmV4dDsNCisg CX0NCisgICAgIH0NCisgICAgIHJldHVybigwKTsNCisgfQ0KKyANCisgIyBU aGlzIHJvdXRpbmUgcGFyc2VzICJzaG93IHZ0cCBzdGF0dXMiDQorIHN1YiBT aG93VlRQIHsNCisgICAgIHByaW50IFNUREVSUiAiICAgIEluIFNob3dWVFA6 ICRfIiBpZiAoJGRlYnVnKTsNCisgDQorICAgICB3aGlsZSAoPElOUFVUPikg ew0KKyAJdHIvXDAxNS8vZDsNCisgCWxhc3QgaWYgKC9eJHByb21wdC8pOw0K KyAJbmV4dCBpZiAoL14oXHMqfFxzKiRjbWRccyopJC8pOw0KKyAJcmV0dXJu KDEpIGlmIC9eXHMqXF5ccyokLzsNCisgCXJldHVybigxKSBpZiAvKEludmFs aWQgaW5wdXQgZGV0ZWN0ZWR8VHlwZSBoZWxwIG9yICkvOw0KKyAJI3JldHVy bigxKSBpZiAoJHR5cGUgIX4gL14oMjkwMFhMfDM1MDBYTHw2MDAwKSQvKTsN CisgCXJldHVybigtMSkgaWYgKC9jb21tYW5kIGF1dGhvcml6YXRpb24gZmFp bGVkL2kpOw0KKyAJbmV4dCBpZiAoL15Db25maWd1cmF0aW9uIGxhc3QgbW9k aWZpZWQgYnkvKTsNCisgCWlmICgvXlZUUCBPcGVyYXRpbmcgTW9kZVxzKzpc cysoVHJhbnNwYXJlbnR8U2VydmVyKS8pIHsNCisgCSAgICAkRE9fU0hPV19W TEFOID0gMTsNCisgCX0NCisgCVByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIs ImtleXNvcnQiLCJJMCIsIiFWVFA6ICRfIik7DQorICAgICB9DQorICAgICBQ cm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiSTAiLCIhXG4i KTsNCisgICAgIHJldHVybigwKTsNCisgfQ0KKyANCisgIyBUaGlzIHJvdXRp bmUgcGFyc2VzICJzaG93IHZsYW4iDQorIHN1YiBTaG93VkxBTiB7DQorICAg ICBwcmludCBTVERFUlIgIiAgICBJbiBTaG93VkxBTjogJF8iIGlmICgkZGVi dWcpOw0KKyANCisgICAgICgkXz08SU5QVVQ+LHJldHVybigxKSkgaWYgKCEk RE9fU0hPV19WTEFOKTsNCisgDQorICAgICB3aGlsZSAoPElOUFVUPikgew0K KyAJdHIvXDAxNS8vZDsNCisgCWxhc3QgaWYgKC9eJHByb21wdC8pOw0KKyAJ bmV4dCBpZiAoL14oXHMqfFxzKiRjbWRccyopJC8pOw0KKyAJcmV0dXJuKDEp IGlmIC8oSW52YWxpZCBpbnB1dCBkZXRlY3RlZHxUeXBlIGhlbHAgb3IgKS87 DQorIAkjcmV0dXJuKDEpIGlmICgkdHlwZSAhfiAvXigyOTAwWEx8MzUwMFhM fDYwMDApJC8pOw0KKyAJcmV0dXJuKC0xKSBpZiAoL2NvbW1hbmQgYXV0aG9y aXphdGlvbiBmYWlsZWQvaSk7DQorIAlQcm9jZXNzSGlzdG9yeSgiQ09NTUVO VFMiLCJrZXlzb3J0IiwiSU8iLCIhVkxBTjogJF8iKTsNCisgICAgIH0NCisg ICAgIFByb2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJJTyIs IiFcbiIpOw0KKyAgICAgcmV0dXJuKDApOw0KKyB9DQorIA0KKyAjIFRoaXMg cm91dGluZSBwcm9jZXNzZXMgYSAid3JpdGUgdGVybSINCisgc3ViIFdyaXRl VGVybSB7DQorICAgICBwcmludCBTVERFUlIgIiAgICBJbiBXcml0ZVRlcm06 ICRfIiBpZiAoJGRlYnVnKTsNCisgDQorICAgICB3aGlsZSAoPElOUFVUPikg ew0KKyAJdHIvXDAxNS8vZDsNCisgCXN0dWR5Ow0KKyAJbGFzdCBpZigvXiRw cm9tcHQvKTsNCisgCXJldHVybigtMSkgaWYgKC9jb21tYW5kIGF1dGhvcml6 YXRpb24gZmFpbGVkL2kpOw0KKyAJIyB0aGUgcGFnZXIgY2FuIG5vdCBiZSBk aXNhYmxlZCBwZXItc2Vzc2lvbiBvbiB0aGUgUElYDQorIAlzL148LSsgTW9y ZSAtKz5ccyovLzsNCisgCS9Ob24tVm9sYXRpbGUgbWVtb3J5IGlzIGluIHVz ZS8gICYmIHJldHVybigtMSk7ICMgTnZSQU0gaXMgbG9ja2VkDQorIAkjIHNr aXAgdGhlIGNyYXANCisgCWlmICgvXigjIyskfChCdWlsZGluZ3xDdXJyZW50 KSBjb25maWd1cmF0aW9uKS9pKSB7DQorIAkgICAgd2hpbGUgKDxJTlBVVD4p IHsNCisgCQluZXh0IGlmICgvXkN1cnJlbnQgY29uZmlndXJhdGlvblxzKjov aSk7DQorIAkJbmV4dCBpZiAoL146Lyk7DQorIAkJbmV4dCBpZiAoL14oWyUh XS4qfFxzKikkLyk7DQorIAkJbmV4dCBpZiAoL15pcCBhZGQuKmlwdjQ6Lyk7 CSMgYmFuZC1haWQgZm9yIDM2MjAgMTIuMFMNCisgCQlsYXN0Ow0KKyAJICAg IH0NCisgCSAgICBpZiAoZGVmaW5lZCgkY29uZmlnX3JlZ2lzdGVyKSkgew0K KyAJCVByb2Nlc3NIaXN0b3J5KCIiLCIiLCIiLCIhXG5jb25maWctcmVnaXN0 ZXIgJGNvbmZpZ19yZWdpc3RlclxuIik7DQorIAkgICAgfQ0KKyAJICAgIHRy L1wwMTUvL2Q7DQorIAl9DQorIAkjIHNvbWUgdmVyc2lvbnMgaGF2ZSBvdGhl ciBjcmFwIG1peGVkIGluIHdpdGggdGhlIGJpdHMgaW4gdGhlDQorIAkjIGJs b2NrIGFib3ZlDQorIAkvXiEgKExhc3QgY29uZmlndXJhdGlvbnxOVlJBTSBj b25maWcgbGFzdCkvICYmIG5leHQ7DQorIA0KKyAJIyBEb2cgZ29uZSBDb29s IG1hdGNoZXMgdG8gcHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgY29uZmlnDQor IAkvXnRmdHAtc2VydmVyIGZsYXNoIC8gICAmJiBuZXh0OyAjIGtpbGwgYW55 IHRmdHAgcmVtYWlucw0KKyAJL15udHAgY2xvY2stcGVyaW9kIC8gICAgJiYg bmV4dDsgIyBraWxsIG50cCBjbG9jay1wZXJpb2QNCisgCS9eIGxlbmd0aCAv CQkmJiBuZXh0OyAjIGtpbGwgbGVuZ3RoIG9uIHNlcmlhbCBsaW5lcw0KKyAJ L14gd2lkdGggLwkJJiYgbmV4dDsgIyBraWxsIHdpZHRoIG9uIHNlcmlhbCBs aW5lcw0KKyAJL14gY2xvY2tyYXRlIC8JCSYmIG5leHQ7ICMga2lsbCBjbG9j a3JhdGUgb24gc2VyaWFsIGludGVyZmFjZXMNCisgCWlmICgvXihlbmFibGUg KT8ocGFzc3dvcmR8cGFzc3dkKSAvICYmICRmaWx0ZXJfcHdkcyA+PSAxKSB7 DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkVOQUJMRSIsIiIsIiIsIiEkMSQy IDxyZW1vdmVkPlxuIik7DQorIAkgICAgbmV4dDsNCisgCX0NCisgCWlmICgv XihlbmFibGUgc2VjcmV0KSAvICYmICRmaWx0ZXJfcHdkcyA+PSAyKSB7DQor IAkgICAgUHJvY2Vzc0hpc3RvcnkoIkVOQUJMRSIsIiIsIiIsIiEkMSA8cmVt b3ZlZD5cbiIpOw0KKyAJICAgIG5leHQ7DQorIAl9DQorIAlpZiAoL151c2Vy bmFtZSAoXFMrKShccy4qKT8gc2VjcmV0IC8pIHsNCisgCSAgICBpZiAoJGZp bHRlcl9wd2RzID49IDIpIHsNCisgCQlQcm9jZXNzSGlzdG9yeSgiVVNFUiIs ImtleXNvcnQiLCIkMSIsIiF1c2VybmFtZSAkMSQyIHNlY3JldCA8cmVtb3Zl ZD5cbiIpOw0KKyAJICAgIH0gZWxzZSB7DQorIAkJUHJvY2Vzc0hpc3Rvcnko IlVTRVIiLCJrZXlzb3J0IiwiJDEiLCIkXyIpOw0KKyAJICAgIH0NCisgCSAg ICBuZXh0Ow0KKyAJfQ0KKyAJaWYgKC9edXNlcm5hbWUgKFxTKykoXHMuKik/ IHBhc3N3b3JkICgoXGQpIFxTK3xcUyspLykgew0KKyAJICAgIGlmICgkZmls dGVyX3B3ZHMgPT0gMikgew0KKyAJCVByb2Nlc3NIaXN0b3J5KCJVU0VSIiwi a2V5c29ydCIsIiQxIiwiIXVzZXJuYW1lICQxJDIgcGFzc3dvcmQgPHJlbW92 ZWQ+XG4iKTsNCisgCSAgICB9IGVsc2lmICgkZmlsdGVyX3B3ZHMgPT0gMSAm JiAkNCBuZSAiNSIpew0KKyAJCVByb2Nlc3NIaXN0b3J5KCJVU0VSIiwia2V5 c29ydCIsIiQxIiwiIXVzZXJuYW1lICQxJDIgcGFzc3dvcmQgPHJlbW92ZWQ+ XG4iKTsNCisgCSAgICB9IGVsc2Ugew0KKyAJCVByb2Nlc3NIaXN0b3J5KCJV U0VSIiwia2V5c29ydCIsIiQxIiwiJF8iKTsNCisgCSAgICB9DQorIAkgICAg bmV4dDsNCisgCX0NCisgCWlmICgvXihccyopcGFzc3dvcmQgLyAmJiAkZmls dGVyX3B3ZHMgPj0gMSkgew0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJMSU5F LVBBU1MiLCIiLCIiLCIhJDFwYXNzd29yZCA8cmVtb3ZlZD5cbiIpOw0KKyAJ ICAgIG5leHQ7DQorIAl9DQorIAlpZiAoL15ccypuZWlnaGJvciAoXFMqKSBw YXNzd29yZCAvICYmICRmaWx0ZXJfcHdkcyA+PSAxKSB7DQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIiIsIiIsIiIsIiEgbmVpZ2hib3IgJDEgcGFzc3dvcmQg PHJlbW92ZWQ+XG4iKTsNCisgCSAgICBuZXh0Ow0KKyAJfQ0KKyAJaWYgKC9e KHBwcCAuKiBwYXNzd29yZCkgNyAuKi8gJiYgJGZpbHRlcl9wd2RzID49IDEp IHsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiIiwiIiwiIiwiISQxIDxyZW1v dmVkPlxuIik7IG5leHQ7DQorIAl9DQorIAlpZiAoL14oaXAgZnRwIHBhc3N3 b3JkKSAvICYmICRmaWx0ZXJfcHdkcyA+PSAxKSB7DQorIAkgICAgUHJvY2Vz c0hpc3RvcnkoIiIsIiIsIiIsIiEkMSA8cmVtb3ZlZD5cbiIpOyBuZXh0Ow0K KyAJfQ0KKyAJaWYgKC9eKCBpcCBvc3BmIGF1dGhlbnRpY2F0aW9uLWtleSkg LyAmJiAkZmlsdGVyX3B3ZHMgPj0gMSkgew0KKyAJICAgIFByb2Nlc3NIaXN0 b3J5KCIiLCIiLCIiLCIhJDEgPHJlbW92ZWQ+XG4iKTsgbmV4dDsNCisgCX0N CisgCSMgdGhpcyBpcyByZXZlcnNhYmxlLCBkZXNwaXRlICdtZDUnIGluIHRo ZSBjbWQNCisgCWlmICgvXiggaXAgb3NwZiBtZXNzYWdlLWRpZ2VzdC1rZXkg XGQrIG1kNSkgLyAmJiAkZmlsdGVyX3B3ZHMgPj0gMSkgew0KKyAJICAgIFBy b2Nlc3NIaXN0b3J5KCIiLCIiLCIiLCIhJDEgPHJlbW92ZWQ+XG4iKTsgbmV4 dDsNCisgCX0NCisgCWlmICgvXigoY3J5cHRvICk/aXNha21wIGtleSkgXFMr IC8gJiYgJGZpbHRlcl9wd2RzID49IDEpIHsNCisgCSAgICBQcm9jZXNzSGlz dG9yeSgiIiwiIiwiIiwiISQxIDxyZW1vdmVkPiAkJyIpOyBuZXh0Ow0KKyAJ fQ0KKyAJIyBpIGFtIHRvbGQgdGhlc2UgYXJlIHBsYWluLXRleHQgb24gdGhl IFBJWA0KKyAJaWYgKC9eKHZwZG4gdXNlcm5hbWUgXFMrIHBhc3N3b3JkKS8g JiYgJGZpbHRlcl9wd2RzID49IDEpIHsNCisgCSAgICBQcm9jZXNzSGlzdG9y eSgiIiwiIiwiIiwiISQxIDxyZW1vdmVkPlxuIik7IG5leHQ7DQorIAl9DQor IAkvZmFpci1xdWV1ZSBpbmRpdmlkdWFsLWxpbWl0LyAmJiBuZXh0Ow0KKyAJ IyBzb3J0IGlwIGV4cGxpY2l0LXBhdGhzLg0KKyAJaWYgKC9eaXAgZXhwbGlj aXQtcGF0aCBuYW1lIChcUyspLykgew0KKyAJICAgIG15KCRrZXkpID0gJDE7 DQorIAkgICAgbXkoJGV4cGF0aCkgPSAkXzsNCisgCSAgICB3aGlsZSAoPElO UFVUPikgew0KKyAJCXRyL1wwMTUvL2Q7DQorIAkJbGFzdCBpZiAoL14kcHJv bXB0Lyk7DQorIAkJbGFzdCBpZiAoL14kcHJvbXB0LyB8fCAhIC9eKGlwIGV4 cGxpY2l0LXBhdGggbmFtZSB8WyAhXSkvKTsNCisgCQlpZiAoL15pcCBleHBs aWNpdC1wYXRoIG5hbWUgKFxTKykvKSB7DQorIAkJICAgIFByb2Nlc3NIaXN0 b3J5KCJFWFBBVEgiLCJrZXlzb3J0IiwiJGtleSIsIiRleHBhdGgiKTsNCisg CQkgICAgJGtleSA9ICQxOw0KKyAJCSAgICAkZXhwYXRoID0gJF87DQorIAkJ fSBlbHNlICB7DQorIAkJICAgICRleHBhdGggLj0gJF87DQorIAkJfQ0KKyAJ ICAgIH0NCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiRVhQQVRIIiwia2V5c29y dCIsIiRrZXkiLCIkZXhwYXRoIik7DQorIAl9DQorIAkjIHNvcnQgcm91dGUt bWFwcw0KKyAJaWYgKC9ecm91dGUtbWFwIChcUyspLykgew0KKyAJICAgIG15 KCRrZXkpID0gJDE7DQorIAkgICAgbXkoJHJvdXRlbWFwKSA9ICRfOw0KKyAJ ICAgIHdoaWxlICg8SU5QVVQ+KSB7DQorIAkJdHIvXDAxNS8vZDsNCisgCQls YXN0IGlmICgvXiRwcm9tcHQvIHx8ICEgL14ocm91dGUtbWFwIHxbICFdKS8p Ow0KKyAJCWlmICgvXnJvdXRlLW1hcCAoXFMrKS8pIHsNCisgCQkgICAgUHJv Y2Vzc0hpc3RvcnkoIlJPVVRFTUFQIiwia2V5c29ydCIsIiRrZXkiLCIkcm91 dGVtYXAiKTsNCisgCQkgICAgJGtleSA9ICQxOw0KKyAJCSAgICAkcm91dGVt YXAgPSAkXzsNCisgCQl9IGVsc2UgIHsNCisgCQkgICAgJHJvdXRlbWFwIC49 ICRfOw0KKyAJCX0NCisgCSAgICB9DQorIAkgICAgUHJvY2Vzc0hpc3Rvcnko IlJPVVRFTUFQIiwia2V5c29ydCIsIiRrZXkiLCIkcm91dGVtYXAiKTsNCisg CX0NCisgCSMgZmlsdGVyIG91dCBhbnkgUkNTL0NWUyB0YWdzIHRvIGF2b2lk IGNvbmZ1c2luZyBsb2NhbCBDVlMgc3RvcmFnZQ0KKyAJcy9cJChSZXZpc2lv bnxJZCk6LyAkMTovOw0KKyAJIyBvcmRlciBhY2Nlc3MtbGlzdHMNCisgCS9e YWNjZXNzLWxpc3RccysoXGRcZD8pXHMrKFxTKylccysoXFMrKS8gJiYNCisg CSAgICBQcm9jZXNzSGlzdG9yeSgiQUNMICQxICQyIiwiaXBzb3J0IiwiJDMi LCIkXyIpICYmIG5leHQ7DQorIAkjIG9yZGVyIGV4dGVuZGVkIGFjY2Vzcy1s aXN0cw0KKyAJL15hY2Nlc3MtbGlzdFxzKyhcZFxkXGQpXHMrKFxTKylccytp cFxzK2hvc3RccysoXFMrKS8gJiYNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgi RUFDTCAkMSAkMiIsImlwc29ydCIsIiQzIiwiJF8iKSAmJiBuZXh0Ow0KKyAJ L15hY2Nlc3MtbGlzdFxzKyhcZFxkXGQpXHMrKFxTKylccytpcFxzKyhcZFxT KykvICYmDQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIkVBQ0wgJDEgJDIiLCJp cHNvcnQiLCIkMyIsIiRfIikgJiYgbmV4dDsNCisgCS9eYWNjZXNzLWxpc3Rc cysoXGRcZFxkKVxzKyhcUyspXHMraXBccythbnkvICYmDQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIkVBQ0wgJDEgJDIiLCJpcHNvcnQiLCIwLjAuMC4wIiwi JF8iKSAmJiBuZXh0Ow0KKyAJIyBvcmRlciBhcnAgbGlzdHMNCisgCS9eYXJw XHMrKFxkK1wuXGQrXC5cZCtcLlxkKylccysvICYmDQorIAkgICAgUHJvY2Vz c0hpc3RvcnkoIkFSUCIsImlwc29ydCIsIiQxIiwiJF8iKSAmJiBuZXh0Ow0K KyAJL15pcCBwcmVmaXgtbGlzdFxzKyhcUyspXHMrc2VxXHMrKFxkKylccyso cGVybWl0fGRlbnkpXHMrKFxkXFMrKShcLy4qKSQvICYmDQorIAkgICAgUHJv Y2Vzc0hpc3RvcnkoIlBBQ0wgJDEgJDMiLCJpcHNvcnQiLCIkNCIsImlwIHBy ZWZpeC1saXN0ICQxICQzICQ0JDVcbiIpDQorIAkgICAgJiYgbmV4dDsNCisg CSMgb3JkZXIgbG9nZ2luZyBzdGF0ZW1lbnRzDQorIAkvXmxvZ2dpbmcgKFxk K1wuXGQrXC5cZCtcLlxkKykvICYmDQorIAkgICAgUHJvY2Vzc0hpc3Rvcnko IkxPR0dJTkciLCJpcHNvcnQiLCIkMSIsIiRfIikgJiYgbmV4dDsNCisgCSMg b3JkZXIvcHJ1bmUgc25tcC1zZXJ2ZXIgaG9zdCBzdGF0ZW1lbnRzDQorIAkj IHdlIG9ubHkgcHJ1bmUgbGluZXMgb2YgdGhlIGZvcm0NCisgCSMgc25tcC1z ZXJ2ZXIgaG9zdCBhLmIuYy5kIDxjb21tdW5pdHk+DQorIAlpZiAoL15zbm1w LXNlcnZlciBob3N0IChcZCtcLlxkK1wuXGQrXC5cZCspIC8pIHsNCisgCSAg ICBpZiAoZGVmaW5lZCgkRU5WeydOT0NPTU1TVFInfSkpIHsNCisgCQlteSgk aXApID0gJDE7DQorIAkJbXkoJGxpbmUpID0gInNubXAtc2VydmVyIGhvc3Qg JGlwIjsNCisgCQlteShAdG9rZW5zKSA9IHNwbGl0KCcgJywgJCcpOw0KKyAJ CW15KCR0b2tlbik7DQorIAkJd2hpbGUgKCR0b2tlbiA9IHNoaWZ0KEB0b2tl bnMpKSB7DQorIAkJICAgIGlmICgkdG9rZW4gZXEgJ3ZlcnNpb24nKSB7DQor IAkJCSRsaW5lIC49ICIgIiAuIGpvaW4oJyAnLCAoJHRva2VuLCBzaGlmdChA dG9rZW5zKSkpOw0KKyAJCSAgICB9IGVsc2lmICgkdG9rZW4gPX4gL14oaW5m b3Jtcz98dHJhcHM/fChubyk/YXV0aCkkLykgew0KKyAJCQkkbGluZSAuPSAi ICIgLiAkdG9rZW47DQorIAkJICAgIH0gZWxzZSB7DQorIAkJCSRsaW5lID0g IiEkbGluZSAiIC4gam9pbignICcsICgiPHJlbW92ZWQ+Iiwgam9pbignICcs QHRva2VucykpKTsNCisgCQkJbGFzdDsNCisgCQkgICAgfQ0KKyAJCX0NCisg CQlQcm9jZXNzSGlzdG9yeSgiU05NUFNFUlZFUkhPU1QiLCJpcHNvcnQiLCIk aXAiLCIkbGluZVxuIik7DQorIAkgICAgfSBlbHNlIHsNCisgCQlQcm9jZXNz SGlzdG9yeSgiU05NUFNFUlZFUkhPU1QiLCJpcHNvcnQiLCIkMSIsIiRfIik7 DQorIAkgICAgfQ0KKyAJICAgIG5leHQ7DQorIAl9DQorIAlpZiAoL14oc25t cC1zZXJ2ZXIgY29tbXVuaXR5KSAoXFMrKS8pIHsNCisgCSAgICBpZiAoZGVm aW5lZCgkRU5WeydOT0NPTU1TVFInfSkpIHsNCisgCQlQcm9jZXNzSGlzdG9y eSgiU05NUFNFUlZFUkNPTU0iLCJrZXlzb3J0IiwiJF8iLCIhJDEgPHJlbW92 ZWQ+JCciKSAmJiBuZXh0Ow0KKyAJICAgIH0gZWxzZSB7DQorIAkJUHJvY2Vz c0hpc3RvcnkoIlNOTVBTRVJWRVJDT01NIiwia2V5c29ydCIsIiRfIiwiJF8i KSAmJiBuZXh0Ow0KKyAJICAgIH0NCisgCX0NCisgCSMgb3JkZXIvcHJ1bmUg dGFjYWNzL3JhZGl1cyBzZXJ2ZXIgc3RhdGVtZW50cw0KKyAJaWYgKC9eKHRh Y2Fjcy1zZXJ2ZXJ8cmFkaXVzLXNlcnZlcikga2V5IC8gJiYgJGZpbHRlcl9w d2RzID49IDEpIHsNCisgCSAgICBQcm9jZXNzSGlzdG9yeSgiIiwiIiwiIiwi ISQxIGtleSA8cmVtb3ZlZD5cbiIpOyBuZXh0Ow0KKyAJfQ0KKyAJIyBvcmRl ciBjbG5zIGhvc3Qgc3RhdGVtZW50cw0KKyAJL15jbG5zIGhvc3QgXFMrIChc UyspLyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJDTE5TIiwia2V5c29y dCIsIiQxIiwiJF8iKSAmJiBuZXh0Ow0KKyAJIyBvcmRlciBhbGlhcyBzdGF0 ZW1lbnRzDQorIAkvXmFsaWFzIC8gJiYgUHJvY2Vzc0hpc3RvcnkoIkFMSUFT Iiwia2V5c29ydCIsIiRfIiwiJF8iKSAmJiBuZXh0Ow0KKyAJIyBkZWxldGUg bnRwIGF1dGggcGFzc3dvcmQgLSB0aGlzIG1kNSBpcyBhIHJldmVyc2FibGUg dG9vDQorIAlpZiAoL14obnRwIGF1dGhlbnRpY2F0aW9uLWtleSBcZCsgbWQ1 KSAvICYmICRmaWx0ZXJfcHdkcyA+PSAxKSB7DQorIAkgICAgUHJvY2Vzc0hp c3RvcnkoIiIsIiIsIiIsIiEkMSA8cmVtb3ZlZD5cbiIpOyBuZXh0Ow0KKyAJ fQ0KKyAJIyBvcmRlciBudHAgcGVlcnMvc2VydmVycw0KKyAJaWYgKC9ebnRw IChzZXJ2ZXJ8cGVlcikgKFxkKylcLihcZCspXC4oXGQrKVwuKFxkKykvKSB7 DQorIAkgICAgJHNvcnRrZXkgPSBzcHJpbnRmKCIkMSAlMDNkJTAzZCUwM2Ql MDNkIiwkMiwkMywkNCwkNSk7DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIk5U UCIsImtleXNvcnQiLCRzb3J0a2V5LCIkXyIpOw0KKyAJICAgIG5leHQ7DQor IAl9DQorIAkjIG9yZGVyIGlwIGhvc3QgbGluZSBzdGF0ZW1lbnRzDQorIAkv XmlwIGhvc3QgbGluZShcZCspLyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5 KCJJUEhPU1QiLCJudW1zb3J0IiwiJDEiLCIkXyIpICYmIG5leHQ7DQorIAkj IG9yZGVyIGlwIG5hdCBzb3VyY2Ugc3RhdGljIHN0YXRlbWVudHMNCisgCS9e aXAgbmF0IChcUyspIHNvdXJjZSBzdGF0aWMgKFxTKykvICYmDQorIAkgICAg UHJvY2Vzc0hpc3RvcnkoIklQIE5BVCAkMSIsImlwc29ydCIsIiQyIiwiJF8i KSAmJiBuZXh0Ow0KKyAJIyBvcmRlciBhdG0gbWFwLWxpc3Qgc3RhdGVtZW50 cw0KKyAJL15ccytpcFxzKyhcZCtcLlxkK1wuXGQrXC5cZCspXHMrYXRtLXZj LyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCJBVE0gbWFwLWxpc3QiLCJp cHNvcnQiLCIkMSIsIiRfIikgJiYgbmV4dDsNCisgCSMgb3JkZXIgaXAgcmNt ZCBsaW5lcw0KKyAJL15pcCByY21kLyAmJiBQcm9jZXNzSGlzdG9yeSgiUkNN RCIsImtleXNvcnQiLCIkXyIsIiRfIikgJiYgbmV4dDsNCisgDQorIAkjIHN5 c3RlbSBjb250cm9sbGVyDQorIAkvXnN5c2NvbiBhZGRyZXNzIChcUyopIChc UyopLyAmJg0KKyAJICAgIFByb2Nlc3NIaXN0b3J5KCIiLCIiLCIiLCIhc3lz Y29uIGFkZHJlc3MgJDEgPHJlbW92ZWQ+XG4iKSAmJg0KKyAJICAgIG5leHQ7 DQorIAlpZiAoL15zeXNjb24gcGFzc3dvcmQgKFxTKikvICYmICRmaWx0ZXJf cHdkcyA+PSAxKSB7DQorIAkgICAgUHJvY2Vzc0hpc3RvcnkoIiIsIiIsIiIs IiFzeXNjb24gcGFzc3dvcmQgPHJlbW92ZWQ+XG4iKTsNCisgCSAgICBuZXh0 Ow0KKyAJfQ0KKyANCisgCSMgY2F0Y2ggYW55dGhpbmcgdGhhdCB3YXNudCBt YXRjaGVkIGFib3ZlLg0KKyAJUHJvY2Vzc0hpc3RvcnkoIiIsIiIsIiIsIiRf Iik7DQorIAkjIGVuZCBvZiBjb25maWcuICB0aGUgIjogIiBnYW1lIGlzIGZv ciB0aGUgUElYDQorIAlpZiAoL14oOiArKT9lbmQkLykgew0KKyAJICAgICRm b3VuZF9lbmQgPSAxOw0KKyAJICAgIHJldHVybigxKTsNCisgCX0NCisgICAg IH0NCisgICAgIHJldHVybigwKTsNCisgfQ0KKyANCisgIyBkdW1teSBmdW5j dGlvbg0KKyBzdWIgRG9Ob3RoaW5nIHtwcmludCBTVERPVVQ7fQ0KKyANCisg IyBNYWluDQorICVjb21tYW5kcz0oDQorIAknc2hvdyB2ZXJzaW9uJwkJPT4g IlNob3dWZXJzaW9uIiwNCisgCSdzaG93IGluc3RhbGwgYWN0aXZlJwk9PiAi U2hvd0luc3RhbGxBY3RpdmUiLA0KKyAJJ3Nob3cgZW52IGFsbCcJCT0+ICJT aG93RW52IiwNCisgCSdzaG93IGdzciBjaGFzc2lzJwk9PiAiU2hvd0dTUiIs DQorIAknc2hvdyBib290JwkJPT4gIlNob3dCb290IiwNCisgCSdzaG93IGJv b3R2YXInCQk9PiAiU2hvd0Jvb3QiLA0KKyAJJ3Nob3cgdmFyaWFibGVzIGJv b3QnCT0+ICJTaG93Qm9vdCIsDQorIAknc2hvdyBmbGFzaCcJCT0+ICJTaG93 Rmxhc2giLA0KKyAJJ2RpciAvYWxsIG52cmFtOicJPT4gIkRpclNsb3ROIiwN CisgCSdkaXIgL2FsbCBib290Zmxhc2g6Jwk9PiAiRGlyU2xvdE4iLA0KKyAJ J2RpciAvYWxsIHNsb3QwOicJPT4gIkRpclNsb3ROIiwNCisgCSdkaXIgL2Fs bCBkaXNrMDonCT0+ICJEaXJTbG90TiIsDQorIAknZGlyIC9hbGwgc2xvdDE6 Jwk9PiAiRGlyU2xvdE4iLA0KKyAJJ2RpciAvYWxsIGRpc2sxOicJPT4gIkRp clNsb3ROIiwNCisgCSdkaXIgL2FsbCBzbG90MjonCT0+ICJEaXJTbG90TiIs DQorIAknZGlyIC9hbGwgZGlzazI6Jwk9PiAiRGlyU2xvdE4iLA0KKyAJImRp ciAvYWxsIHN1cC1ib290Zmxhc2g6Ij0+ICJEaXJTbG90TiIsCQkjIGNhdCA2 NTAwLWlvcw0KKyAJImRpciAvYWxsIHN1cC1taWNyb2NvZGU6Ij0+ICJEaXJT bG90TiIsCQkjIGNhdCA2NTAwLWlvcw0KKyAJJ3Nob3cgY29udHJvbGxlcnMn CT0+ICJTaG93Q29udEFsbCIsDQorIAknc2hvdyBjb250cm9sbGVycyBjYnVz Jwk9PiAiU2hvd0NvbnRDYnVzIiwNCisgCSdzaG93IGRpYWdidXMnCQk9PiAi U2hvd0RpYWdidXMiLA0KKyAJJ3Nob3cgZGlhZycJCT0+ICJTaG93RGlhZyIs DQorIAknc2hvdyBtb2R1bGUnCQk9PiAiU2hvd01vZHVsZSIsCSMgY2F0IDY1 MDAtaW9zDQorIAknc2hvdyBjNzIwMCcJCT0+ICJTaG93QzcyMDAiLA0KKyAJ J3Nob3cgdnRwIHN0YXR1cycJPT4gIlNob3dWVFAiLA0KKyAJJ3Nob3cgdmxh bicJCT0+ICJTaG93VkxBTiIsDQorIAknc2hvdyBjb25maWcnCQk9PiAiV3Jp dGVUZXJtIg0KKyApOw0KKyAjIGtleXMoKSBkb2VzbnQgcmV0dXJuIHRoaW5n cyBpbiB0aGUgb3JkZXIgZW50ZXJlZCBhbmQgdGhlIG9yZGVyIG9mIHRoZQ0K KyAjIGNtZHMgaXMgaW1wb3J0YW50IChzaG93IHZlcnNpb24gZmlyc3QgYW5k IHdyaXRlIHRlcm0gbGFzdCkuIHBpdGENCisgQGNvbW1hbmRzPSgNCisgCSJz aG93IHZlcnNpb24iLA0KKyAJInNob3cgaW5zdGFsbCBhY3RpdmUiLA0KKyAJ InNob3cgZW52IGFsbCIsDQorIAkic2hvdyBnc3IgY2hhc3NpcyIsDQorIAki c2hvdyBib290IiwNCisgCSJzaG93IGJvb3R2YXIiLA0KKyAJInNob3cgdmFy aWFibGVzIGJvb3QiLA0KKyAJInNob3cgZmxhc2giLA0KKyAJImRpciAvYWxs IG52cmFtOiIsDQorIAkiZGlyIC9hbGwgYm9vdGZsYXNoOiIsDQorIAkiZGly IC9hbGwgc2xvdDA6IiwNCisgCSJkaXIgL2FsbCBkaXNrMDoiLA0KKyAJImRp ciAvYWxsIHNsb3QxOiIsDQorIAkiZGlyIC9hbGwgZGlzazE6IiwNCisgCSJk aXIgL2FsbCBzbG90MjoiLA0KKyAJImRpciAvYWxsIGRpc2syOiIsDQorIAki ZGlyIC9hbGwgc3VwLWJvb3RmbGFzaDoiLA0KKyAJImRpciAvYWxsIHN1cC1t aWNyb2NvZGU6IiwNCisgCSJzaG93IGNvbnRyb2xsZXJzIiwNCisgCSJzaG93 IGNvbnRyb2xsZXJzIGNidXMiLA0KKyAJInNob3cgZGlhZ2J1cyIsDQorIAki c2hvdyBkaWFnIiwNCisgCSJzaG93IG1vZHVsZSIsDQorIAkic2hvdyBjNzIw MCIsDQorIAkic2hvdyB2dHAgc3RhdHVzIiwNCisgCSJzaG93IHZsYW4iLA0K KyAJInNob3cgY29uZmlnIg0KKyApOw0KKyAkY2lzY29fY21kcz1qb2luKCI7 IixAY29tbWFuZHMpOw0KKyAkY21kc19yZWdleHA9am9pbigifCIsQGNvbW1h bmRzKTsNCisgDQorIG9wZW4oT1VUUFVULCI+JGhvc3QubmV3IikgfHwgZGll ICJDYW4ndCBvcGVuICRob3N0Lm5ldyBmb3Igd3JpdGluZzogJCFcbiI7DQor IHNlbGVjdChPVVRQVVQpOw0KKyAjIG1ha2UgT1VUUFVUIHVuYnVmZmVyZWQg aWYgZGVidWdnaW5nDQorIGlmICgkZGVidWcpIHsgJHwgPSAxOyB9DQorIA0K KyBpZiAoJGZpbGUpIHsNCisgICAgIHByaW50IFNUREVSUiAib3BlbmluZyBm aWxlICRob3N0XG4iIGlmICgkZGVidWcpOw0KKyAgICAgcHJpbnQgU1RET1VU ICJvcGVuaW5nIGZpbGUgJGhvc3RcbiIgaWYgKCRsb2cpOw0KKyAgICAgb3Bl bihJTlBVVCwiPCRob3N0IikgfHwgZGllICJvcGVuIGZhaWxlZCBmb3IgJGhv c3Q6ICQhXG4iOw0KKyB9IGVsc2Ugew0KKyAgICAgcHJpbnQgU1RERVJSICJl eGVjdXRpbmcgY2xvZ2luIC10ICR0aW1lbyAtY1wiJGNpc2NvX2NtZHNcIiAk aG9zdFxuIiBpZiAoJGRlYnVnKTsNCisgICAgIHByaW50IFNURE9VVCAiZXhl Y3V0aW5nIGNsb2dpbiAtdCAkdGltZW8gLWNcIiRjaXNjb19jbWRzXCIgJGhv c3RcbiIgaWYgKCRsb2cpOw0KKyAgICAgaWYgKGRlZmluZWQoJEVOVntOT1BJ UEV9KSkgew0KKyAJc3lzdGVtICJjbG9naW4gLXQgJHRpbWVvIC1jIFwiJGNp c2NvX2NtZHNcIiAkaG9zdCA8L2Rldi9udWxsID4gJGhvc3QucmF3IDI+JjEi IHx8IGRpZSAiY2xvZ2luIGZhaWxlZCBmb3IgJGhvc3Q6ICQhXG4iOw0KKyAJ b3BlbihJTlBVVCwgIjwgJGhvc3QucmF3IikgfHwgZGllICJjbG9naW4gZmFp bGVkIGZvciAkaG9zdDogJCFcbiI7DQorICAgICB9IGVsc2Ugew0KKyAJb3Bl bihJTlBVVCwiY2xvZ2luIC10ICR0aW1lbyAtYyBcIiRjaXNjb19jbWRzXCIg JGhvc3QgPC9kZXYvbnVsbCB8IikgfHwgZGllICJjbG9naW4gZmFpbGVkIGZv ciAkaG9zdDogJCFcbiI7DQorICAgICB9DQorIH0NCisgDQorICMgZGV0ZXJt aW5lIHBhc3N3b3JkIGZpbHRlcmluZyBtb2RlDQorIGlmICgkRU5WeyJGSUxU RVJfUFdEUyJ9ID1+IC9uby9pKSB7ICANCisgCSRmaWx0ZXJfcHdkcyA9IDA7 DQorIH0gZWxzaWYgKCRFTlZ7IkZJTFRFUl9QV0RTIn0gPX4gL2FsbC9pKSB7 DQorIAkkZmlsdGVyX3B3ZHMgPSAyOw0KKyB9IGVsc2Ugew0KKyAJJGZpbHRl cl9wd2RzID0gMTsNCisgfQ0KKyANCisgUHJvY2Vzc0hpc3RvcnkoIiIsIiIs IiIsIiFSQU5DSUQtQ09OVEVOVC1UWVBFOiBjaXNjb1xuIVxuIik7DQorIFBy b2Nlc3NIaXN0b3J5KCJDT01NRU5UUyIsImtleXNvcnQiLCJCMCIsIiFcbiIp Ow0KKyBQcm9jZXNzSGlzdG9yeSgiQ09NTUVOVFMiLCJrZXlzb3J0IiwiRjAi LCIhXG4iKTsNCisgUHJvY2Vzc0hpc3RvcnkoIkNPTU1FTlRTIiwia2V5c29y dCIsIkcwIiwiIVxuIik7DQorIFRPUDogd2hpbGUoPElOUFVUPikgew0KKyAg ICAgdHIvXDAxNS8vZDsNCisgICAgIGlmICgvXCNccz9leGl0JC8pIHsNCisg CSRjbGVhbl9ydW49MTsNCisgCWxhc3Q7DQorICAgICB9DQorICAgICBpZiAo L15FcnJvcjovKSB7DQorIAlwcmludCBTVERPVVQgKCIkaG9zdCBjbG9naW4g ZXJyb3I6ICRfIik7DQorIAlwcmludCBTVERFUlIgKCIkaG9zdCBjbG9naW4g ZXJyb3I6ICRfIikgaWYgKCRkZWJ1Zyk7DQorIAkkY2xlYW5fcnVuPTA7DQor IAlsYXN0Ow0KKyAgICAgfQ0KKyAgICAgd2hpbGUgKC8jXHMqKCRjbWRzX3Jl Z2V4cClccyokLykgew0KKyAJJGNtZCA9ICQxOw0KKyAJaWYgKCFkZWZpbmVk KCRwcm9tcHQpKSB7JHByb21wdCA9ICgkXyA9fiAvXihbXiNdKyMpLylbMF07 IH0NCisgCXByaW50IFNUREVSUiAoIkhJVCBDT01NQU5EOiRfIikgaWYgKCRk ZWJ1Zyk7DQorIAlpZiAoISBkZWZpbmVkKCRjb21tYW5kc3skY21kfSkpIHsN CisgCSAgICBwcmludCBTVERFUlIgIiRob3N0OiBmb3VuZCB1bmV4cGVjdGVk IGNvbW1hbmQgLSBcIiRjbWRcIlxuIjsNCisgCSAgICAkY2xlYW5fcnVuID0g MDsNCisgCSAgICBsYXN0IFRPUDsNCisgCX0NCisgCSRydmFsID0gJnskY29t bWFuZHN7JGNtZH19Ow0KKyAJZGVsZXRlKCRjb21tYW5kc3skY21kfSk7DQor IAlpZiAoJHJ2YWwgPT0gLTEpIHsNCisgCSAgICAkY2xlYW5fcnVuID0gMDsN CisgCSAgICBsYXN0IFRPUDsNCisgCX0NCisgICAgIH0NCisgfQ0KKyBwcmlu dCBTVERPVVQgIkRvbmUgJGxvZ2luY21kOiAkX1xuIiBpZiAoJGxvZyk7DQor ICMgRmx1c2ggSGlzdG9yeQ0KKyBQcm9jZXNzSGlzdG9yeSgiIiwiIiwiIiwi Iik7DQorICMgQ2xlYW51cA0KKyBjbG9zZShJTlBVVCk7DQorIGNsb3NlKE9V VFBVVCk7DQorIA0KKyBpZiAoZGVmaW5lZCgkRU5We05PUElQRX0pKSB7DQor ICAgICB1bmxpbmsoIiRob3N0LnJhdyIpIGlmICghICRkZWJ1Zyk7DQorIH0N CisgDQorICMgY2hlY2sgZm9yIGNvbXBsZXRlbmVzcw0KKyBpZiAoc2NhbGFy KCVjb21tYW5kcykgfHwgISRjbGVhbl9ydW4gfHwgISRmb3VuZF9lbmQpIHsN CisgICAgIGlmIChzY2FsYXIoJWNvbW1hbmRzKSkgew0KKyAJcHJpbnRmKFNU RE9VVCAiJGhvc3Q6IG1pc3NlZCBjbWQocyk6ICVzXG4iLCBqb2luKCcsJywg a2V5cyglY29tbWFuZHMpKSk7DQorIAlwcmludGYoU1RERVJSICIkaG9zdDog bWlzc2VkIGNtZChzKTogJXNcbiIsIGpvaW4oJywnLCBrZXlzKCVjb21tYW5k cykpKSBpZiAoJGRlYnVnKTsNCisgICAgIH0NCisgICAgIGlmICghJGNsZWFu X3J1biB8fCAhJGZvdW5kX2VuZCkgew0KKyAJcHJpbnQgU1RET1VUICIkaG9z dDogRW5kIG9mIHJ1biBub3QgZm91bmRcbiI7DQorIAlwcmludCBTVERFUlIg IiRob3N0OiBFbmQgb2YgcnVuIG5vdCBmb3VuZFxuIiBpZiAoJGRlYnVnKTsN CisgCXN5c3RlbSgiL3Vzci9iaW4vdGFpbCAtMSAkaG9zdC5uZXciKTsNCisg ICAgIH0NCisgICAgIHVubGluayAiJGhvc3QubmV3IiBpZiAoISAkZGVidWcp Ow0KKyB9DQpkaWZmIC1yY04gcmFuY2lkLTIuMi4xLm9yaWcvYmluL3JhbmNp ZC1mZS5pbiByYW5jaWQtMi4yLjEvYmluL3JhbmNpZC1mZS5pbg0KKioqIHJh bmNpZC0yLjIuMS5vcmlnL2Jpbi9yYW5jaWQtZmUuaW4JRnJpIEZlYiAxNSAx ODozNTo1NiAyMDAyDQotLS0gcmFuY2lkLTIuMi4xL2Jpbi9yYW5jaWQtZmUu aW4JTW9uIEp1biAgMyAxNzo0NTo1MyAyMDAyDQoqKioqKioqKioqKioqKioN CioqKiAyOSwzNCAqKioqDQotLS0gMjksMzUgLS0tLQ0KICBlbHNpZiAoJHZl bmRvciA9fiAvXmJheW5ldCQvaSkJeyBleGVjKCdicmFuY2lkJywgJHJvdXRl cik7IH0NCiAgZWxzaWYgKCR2ZW5kb3IgPX4gL15jYXQ1JC9pKQl7IGV4ZWMo J2NhdDVyYW5jaWQnLCAkcm91dGVyKTsgfQ0KICBlbHNpZiAoJHZlbmRvciA9 fiAvXmNpc2NvJC9pKQl7IGV4ZWMoJ3JhbmNpZCcsICRyb3V0ZXIpOyB9DQor IGVsc2lmICgkdmVuZG9yID1+IC9ebWNpc2NvJC9pKQl7IGV4ZWMoJ21jcmFu Y2lkJywgJHJvdXRlcik7IH0NCiAgZWxzaWYgKCR2ZW5kb3IgPX4gL15leHRy ZW1lJC9pKQl7IGV4ZWMoJ3hyYW5jaWQnLCAkcm91dGVyKTsgfQ0KICBlbHNp ZiAoJHZlbmRvciA9fiAvXmV6dDMkL2kpCXsgZXhlYygnZXJhbmNpZCcsICRy b3V0ZXIpOyB9DQogIGVsc2lmICgkdmVuZG9yID1+IC9eZm9yY2UxMCQvaSkJ eyBleGVjKCdmMTByYW5jaWQnLCAkcm91dGVyKTsgfQ0KZGlmZiAtcmNOIHJh bmNpZC0yLjIuMS5vcmlnL2NvbmZpZ3VyZSByYW5jaWQtMi4yLjEvY29uZmln dXJlDQoqKiogcmFuY2lkLTIuMi4xLm9yaWcvY29uZmlndXJlCUZyaSBGZWIg MTUgMTg6Mzk6NDggMjAwMg0KLS0tIHJhbmNpZC0yLjIuMS9jb25maWd1cmUJ TW9uIEp1biAgMyAxODozNTozNiAyMDAyDQoqKioqKioqKioqKioqKioNCioq KiAyNTYwLDI1NjYgKioqKg0KICAjIFJEX0JJTl9QUk9HUyBhcmUgYmluLyAu aW4ncyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIHdpdGggZXhlY3V0ZSBw ZXJtcy4NCiAgUkRfQklOX1BST0dTPSJjYXQ1cmFuY2lkIGNvbnRyb2xfcmFu Y2lkIFwNCiAgYWxvZ2luIGFyYW5jaWQgY2xvZ2luIGNyZWF0ZV9jdnMgYmxv Z2luIGJyYW5jaWQgZG8tZGlmZnMgZWxvZ2luIGVyYW5jaWQgXA0KISBmMTBy YW5jaWQgZmxvZ2luIGZyYW5jaWQgamxvZ2luIGpyYW5jaWQgaGxvZ2luIGhy YW5jaWQgbXJhbmNpZCBwYXIgcmFuY2lkLWZlIFwNCiAgcmFuY2lkIHJlbmFt ZSBycmFuY2lkIHhyYW5jaWQiDQogIA0KICByZF9jdl9yZF9iaW5fcHJvZ3M9 JFJEX0JJTl9QUk9HUw0KLS0tIDI1NjAsMjU2NiAtLS0tDQogICMgUkRfQklO X1BST0dTIGFyZSBiaW4vIC5pbidzIHRoYXQgbmVlZCB0byBiZSBpbnN0YWxs ZWQgd2l0aCBleGVjdXRlIHBlcm1zLg0KICBSRF9CSU5fUFJPR1M9ImNhdDVy YW5jaWQgY29udHJvbF9yYW5jaWQgXA0KICBhbG9naW4gYXJhbmNpZCBjbG9n aW4gY3JlYXRlX2N2cyBibG9naW4gYnJhbmNpZCBkby1kaWZmcyBlbG9naW4g ZXJhbmNpZCBcDQohIGYxMHJhbmNpZCBmbG9naW4gZnJhbmNpZCBqbG9naW4g anJhbmNpZCBobG9naW4gaHJhbmNpZCBtcmFuY2lkIG1jcmFuY2lkIHBhciBy YW5jaWQtZmUgXA0KICByYW5jaWQgcmVuYW1lIHJyYW5jaWQgeHJhbmNpZCIN CiAgDQogIHJkX2N2X3JkX2Jpbl9wcm9ncz0kUkRfQklOX1BST0dTDQoqKioq KioqKioqKioqKioNCioqKiAzMTA3LDMxMTMgKioqKg0KICAJYmluL2Nsb2dp biBiaW4vY29udHJvbF9yYW5jaWQgYmluL2NyZWF0ZV9jdnMgYmluL2RvLWRp ZmZzIGJpbi9lbG9naW4gXA0KICAJYmluL2VudiBiaW4vZXJhbmNpZCBiaW4v ZjEwcmFuY2lkIGJpbi9mbG9naW4gYmluL2ZyYW5jaWQgYmluL2psb2dpbiBc DQogIAliaW4vanJhbmNpZCBiaW4vaGxvZ2luIFwNCiEgCWJpbi9ocmFuY2lk IGJpbi9tcmFuY2lkIGJpbi9wYXIgYmluL3JhbmNpZC1mZSBiaW4vcmFuY2lk IGJpbi9yZW5hbWUgXA0KICAJYmluL3JyYW5jaWQgYmluL3hyYW5jaWQgXA0K ICAJbWFuL01ha2VmaWxlIG1hbi9lbnYuNSBtYW4vbGcuY29uZi41IG1hbi9s Z19pbnRyby4xIFwNCiAgCWluY2x1ZGUvdmVyc2lvbi5oIFwNCi0tLSAzMTA3 LDMxMTMgLS0tLQ0KICAJYmluL2Nsb2dpbiBiaW4vY29udHJvbF9yYW5jaWQg YmluL2NyZWF0ZV9jdnMgYmluL2RvLWRpZmZzIGJpbi9lbG9naW4gXA0KICAJ YmluL2VudiBiaW4vZXJhbmNpZCBiaW4vZjEwcmFuY2lkIGJpbi9mbG9naW4g YmluL2ZyYW5jaWQgYmluL2psb2dpbiBcDQogIAliaW4vanJhbmNpZCBiaW4v aGxvZ2luIFwNCiEgCWJpbi9ocmFuY2lkIGJpbi9tcmFuY2lkIGJpbi9tY3Jh bmNpZCBiaW4vcGFyIGJpbi9yYW5jaWQtZmUgYmluL3JhbmNpZCBiaW4vcmVu YW1lIFwNCiAgCWJpbi9ycmFuY2lkIGJpbi94cmFuY2lkIFwNCiAgCW1hbi9N YWtlZmlsZSBtYW4vZW52LjUgbWFuL2xnLmNvbmYuNSBtYW4vbGdfaW50cm8u MSBcDQogIAlpbmNsdWRlL3ZlcnNpb24uaCBcDQoqKioqKioqKioqKioqKioN CioqKiAzMjM3LDMyNDMgKioqKg0KICAJYmluL2Nsb2dpbiBiaW4vY29udHJv bF9yYW5jaWQgYmluL2NyZWF0ZV9jdnMgYmluL2RvLWRpZmZzIGJpbi9lbG9n aW4gXA0KICAJYmluL2VudiBiaW4vZXJhbmNpZCBiaW4vZjEwcmFuY2lkIGJp bi9mbG9naW4gYmluL2ZyYW5jaWQgYmluL2psb2dpbiBcDQogIAliaW4vanJh bmNpZCBiaW4vaGxvZ2luIFwNCiEgCWJpbi9ocmFuY2lkIGJpbi9tcmFuY2lk IGJpbi9wYXIgYmluL3JhbmNpZC1mZSBiaW4vcmFuY2lkIGJpbi9yZW5hbWUg XA0KICAJYmluL3JyYW5jaWQgYmluL3hyYW5jaWQgXA0KICAJbWFuL01ha2Vm aWxlIG1hbi9lbnYuNSBtYW4vbGcuY29uZi41IG1hbi9sZ19pbnRyby4xIFwN CiAgCWluY2x1ZGUvdmVyc2lvbi5oIFwNCi0tLSAzMjM3LDMyNDMgLS0tLQ0K ICAJYmluL2Nsb2dpbiBiaW4vY29udHJvbF9yYW5jaWQgYmluL2NyZWF0ZV9j dnMgYmluL2RvLWRpZmZzIGJpbi9lbG9naW4gXA0KICAJYmluL2VudiBiaW4v ZXJhbmNpZCBiaW4vZjEwcmFuY2lkIGJpbi9mbG9naW4gYmluL2ZyYW5jaWQg YmluL2psb2dpbiBcDQogIAliaW4vanJhbmNpZCBiaW4vaGxvZ2luIFwNCiEg CWJpbi9ocmFuY2lkIGJpbi9tcmFuY2lkIGJpbi9tY3JhbmNpZCBiaW4vcGFy IGJpbi9yYW5jaWQtZmUgYmluL3JhbmNpZCBiaW4vcmVuYW1lIFwNCiAgCWJp bi9ycmFuY2lkIGJpbi94cmFuY2lkIFwNCiAgCW1hbi9NYWtlZmlsZSBtYW4v ZW52LjUgbWFuL2xnLmNvbmYuNSBtYW4vbGdfaW50cm8uMSBcDQogIAlpbmNs dWRlL3ZlcnNpb24uaCBcDQpkaWZmIC1yY04gcmFuY2lkLTIuMi4xLm9yaWcv Y29uZmlndXJlLmluIHJhbmNpZC0yLjIuMS9jb25maWd1cmUuaW4NCioqKiBy YW5jaWQtMi4yLjEub3JpZy9jb25maWd1cmUuaW4JRnJpIEZlYiAxNSAxODoz OTo0MCAyMDAyDQotLS0gcmFuY2lkLTIuMi4xL2NvbmZpZ3VyZS5pbglNb24g SnVuICAzIDE3OjQyOjU2IDIwMDINCioqKioqKioqKioqKioqKg0KKioqIDE3 NywxODQgKioqKg0KICAjIFJEX0JJTl9QUk9HUyBhcmUgYmluLyAuaW4ncyB0 aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIHdpdGggZXhlY3V0ZSBwZXJtcy4N CiAgUkRfQklOX1BST0dTPSJjYXQ1cmFuY2lkIGNvbnRyb2xfcmFuY2lkIFwN CiAgYWxvZ2luIGFyYW5jaWQgY2xvZ2luIGNyZWF0ZV9jdnMgYmxvZ2luIGJy YW5jaWQgZG8tZGlmZnMgZWxvZ2luIGVyYW5jaWQgXA0KISBmMTByYW5jaWQg ZmxvZ2luIGZyYW5jaWQgamxvZ2luIGpyYW5jaWQgaGxvZ2luIGhyYW5jaWQg bXJhbmNpZCBwYXIgcmFuY2lkLWZlIFwNCiEgcmFuY2lkIHJlbmFtZSBycmFu Y2lkIHhyYW5jaWQiDQogIEFDX1NVQlNUKFJEX0JJTl9QUk9HUykNCiAgcmRf Y3ZfcmRfYmluX3Byb2dzPSRSRF9CSU5fUFJPR1MNCiAgDQotLS0gMTc3LDE4 NCAtLS0tDQogICMgUkRfQklOX1BST0dTIGFyZSBiaW4vIC5pbidzIHRoYXQg bmVlZCB0byBiZSBpbnN0YWxsZWQgd2l0aCBleGVjdXRlIHBlcm1zLg0KICBS RF9CSU5fUFJPR1M9ImNhdDVyYW5jaWQgY29udHJvbF9yYW5jaWQgXA0KICBh bG9naW4gYXJhbmNpZCBjbG9naW4gY3JlYXRlX2N2cyBibG9naW4gYnJhbmNp ZCBkby1kaWZmcyBlbG9naW4gZXJhbmNpZCBcDQohIGYxMHJhbmNpZCBmbG9n aW4gZnJhbmNpZCBqbG9naW4ganJhbmNpZCBobG9naW4gaHJhbmNpZCBtY3Jh bmNpZCBtcmFuY2lkIFwNCiEgcGFyIHJhbmNpZC1mZSByYW5jaWQgcmVuYW1l IHJyYW5jaWQgeHJhbmNpZCINCiAgQUNfU1VCU1QoUkRfQklOX1BST0dTKQ0K ICByZF9jdl9yZF9iaW5fcHJvZ3M9JFJEX0JJTl9QUk9HUw0KICANCioqKioq KioqKioqKioqKg0KKioqIDIzNywyNDQgKioqKg0KICAJYmluL2Fsb2dpbiBi aW4vYXJhbmNpZCBiaW4vYmxvZ2luIGJpbi9icmFuY2lkIGJpbi9jYXQ1cmFu Y2lkIFwNCiAgCWJpbi9jbG9naW4gYmluL2NvbnRyb2xfcmFuY2lkIGJpbi9j cmVhdGVfY3ZzIGJpbi9kby1kaWZmcyBiaW4vZWxvZ2luIFwNCiAgCWJpbi9l bnYgYmluL2VyYW5jaWQgYmluL2YxMHJhbmNpZCBiaW4vZmxvZ2luIGJpbi9m cmFuY2lkIGJpbi9qbG9naW4gXA0KISAJYmluL2pyYW5jaWQgYmluL2hsb2dp biBcDQohIAliaW4vaHJhbmNpZCBiaW4vbXJhbmNpZCBiaW4vcGFyIGJpbi9y YW5jaWQtZmUgYmluL3JhbmNpZCBiaW4vcmVuYW1lIFwNCiAgCWJpbi9ycmFu Y2lkIGJpbi94cmFuY2lkIFwNCiAgCW1hbi9NYWtlZmlsZSBtYW4vZW52LjUg bWFuL2xnLmNvbmYuNSBtYW4vbGdfaW50cm8uMSBcDQogIAlpbmNsdWRlL3Zl cnNpb24uaCBcDQotLS0gMjM3LDI0NCAtLS0tDQogIAliaW4vYWxvZ2luIGJp bi9hcmFuY2lkIGJpbi9ibG9naW4gYmluL2JyYW5jaWQgYmluL2NhdDVyYW5j aWQgXA0KICAJYmluL2Nsb2dpbiBiaW4vY29udHJvbF9yYW5jaWQgYmluL2Ny ZWF0ZV9jdnMgYmluL2RvLWRpZmZzIGJpbi9lbG9naW4gXA0KICAJYmluL2Vu diBiaW4vZXJhbmNpZCBiaW4vZjEwcmFuY2lkIGJpbi9mbG9naW4gYmluL2Zy YW5jaWQgYmluL2psb2dpbiBcDQohIAliaW4vanJhbmNpZCBiaW4vaGxvZ2lu IGJpbi9ocmFuY2lkIGJpbi9tcmFuY2lkIGJpbi9tY3JhbmNpZCBcDQohIAli aW4vcGFyIGJpbi9yYW5jaWQtZmUgYmluL3JhbmNpZCBiaW4vcmVuYW1lIFwN CiAgCWJpbi9ycmFuY2lkIGJpbi94cmFuY2lkIFwNCiAgCW1hbi9NYWtlZmls ZSBtYW4vZW52LjUgbWFuL2xnLmNvbmYuNSBtYW4vbGdfaW50cm8uMSBcDQog IAlpbmNsdWRlL3ZlcnNpb24uaCBcDQpkaWZmIC1yY04gcmFuY2lkLTIuMi4x Lm9yaWcvaW5jbHVkZS9NYWtlZmlsZS5pbiByYW5jaWQtMi4yLjEvaW5jbHVk ZS9NYWtlZmlsZS5pbg0KKioqIHJhbmNpZC0yLjIuMS5vcmlnL2luY2x1ZGUv TWFrZWZpbGUuaW4JRnJpIE1heSAgMyAwMDowODowNSAyMDAyDQotLS0gcmFu Y2lkLTIuMi4xL2luY2x1ZGUvTWFrZWZpbGUuaW4JTW9uIEp1biAgMyAxODoz MjoyMiAyMDAyDQoqKioqKioqKioqKioqKioNCioqKiAxMTUsMTIzICoqKioN CiAgYWxsOiBhbGwtcmVkaXJlY3QNCiAgLlNVRkZJWEVTOg0KICAkKHNyY2Rp cikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgTWFrZWZp bGUuYW0gJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuaW4gJChBQ0xPQ0FMX000 KSANCiEgCWNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1mb3Jl aWduIC0taW5jbHVkZS1kZXBzIGluY2x1ZGUvTWFrZWZpbGUNCiAgDQohIE1h a2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gICQodG9wX2J1aWxkZGly KS9jb25maWcuc3RhdHVzDQogIAljZCAkKHRvcF9idWlsZGRpcikgXA0KICAJ ICAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJT PSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMNCiAgDQotLS0gMTE1LDEyMyAt LS0tDQogIGFsbDogYWxsLXJlZGlyZWN0DQogIC5TVUZGSVhFUzoNCiAgJChz cmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAIE1h a2VmaWxlLmFtICQodG9wX3NyY2RpcikvY29uZmlndXJlLmluICQoQUNMT0NB TF9NNCkgDQohIAljZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0t Zm9yZWlnbiBpbmNsdWRlL01ha2VmaWxlDQogIA0KISBNYWtlZmlsZTogJChz cmNkaXIpL01ha2VmaWxlLmluICAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0 YXR1cyAkKEJVSUxUX1NPVVJDRVMpDQogIAljZCAkKHRvcF9idWlsZGRpcikg XA0KICAJICAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19I RUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMNCiAgDQoqKioqKioq KioqKioqKioNCioqKiAxNzgsMTgzICoqKioNCi0tLSAxNzgsMTg4IC0tLS0N CiAgc3ViZGlyID0gaW5jbHVkZQ0KICANCiAgZGlzdGRpcjogJChESVNURklM RVMpDQorIAloZXJlPWBjZCAkKHRvcF9idWlsZGRpcikgJiYgcHdkYDsgXA0K KyAJdG9wX2Rpc3RkaXI9YGNkICQodG9wX2Rpc3RkaXIpICYmIHB3ZGA7IFwN CisgCWRpc3RkaXI9YGNkICQoZGlzdGRpcikgJiYgcHdkYDsgXA0KKyAJY2Qg JCh0b3Bfc3JjZGlyKSBcDQorIAkgICYmICQoQVVUT01BS0UpIC0taW5jbHVk ZS1kZXBzIC0tYnVpbGQtZGlyPSQkaGVyZSAtLXNyY2Rpci1uYW1lPSQodG9w X3NyY2RpcikgLS1vdXRwdXQtZGlyPSQkdG9wX2Rpc3RkaXIgLS1mb3JlaWdu IGluY2x1ZGUvTWFrZWZpbGUNCiAgCUBmb3IgZmlsZSBpbiAkKERJU1RGSUxF Uyk7IGRvIFwNCiAgCSAgZD0kKHNyY2Rpcik7IFwNCiAgCSAgaWYgdGVzdCAt ZCAkJGQvJCRmaWxlOyB0aGVuIFwNCmRpZmYgLXJjTiByYW5jaWQtMi4yLjEu b3JpZy9pbmNsdWRlL2NvbmZpZy5oIHJhbmNpZC0yLjIuMS9pbmNsdWRlL2Nv bmZpZy5oDQoqKiogcmFuY2lkLTIuMi4xLm9yaWcvaW5jbHVkZS9jb25maWcu aAlUaHUgTWF5ICAyIDIyOjM0OjE2IDIwMDINCi0tLSByYW5jaWQtMi4yLjEv aW5jbHVkZS9jb25maWcuaAlUaHUgSmFuICAxIDAxOjAwOjAwIDE5NzANCioq KioqKioqKioqKioqKg0KKioqIDEsMTc3ICoqKioNCi0gLyogaW5jbHVkZS9j b25maWcuaC4gIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3Vy ZS4gICovDQotIC8qIGluY2x1ZGUvY29uZmlnLmguaW4uICBHZW5lcmF0ZWQg YXV0b21hdGljYWxseSBmcm9tIGNvbmZpZ3VyZS5pbiBieSBhdXRvaGVhZGVy LiAgKi8NCi0gI2lmbmRlZiBDT05GSUdfSA0KLSAjZGVmaW5lIENPTkZJR19I ICAgICAgICAxDQotIA0KLSANCi0gLyogRGVmaW5lIHRvIGVtcHR5IGlmIHRo ZSBrZXl3b3JkIGRvZXMgbm90IHdvcmsuICAqLw0KLSAvKiAjdW5kZWYgY29u c3QgKi8NCi0gDQotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSAj IHN0cmluZ2l6aW5nIG9wZXJhdG9yIGluIGNwcC4gKi8NCi0gI2RlZmluZSBI QVZFX1NUUklOR0laRSAxDQotIA0KLSAvKiBEZWZpbmUgYXMgX19pbmxpbmUg aWYgdGhhdCdzIHdoYXQgdGhlIEMgY29tcGlsZXIgY2FsbHMgaXQuICAqLw0K LSAvKiAjdW5kZWYgaW5saW5lICovDQotIA0KLSAvKiBEZWZpbmUgYXMgdGhl IHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyAoaW50IG9yIHZvaWQp LiAgKi8NCi0gI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQNCi0gDQotIC8qIERl ZmluZSB0byBgdW5zaWduZWQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lc24ndCBk ZWZpbmUuICAqLw0KLSAvKiAjdW5kZWYgc2l6ZV90ICovDQotIA0KLSAvKiBE ZWZpbmUgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICAq Lw0KLSAjZGVmaW5lIFNURENfSEVBREVSUyAxDQotIA0KLSAvKiBEZWZpbmUg aWYgeW91IGhhdmUgdGhlIGJjb3B5IGZ1bmN0aW9uLiAgKi8NCi0gI2RlZmlu ZSBIQVZFX0JDT1BZIDENCi0gDQotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0 aGUgYnplcm8gZnVuY3Rpb24uICAqLw0KLSAjZGVmaW5lIEhBVkVfQlpFUk8g MQ0KLSANCi0gLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpbmRleCBmdW5j dGlvbi4gICovDQotICNkZWZpbmUgSEFWRV9JTkRFWCAxDQotIA0KLSAvKiBE ZWZpbmUgaWYgeW91IGhhdmUgdGhlIG1lbWNweSBmdW5jdGlvbi4gICovDQot ICNkZWZpbmUgSEFWRV9NRU1DUFkgMQ0KLSANCi0gLyogRGVmaW5lIGlmIHlv dSBoYXZlIHRoZSBtZW1tb3ZlIGZ1bmN0aW9uLiAgKi8NCi0gI2RlZmluZSBI QVZFX01FTU1PVkUgMQ0KLSANCi0gLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRo ZSBtZW1zZXQgZnVuY3Rpb24uICAqLw0KLSAjZGVmaW5lIEhBVkVfTUVNU0VU IDENCi0gDQotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcmluZGV4IGZ1 bmN0aW9uLiAgKi8NCi0gI2RlZmluZSBIQVZFX1JJTkRFWCAxDQotIA0KLSAv KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cmNociBmdW5jdGlvbi4gICov DQotICNkZWZpbmUgSEFWRV9TVFJDSFIgMQ0KLSANCi0gLyogRGVmaW5lIGlm IHlvdSBoYXZlIHRoZSBzdHJlcnJvciBmdW5jdGlvbi4gICovDQotICNkZWZp bmUgSEFWRV9TVFJFUlJPUiAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIHN0cnJjaHIgZnVuY3Rpb24uICAqLw0KLSAjZGVmaW5lIEhBVkVf U1RSUkNIUiAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0 cnJ0b2sgZnVuY3Rpb24uICAqLw0KLSAvKiAjdW5kZWYgSEFWRV9TVFJSVE9L ICovDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHN0cnN0ciBm dW5jdGlvbi4gICovDQotICNkZWZpbmUgSEFWRV9TVFJTVFIgMQ0KLSANCi0g LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzdHJ0b2sgZnVuY3Rpb24uICAq Lw0KLSAjZGVmaW5lIEhBVkVfU1RSVE9LIDENCi0gDQotIC8qIERlZmluZSBp ZiB5b3UgaGF2ZSB0aGUgPGVycm5vLmg+IGhlYWRlciBmaWxlLiAgKi8NCi0g I2RlZmluZSBIQVZFX0VSUk5PX0ggMQ0KLSANCi0gLyogRGVmaW5lIGlmIHlv dSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICAqLw0KLSAjZGVm aW5lIEhBVkVfRkNOVExfSCAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICAqLw0KLSAjZGVmaW5l IEhBVkVfTElNSVRTX0ggMQ0KLSANCi0gLyogRGVmaW5lIGlmIHlvdSBoYXZl IHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAgKi8NCi0gI2RlZmluZSBI QVZFX01FTU9SWV9IIDENCi0gDQotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0 aGUgPHNpZ2luZm8uaD4gaGVhZGVyIGZpbGUuICAqLw0KLSAvKiAjdW5kZWYg SEFWRV9TSUdJTkZPX0ggKi8NCi0gDQotIC8qIERlZmluZSBpZiB5b3UgaGF2 ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gICovDQotICNkZWZpbmUg SEFWRV9TVFJJTkdfSCAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUg dGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAgKi8NCi0gI2RlZmluZSBI QVZFX1NUUklOR1NfSCAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91IGhhdmUg dGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLw0KLSAjZGVmaW5l IEhBVkVfU1lTX1RZUEVTX0ggMQ0KLSANCi0gLyogRGVmaW5lIGlmIHlvdSBo YXZlIHRoZSA8c3lzL3dhaXQuaD4gaGVhZGVyIGZpbGUuICAqLw0KLSAjZGVm aW5lIEhBVkVfU1lTX1dBSVRfSCAxDQotIA0KLSAvKiBEZWZpbmUgaWYgeW91 IGhhdmUgdGhlIDxzeXNleGl0cy5oPiBoZWFkZXIgZmlsZS4gICovDQotICNk ZWZpbmUgSEFWRV9TWVNFWElUU19IIDENCi0gDQotIC8qIERlZmluZSBpZiB5 b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gICovDQotICNk ZWZpbmUgSEFWRV9VTklTVERfSCAxDQotIA0KLSAvKiBOYW1lIG9mIHBhY2th Z2UgKi8NCi0gI2RlZmluZSBQQUNLQUdFICJyYW5jaWQiDQotIA0KLSAvKiBW ZXJzaW9uIG51bWJlciBvZiBwYWNrYWdlICovDQotICNkZWZpbmUgVkVSU0lP TiAiMi4yLjEiDQotIA0KLSAvKiBEZWZpbmUgaWYgY29tcGlsZXIgaGFzIGZ1 bmN0aW9uIHByb3RvdHlwZXMgKi8NCi0gI2RlZmluZSBQUk9UT1RZUEVTIDEN Ci0gDQotIA0KLSAjaWZuZGVmIF9fUA0KLSAjIGlmIFNURENfSEVBREVSUw0K LSAjICBkZWZpbmUgX19QKGEpCWENCi0gIyBlbHNlDQotICMgIGRlZmluZSBf X1AoYSkJKCkNCi0gIyBlbmRpZg0KLSAjZW5kaWYNCi0gDQotICNkZWZpbmUg QlVGX1NaCQlMSU5FX01BWAkvKiAoaW5jcmVtZW50cyBvZikgc2l6ZSBvZiBi dWZzICovDQotIA0KLSAjaWYgSEFWRV9TVERMSUJfSA0KLSAjIGluY2x1ZGUg PHN0ZGxpYi5oPg0KLSAjZW5kaWYNCi0gDQotICNpZiBIQVZFX1VOSVNURF9I ICAgICAgIA0KLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPiAgICANCi0gIyBpbmNs dWRlIDxzeXMvdHlwZXMuaD4NCi0gI2VsaWYgSEFWRV9TWVNfVFlQRVNfSCAN Ci0gIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCi0gI2VuZGlmICANCi0gDQot ICNpZiBIQVZFX0VSUk5PX0gNCi0gIyBpbmNsdWRlIDxlcnJuby5oPg0KLSAj ZW5kaWYNCi0gZXh0ZXJuIGludAkJZXJybm87DQotIA0KLSAjaWYgSEFWRV9T VFJJTkdfSA0KLSAjIGluY2x1ZGUgPHN0cmluZy5oPiAgICANCi0gI2VuZGlm DQotICNpZiBIQVZFX1NUUklOR1NfSCAgICAgIA0KLSAjIGluY2x1ZGUgPHN0 cmluZ3MuaD4NCi0gI2VuZGlmIA0KLSANCi0gI2lmICEgSEFWRV9TVFJFUlJP Ug0KLSAjIGRlZmluZSBzdHJlcnJvcihuKQlzeXNfZXJybGlzdFtuXTsNCi0g I2VuZGlmDQotIA0KLSAjaWYgSEFWRV9TWVNfV0FJVF9IIA0KLSAjIGluY2x1 ZGUgPHN5cy93YWl0Lmg+DQotICNlbmRpZiAgDQotICNpZm5kZWYgV0VYSVRT VEFUVVMNCi0gIyBkZWZpbmUgV0VYSVRTVEFUVVMoc3RhdF92YWwpICgodW5z aWduZWQpKHN0YXRfdmFsKSA+PiA4KQ0KLSAjZW5kaWYNCi0gI2lmbmRlZiBX SUZFWElURUQNCi0gIyBkZWZpbmUgV0lGRVhJVEVEKHN0YXRfdmFsKSAoKChz dGF0X3ZhbCkgJiAyNTUpID09IDApDQotICNlbmRpZiAgDQotIA0KLSAjaWYg SEFWRV9NRU1TRVQNCi0gIyBkZWZpbmUgYnplcm8ocCxzKQltZW1zZXQocCwg MCwgcykNCi0gIyBkZWZpbmUgYmNvcHkocyxkLGwpCW1lbWNweShkLCBzLCBs KQ0KLSAjZW5kaWYNCi0gDQotICNpZiBIQVZFX0lOREVYICYmICEgSEFWRV9T VFJDSFINCi0gIyBkZWZpbmUgaW5kZXgocyxjKQlzdHJjaHIocyxjKQ0KLSAj ZW5kaWYNCi0gDQotICNpZiBIQVZFX1NZU0VYSVRTX0gNCi0gIyBpbmNsdWRl IDxzeXNleGl0cy5oPg0KLSAjZWxzZQ0KLSAJCQkJCS8qIG1pc3Npbmcgc3lz ZXhpdHMuaCAqLw0KLSAjIGRlZmluZSBFWF9PSwkJMA0KLSAjIGRlZmluZSBF WF9VU0FHRQk2NAkJLyogY29tbWFuZCBsaW5lIHVzYWdlIGVycm9yICovDQot ICMgZGVmaW5lIEVYX05PSU5QVVQJNjYJCS8qIGNhbm5vdCBvcGVuIGlucHV0 ICovDQotICMgZGVmaW5lIEVYX1RFTVBGQUlMCTc1CQkvKiB0ZW1wIGZhaWx1 cmUgKi8NCi0gIyBkZWZpbmUgRVhfT1NFUlIJNzEJCS8qIHN5c3RlbSBlcnJv ciAqLw0KLSAjIGRlZmluZSBFWF9DQU5UQ1JFQVQJNzMJCS8qIGNhbid0IGNy ZWF0ZSAodXNlcikgb3V0cHV0IGZpbGUgKi8NCi0gIyBkZWZpbmUgRVhfSU9F UlIJNzQJCS8qIGlucHV0L291dHB1dCBlcnJvciAqLw0KLSAjIGRlZmluZSBF WF9DT05GSUcJNzgJCS8qIGNvbmZpZ3VyYXRpb24gZXJyb3IgKi8NCi0gI2Vu ZGlmDQotIA0KLSAjZW5kaWYgLyogQ09ORklHX0ggKi8NCi0tLSAwIC0tLS0N CmRpZmYgLXJjTiByYW5jaWQtMi4yLjEub3JpZy9pbmNsdWRlL3ZlcnNpb24u aCByYW5jaWQtMi4yLjEvaW5jbHVkZS92ZXJzaW9uLmgNCioqKiByYW5jaWQt Mi4yLjEub3JpZy9pbmNsdWRlL3ZlcnNpb24uaAlUaHUgTWF5ICAyIDIyOjM0 OjE2IDIwMDINCi0tLSByYW5jaWQtMi4yLjEvaW5jbHVkZS92ZXJzaW9uLmgJ VGh1IEphbiAgMSAwMTowMDowMCAxOTcwDQoqKioqKioqKioqKioqKioNCioq KiAxLDkgKioqKg0KLSAjaWZuZGVmIFZFUlNJT05fSA0KLSANCi0gI2RlZmlu ZSBWRVJTSU9OX0gNCi0gDQotIC8qIHBrZyB2ZXJzaW9uICovDQotIGNoYXIg cGFja2FnZVtdID0gInJhbmNpZCI7DQotIGNoYXIgdmVyc2lvbltdID0gIjIu Mi4xIjsNCi0gDQotICNlbmRpZg0KLS0tIDAgLS0tLQ0K --0-1310549230-1023126260=:45383-- From owner-rancid-discuss@shrubbery.net Mon Jun 3 21:13:58 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g53LDvL17159 for ; Mon, 3 Jun 2002 21:13:58 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g53LD8K10285 for rancid-discuss-outgoing; Mon, 3 Jun 2002 21:13:08 GMT Received: from s102.rhcci.com (h209-17-135-35.gtconnect.net [209.17.135.35]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g53LD4T10281 for ; Mon, 3 Jun 2002 21:13:04 GMT X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 content-class: urn:content-classes:message Subject: Problem with Catalyst switches MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Date: Mon, 3 Jun 2002 14:12:16 -0700 Message-ID: <77F055FA968580429F4546414D8C10E705E329@s102.rhcci.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Problem with Catalyst switches Thread-Index: AcILQ1d9RECSEDo/Tw27in5jlgKzHw== From: "Dmitri Smirnov" To: Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by guelah.shrubbery.net id g53LD4T10282 Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk Hello, need a help with RANCID (2.2.1) and Catalyst switches (65XX) . I've put 6 switches in a separate group. 'cat5rancid -d IP' is working fine for each of them. 'do-diffs' running by cron is usually unable to collect configs from 1 or 2 switches (random, 5,6 times). After multiple attempts I'm getting a configuration. Log file has: Trying to get all of the configs. ===================================== Getting missed routers: round 1. ===================================== Getting missed routers: round 2. ===================================== Getting missed routers: round 3. ===================================== Getting missed routers: round 4. ! XX.XX.1.7 clogin error: Error: TIMEOUT reached XX.XX.1.7: missed cmd(s): show boot,dir slot0:,dir bootflash:,dir slot1:,dir sup -bootflash:,show module,write term,show version,show flash,show port ifindex,dir sup-microcode: XX.XX.1.7: End of run not found Anyway I could troubleshoot the problem? Dmitri Smirnov, SSCP Security Team From owner-rancid-discuss@shrubbery.net Tue Jun 4 16:54:19 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54GsJL13877 for ; Tue, 4 Jun 2002 16:54:19 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g54Gqxo28174 for rancid-discuss-outgoing; Tue, 4 Jun 2002 16:53:00 GMT Received: from mailhost2.reliant.com (201.RELIANT.COM [158.81.251.201]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54GquT28170 for ; Tue, 4 Jun 2002 16:52:56 GMT Received: from rriexcon01.services.reinternal.com (mailhost.NORAM.COM [10.51.107.25]) by mailhost2.reliant.com (Switch-2.2.0/Switch-2.2.0) with ESMTP id g54Gqng04226; Tue, 4 Jun 2002 11:52:49 -0500 (CDT) Received: from rriexmb02.services.reinternal.com ([10.48.101.89]) by rriexcon01.services.reinternal.com with Microsoft SMTPSVC(5.0.2195.3779); Tue, 4 Jun 2002 11:52:39 -0500 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 Subject: RE: Problem with Catalyst switches Date: Tue, 4 Jun 2002 11:52:38 -0500 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Problem with Catalyst switches Thread-Index: AcILQ1d9RECSEDo/Tw27in5jlgKzHwApGr9w From: "Zhang, Anchi" To: "Dmitri Smirnov" , X-OriginalArrivalTime: 04 Jun 2002 16:52:39.0000 (UTC) FILETIME=[3C31A580:01C20BE8] Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by guelah.shrubbery.net id g54GquT28171 Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk You don't happen to use ssh as your login method, do you? In my setup, Rancid has no problem using telnet but fails occasionally if it relies on ssh to reach cat5 devices. Anchi -----Original Message----- From: Dmitri Smirnov [mailto:Dmitri.Smirnov@roundheaven.com] Sent: Monday, June 03, 2002 4:12 PM To: rancid-discuss@shrubbery.net Subject: Problem with Catalyst switches Hello, need a help with RANCID (2.2.1) and Catalyst switches (65XX) . I've put 6 switches in a separate group. 'cat5rancid -d IP' is working fine for each of them. 'do-diffs' running by cron is usually unable to collect configs from 1 or 2 switches (random, 5,6 times). After multiple attempts I'm getting a configuration. Log file has: Trying to get all of the configs. ===================================== Getting missed routers: round 1. ===================================== Getting missed routers: round 2. ===================================== Getting missed routers: round 3. ===================================== Getting missed routers: round 4. ! XX.XX.1.7 clogin error: Error: TIMEOUT reached XX.XX.1.7: missed cmd(s): show boot,dir slot0:,dir bootflash:,dir slot1:,dir sup -bootflash:,show module,write term,show version,show flash,show port ifindex,dir sup-microcode: XX.XX.1.7: End of run not found Anyway I could troubleshoot the problem? Dmitri Smirnov, SSCP Security Team From owner-rancid-discuss@shrubbery.net Tue Jun 4 17:04:31 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54H4VL14078 for ; Tue, 4 Jun 2002 17:04:31 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g54H39T28223 for rancid-discuss-outgoing; Tue, 4 Jun 2002 17:03:09 GMT Received: from s102.rhcci.com (h209-17-135-35.gtconnect.net [209.17.135.35]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54H36T28219 for ; Tue, 4 Jun 2002 17:03:06 GMT X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 content-class: urn:content-classes:message Subject: RE: Problem with Catalyst switches MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Date: Tue, 4 Jun 2002 10:02:01 -0700 Message-ID: <77F055FA968580429F4546414D8C10E705CCE2@s102.rhcci.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Problem with Catalyst switches Thread-Index: AcILQ1d9RECSEDo/Tw27in5jlgKzHwApGr9wAABrpfA= From: "Dmitri Smirnov" To: "Zhang, Anchi" , Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by guelah.shrubbery.net id g54H37T28220 Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk Thank you Anchi, I'm using ssh as login method. Is it RANCID or CatOS problem? Is anyway to fix it without 'telnet'? Dmitri -----Original Message----- From: Zhang, Anchi [mailto:AZhang@reliant.com] Sent: Tuesday, June 04, 2002 9:53 AM To: Dmitri Smirnov; rancid-discuss@shrubbery.net Subject: RE: Problem with Catalyst switches You don't happen to use ssh as your login method, do you? In my setup, Rancid has no problem using telnet but fails occasionally if it relies on ssh to reach cat5 devices. Anchi -----Original Message----- From: Dmitri Smirnov [mailto:Dmitri.Smirnov@roundheaven.com] Sent: Monday, June 03, 2002 4:12 PM To: rancid-discuss@shrubbery.net Subject: Problem with Catalyst switches Hello, need a help with RANCID (2.2.1) and Catalyst switches (65XX) . I've put 6 switches in a separate group. 'cat5rancid -d IP' is working fine for each of them. 'do-diffs' running by cron is usually unable to collect configs from 1 or 2 switches (random, 5,6 times). After multiple attempts I'm getting a configuration. Log file has: Trying to get all of the configs. ===================================== Getting missed routers: round 1. ===================================== Getting missed routers: round 2. ===================================== Getting missed routers: round 3. ===================================== Getting missed routers: round 4. ! XX.XX.1.7 clogin error: Error: TIMEOUT reached XX.XX.1.7: missed cmd(s): show boot,dir slot0:,dir bootflash:,dir slot1:,dir sup -bootflash:,show module,write term,show version,show flash,show port ifindex,dir sup-microcode: XX.XX.1.7: End of run not found Anyway I could troubleshoot the problem? Dmitri Smirnov, SSCP Security Team From owner-rancid-discuss@shrubbery.net Tue Jun 4 17:18:07 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54HI7L14344 for ; Tue, 4 Jun 2002 17:18:07 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g54HGck28281 for rancid-discuss-outgoing; Tue, 4 Jun 2002 17:16:38 GMT Received: from tower.partan.com (tower.partan.com [198.6.255.248]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g54HGZT28276 for ; Tue, 4 Jun 2002 17:16:35 GMT Received: (from asp@localhost) by tower.partan.com (8.9.3/8.9.3) id NAA29290; Tue, 4 Jun 2002 13:16:25 -0400 (EDT) Date: Tue, 4 Jun 2002 13:16:25 -0400 From: Andrew Partan To: Dmitri Smirnov Cc: "Zhang, Anchi" , rancid-discuss@shrubbery.net Subject: Re: Problem with Catalyst switches Message-ID: <20020604131625.A29244@partan.com> References: <77F055FA968580429F4546414D8C10E705CCE2@s102.rhcci.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 1.0i In-Reply-To: <77F055FA968580429F4546414D8C10E705CCE2@s102.rhcci.com>; from Dmitri.Smirnov@roundheaven.com on Tue, Jun 04, 2002 at 10:02:01AM -0700 Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk On Tue, Jun 04, 2002 at 10:02:01AM -0700, Dmitri Smirnov wrote: > I'm using ssh as login method. > Is it RANCID or CatOS problem? Is anyway to fix it without 'telnet'? There seems to be bugs in ciscos where sometimes ssh just does not work; unclear why. If I see ssh not work, it usually does not work for just one or two of the 5 tries that rancid does per run. --asp From owner-rancid-discuss@shrubbery.net Thu Jun 6 10:43:12 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g56AhCL09438 for ; Thu, 6 Jun 2002 10:43:12 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g56AZAY12871 for rancid-discuss-outgoing; Thu, 6 Jun 2002 10:35:10 GMT Received: from ni.shrubbery.net (ni.shrubbery.net [198.58.5.4]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g56AZ5112867 for ; Thu, 6 Jun 2002 10:35:05 GMT Received: from carmel.ip.tiscali.net (carmel.ip.tiscali.net [213.200.88.197]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g56AbTL09333 for ; Thu, 6 Jun 2002 10:37:30 GMT Received: from shekinah.ip.tiscali.net [213.200.88.76] by carmel.ip.tiscali.net (Exim 3.35) with esmtp id 17FuZx-000Hut-00 for ; Thu, 06 Jun 2002 12:33:17 +0200 Received: from ako by shekinah.ip.tiscali.net with local (Exim 3.35 #1 id 17FuaD-0004jq-00 for ; Thu, 06 Jun 2002 12:33:33 +0200 Date: Thu, 6 Jun 2002 12:33:33 +0200 From: Alexander Koch To: rancid-discuss@shrubbery.net Subject: nph and Apache 1.3... Message-ID: <20020606103333.GA18183@shekinah.ip.tiscali.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i Organization: Tiscali International Network B.V. X-NCC-RegID: eu.nacnet Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk Hello. As I read the Apache docs it is now no longer necessary to have the nph- prefix and all that, but simply that the script itself flushes all output to the server and that's it. Has anyone of you gotten the rancid looking glass to behave like a nph script? We have just a normal Apache here, no mod_perl or any such thing and just setting '$|=1' in Perl certainly does not do the trick. Now if anyone has an idea that would be most welcome as my 'web times' are long forgotten, not doing much apache stuff lately... TIA Alexander -- Alexander Koch / ako4-ripe Network Engineer, Tiscali International Network Robert-Bosch-Strasse 32, D-63303 Dreieich, Germany Phone +49 6103 916 480, Fax +49 6103 916 464 From owner-rancid-discuss@shrubbery.net Fri Jun 28 22:47:24 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g5SMlO415967 for ; Fri, 28 Jun 2002 22:47:24 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMNWu23174 for rancid-discuss-outgoing; Fri, 28 Jun 2002 22:23:32 GMT Received: (from heas@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMNUJ23168 for rancid-discuss@shrubbery.net; Fri, 28 Jun 2002 22:23:30 GMT Received: from budapest.dante.org.uk (budapest.dante.org.uk [193.63.211.72]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g5Q9xp101380; Wed, 26 Jun 2002 09:59:51 GMT Received: from budapest.dante.org.uk (localhost [127.0.0.1]) by budapest.dante.org.uk (8.12.3/8.12.3) with ESMTP id g5Q9xhLt081539; Wed, 26 Jun 2002 10:59:43 +0100 (BST) (envelope-from janos@budapest.dante.org.uk) Received: from localhost (janos@localhost) by budapest.dante.org.uk (8.12.3/8.12.3/Submit) with ESMTP id g5Q9xgMP081536; Wed, 26 Jun 2002 10:59:43 +0100 (BST) Date: Wed, 26 Jun 2002 10:59:42 +0100 (BST) From: Janos Mohacsi To: rancid@shrubbery.net, Subject: paranoid patch for cisco routers :) Message-ID: <20020626105156.A81512-100000@budapest.dante.org.uk> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk Dear All, We are using IS-IS as an IGP and rancid did not remove the IS-IS password. Also if we set up FILTER_PWDS=ALL we would prefer removing the community strings... Here is my patch for this: *** mcrancid.orig Wed Jun 26 10:25:28 2002 --- mcrancid Wed Jun 26 10:43:20 2002 *************** *** 936,941 **** --- 936,949 ---- ProcessHistory("","","","! neighbor $1 password \n"); next; } + if (/^\s*isis password / && $filter_pwds >= 1){ + ProcessHistory("", "", "", "! isis password \n"); + next; + } + if (/^snmp-server community (\S*) (.*)/ && $filter_pwds >=2) { + ProcessHistory("", "", "", "!snmp-server community $2\n"); + next; + } if (/^(ppp .* password) 7 .*/ && $filter_pwds >= 1) { ProcessHistory("","","","!$1 \n"); next; } This is for bin/mcrancid (for my previous patch), but the same applies for bin/rancid also. Best Regards, Janos Mohacsi From owner-rancid-discuss@shrubbery.net Fri Jun 28 22:47:25 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g5SMlP415974 for ; Fri, 28 Jun 2002 22:47:25 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMNkl23184 for rancid-discuss-outgoing; Fri, 28 Jun 2002 22:23:46 GMT Received: (from heas@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMNhu23178 for rancid-discuss@shrubbery.net; Fri, 28 Jun 2002 22:23:44 GMT Received: from budapest.dante.org.uk (budapest.dante.org.uk [193.63.211.72]) by guelah.shrubbery.net (8.11.6/8.11.1) with ESMTP id g5QKxB105010; Wed, 26 Jun 2002 20:59:11 GMT Received: from budapest.dante.org.uk (localhost [127.0.0.1]) by budapest.dante.org.uk (8.12.3/8.12.3) with ESMTP id g5QKx5Lt086600; Wed, 26 Jun 2002 21:59:05 +0100 (BST) (envelope-from janos@budapest.dante.org.uk) Received: from localhost (janos@localhost) by budapest.dante.org.uk (8.12.3/8.12.3/Submit) with ESMTP id g5QKx4ID086597; Wed, 26 Jun 2002 21:59:05 +0100 (BST) Date: Wed, 26 Jun 2002 21:59:04 +0100 (BST) From: Janos Mohacsi To: rancid@shrubbery.net, Subject: Multicast/IPv6 Looking glass patch for rancid Message-ID: <20020626213520.V86512-400000@budapest.dante.org.uk> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1351984426-1025125144=:86535" Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-1351984426-1025125144=:86535 Content-Type: TEXT/PLAIN; charset=US-ASCII Dear All, I created some extra commands for the rancid looking glass: Multicast looking glass + IPv6 looking glass In order to be configurable more flexible I modified the looking glass in several places: 1. The lg.conf is holding the commands that is displayed on the form display. You specify there what to display as command. If you comment one command, it won't be displayed on the form. This way much easier to disable certain functionality of looking glass. 2. I put the queries into different categories: interface, routing, debugging, multicast, ipv6. On the form display they are separated by horizontal ruler from each other. 3. I implemented several multicast looking glass commands. They are available for Cisco and Juniper. If somebody knows Foundry equivalents they can add it. 4. I implemented some ipv6 looking glass commands. They are tested only on Cisco, but some of them are available for Juniper also. 5. I added LG_STYLE to the confiuration ( and also to lgform.cgi and lg.cgi), to support style sheet for consistent web look. I attach the patches in three unified diff files. Any comment are welcome. Can you incorporate my patches into the next version of rancid? By the way when will be next version? Best Regards, Janos Mohacsi --0-1351984426-1025125144=:86535 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lg.cgi.diff" Content-Transfer-Encoding: BASE64 Content-ID: <20020626215904.I86535@budapest.dante.org.uk> Content-Description: Content-Disposition: attachment; filename="lg.cgi.diff" LS0tIGxnLmNnaS5vcmlnCVdlZCBKdW4gMjYgMjE6MTA6NTMgMjAwMg0KKysr IGxnLmNnaQlXZWQgSnVuIDI2IDIxOjI5OjAzIDIwMDINCkBAIC0yMyw3ICsy Myw3IEBADQogJG1lID1+IHMvLipcLyhcUyspJC8kMS87DQogfQ0KIA0KLXVz ZSBDR0kgcXcvOnN0YW5kYXJkLzsNCit1c2UgQ0dJIHF3LzpzdGFuZGFyZCBl c2NhcGVIVE1MLzsNCiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOw0KIHVzZSBT eXM6OlN5c2xvZzsNCiB1c2UgTG9ja0ZpbGU6OlNpbXBsZSBxdyhsb2NrIHRy eWxvY2sgdW5sb2NrKTsNCkBAIC0xMjQsMTQgKzEyNCwxNCBAQA0KICAgICBs b2NhbCgqQ01EKTsNCiANCiAgICAgaWYgKCRtZmcgPX4gL2ZvdW5kcnkvaSkg ew0KLQkkY21kID0gJGZvdW5kcnlDbWR7JHR5cGV9Ow0KIAlvcGVuKENNRCwg InNoIC1jIFwiZmxvZ2luIC1mICRjbG9naW5yYyAtYyBcJyRjbWQgJGFyZ1wn ICRydHJcIiAyPiYxIHwiKTsNCisJJGNtZCA9ICRmb3VuZHJ5Q21keyR0eXBl fTsNCiAgICAgfSBlbHNpZiAoJG1mZyA9fiAvanVuaXBlci9pKSB7DQotCSRj bWQgPSAkanVuaXBlckNtZHskdHlwZX07DQogCW9wZW4oQ01ELCAic2ggLWMg XCJqbG9naW4gLWYgJGNsb2dpbnJjIC1jIFwnJGNtZCAkYXJnXCcgJHJ0clwi IDI+JjEgfCIpOw0KKwkkY21kID0gJGp1bmlwZXJDbWR7JHR5cGV9Ow0KICAg ICB9IGVsc2Ugew0KLQkkY21kID0gJGNpc2NvQ21keyR0eXBlfTsNCiAJb3Bl bihDTUQsICJzaCAtYyBcImNsb2dpbiAtbm9lbmFibGUgLWYgJGNsb2dpbnJj IC1jIFwnJGNtZCAkYXJnXCcgJHJ0clwiIDI+JjEgfCIpOw0KKwkkY21kID0g JGNpc2NvQ21keyR0eXBlfTsNCiAgICAgfQ0KICAgICB3aGlsZSAoPENNRD4p IHsNCiAJdHIvXDAxNS8vZDsNCkBAIC0xNzMsNiArMTczLDcgQEANCiB9DQog IyBjcmVhdGUgdGhlIHBhZ2UgYW5kIGxvZyB0aGUgdHJhbnNhY3Rpb24uLi4N CiBzdWIgcHJpbnRfcmVzdWx0cyB7DQorDQogICAgIG15KCRtZmcpID0gQF87 DQogICAgIG15KCRjbWQpOw0KIA0KQEAgLTE4MCw4ICsxODEsMTQgQEANCiAg ICAgZG9sb2coTE9HX0lORk8sIHNwcmludGYoIiVzICVzICVzICVzXG4iLA0K IAkkRU5We1JFTU9URV9IT1NUfSwgJEVOVntSRU1PVEVfQUREUn0sICRFTlZ7 UkVNT1RFX1VTRVJ9LA0KIAkiLSAtIFskdGltZXN0cl0gJHR5cGUgJHJvdXRl ciAkYXJnIikpOw0KKyAgICAjDQogICAgIHByaW50ICRxdWVyeS0+aGVhZGVy Ow0KLSAgICBwcmludCAkcXVlcnktPnN0YXJ0X2h0bWwoIkxvb2tpbmcgR2xh c3MgUmVzdWx0cyAtICRyb3V0ZXIiKTsNCisgICAgaWYgKCRMR19TVFlMRSkg ew0KKyAgICAgICAgcHJpbnQgJHF1ZXJ5LT5zdGFydF9odG1sKC10aXRsZSA9 PiAiTG9va2luZ0dsYXNzIFJlc3VsdHMgLSAkcm91dGVyIiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC1zdHlsZSA9PiB7J3NyYycgPT4g JExHX1NUWUxFfSk7DQorICAgIH0gZWxzZSB7DQorICAgICAgICBwcmludCAk cXVlcnktPnN0YXJ0X2h0bWwoLXRpdGxlID0+Ikxvb2tpbmdHbGFzcyBSZXN1 bHRzIC0gJHJvdXRlciIpOw0KKyAgICB9DQogDQogICAgICR0aW1lc3RyID0g c3RyZnRpbWUoIiVhICViICVlICVIOiVNOiVTICVZICVaIiwgZ210aW1lKTsN CiANCkBAIC0xOTUsNyArMjAyLDYgQEANCiAgICAgfSBlbHNlIHsNCiAJJGNt ZCA9ICRjaXNjb0NtZHskdHlwZX07DQogICAgIH0NCi0NCiAgICAgcHJpbnQg PDxIRUFEIDsNCiAJPC9iPjwvZm9udD4NCiAJPGZvbnQgc2l6ZT0rMz48Yj48 aDE+TG9va2luZyBHbGFzcyBSZXN1bHRzIC0gJHJvdXRlcg0KQEAgLTIwNSw5 ICsyMTEsMTEgQEANCiAJPGNlbnRlcj4NCiAJPGI+RGF0ZTo8L2I+ICR0aW1l c3RyDQogCTxwPg0KLQk8Yj5RdWVyeTo8L2I+ICRjbWQNCi0JPGJyPg0KKwk8 Yj5RdWVyeTo8L2I+IA0KIEhFQUQNCisgICAgcHJpbnQgZXNjYXBlSFRNTCgk Y21kRGlzcHskdHlwZX0pOw0KKyAgICBwcmludCAiPGI+UmVhbCBRdWVyeTo8 L2I+ICRjbWQiOyANCisgICAgcHJpbnQgIjxicj4iOw0KIA0KICAgICBpZiAo JGFyZykgeyBwcmludCAiPGI+QXJndW1lbnQocyk6PC9iPiAkYXJnXG4iOyB9 DQogICAgIHByaW50ICI8L2NlbnRlcj5cbiI7DQpAQCAtMjI2LDkgKzIzNCw5 IEBADQogICAgIHByaW50IDw8RU5EIDsgDQogCTwvcHJlPg0KIAk8IS0tLSBl bmQgcGFnZSBjb250ZW50IC0tLT4NCi0JPC9ib2R5Pg0KIEVORA0KIA0KKyAg ICBwcmludCAkTEdfSU5GTzsNCiAgICAgcHJpbnQgJHF1ZXJ5LT5lbmRfaHRt bDsNCiAgICAgZXhpdDsNCiANCkBAIC0yNzAsMjIgKzI3OCwzNiBAQA0KIA0K ICRxdWVyeSA9IG5ldyBDR0k7DQogDQorIyBUT0RPIGNoZWNrIEhUVFBfUkVG RVJFUj8NCisNCisNCisNCiAjIGdldCBmb3JtIGRhdGEgYW5kIHZhbGlkYXRl DQogJHR5cGUgPSAoJHF1ZXJ5LT5wYXJhbSgncXVlcnknKSlbMF07DQogJHJv dXRlcl9wYXJhbSA9ICgkcXVlcnktPnBhcmFtKCdyb3V0ZXInKSlbMF07DQog JHJlbW90ZV91c2VyID0gJEVOVntSRU1PVEVfVVNFUn07DQogJGFyZyA9ICgk cXVlcnktPnBhcmFtKCdhcmdzJykpWzBdOw0KKyRhcmcgPX4gcy9bIidgXS8v ZzsgICAgICAgICAgICAgICAgICAgICAjIHRoZXNlIGFyZSBCUyBpbiBhbnkg YXJnIGZvciBhbnkgcXVlcnkNCiAjIGhhbmRsZSBtdWx0aXBsZSBhcmdzDQot JGFyZyA9fiBzL1siJ2BdLy9nOwkJCSMgdGhlc2UgYXJlIEJTIGluIGFueSBh cmcgZm9yIGFueSBxdWVyeQ0KIEBhcmcgPSBzcGxpdCgnICcsICRhcmcpOw0K IA0KICMgdmVyaWZ5IGNvbW1hbmRzLCBhcmd1bWVudHMsIGV0Yy4NCiAoJHJv dXRlciwgJG1mZykgPSBzcGxpdCgnOicsICRyb3V0ZXJfcGFyYW0pOw0KLWlm ICghZGVmaW5lZCgkdHlwZSkgfHwgIWRlZmluZWQoJHJvdXRlcikpIHsNCitp ZiAoIWRlZmluZWQoJHR5cGUpIHx8ICFkZWZpbmVkKCRyb3V0ZXIpICB8fCAk cm91dGVyIGVxICcnIHx8ICFkZWZpbmVkKCRtZmcpKSB7DQogICAgICRyZXN1 bHRzWzBdID0gIllvdSBtdXN0IGF0IGxlYXN0IGNob29zZSBhIFF1ZXJ5IGFu ZCBhIHJvdXRlci4gIFRyeSBidXlpbmcgYSBjbHVlLlxuIjsNCiAgICAgJnBy aW50X3Jlc3VsdHMoJG1mZyk7DQogfQ0KIA0KK2lmICgkYXJnICF+IC9eWy1B LVphLXowLTl8X1wvIFwuXlwkXSokLykgew0KKyAgICAkcmVzdWx0c1swXSA9 ICJGdW5ueSBjaGFyYWN0ZXJzIGluIGFyZ3VtZW50OyBpZ25vcmluZy5cbiI7 DQorICAgICZwcmludF9yZXN1bHRzKCRtZmcpOw0KK30NCitpZiAobGVuZ3Ro KCRhcmcpID49IDUwKSB7DQorICAgJHJlc3VsdHNbMF0gPSAiVG9vIGxvbmcg YXJndW1lbnQgc3RyaW5nOyBpZ25vcmluZy4gXG4iOw0KKyAgICAmcHJpbnRf cmVzdWx0cygkbWZnKTsNCit9DQorCQ0KKw0KICMgY29udmVyc2lvbiBvZiBj b21tYW5kICJ0eXBlIiBwYXNzZWQgZnJvbSBsZ2Zvcm0uY2dpIHRvIHRoZSB2 ZW5kb3IncyBzeW50YXguDQogJWNpc2NvQ21kID0gKAkNCiAJCSNhY2wgPT4g InNob3cgYWNjZXNzLWxpc3QiLA0KQEAgLTI5NCw3ICszMTYsNyBAQA0KIAkJ ZGFtcCA9PiAic2hvdyBpcCBiZ3AgZGFtcGVuZWQtcGF0aHMiLA0KIAkJZnJh bWVyZWxheSA9PiAic2hvdyBmcmFtZS1yZWxheSBwdmMiLA0KIAkJaW50ZXJm YWNlID0+ICJzaG93IGludGVyZmFjZSIsDQotCQlpbnRicmllZiA9PiAic2hv dyBpcCBpbnRlcmZhY2UiLAkjIHN3aXRjaCBpbiB7aW50ZXJmYWNlfQ0KKwkJ aW50YnJpZWYgPT4gInNob3cgaXAgaW50ZXJmYWNlIiwNCiAJCWxvZyA9PiAi c2hvdyBsb2dnaW5nIiwNCiAJCW1iZ3AgPT4gInNob3cgaXAgbWJncCIsDQog CQltYmdwc3VtID0+ICJzaG93IGlwIG1iZ3Agc3VtbWFyeSIsDQpAQCAtMzA3 LDcgKzMyOSwxOCBAQA0KIAkJcHJlZml4ID0+ICJzaG93IGlwIGJncCIsDQog CQlwcmVmaXhsaXN0ID0+ICJzaG93IGlwIHByZWZpeC1saXN0IiwNCiAJCXN1 bW1hcnkgPT4gInNob3cgaXAgYmdwIHN1bW1hcnkiLA0KLQkJdHJhY2UgPT4g InRyYWNlcm91dGUiDQorCQl0cmFjZSA9PiAidHJhY2Vyb3V0ZSIsDQorCQlw aW1fbmVpZ2hib3IgPT4gInNob3cgaXAgcGltIG5laWdoYm9yIiwNCisJCXBp bV9pbnRlcmZhY2UgPT4gInNob3cgaXAgcGltIGludGVyZmFjZSIsDQorCQlw aW1fcnAgPT4gInNob3cgaXAgcGltIHJwIG1hcHBpbmciLA0KKwkJbWZvcncg PT4gInNob3cgaXAgbXJvdXRlIiwNCisJCW1zZHAgPT4gInNob3cgaXAgbXNk cCBzdW1tYXJ5IiwNCisJCW1zZHBzYSA9PiAic2hvdyBpcCBtc2RwIHNhLWNh Y2hlIiwNCisJCW1zZXNzID0+ICJzaG93IGlwIHNkciIsDQorCQltcnBmID0+ ICJzaG93IGlwIHJwZiIsDQorCQl2Nl9pbnRlcmZhY2UgPT4gInNob3cgaXB2 NiBpbnRlcmZhY2UiLA0KKwkJdjZfc3VtbWFyeSA9PiAic2hvdyBiZ3AgaXB2 NiBzdW1tYXJ5IiwNCisJCXY2X2JncCA9PiAic2hvdyBiZ3AgaXB2NiIsDQog CSk7DQogJWZvdW5kcnlDbWQgPSAoCQ0KIAkJI2FjbCA9PiAic2hvdyBhY2Nl c3MtbGlzdCIsDQpAQCAtMzM1LDcgKzM2OCw3IEBADQogCQkjYXNwYXRoID0+ ICJzaG93IGlwIGFzLXBhdGgtYWNjZXNzLWxpc3QiLA0KIAkJI2NvbW11bml0 eWxpc3QgPT4gInNob3cgaXAgY29tbXVuaXR5LWxpc3QiLA0KIAkJZGFtcCA9 PiAic2hvdyByb3V0ZSBkYW1waW5nIHN1cHByZXNzZWQgdGVyc2UgdGFibGUg aW5ldC4wIiwNCi0JCWZyYW1lcmVsYXkgPT4gInNob3cgZnJhbWUtcmVsYXkg cHZjIiwNCisJCSNmcmFtZXJlbGF5ID0+ICJzaG93IGZyYW1lLXJlbGF5IHB2 YyIsDQogCQlpbnRlcmZhY2UgPT4gInNob3cgaW50ZXJmYWNlIiwNCiAJCWxv ZyA9PiAic2hvdyBsb2cgbWVzc2FnZXMiLA0KIAkJbWJncCA9PiAic2hvdyBy b3V0ZSB0YWJsZSBpbmV0LjIgdGVyc2UiLA0KQEAgLTM0OSw3ICszODIsMTkg QEANCiAJCXByZWZpeCA9PiAic2hvdyByb3V0ZSB0YWJsZSBpbmV0LjAiLA0K IAkJcHJlZml4bGlzdCA9PiAic2hvdyBwb2xpY3kiLA0KIAkJc3VtbWFyeSA9 PiAic2hvdyBiZ3Agc3VtbWFyeSIsDQotCQl0cmFjZSA9PiAidHJhY2Vyb3V0 ZSINCisJCXRyYWNlID0+ICJ0cmFjZXJvdXRlIiwNCisJCXBpbV9uZWlnaGJv ciA9PiAic2hvdyBwaW0gbmVpZ2hib3JzIiwNCisJCXBpbV9pbnRlcmZhY2Ug PT4gInNob3cgcGltIGludGVyZmFjZSIsDQorCQlwaW1fcnAgPT4gInNob3cg cGltIHJwcyIsDQorCQlwaW1fam9pbiA9PiAic2hvdyBwaW0gam9pbiIsDQor CQltZm9ydyA9PiAic2hvdyBtdWx0aWNhc3Qgcm91dGUgZXh0ZW5zaXZlIiwN CisJCW1zZHAgPT4gInNob3cgbXNkcCIsDQorCQltc2Rwc2EgPT4gInNob3cg bXNkcCBzb3VyY2UtYWN0aXZlIiwNCisJCW1zZXNzID0+ICJzaG93IG11bHRp Y2FzdCBzZXNzaW9ucyIsDQorCQltcnBmID0+ICJzaG93IG11bHRpY2FzdCBy cGYiLA0KKwkJdjZfaW50ZXJmYWNlID0+ICJzaG93IGludGVyZmFjZSIsDQor CQl2Nl9zdW1tYXJ5ID0+ICJzaG93IGJncCBzdW1tYXJ5IiwNCisJCXY2X3Jv dXRlID0+ICJzaG93IHJvdXRlIHRhYmxlIGluZXQ2LjAiLA0KIAkpOw0KICVj bWREaXNwID0gKAkNCiAJCSNhY2wgPT4gInNob3cgYWNjZXNzLWxpc3QiLA0K QEAgLTM3Myw3ICs0MTgsMzcgQEANCiAJCXRyYWNlID0+ICJ0cmFjZXJvdXRl Ig0KIAkpOw0KIA0KLSMgbm90IGFsbCBjbWRzL3F1ZXJpZXMgYXJlIGltcGxl bWVudGVkIGZvciBqdW5pcGVycw0KKyNjb25zdHJ1Y3QgRGlzcGxheSBjb21t YW5kIGZyb20gY29uZmlndXJhdGlvbg0KKyNlbXB0eSBvdXQgQ29tbWFuZCB0 byBEaXNwbGF5DQorJWNtZERpc3A9KCk7DQorDQorI2ZpbGwgc2VwYXJhdGVs eSB3aXRoIGNvbW1hbmQgdHlwZXMNCisjaW50ZXJmYWNlDQord2hpbGUgKCgk Y2tleSwkY3ZhbHVlKT1lYWNoICVpX3FydHlwZSkgew0KKwkkY21kRGlzcHsk Y2tleX09JGN2YWx1ZTsNCit9DQorI3JvdXRpbmcNCit3aGlsZSAoKCRja2V5 LCRjdmFsdWUpPWVhY2ggJXJfcXJ0eXBlKSB7DQorCSRjbWREaXNweyRja2V5 fT0kY3ZhbHVlOw0KK30NCisjZGVidWcNCit3aGlsZSAoKCRja2V5LCRjdmFs dWUpPWVhY2ggJWRfcXJ0eXBlKSB7DQorCSRjbWREaXNweyRja2V5fT0kY3Zh bHVlOw0KK30NCisjbXVsdGljYXN0DQord2hpbGUgKCgkY2tleSwkY3ZhbHVl KT1lYWNoICVtX3FydHlwZSkgew0KKwkkY21kRGlzcHskY2tleX09JGN2YWx1 ZTsNCit9DQorDQorI2lwdjYNCit3aGlsZSAoKCRja2V5LCRjdmFsdWUpPWVh Y2ggJXY2X3FydHlwZSkgew0KKwkkY21kRGlzcHskY2tleX09JGN2YWx1ZTsN Cit9DQorDQorCQ0KKw0KKw0KKyMgbm90IGFsbCBjbWRzL3F1ZXJpZXMgYXJl IGltcGxlbWVudGVkIGZvciBqdW5pcGVycy9mb3VuZHJ5cy9jaXNjb3MNCiBp ZiAoJG1mZyA9fiAvanVuaXBlci8pIHsNCiAgICAgaWYgKCEgZGVmaW5lZCgk anVuaXBlckNtZHskdHlwZX0pKSB7DQogCSRyZXN1bHRzWzBdID0gIiRjbWRE aXNweyR0eXBlfSBub3QgaW1wbGVtZW50ZWQgZm9yIGp1bmlwZXJzLiAgc29y cnkuXG4iOw0KQEAgLTM4NywyMSArNDYyLDMxIEBADQogICAgIH0NCiAgICAg JGNtZCA9ICRmb3VuZHJ5Q21keyR0eXBlfTsNCiB9IGVsc2Ugew0KKyAgICBp ZighIGRlZmluZWQoJGNpc2NvQ21keyR0eXBlfSkpIHsNCisJJHJlc3VsdHNb MF0gPSAiJGNtZERpc3B7JHR5cGV9IG5vdCBpbXBsZW1lbnRlZCBmb3IgY2lz Y28uICBzb3JyeS5cbiI7DQorCSZwcmludF9yZXN1bHRzKCRtZmcpOw0KKyAg ICB9DQogICAgICRjbWQgPSAkY2lzY29DbWR7JHR5cGV9Ow0KIH0NCiANCiAN Ci1pZiAoJHR5cGUgZXEgInByZWZpeCIgfHwgJHR5cGUgZXEgIm1iZ3AiIHx8 ICR0eXBlIGVxICJyb3V0ZSIgKSB7DQoraWYgKCR0eXBlIGVxICJwcmVmaXgi IHx8ICR0eXBlIGVxICJtYmdwIiB8fCAkdHlwZSBlcSAicm91dGUiKSB7DQog ICAgIGlmICgkYXJnWzBdICF+IC9eXGQrXC5cZCtcLlxkK1wuXGQrJC8pIHsN CiAJJHJlc3VsdHNbMF0gPSAiVGhlIElQIGFkZHJlc3MgXCIkYXJnWzBdXCIg aXMgbm90IHZhbGlkIGFuZCBsYWNraW5nIGFuIGFkZHJlc3Mgd291bGQgb3Zl ci1idXJkZW4gb3VyIHJvdXRlci5cbiI7DQogCSZwcmludF9yZXN1bHRzKCRt ZmcpOw0KICAgICB9IGVsc2lmIChkZWZpbmVkKCRhcmdbMV0pICYmICRhcmdb MV0gIX4gL15cZCtcLlxkK1wuXGQrXC5cZCskLykgew0KIAkkcmVzdWx0c1sw XSA9ICJUaGUgSVAgbmV0bWFzayBcIiRhcmdbMV1cIiBpcyBub3QgdmFsaWQu XG4iOw0KIAkmcHJpbnRfcmVzdWx0cygkbWZnKTsNCi0gICAgfQ0KKyAgICB9 IA0KICAgICBpZiAoJG1mZyA9fiAvanVuaXBlci9pICYmIGRlZmluZWQoJGFy Z1sxXSkpIHsNCiAJJGFyZyA9ICRhcmdbMF0gLiAiLyIgLiBtYXNrMmxlbigk YXJnWzFdKTsNCiAgICAgfQ0KK30gZWxzaWYgKCR0eXBlIGVxICJ2Nl9yb3V0 ZSIgKXsNCisgICAgaWYgKCRhcmdbMF0gIX4gL1swLTlhLWZBLUY6XSskLykg ew0KKwkkcmVzdWx0c1swXSA9IlRoZSBJUHY2IGFkZHJlc3MgXCIkYXJnWzBd XCIgaXMgbm90IHZhbGlkLlxuIjsNCisJJnByaW50X3Jlc3VsdHMoJG1mZyk7 DQorICAgIH0NCisNCiB9IGVsc2lmICgkdHlwZSBlcSAiZnJhbWVyZWxheSIp IHsNCiAgICAgaWYgKCRtZmcgPX4gL2p1bmlwZXIvKSB7DQogCSRyZXN1bHRz WzBdID0gIkp1bmlwZXIgZG9lcyBub3QgaGF2ZSBhIHNob3cgZnJhbWUtcmVs YXkgcHZjIGNvbW1hbmQuICAiLg0KQEAgLTQxMywzMyArNDk4LDMzIEBADQog ICAgIH0gZWxzZSB7DQogCXVuZGVmKCRhcmcpOw0KICAgICB9DQotfSBlbHNp ZiAoJHR5cGUgZXEgImludGVyZmFjZSIpIHsNCi0gICAgaWYgKCRtZmcgPX4g LyhjaXNjb3xmb3VuZHJ5KS8pIHsNCi0JaWYgKCRhcmdbMF0gIX4gL15iW14g XStbMC05XS9pICYmICRhcmdbMF0gPX4gL15iL2kpIHsNCit9IGVsc2lmICgk dHlwZSBlcSAiaW50ZXJmYWNlIiB8fCAkdHlwZSBlcSAidjZfaW50ZXJmYWNl Iikgew0KKyAgICBpZiAoJGFyZ1sxXSA9fiAvWy1cLzAtOTouXSsvKSB7DQor CSRhcmcgPSAkYXJnWzBdIC4gIiAiIC4gJGFyZ1sxXTsNCisgICAgfSBlbHNl IHsNCisJaWYgKCRhcmdbMF0gIX4gL15iW14gXStbMC05XS9pICYmICRhcmdb MF0gPX4gL15iL2kgJiYgJG1mZyA9fiAvKGNpc2NvfGZvdW5kcnkpL2kpIHsN CiAJICAgICR0eXBlID0gImludGJyaWVmIjsNCiAJICAgICRhcmcgPSAiYnJp ZWYiOw0KIAl9IGVsc2Ugew0KIAkgICAgJGFyZyA9ICRhcmdbMF07DQogCX0N Ci0gICAgfSBlbHNpZiAoJG1mZyA9fiAvanVuaXBlci8pIHsNCi0JbXkoJG9w dGluZCkgPSAwOw0KLQkjIGFyZyAwIG1heSBiZSBhbiBpbnRmIG5hbWUgb3Ig YSBkaXNwbGF5IG9wdGlvbiwgYnV0IHRoZXJlIGNhbg0KLQkjIG9ubHkgYmUg MiBhcmdzDQotCSRhcmcgPSAiIjsNCi0Jd2hpbGUgKCRvcHRpbmQgPD0gJCNh cmcgJiYgJG9wdGluZCA8IDIpIHsNCi0JICAgICRhcmdbJG9wdGluZF0gPX4g cy9icmllZi90ZXJzZS87DQotCSAgICBpZiAoJGFyZ1skb3B0aW5kXSA9fiAv XihbYS16MC05XXsyfVwtXGQrXC9cZCtcL1xkKyg6XGQrKT8pL2kpIHsNCi0J CSRhcmcgLj0gIiAkMSI7DQotCSAgICB9IGVsc2lmICgkYXJnWyRvcHRpbmRd ID1+IC9eZGV0L2kpIHsNCi0JCSRhcmcgLj0gIiBkZXRhaWwiOw0KLQkgICAg fSBlbHNpZiAoJGFyZ1skb3B0aW5kXSA9fiAvXnRlci9pKSB7DQotCQkkYXJn IC49ICIgdGVyc2UiOw0KLQkgICAgfSBlbHNpZiAoJGFyZ1skb3B0aW5kXSA9 fiAvXmV4dC9pKSB7DQotCQkkYXJnIC49ICIgZXh0ZW5zaXZlIjsNCi0JICAg IH0NCi0JICAgICRvcHRpbmQgKz0gMTsNCisgICAgfQ0KK30gZWxzaWYgKCR0 eXBlIGVxICJwaW1faW50ZXJmYWNlIikgew0KK2lmICgkbWZnID1+IC9jaXNj by9pKSB7DQorICAgIGlmICgkYXJnWzFdID1+IC9bLVwvMC05Oi5dKy8pIHsN CisJJGFyZyA9ICRhcmdbMF0gLiAiICIgLiAkYXJnWzFdOw0KKyAgICB9IGVs c2Ugew0KKwlpZiAoJGFyZ1swXSAhfiAvXmJbXiBdK1swLTldL2kgJiYgJGFy Z1swXSA9fiAvXmIvaSApIHsNCisJICAgICR0eXBlID0gImludGJyaWVmIjsN CisJICAgICRhcmcgPSAiYnJpZWYiOw0KKwl9IGVsc2Ugew0KKwkgICAgJGFy ZyA9ICRhcmdbMF07DQogCX0NCiAgICAgfQ0KK30gZWxzZSB7DQorCSRhcmc9 dW5kZWY7DQorfQ0KK30gZWxzaWYgKCR0eXBlIGVxICJsb2ciKSB7DQogfSBl bHNpZiAoJHR5cGUgZXEgImxvZyIpIHsNCiAgICAgaWYgKCRhcmdbMF0gPX4g L15ccypcfD8kLykgew0KIAlzaGlmdChAYXJnKTsNCkBAIC00NTgsNyArNTQz LDcgQEANCiAgICAgfQ0KIH0gZWxzaWYgKCR0eXBlIGVxICJwaW5nIiB8fCAk dHlwZSBlcSAidHJhY2UiKSB7DQogICAgIGlmICgkYXJnWzBdICF+IC9eXGQr XC5cZCtcLlxkK1wuXGQrJC8pIHsNCi0JaWYgKCRhcmdbMF0gIX4gL15bQS1a YS16MC05Ll8tXSskLykgew0KKwlpZiAoJGFyZ1swXSAhfiAvKFtBLVphLXow LTktXSouKSpbQS1aYS16MC05LV0qLltBLVphLXowLTktXSovKSB7DQogCSAg ICAkcmVzdWx0c1swXSA9ICJUaGF0IGFyZ3VtZW50ICgkYXJnWzBdKSBpcyBu b3QgdmFsaWQuXG4iOw0KIAkgICAgJnByaW50X3Jlc3VsdHMoJG1mZyk7DQog CX0NCkBAIC01MTAsMTMgKzU5NSwxNyBAQA0KIAl9IGVsc2Ugew0KIAkgICAg JGFyZyA9fiBzL1tcJF5dLyAvZzsNCiAJfQ0KLQkkYXJnID0gIlwiJGFyZ1wi IjsNCisJJGFyZyA9ICJcXFwiJGFyZ1xcXCIiOw0KICAgICB9DQogICAgICMg ZXNjYXBlIGFueSAoKXMNCiAgICAgJGFyZyA9fiBzLyhbXChcKV0pL1xcJDEv ZzsNCisgICAgI2RvbG9nKExPR19JTkZPLCBzcHJpbnRmKCJURVNUOiAlc1xu IiwNCisgICAgIwkiLSAtIFskdGltZXN0cl0gJHR5cGUgJHJvdXRlciAkYXJn IikpOw0KKyAgICAjDQorICAgIA0KIH0gZWxzaWYgKCR0eXBlIGVxICJuZWln aGJvciIpIHsNCiAgICAgaWYgKCRhcmdbMF0gIX4gL15cZCtcLlxkK1wuXGQr XC5cZCskLykgew0KLQlpZiAoJGFyZ1swXSAhfiAvKFtBLVphLXowLTktXSou KSpbQS1aYS16MC05LV0qLihjb218ZWR1fG5ldHxvcmcpLykgew0KKwlpZiAo JGFyZ1swXSAhfiAvKFtBLVphLXowLTktXSouKSpbQS1aYS16MC05LV0qLltB LVphLXowLTktXSovKSB7DQogCSAgICAkcmVzdWx0c1swXSA9ICJUaGF0IGFy Z3VtZW50ICgkYXJnWzBdKSBpcyBub3QgdmFsaWQuXG4iOw0KIAkgICAgJnBy aW50X3Jlc3VsdHMoJG1mZyk7DQogCX0NCkBAIC01NTMsNyArNjQyLDcgQEAN CiAgICAgfQ0KIH0gZWxzaWYgKCR0eXBlIGVxICJtbmVpZ2hib3IiKSB7DQog ICAgIGlmICgkYXJnWzBdICF+IC9eXGQrXC5cZCtcLlxkK1wuXGQrJC8pIHsN Ci0JaWYgKCRhcmdbMF0gIX4gLyhbQS1aYS16MC05LV0qLikqW0EtWmEtejAt OS1dKi4oY29tfGVkdXxuZXR8b3JnKS8pIHsNCisJaWYgKCRhcmdbMF0gIX4g LyhbQS1aYS16MC05LV0qLikqW0EtWmEtejAtOS1dKi5bQS1aYS16MC05LV0q Lykgew0KIAkgICAgJHJlc3VsdHNbMF0gPSAiVGhhdCBhcmd1bWVudCAoJGFy Z1swXSkgaXMgbm90IHZhbGlkLlxuIjsNCiAJICAgICZwcmludF9yZXN1bHRz KCRtZmcpOw0KIAl9DQpAQCAtNTgyLDEyICs2NzEsNTYgQEANCiAJICAgIH0N CiAJfQ0KICAgICB9DQotfSBlbHNpZiAoJHR5cGUgZXEgImRhbXAiIHx8ICR0 eXBlIGVxICJzdW1tYXJ5IiB8fCAkdHlwZSBlcSAibWJncHN1bSIpIHsNCit9 IGVsc2lmICgkdHlwZSBlcSAicGltX25laWdoYm9yIikgew0KKyAgICBpZiAo ICgkYXJnWzBdICBlcSAnZGV0YWlsJykgJiYgKCRtZmcgPX4gL2p1bmlwZXIv KSkgew0KKyAgICAJJGFyZyA9ICRhcmdbMF07DQorICAgIH0gZWxzZSB7DQor CXVuZGVmICgkYXJnKTsNCisgICAgfQ0KKw0KK30gZWxzaWYgKCR0eXBlIGVx ICJwaW1fcnAiKSB7DQorICAgIGlmICggKCRhcmdbMF0gIGVxICdkZXRhaWwn KSAmJiAoJG1mZyA9fiAvanVuaXBlci8pKSB7DQorICAgIAkkYXJnID0gJGFy Z1swXTsNCisgICAgfSBlbHNlIHsNCisJdW5kZWYgKCRhcmcpOw0KKyAgICB9 DQorDQorfSBlbHNpZiAoJHR5cGUgZXEgIm1mb3J3Iikgew0KKyAgICBpZiAo JGFyZ1swXSBlcSAnYWN0aXZlJykgew0KKwkkYXJnPSAkYXJnWzBdOw0KKyAg ICB9IGVsc2V7DQorCXVuZGVmICgkYXJnKTsNCisgICAgfQ0KKwkNCit9IGVs c2lmICgkdHlwZSBlcSAicGltX2pvaW4iKSB7DQorICAgIGlmICgkYXJnWzBd ICF+IC9eXGQrXC5cZCtcLlxkK1wuXGQrJC8pIHsNCisJJHJlc3VsdHNbMF0g PSAiVGhlIEdyb3VwIGFkZHJlc3MgXCIkYXJnWzBdXCIgaXMgbm90IHZhbGlk IGFuZCBsYWNraW5nIGFuIGFkZHJlc3Mgd291bGQgb3Zlci1idXJkZW4gb3Vy IHJvdXRlci5cbiI7DQorCSZwcmludF9yZXN1bHRzKCRtZmcpOw0KKyAgICB9 IGVsc2Ugew0KKwkkYXJnPSAkYXJnWzBdOw0KKyAgICB9DQorDQorfSBlbHNp ZiAoJHR5cGUgZXEgIm1zZXNzIikgew0KKyAgICBpZiAoICRhcmdbMF0gIGVx ICdkZXRhaWwnICkgew0KKyAgICAJJGFyZyA9ICRhcmdbMF07DQorICAgIH0g ZWxzZSB7DQorCXVuZGVmICgkYXJnKTsNCisgICAgfQ0KKw0KK30gZWxzaWYg KCR0eXBlIGVxICJtcnBmIikgew0KKyAgICBpZiAoJGFyZ1swXSAhfiAvXlxk K1wuXGQrXC5cZCtcLlxkKyQvKSB7DQorCSRyZXN1bHRzWzBdID0gIlRoZSBJ UCBhZGRyZXNzIFwiJGFyZ1swXVwiIGlzIG5vdCB2YWxpZC4gWW91IGhhdmUg dGhlIHNwZWNpZnkgSVAgYWRkcmVzcyB0byBSZXZlcnNlIFBhdGggRm9yd2Fy ZGluZyBUZXN0LlxuIjsNCisJJnByaW50X3Jlc3VsdHMoJG1mZyk7DQorICAg IH0gZWxzZSB7DQorCSRhcmc9ICRhcmdbMF07DQorICAgIH0NCisNCit9IGVs c2lmICgkdHlwZSBlcSAiZGFtcCIgfHwgJHR5cGUgZXEgInN1bW1hcnkiIHx8 ICR0eXBlIGVxICJtYmdwc3VtIiB8fCAkdHlwZSBlcSAibXNkcCIgfHwgJHR5 cGUgZXEgIm1zZHBzYSIgfHwgJHR5cGUgZXEgInY2X3N1bW1hcnkiKSB7DQog ICAgIHVuZGVmKCRhcmcpOw0KIH0NCiANCiAjIGNhY2hlIHRoZSBmb2xsb3dp bmcNCi1pZiAoJHR5cGUgZXEgInN1bW1hcnkiIHx8ICR0eXBlIGVxICJtYmdw c3UiIHx8ICR0eXBlIGVxICJkYW1wIiB8fCAkdHlwZSBlcSAibG9nIikgew0K K2lmICgkdHlwZSBlcSAic3VtbWFyeSIgfHwgJHR5cGUgZXEgIm1iZ3BzdSIg fHwgJHR5cGUgZXEgImRhbXAiIHx8ICR0eXBlIGVxICJsb2ciIHx8ICR0eXBl IGVxICJtc2Rwc2EiIHx8ICR0eXBlIGVxICJtc2VzcyIgfHwgJHR5cGUgZXEg Im1mb3J3IiB8fCAkdHlwZSBlcSAidjZfc3VtbWFyeSIgKSB7DQogICAgIGlm ICghJGFyZykgew0KIAkjIGNhY2hlIHJlcXVlc3RzIHdpdGggbm8gYWRkci9h cmd1bWVudA0KIAlsb2NhbCgqQ0FDSEUpOw0K --0-1351984426-1025125144=:86535 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lgform.cgi.diff" Content-Transfer-Encoding: BASE64 Content-ID: <20020626215904.F86535@budapest.dante.org.uk> Content-Description: Content-Disposition: attachment; filename="lgform.cgi.diff" LS0tIGxnZm9ybS5jZ2kub3JpZwlXZWQgSnVuIDI2IDIxOjExOjE0IDIwMDIN CisrKyBsZ2Zvcm0uY2dpCVdlZCBKdW4gMjYgMjE6MzE6MDUgMjAwMg0KQEAg LTEyNiw5ICsxMjYsMTMgQEANCiAkcXVlcnkgPSBuZXcgQ0dJOw0KIA0KIHBy aW50ICRxdWVyeS0+aGVhZGVyOw0KLXByaW50ICRxdWVyeS0+c3RhcnRfaHRt bCgiTG9va2luZ0dsYXNzIGZvcm0iKTsNCiANCi1wcmludCAiPEJPRFk+IjsN CitpZiAoJExHX1NUWUxFKSB7DQorCXByaW50ICRxdWVyeS0+c3RhcnRfaHRt bCgtdGl0bGUgPT4iTG9va2luZ0dsYXNzIGZvcm0iLA0KKwkJCQktc3R5bGUg PT4geydzcmMnID0+ICRMR19TVFlMRX0pOw0KK30gZWxzZSB7DQorCXByaW50 ICRxdWVyeS0+c3RhcnRfaHRtbCgtdGl0bGUgPT4iTG9va2luZ0dsYXNzIGZy b20iKTsNCit9DQogDQogIyBhZGQgdGhlIGNvbXBhbnkgaW1hZ2UsIExHX0lN QUdFDQogcHJpbnQgJExHX0lNQUdFOw0KQEAgLTE0MSw0NiArMTQ1LDU3IEBA DQogSEVBRA0KIA0KICMgc3RhcnQgdGFibGUsIGV0YyBoZXJlDQorcHJpbnQg JHF1ZXJ5LT5zdGFydGZvcm0oIC1hY3Rpb24gPT4gJy9jZ2ktYmluL2xnL2xn LmNnaScsIC0gbWV0aG9kID0+ICdQT1NUJyk7DQorDQogcHJpbnQgPDxET1RB QkxFIDsNCi08Zm9ybSBhY3Rpb249bGcuY2dpIG1ldGhvZD1HRVQ+DQogPGNl bnRlcj4NCi08dGFibGUgYm9yZGVyIGNlbGxzcGFjaW5nPTAgd2lkdGg9NTc1 IGFsaWduPWNlbnRlcj4NCis8dGFibGUgYm9yZGVyIGNlbGxzcGFjaW5nPTAg YWxpZ249Y2VudGVyPg0KIA0KIERPVEFCTEUNCiANCiAjIGF2YWlsYWJsZSBx dWVyeSB0eXBlcyBoZXJlDQotcHJpbnQgPDxRVFlQRVMgOw0KLTx0ciB2YWxp Z249dG9wPg0KLSAgICAgICAgPFREPjxCPlF1ZXJ5OjwvQj4NCi08ZGQ+PGlu cHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVlPSJmcmFtZXJlbGF5 Ij5zaG93IGZyYW1lLXJlbGF5IHB2YyBbRExDSV08L0REPg0KLTxkZD48aW5w dXQgdHlwZT1yYWRpbyBuYW1lPSJxdWVyeSIgdmFsdWU9ImludGVyZmFjZSI+ c2hvdyBpbnRlcmZhY2UgJmx0O2ludGVyZmFjZSZndDs8L0REPg0KLTxkZD48 aW5wdXQgdHlwZT1yYWRpbyBuYW1lPSJxdWVyeSIgdmFsdWU9InByZWZpeCI+ c2hvdyBpcCBiZ3AgJmx0O3ByZWZpeCZndDsgW25ldG1hc2tdPC9ERD4NCi08 ZGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVlPSJuZWln aGJvciI+c2hvdyBpcCBiZ3AgbmVpZ2hib3IgJmx0O0lQX2FkZHImZ3Q7PC9E RD4NCi08ZGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVl PSJyZWdleCI+c2hvdyBpcCBiZ3AgcmVnZXggJmx0O3JlZ19leHAmZ3Q7PC9E RD4NCi08ZGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVl PSJzdW1tYXJ5Ij5zaG93IGlwIGJncCBzdW1tYXJ5PC9ERD4NCi08ZGQ+PGlu cHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVlPSJkYW1wIj5zaG93 IGlwIGJncCBkYW1wZW5lZC1wYXRoczwvREQ+DQotPGRkPjxpbnB1dCB0eXBl PXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0icHJlZml4bGlzdCI+c2hvdyBp cCBwcmVmaXgtbGlzdCAmbHQ7bGlzdF9uYW1lJmd0OzwvREQ+DQotPGRkPjxp bnB1dCB0eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0icm91dGUiPnNo b3cgaXAgcm91dGUgJmx0O3ByZWZpeCZndDsgW25ldG1hc2tdPC9ERD4NCi08 ZGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT0icXVlcnkiIHZhbHVlPSJyb3V0 ZW1hcCI+c2hvdyByb3V0ZS1tYXAgJmx0O21hcF9uYW1lJmd0OzwvREQ+DQot PGRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0ibWJn cCI+c2hvdyBpcCBtYmdwICZsdDtwcmVmaXgmZ3Q7IFtuZXRtYXNrXTwvZGQ+ DQotPGRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0i bWJncHN1bSI+c2hvdyBpcCBtYmdwIHN1bW1hcnk8L2RkPg0KLTxkZD48aW5w dXQgdHlwZT1yYWRpbyBuYW1lPSJxdWVyeSIgdmFsdWU9ImxvZyI+c2hvdyBs b2dnaW5nIFsgfCAmbHQ7bWF0Y2hfc3RyaW5nJmd0O108L0REPg0KLTxkZD48 aW5wdXQgdHlwZT1yYWRpbyBuYW1lPSJxdWVyeSIgdmFsdWU9InBpbmciPnBp bmcgJmx0O0lQX2FkZHIgfCBGUUROJmd0OzwvZGQ+DQotPGRkPjxpbnB1dCB0 eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0idHJhY2UiPnRyYWNlcm91 dGUgJmx0O0lQX2FkZHIgfCBGUUROJmd0OzwvREQ+DQorcHJpbnQgPDxUQUJM RUhFQUQ7DQorPHRyPg0KKzx0aCBhbGlnbj1sZWZ0PlF1ZXJ5OjwvdGg+DQor PHRoIGFsaWduPWxlZnQ+Um91dGVyOjwvdGg+DQorPC90cj4NCis8dHI+PHRk Pg0KKw0KK1RBQkxFSEVBRA0KKw0KK3ByaW50ICRxdWVyeS0+cmFkaW9fZ3Jv dXAgKC1uYW1lID0+ICdxdWVyeScsIC12YWx1ZXMgPT4gXCVpX3FydHlwZSwN CisJCQkJLWRlZmF1bHQgPT4gJy0nLCAtbGluZWJyZWFrID0+ICd0cnVlJyk7 DQorDQorcHJpbnQgJHF1ZXJ5LT5ocjsNCisJCQkNCitwcmludCAkcXVlcnkt PnJhZGlvX2dyb3VwICgtbmFtZSA9PiAncXVlcnknLCAtdmFsdWVzID0+IFwl cl9xcnR5cGUsDQorCQkJCS1kZWZhdWx0ID0+ICctJywgLWxpbmVicmVhayA9 PiAndHJ1ZScpOw0KKw0KK3ByaW50ICRxdWVyeS0+aHI7DQorCQkJDQorcHJp bnQgJHF1ZXJ5LT5yYWRpb19ncm91cCAoLW5hbWUgPT4gJ3F1ZXJ5JywgLXZh bHVlcyA9PiBcJWRfcXJ0eXBlLA0KKwkJCQktZGVmYXVsdCA9PiAnLScsIC1s aW5lYnJlYWsgPT4gJ3RydWUnKTsNCisNCitwcmludCAkcXVlcnktPmhyOw0K KwkJCQ0KKw0KK3ByaW50ICRxdWVyeS0+cmFkaW9fZ3JvdXAgKC1uYW1lID0+ ICdxdWVyeScsIC12YWx1ZXMgPT4gXCVtX3FydHlwZSwNCisJCQkJLWRlZmF1 bHQgPT4gJy0nLCAtbGluZWJyZWFrID0+ICd0cnVlJyk7DQorDQorcHJpbnQg JHF1ZXJ5LT5ocjsNCisJCQkNCitwcmludCAkcXVlcnktPnJhZGlvX2dyb3Vw ICgtbmFtZSA9PiAncXVlcnknLCAtdmFsdWVzID0+IFwldjZfcXJ0eXBlLA0K KwkJCQktZGVmYXVsdCA9PiAnLScsIC1saW5lYnJlYWsgPT4gJ3RydWUnKTsN CiANCi08UD48Qj5Bcmd1bWVudChzKTo8L0I+IDxJTlBVVCBuYW1lPSJhcmdz IiBzaXplPTMwPjwvUD4NCitwcmludCAkcXVlcnktPmhyOw0KKwkJCQ0KK3By aW50IDw8UVRZUEVTIDsNCis8UD5Bcmd1bWVudChzKTo8SU5QVVQgbmFtZT0i YXJncyIgc2l6ZT0zMD48L1A+DQogICAgICAgICA8L1REPg0KICAgICAgICAg PHRkIEFMSUdIPWxlZnQgVkFMSUdOPXRvcD4NCi0gICAgICAgIDxiPlJvdXRl cjo8L0I+DQogDQotPGRkPg0KIFFUWVBFUw0KIA0KLSMgPGRkPjxpbnB1dCB0 eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1ZT0iYXNwYXRoIj5zaCBpcCBh cy1wYXRoLWFjY2Vzcy1saXN0ICZsdDtsaXN0X251bWJlciZndDs8L0REPg0K LSMgPGRkPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icXVlcnkiIHZhbHVl PSJhY2wiPnNoIGFjY2Vzcy1saXN0ICZsdDtsaXN0X251bWJlciZndDs8L2Rk Pg0KLSMgPGRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9InF1ZXJ5IiB2YWx1 ZT0iY29tbXVuaXR5bGlzdCI+c2ggaXAgY29tbXVuaXR5LWxpc3QgJmx0O2xp c3RfbnVtYmVyJmd0OzxERD4NCi0jIDxkZD48aW5wdXQgdHlwZT1yYWRpbyBu YW1lPSJxdWVyeSIgdmFsdWU9InJvdXRlbWFwIj5zaCBpcCByb3V0ZS1tYXAg Jmx0O21hcF9uYW1lJmd0OzwvREQ+DQotDQogIyByZWFkIHJvdXRlcnMgdGFi bGUgYW5kIGNyZWF0ZSB0aGUgc2Nyb2xsaW5nIGxpc3QNCiByZWFkcm91dGVy cygpOw0KIHByaW50ICRxdWVyeS0+c2Nyb2xsaW5nX2xpc3QoLW5hbWUgPT4g J3JvdXRlcicsDQpAQCAtMTg4LDIyICsyMDMsMjcgQEANCiAJCQktc2l6ZSA9 PiAyMCwNCiAJCQktbGFiZWxzID0+IFwlcnRybGFiZWxzKTsNCiANCisNCisN CiAjIGVuZA0KIHByaW50IDw8VEFJTCA7DQotPC9kZD4NCiA8L3RkPg0KIDwv VEFCTEU+DQotPHA+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVN1Ym1pdD4g PElOUFVUIHR5cGU9cmVzZXQgdmFsdWU9UmVzZXQ+PC9GT1JNPg0KKw0KK1RB SUwNCisNCitwcmludCAkcXVlcnktPnN1Ym1pdCgtbmFtZSA9PiAnc3VibWl0 JywgLXZhbHVlID0+J1N1Ym1pdCcpOw0KK3ByaW50ICRxdWVyeS0+cmVzZXQ7 DQorcHJpbnQgJHF1ZXJ5LT5lbmRmb3JtOw0KKw0KK3ByaW50IDw8VEFJTDIg Ow0KIDwvY2VudGVyPg0KIDxicj4NCiA8YSBocmVmPWxnbm90ZXMuaHRtbD5M b29raW5nIEdsYXNzIG5vdGVzPC9hPg0KLVRBSUwNCiANCi1wcmludCA8PFRB SUwgOw0KLTxwPg0KLSRMR19JTkZPDQotPC9ib2R5Pg0KLVRBSUwNCitUQUlM Mg0KKw0KK3ByaW50ICRMR19JTkZPOw0KIA0KIHByaW50ICRxdWVyeS0+ZW5k X2h0bWw7DQogDQo= --0-1351984426-1025125144=:86535 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="lg.conf.diff" Content-Transfer-Encoding: BASE64 Content-ID: <20020626215904.J86535@budapest.dante.org.uk> Content-Description: Content-Disposition: attachment; filename="lg.conf.diff" LS0tIGxnLmNvbmYub3JpZwlXZWQgSnVuIDI2IDEzOjIxOjU2IDIwMDINCisr KyBsZy5jb25mCVdlZCBKdW4gMjYgMjE6MDk6NTMgMjAwMg0KQEAgLTQxLDYg KzQxLDEwIEBADQogIw0KICMkTEdfSU5GTz0iRm9yIHN1cHBvcnQsIGNvbnRh Y3QgPGEgaHJlZj1cIm1haWx0bzp3ZWJtYXN0ZXJcQGxvY2FsaG9zdFwiPndl Ym1hc3RlcjwvYT4iOw0KICMNCisjIExHX1NUWUxFCWRlZmluZSBzdHlsZSBz aGVldCB0byBiZSB1c2VkIGZvciBmb3JtYXQgSFRNTA0KKyMNCisjJExHX1NU WUxFPSJodHRwOi8vd3d3LnlvdXIuc2l0ZS9zdHlsZS9zdHlsZS5jc3MiOw0K KyMNCiAjDQogIyBMR19MT0cJaXMgZWl0aGVyIGEgRlFQTiAoZnVsbHkgcXVh bGlmaWVkIHBhdGggbmFtZSkgb3IgdGhlIHN5c2xvZw0KICMJCWZhY2lsaXR5 IHRvIHVzZSBmb3IgbG9nZ2luZy4gIGlmIG5vdCBkZWZpbmVkLCB0aGUgTEcN CkBAIC0xMDMsMyArMTA3LDUxIEBADQogIw0KICRMR19TVFJJUD0xOw0KICMN CisjIyMjIyMNCisjbG9va2luZyBnbGFzcyBjb21tYW5kcw0KKyNpbnRlcmZh Y2VzIHF1ZXJpZXMNCisjJGlfcXJ0eXBleydmcmFtZXJlbGF5J309IlNob3cg RnJhbWUtUmVsYXkgUFZDIFtETENJXSI7DQorJGlfcXJ0eXBleydpbnRlcmZh Y2UnfT0iU2hvdyBJbnRlcmZhY2UgUGFyYW1ldGVycyBbaW50ZXJmYWNlXSI7 DQorI3JvdXRpbmcgcXVlcmllcw0KKyRyX3FydHlwZXsncHJlZml4J309IlNo b3cgQkdQIFByZWZpeCA8cHJlZml4PiBbbmV0bWFza10iOw0KKyRyX3FydHlw ZXsnbmVpZ2hib3InfT0iU2hvdyBCR1AgTmVpZ2hib3IgPElQX0FkZHI+IjsN Ciskcl9xcnR5cGV7J3JlZ2V4J309IlNob3cgQkdQIEFTLVBBVEgvUmVnZXgg PEFTX3JlZ2V4PiI7DQorJHJfcXJ0eXBleydzdW1tYXJ5J309IlNob3cgQkdQ IFBlZXJpbmcgU3RhdHVzIjsNCiskcl9xcnR5cGV7J2RhbXAnfT0iU2hvdyBC R1AgRGFtcGVuZWQgUGF0aHMiOw0KKyMkcl9xcnR5cGV7J3ByZWZpeGxpc3Qn fT0iU2hvdyBSb3V0aW5nIFBvbGljeSBUZXJtcyA8cG9saWN5X25hbWUvbnVt YmVyPiI7DQorJHJfcXJ0eXBleydyb3V0ZSd9PSJTaG93IElQIFJvdXRlIDxw cmVmaXg+IFtuZXRtYXNrXSI7DQorIyRyX3FydHlwZXsncm91dGVtYXAnfT0i U2hvdyBSb3V0aW5nIFBvbGljeSBBY3Rpb25zIDxwb2xpY3lfbmFtZS9udW1i ZXI+IjsNCisjZGVidWcgcXVlcmllcw0KKyMkZF9xcnR5cGV7J2xvZyd9PSJT aG93IExvZ3MgWyB8IDxtYXRjaF9zdHJpbmc+XSI7DQorJGRfcXJ0eXBleydw aW5nJ309IlBpbmcgPElQX0FkZHIgfCBGUUROPiI7DQorJGRfcXJ0eXBleyd0 cmFjZSd9PSJUcmFjZXJvdXRlIDxJUF9BZGRyIHwgRlFETj4iOw0KKyNtdWx0 aWNhc3QgcXVlcmllcw0KKyRtX3FydHlwZXsnbWJncCd9PSJTaG93IE11bHRp Y2FzdCBSb3V0ZSAoTUJHUCkgPHByZWZpeD4gW25ldG1hc2tdIjsNCiskbV9x cnR5cGV7J21iZ3BzdW0nfT0iU2hvdyBNQkdQIFBlZXJpbmcgU3RhdHVzIjsN Cisjc2hvdyBpcCBwaW0gbmVpZ2hib3Ivc2hvdyBwaW0gbmVpZ2hib3JzDQor JG1fcXJ0eXBleydwaW1fbmVpZ2hib3InfT0iU2hvdyBQSU0gTmVpZ2hib3Jz IFtkZXRhaWxdIjsNCisjc2hvdyBpcCBwaW0gaW50ZXJmYWNlL3Nob3cgcGlt IGludGVyZmFjZQ0KKyRtX3FydHlwZXsncGltX2ludGVyZmFjZSd9PSJTaG93 IFBJTSBJbnRlcmZhY2VzIjsNCisjc2hvdyBpcCBwaW0gcnAgbWFwcGluZy9z aG93IHBpbSBycHMNCiskbV9xcnR5cGV7J3BpbV9ycCd9PSJTaG93IFBJTSBS ZW5kZXotdm91cyBQb2ludHMgW2RldGFpbF0iOw0KKyM/Pz8vc2hvdyBwaW0g am9pbiAoZXh0ZW5zaXZlKQ0KKyRtX3FydHlwZXsncGltX2pvaW4nfT0iU2hv dyBQSU0gSm9pbiBbZ3JvdXBfYWRkcmVzc10iOw0KKyNzaG93IGlwIG1yb3V0 ZS9zaG93IG11bHRpY2FzdCByb3V0ZSBbYWN0aXZlXQ0KKyRtX3FydHlwZXsn bWZvcncnfT0iU2hvdyBNdWx0aWNhc3QgRm9yd2FyZGluZyBUYWJsZSBbYWN0 aXZlXSI7DQorI3Nob3cgaXAgbXNkcCBzdW1tYXJ5L3Nob3cgbXNkcA0KKyRt X3FydHlwZXsnbXNkcCd9PSJTaG93IE1TRFAgUGVlcmluZyBTdGF0dXMiOw0K KyNzaG93IGlwIG1zZHAgc2EgY2FjaGUvc2hvdyBtc2RwIHNvdXJjZS1hY3Rp dmUNCiskbV9xcnR5cGV7J21zZHBzYSd9PSJTaG93IE1TRFAgU291cmNlIEFj dGl2ZSBUYWJsZSI7DQorI3Nob3cgaXAgc2RyfHNob3cgbXVsdGljYXN0IHNl c3Npb25zDQorJG1fcXJ0eXBleydtc2Vzcyd9PSJTaG93IE11bHRpY2FzdCBT RFIgc2Vzc2lvbnMgW2RldGFpbF0iOw0KKyNzaG93IGlwIHJwZiBbYWRkcmVz c10gL3Nob3cgbXVsdGljYXN0IHJwZiBbYWRkcmVzc10NCiskbV9xcnR5cGV7 J21ycGYnfT0iVGVzdCBNdWx0aWNhc3QgUlBGIDxhZGRyZXNzPiI7DQorI0lQ djYgY29tbWFuZHMNCisjc2hvdyBpcHY2IGludGVyZmFjZSAvIHNob3cgaW50 ZXJmYWNlDQorJHY2X3FydHlwZXsndjZfaW50ZXJmYWNlJ309IlNob3cgSVB2 NiBpbnRlcmZhY2UgcGFyYW1ldGVycyBbaW50ZXJmYWNlXSI7DQorI3Nob3cg YmdwIGlwdjYgc3VtbWFyeSAvIHNob3cgYmdwIHN1bW1hcnkNCiskdjZfcXJ0 eXBleyd2Nl9zdW1tYXJ5J309IlNob3cgSVB2NiBCR1AgU3VtbWFyeSI7DQor I3Nob3cgaXB2NiByb3V0ZSAvIHNob3cgcm91dGUgdGFibGUgaW5ldDYuMA0K KyR2Nl9xcnR5cGV7J3Y2X3JvdXRlJ309IlNob3cgSVB2NiBSb3V0ZXMgPHBy ZWZpeD4iOw0KKyNzaG93IGJncCBpcHY2IC8gPz8/DQorIyR2Nl9xcnR5cGV7 J3Y2X2JncCd9PSJTaG93IElQdjYgQkdQIHRhYmxlIjsNCg== --0-1351984426-1025125144=:86535-- From owner-rancid-discuss@shrubbery.net Fri Jun 28 22:51:51 2002 Received: from guelah.shrubbery.net (guelah.shrubbery.net [198.58.5.1]) by ni.shrubbery.net (8.11.6/8.11.1) with ESMTP id g5SMpp416328 for ; Fri, 28 Jun 2002 22:51:51 GMT Received: (from majordom@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMoRt23299 for rancid-discuss-outgoing; Fri, 28 Jun 2002 22:50:27 GMT Received: (from heas@localhost) by guelah.shrubbery.net (8.11.6/8.11.1) id g5SMlYl23269; Fri, 28 Jun 2002 22:47:34 GMT Date: Fri, 28 Jun 2002 15:47:33 -0700 From: john heasley To: Janos Mohacsi Cc: rancid@shrubbery.net, rancid-discuss@shrubbery.net Subject: Re: paranoid patch for cisco routers :) Message-ID: <20020628154733.U3591@shrubbery.net> References: <20020626105156.A81512-100000@budapest.dante.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20020626105156.A81512-100000@budapest.dante.org.uk>; from janos@budapest.dante.org.uk on Wed, Jun 26, 2002 at 10:59:42AM +0100 X-note: live free, or die! X-homer: mmmm, forbidden doughnut. Sender: owner-rancid-discuss@shrubbery.net Precedence: bulk Wed, Jun 26, 2002 at 10:59:42AM +0100, Janos Mohacsi: > > Dear All, > We are using IS-IS as an IGP and rancid did not remove the IS-IS > password. Also if we set up FILTER_PWDS=ALL we would prefer removing the > community strings... sorry for the delay in response...get to things as fast as i can. some other folks have sent some fixes as well...getting to those. of course, thanks to all who use, comment, and/or contribute to rancid! isis pwds definitely should be filtered, esp as they appear to be completely clear-text in the IOS i checked. i also found area-password and domain-password under router isis. the snmp-sever community, however, is already handled, though by a separate knob. please see NOCOMMSTR variable of env(5). i will add a note to that effect in the manpage. i am committing this (after i test): Index: rancid.in =================================================================== RCS file: /home/rancid/.CVS/rancid/bin/rancid.in,v retrieving revision 1.113 diff -c -r1.113 rancid.in *** rancid.in 2002/05/09 21:22:14 1.113 --- rancid.in 2002/06/28 22:35:12 *************** *** 945,950 **** --- 945,958 ---- if (/^( ip ospf authentication-key) / && $filter_pwds >= 1) { ProcessHistory("","","","!$1 \n"); next; } + # isis passwords appear to be completely plain-text + if (/^\s+isis password (\S+)( .*)?/ && $filter_pwds >= 1) { + ProcessHistory("","","","!$1 $2\n"); next; + } + if (/^\s+(domain-password|area-password) (\S+)( .*)?/ + && $filter_pwds >= 1) { + ProcessHistory("","","","!$1 $2\n"); next; + } # this is reversable, despite 'md5' in the cmd if (/^( ip ospf message-digest-key \d+ md5) / && $filter_pwds >= 1) { ProcessHistory("","","","!$1 \n"); next;