Porting to vxWorks 6.6-correction

Yakov Gerlovin <[email protected]> Fri, 26 Sep 2008 11:15:25 +0300
Newsgroups gmane.comp.corba.omniorb.devel
Message-ID <93BC09B2B8795C49B4E3453CE6A45A186678CFE737@ILPTMAIL02.ecitele.com>
--_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello,

I'd like to share with you the fix I made, while compiling the omniORB for =
vxWorks (I'm running Workbench 3.0 under WinXP).
The problem is that for some strange reason the  'inet_addr' function is de=
clared as

u_long inet_addr(register char *inetString)

and the compiler generates the following errors when compiling  orbcore\tra=
nsportRules.cc (Revision 1.1.4.8)

omniORB/orbcore/transportRules.cc: In member function 'virtual CORBA::Boole=
an omni::builtinIPv4Rule::match(const char*)':
omniORB/orbcore/transportRules.cc:287: error: invalid conversion from 'cons=
t char*' to 'char*'
omniORB/orbcore/transportRules.cc:287: error:   initializing argument 1 of =
'long unsigned int inet_addr(char*)'
omniORB/orbcore/transportRules.cc:294: error: invalid conversion from 'cons=
t char*' to 'char*'
omniORB/orbcore/transportRules.cc:294: error:   initializing argument 1 of =
'long unsigned int inet_addr(char*)'
omniORB/orbcore/transportRules.cc: In static member function 'static CORBA:=
:Boolean omni::builtinRuleType::parseIPv4AddressMask(const char*, CORBA::UL=
ong&, CORBA::ULong&)':
omniORB/orbcore/transportRules.cc:476: error: invalid conversion from 'cons=
t char*' to 'char*'
omniORB/orbcore/transportRules.cc:476: error:   initializing argument 1 of =
'long unsigned int inet_addr(char*)'

the fix is obvious:

#287:  CORBA::ULong address =3D inet_addr((char*)ipv4.in());
#294: CORBA::ULong address =3D inet_addr((char*)ipv4.in() + 7);
#476: network =3D inet_addr((char*)cp.in());


Kind regards,
Yakov

--_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_
Content-Type: application/octet-stream; name="transportRules.cc"
Content-Description: transportRules.cc
Content-Disposition: attachment; filename="transportRules.cc"; size=21835;
	creation-date="Sun, 21 Sep 2008 18:57:05 GMT";
	modification-date="Wed, 24 Sep 2008 17:33:26 GMT"
Content-Transfer-Encoding: base64

Ly8gLSotIE1vZGU6IEMrKzsgLSotDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNr
YWdlICAgOiBvbW5pT1JCDQovLyB0cmFuc3BvcnRSdWxlLmNjICAgICAgICAgICBDcmVhdGVkIG9u
OiAyMS8wOC8yMDAxDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRob3IgICAgOiBT
YWkgTGFpIExvIChzbGwpDQovLw0KLy8gICAgQ29weXJpZ2h0IChDKSAyMDAxIEFUJlQgTGFib3Jh
dG9yaWVzIENhbWJyaWRnZQ0KLy8NCi8vICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBvbW5p
T1JCIGxpYnJhcnkNCi8vDQovLyAgICBUaGUgb21uaU9SQiBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KLy8gICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCi8vICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0K
Ly8gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLg0KLy8NCi8vICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KLy8gICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCi8vICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VDQovLyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4NCi8vDQovLyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KLy8gICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQ0KLy8gICAgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BDQovLyAgICAw
MjExMS0xMzA3LCBVU0ENCi8vDQovLw0KLy8gRGVzY3JpcHRpb246DQovLw0KDQovKg0KICAkTG9n
OiB0cmFuc3BvcnRSdWxlcy5jYyx2ICQNCiAgUmV2aXNpb24gMS4xLjQuOCAgMjAwNy8xMC8yOSAx
MTozMzozOSAgZGdyaXNieQ0KICBQcm9wZXJseSBzdXBwb3J0IElQdjQgaW4gSVB2NiBpbiBsb2Nh
bGhvc3QgdHJhbnNwb3J0IHJ1bGUuDQoNCiAgUmV2aXNpb24gMS4xLjQuNyAgMjAwNi8xMS8wMiAx
NDowMDo1NCAgZGdyaXNieQ0KICBSZW1vdmUgYSBmZXcgd2FybmluZ3MuDQoNCiAgUmV2aXNpb24g
MS4xLjQuNiAgMjAwNi8wOC8wOSAxNzo1NTozMiAgZGdyaXNieQ0KICBQZXJtaXQgaG9zdG5hbWVz
IGluIHRyYW5zcG9ydFJ1bGVzLg0KDQogIFJldmlzaW9uIDEuMS40LjUgIDIwMDYvMDQvMjQgMTQ6
MjY6MDAgIGRncmlzYnkNCiAgTWF0Y2ggSVB2NC1pbi1JUHY2IGFkZHJlc3NlcyBpbiBJUHY0IHJ1
bGVzLg0KDQogIFJldmlzaW9uIDEuMS40LjQgIDIwMDYvMDQvMjEgMTQ6NDA6MzkgIGRncmlzYnkN
CiAgSVB2NiBzdXBwb3J0IGluIHRyYW5zcG9ydCBydWxlcy4NCg0KICBSZXZpc2lvbiAxLjEuNC4z
ICAyMDA2LzAzLzI1IDE4OjU0OjAzICBkZ3Jpc2J5DQogIEluaXRpYWwgSVB2NiBzdXBwb3J0Lg0K
DQogIFJldmlzaW9uIDEuMS40LjIgIDIwMDUvMDEvMDYgMjM6MTA6NDEgIGRncmlzYnkNCiAgQmln
IG1lcmdlIGZyb20gb21uaTRfMF9kZXZlbG9wLg0KDQogIFJldmlzaW9uIDEuMS40LjEgIDIwMDMv
MDMvMjMgMjE6MDI6MDAgIGRncmlzYnkNCiAgU3RhcnQgb2Ygb21uaU9SQiA0LjEueCBkZXZlbG9w
bWVudCBicmFuY2guDQoNCiAgUmV2aXNpb24gMS4xLjIuNyAgMjAwMy8wMi8xNyAwMjowMzowOSAg
ZGdyaXNieQ0KICB2eFdvcmtzIHBvcnQuIChUaGFua3MgTWljaGFlbCBTdHVybSAvIEFjdGVybmEg
RW5pbmdlbiBHbWJIKS4NCg0KICBSZXZpc2lvbiAxLjEuMi42ICAyMDAzLzAxLzA2IDExOjExOjU1
ICBkZ3Jpc2J5DQogIE5ldyBBZGRySW5mbyBpbnN0ZWFkIG9mIGdldGhvc3RieW5hbWUuDQoNCiAg
UmV2aXNpb24gMS4xLjIuNSAgMjAwMS8wOS8yNCAxNjoxNjoxMCAgc2xsDQogIEFsbG93IHNlcnZl
clRyYW5zcG9ydFJ1bGUgYW5kIGNsaWVudFRyYW5zcG9ydFJ1bGUgdG8gYmUgc3BlY2lmaWVkIGFz
DQogIC1PUkIgaW5pdGlhbGlzYXRpb24gb3B0aW9ucy4NCg0KICBSZXZpc2lvbiAxLjEuMi40ICAy
MDAxLzA4LzMxIDE2OjU5OjU5ICBzbGwNCiAgU3VwcG9ydCAnXicgcHJlZml4IGluIGFkZHJlc3Mg
ZmllbGQuDQogIERvIGhvc3QgYWRkcmVzcyBsb29rdXAgaW4gZXh0cmFjdElQdjQgaWYgbmVjZXNz
YXJ5Lg0KDQogIFJldmlzaW9uIDEuMS4yLjMgIDIwMDEvMDgvMzEgMTE6NTY6NTIgIHNsbA0KICBD
aGFuZ2UgdGhlIGRlZmF1bHQgcHJlZmVyZW5jZSB0byB1bml4LHRjcCxzc2wuDQogIE1pbm9yIGZp
eCB0byBleHRyYWN0SVB2NC4NCg0KICBSZXZpc2lvbiAxLjEuMi4yICAyMDAxLzA4LzI5IDE3OjU0
OjE1ICBzbGwNCiAgTmV3IG1ldGhvZCBkdW1wUnVsZS4NCg0KICBSZXZpc2lvbiAxLjEuMi4xICAy
MDAxLzA4LzIzIDE2OjAwOjM1ICBzbGwNCiAgQWRkZWQgbWV0aG9kIGluIGdpb3BUcmFuc3BvcnRJ
bXBsIHRvIHJldHVybiB0aGUgYWRkcmVzc2VzIG9mIHRoZSBob3N0DQogIGludGVyZmFjZXMuDQoN
CiovDQoNCiNpbmNsdWRlIDxvbW5pT1JCNC9DT1JCQS5oPg0KI2luY2x1ZGUgPG9tbmlPUkI0L29t
bmlVUkkuaD4NCiNpbmNsdWRlIDxvcmJPcHRpb25zLmg+DQojaW5jbHVkZSA8dHJhbnNwb3J0UnVs
ZXMuaD4NCiNpbmNsdWRlIDxpbml0aWFsaXNlci5oPg0KI2luY2x1ZGUgPFNvY2tldENvbGxlY3Rp
b24uaD4NCiNpbmNsdWRlIDxsaWJjV3JhcHBlci5oPg0KI2luY2x1ZGUgPG9tbmlPUkI0L2dpb3BF
bmRwb2ludC5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5j
bHVkZSA8Y3R5cGUuaD4NCg0KI2luY2x1ZGUgPHRjcC90Y3BDb25uZWN0aW9uLmg+DQoNCk9NTklf
TkFNRVNQQUNFX0JFR0lOKG9tbmkpDQoNCnN0YXRpYyB0cmFuc3BvcnRSdWxlcyBzZXJ2ZXJSdWxl
c187DQpzdGF0aWMgdHJhbnNwb3J0UnVsZXMgY2xpZW50UnVsZXNfOw0KDQpzdGF0aWMgY2hhciog
ZHVtcFJ1bGVTdHJpbmcodHJhbnNwb3J0UnVsZXM6OlJ1bGVBY3Rpb25QYWlyKiByYSk7DQoNCi8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlczo6dHJhbnNwb3J0UnVsZXMoKSB7DQp9
DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlczo6fnRyYW5zcG9ydFJ1bGVz
KCkgew0KICByZXNldCgpOw0KfQ0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0Kdm9pZA0KdHJhbnNw
b3J0UnVsZXM6OnJlc2V0KCkgew0KICBvbW5pdmVjdG9yPFJ1bGVBY3Rpb25QYWlyKj46Oml0ZXJh
dG9yIGkgPSBwZF9ydWxlcy5iZWdpbigpOw0KICBvbW5pdmVjdG9yPFJ1bGVBY3Rpb25QYWlyKj46
Oml0ZXJhdG9yIGxhc3QgPSBwZF9ydWxlcy5lbmQoKTsNCg0KICBmb3IgKDsgaSAhPSBsYXN0OyBp
KyspIHsNCiAgICBkZWxldGUgKCppKTsNCiAgfQ0KICBwZF9ydWxlcy5lcmFzZShwZF9ydWxlcy5i
ZWdpbigpLGxhc3QpOw0KfQ0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KdHJhbnNwb3J0UnVsZXMm
DQp0cmFuc3BvcnRSdWxlczo6c2VydmVyUnVsZXMoKSB7DQogIHJldHVybiBzZXJ2ZXJSdWxlc187
DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQp0cmFuc3BvcnRSdWxlcyYNCnRyYW5zcG9ydFJ1
bGVzOjpjbGllbnRSdWxlcygpIHsNCiAgcmV0dXJuIGNsaWVudFJ1bGVzXzsNCn0NCg0KLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8NCkNPUkJBOjpCb29sZWFuDQp0cmFuc3BvcnRSdWxlczo6bWF0Y2goY29u
c3QgY2hhciogZW5kcG9pbnQsDQoJCSAgICAgIHRyYW5zcG9ydFJ1bGVzOjpzZXF1ZW5jZVN0cmlu
ZyYgYWN0aW9ucywNCgkJICAgICAgQ09SQkE6OlVMb25nJiBwcmlvcml0eSkgew0KDQogIG9tbml2
ZWN0b3I8UnVsZUFjdGlvblBhaXIqPjo6aXRlcmF0b3IgaSA9IHBkX3J1bGVzLmJlZ2luKCk7DQog
IG9tbml2ZWN0b3I8UnVsZUFjdGlvblBhaXIqPjo6aXRlcmF0b3IgbGFzdCA9IHBkX3J1bGVzLmVu
ZCgpOw0KDQogIHdoaWxlIChpICE9IGxhc3QpIHsNCiAgICBpZiAoKCppKS0+cnVsZV8tPm1hdGNo
KGVuZHBvaW50KSkgew0KICAgICAgQ09SQkE6OlVMb25nIG1heCA9ICgqaSktPmFjdGlvbl8ubWF4
aW11bSgpOw0KICAgICAgQ09SQkE6OlVMb25nIGxlbiA9ICgqaSktPmFjdGlvbl8ubGVuZ3RoKCk7
DQogICAgICBhY3Rpb25zLnJlcGxhY2UobWF4LGxlbiwoKmkpLT5hY3Rpb25fLmdldF9idWZmZXIo
KSwwKTsNCiAgICAgIHByaW9yaXR5ID0gaSAtIHBkX3J1bGVzLmJlZ2luKCk7DQogICAgICByZXR1
cm4gMTsNCiAgICB9DQogICAgaSsrOw0KICB9DQogIHJldHVybiAwOw0KfQ0KDQovLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLw0KY2hhcioNCnRyYW5zcG9ydFJ1bGVzOjpkdW1wUnVsZShDT1JCQTo6VUxvbmcg
aW5kZXgpIHsNCiAgb21uaXZlY3RvcjxSdWxlQWN0aW9uUGFpcio+OjppdGVyYXRvciBpID0gcGRf
cnVsZXMuYmVnaW4oKTsNCiAgb21uaXZlY3RvcjxSdWxlQWN0aW9uUGFpcio+OjppdGVyYXRvciBs
YXN0ID0gcGRfcnVsZXMuZW5kKCk7DQoNCiAgaWYgKCAoaStpbmRleCkgPj0gbGFzdCApIHJldHVy
biAwOw0KDQogIHJldHVybiBkdW1wUnVsZVN0cmluZygoKihpK2luZGV4KSkpOw0KfQ0KDQoNCi8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vDQpzdGF0aWMgDQpvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpS
dWxlVHlwZSo+KiYNCnJ1bGVUeXBlcygpIHsNCiAgc3RhdGljIG9tbml2ZWN0b3I8dHJhbnNwb3J0
UnVsZXM6OlJ1bGVUeXBlKj4qIHJ1bGV0eXBlc18gPSAwOw0KICBpZiAoIXJ1bGV0eXBlc18pIHsN
CiAgICBydWxldHlwZXNfID0gbmV3IG9tbml2ZWN0b3I8dHJhbnNwb3J0UnVsZXM6OlJ1bGVUeXBl
Kj47DQogIH0NCiAgcmV0dXJuIHJ1bGV0eXBlc187DQp9DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
DQp2b2lkDQp0cmFuc3BvcnRSdWxlczo6YWRkUnVsZVR5cGUodHJhbnNwb3J0UnVsZXM6OlJ1bGVU
eXBlKiBydCkgew0KICBydWxlVHlwZXMoKS0+cHVzaF9iYWNrKHJ0KTsNCn0NCg0KDQoNCi8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KY2xhc3MgYnVpbHRpbk1hdGNo
QWxsUnVsZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0
aW5NYXRjaEFsbFJ1bGUoY29uc3QgY2hhciogYWRkcmVzc19tYXNrKSA6IA0KICAgIHRyYW5zcG9y
dFJ1bGVzOjpSdWxlKGFkZHJlc3NfbWFzaykge30NCg0KICB+YnVpbHRpbk1hdGNoQWxsUnVsZSgp
IHt9DQoNCiAgQ09SQkE6OkJvb2xlYW4gbWF0Y2goY29uc3QgY2hhciopIHsgcmV0dXJuIDE7IH0N
Cn07DQoNCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQpzdGF0aWMgY2hhciogZXh0cmFjdEhvc3QoY29u
c3QgY2hhciogZW5kcG9pbnQpIHsNCiAgLy8gUmV0dXJucyB0aGUgaG9zdCBhZGRyZXNzIGlmIHRo
ZXJlIGlzIG9uZSBpbiB0aGUgZW5kcG9pbnQgc3RyaW5nLg0KDQogIC8vIFNraXAgZ2lvcDp0Y3A6
IG9yIGVxdWl2YWxlbnQuDQogIGNvbnN0IGNoYXIqIHAgPSBzdHJjaHIoZW5kcG9pbnQsICc6Jyk7
DQogIGlmIChwKSBwID0gc3RyY2hyKHArMSwgJzonKTsNCiAgaWYgKHApIHsNCiAgICArK3A7DQog
ICAgQ09SQkE6OlVTaG9ydCBwb3J0Ow0KICAgIENPUkJBOjpTdHJpbmdfdmFyIGhvc3QgPSBvbW5p
VVJJOjpleHRyYWN0SG9zdFBvcnQocCwgcG9ydCwgMCk7DQoNCiAgICBpZiAoTGliY1dyYXBwZXI6
OmlzaXA0YWRkcihob3N0KSkgew0KICAgICAgcmV0dXJuIGhvc3QuX3JldG4oKTsNCiAgICB9DQog
ICAgZWxzZSBpZiAoTGliY1dyYXBwZXI6OmlzaXA2YWRkcihob3N0KSkgew0KICAgICAgLy8gQ2hl
Y2sgaWYgaXQncyBJUHY0IGVuY2Fwc3VsYXRlZCBpbiBJUHY2DQogICAgICBpZiAoc3RybmNhc2Vj
bXAoaG9zdCwgIjo6ZmZmZjoiLCA3KSA9PSAwICYmDQoJICBMaWJjV3JhcHBlcjo6aXNpcDRhZGRy
KChjb25zdCBjaGFyKilob3N0ICsgNykpIHsNCg0KCXJldHVybiBDT1JCQTo6c3RyaW5nX2R1cCgo
Y29uc3QgY2hhciopaG9zdCArIDcpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuIGhvc3QuX3JldG4o
KTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAvLyBUcnkgdG8gcmVzb2x2ZSBuYW1lDQogICAg
ICBMaWJjV3JhcHBlcjo6QWRkckluZm9fdmFyIGFpKExpYmNXcmFwcGVyOjpnZXRBZGRySW5mbyho
b3N0LHBvcnQpKTsNCiAgICAgIGlmIChhaS5pbigpKQ0KICAgICAgICByZXR1cm4gYWktPmFzU3Ry
aW5nKCk7DQogICAgfQ0KICB9DQogIHJldHVybiAwOw0KfQ0KDQoNCi8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vDQpjbGFzcyBidWlsdGluTG9jYWxIb3N0UnVsZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6
UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0aW5Mb2NhbEhvc3RSdWxlKGNvbnN0IGNoYXIqIGFkZHJl
c3NfbWFzaykgOiANCiAgICB0cmFuc3BvcnRSdWxlczo6UnVsZShhZGRyZXNzX21hc2spIHt9DQoN
CiAgfmJ1aWx0aW5Mb2NhbEhvc3RSdWxlKCkge30NCg0KICBDT1JCQTo6Qm9vbGVhbiBtYXRjaChj
b25zdCBjaGFyKiBlbmRwb2ludCkgeyANCg0KICAgIGlmIChzdHJuY21wKGVuZHBvaW50LCJnaW9w
OnVuaXgiLDkpID09IDApIHJldHVybiAxOw0KDQogICAgLy8gT3RoZXJ3aXNlLCB3ZSB3YW50IHRv
IGNoZWNrIGlmIHRoaXMgZW5kcG9pbnQgbWF0Y2hlcyBvbmUgb2Ygb3VyDQogICAgLy8gYWRkcmVz
c2VzLg0KICAgIENPUkJBOjpTdHJpbmdfdmFyIGhvc3Q7DQogICAgaG9zdCA9IGV4dHJhY3RIb3N0
KGVuZHBvaW50KTsNCg0KICAgIGlmICggKGNvbnN0IGNoYXIqKWhvc3QgKSAgew0KICAgICAgLy8g
R2V0IHRoaXMgaG9zdCdzIElQIGFkZHJlc3NlcyBhbmQgbG9vayBmb3IgYSBtYXRjaA0KICAgICAg
Y29uc3Qgb21uaXZlY3Rvcjxjb25zdCBjaGFyKj4qIGlmYWRkcnM7DQogICAgICBpZmFkZHJzID0g
Z2lvcFRyYW5zcG9ydEltcGw6OmdldEludGVyZmFjZUFkZHJlc3MoImdpb3A6dGNwIik7DQogICAg
ICBpZiAoIWlmYWRkcnMpIHJldHVybiAwOw0KICAgICAgew0KCW9tbml2ZWN0b3I8Y29uc3QgY2hh
cio+Ojpjb25zdF9pdGVyYXRvciBpICAgID0gaWZhZGRycy0+YmVnaW4oKTsNCglvbW5pdmVjdG9y
PGNvbnN0IGNoYXIqPjo6Y29uc3RfaXRlcmF0b3IgbGFzdCA9IGlmYWRkcnMtPmVuZCgpOw0KCXdo
aWxlICggaSAhPSBsYXN0ICkgew0KCSAgaWYgKCBvbW5pOjpzdHJNYXRjaCgoKmkpLGhvc3QpICkg
cmV0dXJuIDE7DQoJICBpKys7DQoJfQ0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAwOyAN
CiAgfQ0KfTsNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCmNsYXNzIGJ1aWx0aW5JUHY0UnVsZSA6
IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIGJ1aWx0aW5JUHY0UnVs
ZShjb25zdCBjaGFyKiBhZGRyZXNzX21hc2ssDQoJCSAgQ09SQkE6OlVMb25nIG4sIENPUkJBOjpV
TG9uZyBtKSA6IA0KICAgIHRyYW5zcG9ydFJ1bGVzOjpSdWxlKGFkZHJlc3NfbWFzayksIG5ldHdv
cmtfKG4pLCBuZXRtYXNrXyhtKSB7fQ0KDQogIH5idWlsdGluSVB2NFJ1bGUoKSB7fQ0KDQogIENP
UkJBOjpCb29sZWFuIG1hdGNoKGNvbnN0IGNoYXIqIGVuZHBvaW50KSB7IA0KDQogICAgQ09SQkE6
OlN0cmluZ192YXIgaXB2NDsNCiAgICBpcHY0ID0gZXh0cmFjdEhvc3QoZW5kcG9pbnQpOw0KICAg
IGlmICgoY29uc3QgY2hhciopaXB2NCkgew0KICAgICAgaWYgKExpYmNXcmFwcGVyOjppc2lwNGFk
ZHIoaXB2NCkpIHsNCglDT1JCQTo6VUxvbmcgYWRkcmVzcyA9IGluZXRfYWRkcigoY2hhciopaXB2
NC5pbigpKTsNCglyZXR1cm4gKG5ldHdvcmtfID09IChhZGRyZXNzICYgbmV0bWFza18pKTsNCiAg
ICAgIH0NCiAgICAgIGVsc2UgaWYgKHN0cm5jYXNlY21wKGlwdjQsICI6OmZmZmY6IiwgNykgPT0g
MCAmJg0KCSAgICAgICBMaWJjV3JhcHBlcjo6aXNpcDRhZGRyKChjb25zdCBjaGFyKilpcHY0ICsg
NykpIHsNCg0KCS8vIElQdjQgaW4gSVB2Ng0KCUNPUkJBOjpVTG9uZyBhZGRyZXNzID0gaW5ldF9h
ZGRyKChjaGFyKilpcHY0LmluKCkgKyA3KTsNCglyZXR1cm4gKG5ldHdvcmtfID09IChhZGRyZXNz
ICYgbmV0bWFza18pKTsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoc3RybmNtcChlbmRwb2lu
dCwiZ2lvcDp1bml4Iiw5KSA9PSAwKSB7DQogICAgICAvLyBsb2NhbCB0cmFuc3BvcnQuIERvZXMg
dGhpcyBydWxlIGFwcGx5IHRvIHRoaXMgaG9zdCdzIA0KICAgICAgLy8gSVAgYWRkcmVzcyhlcyk/
IA0KICAgICAgY29uc3Qgb21uaXZlY3Rvcjxjb25zdCBjaGFyKj4qIGlmYWRkcnM7DQogICAgICBp
ZmFkZHJzID0gZ2lvcFRyYW5zcG9ydEltcGw6OmdldEludGVyZmFjZUFkZHJlc3MoImdpb3A6dGNw
Iik7DQogICAgICBpZiAoIWlmYWRkcnMpIHJldHVybiAwOw0KICAgICAgew0KCW9tbml2ZWN0b3I8
Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRvciBpICAgID0gaWZhZGRycy0+YmVnaW4oKTsNCglv
bW5pdmVjdG9yPGNvbnN0IGNoYXIqPjo6Y29uc3RfaXRlcmF0b3IgbGFzdCA9IGlmYWRkcnMtPmVu
ZCgpOw0KCXdoaWxlICggaSAhPSBsYXN0ICkgew0KCSAgaWYgKExpYmNXcmFwcGVyOjppc2lwNGFk
ZHIoKmkpKSB7DQoJICAgIENPUkJBOjpVTG9uZyBhZGRyZXNzID0gaW5ldF9hZGRyKChjaGFyKiko
KmkpKTsNCgkgICAgaWYgKCBuZXR3b3JrXyA9PSAoYWRkcmVzcyAmIG5ldG1hc2tfKSApIHJldHVy
biAxOw0KCSAgfQ0KCSAgaSsrOw0KCX0NCglyZXR1cm4gMDsNCiAgICAgIH0NCiAgICB9DQogICAg
cmV0dXJuIDA7DQogIH0NCg0KcHJpdmF0ZToNCiAgQ09SQkE6OlVMb25nIG5ldHdvcmtfOw0KICBD
T1JCQTo6VUxvbmcgbmV0bWFza187DQp9Ow0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KI2lmIGRl
ZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQoNCmNsYXNzIGJ1aWx0aW5JUHY2UnVsZSA6IHB1Ymxp
YyB0cmFuc3BvcnRSdWxlczo6UnVsZSB7DQpwdWJsaWM6DQogIHR5cGVkZWYgQ09SQkE6Ok9jdGV0
IEFkZHJbMTZdOw0KDQogIGJ1aWx0aW5JUHY2UnVsZShjb25zdCBjaGFyKiBhZGRyZXNzX21hc2ss
DQoJCSAgY29uc3QgQWRkciYgbiwgQ09SQkE6OlVMb25nIHApIDogDQogICAgdHJhbnNwb3J0UnVs
ZXM6OlJ1bGUoYWRkcmVzc19tYXNrKSwgcHJlZml4XyhwKQ0KICB7DQogICAgZm9yIChpbnQgaT0w
OyBpIDwgMTY7ICsraSkNCiAgICAgIG5ldHdvcmtfW2ldID0gbltpXTsNCiAgfQ0KDQogIH5idWls
dGluSVB2NlJ1bGUoKSB7fQ0KDQogIENPUkJBOjpCb29sZWFuIG1hdGNoQWRkcihjb25zdCBjaGFy
KiBpcHY2KQ0KICB7DQogICAgTGliY1dyYXBwZXI6OkFkZHJJbmZvX3ZhciBhaShMaWJjV3JhcHBl
cjo6Z2V0QWRkckluZm8oaXB2NiwwKSk7DQogICAgaWYgKCFhaS5pbigpKSByZXR1cm4gMDsNCg0K
ICAgIHNvY2thZGRyX2luNiogc2EgPSAoc29ja2FkZHJfaW42KilhaS0+YWRkcigpOw0KICAgIENP
UkJBOjpPY3RldCogaXA2X2J5dGVzID0gKENPUkJBOjpPY3RldCopJnNhLT5zaW42X2FkZHIuczZf
YWRkcjsNCg0KICAgIENPUkJBOjpVTG9uZyBiaXRzID0gcHJlZml4XzsNCiAgICBDT1JCQTo6VUxv
bmcgaTsNCg0KICAgIGZvciAoaT0wOyBpIDwgMTYgJiYgYml0cyA+IDc7ICsraSwgYml0cy09OCkg
ew0KICAgICAgaWYgKG5ldHdvcmtfW2ldICE9IGlwNl9ieXRlc1tpXSkNCglyZXR1cm4gMDsNCiAg
ICB9DQogICAgaWYgKGJpdHMpIHsNCiAgICAgIENPUkJBOjpPY3RldCBtYXNrID0gKDB4ZmYgPDwg
KDggLSBiaXRzKSkgJiAweGZmOw0KICAgICAgaWYgKChuZXR3b3JrX1tpXSAmIG1hc2spICE9IChp
cDZfYnl0ZXNbaV0gJiBtYXNrKSkNCglyZXR1cm4gMDsNCiAgICB9DQogICAgcmV0dXJuIDE7DQog
IH0NCg0KICBDT1JCQTo6Qm9vbGVhbiBtYXRjaChjb25zdCBjaGFyKiBlbmRwb2ludCkNCiAgew0K
ICAgIENPUkJBOjpTdHJpbmdfdmFyIGlwdjY7DQogICAgaXB2NiA9IGV4dHJhY3RIb3N0KGVuZHBv
aW50KTsNCg0KICAgIGlmICgoY29uc3QgY2hhciopaXB2NiAmJiBMaWJjV3JhcHBlcjo6aXNpcDZh
ZGRyKGlwdjYpKSB7DQogICAgICByZXR1cm4gbWF0Y2hBZGRyKGlwdjYpOw0KICAgIH0NCg0KICAg
IGlmIChzdHJuY21wKGVuZHBvaW50LCJnaW9wOnVuaXgiLDkpID09IDApIHsNCiAgICAgIC8vIGxv
Y2FsIHRyYW5zcG9ydC4gRG9lcyB0aGlzIHJ1bGUgYXBwbHkgdG8gdGhpcyBob3N0J3MgDQogICAg
ICAvLyBJUCBhZGRyZXNzKGVzKT8gDQogICAgICBjb25zdCBvbW5pdmVjdG9yPGNvbnN0IGNoYXIq
PiogaWZhZGRyczsNCiAgICAgIGlmYWRkcnMgPSBnaW9wVHJhbnNwb3J0SW1wbDo6Z2V0SW50ZXJm
YWNlQWRkcmVzcygiZ2lvcDp0Y3AiKTsNCiAgICAgIGlmICghaWZhZGRycykgcmV0dXJuIDA7DQog
ICAgICB7DQoJb21uaXZlY3Rvcjxjb25zdCBjaGFyKj46OmNvbnN0X2l0ZXJhdG9yIGkgICAgPSBp
ZmFkZHJzLT5iZWdpbigpOw0KCW9tbml2ZWN0b3I8Y29uc3QgY2hhcio+Ojpjb25zdF9pdGVyYXRv
ciBsYXN0ID0gaWZhZGRycy0+ZW5kKCk7DQoJd2hpbGUgKCBpICE9IGxhc3QgKSB7DQoJICBpZiAo
TGliY1dyYXBwZXI6OmlzaXA2YWRkcigqaSkgJiYgbWF0Y2hBZGRyKCppKSkNCgkgICAgcmV0dXJu
IDE7DQoJICBpKys7DQoJfQ0KICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gMDsNCiAgfQ0KDQpw
cml2YXRlOg0KICBBZGRyICAgICAgICAgbmV0d29ya187DQogIENPUkJBOjpVTG9uZyBwcmVmaXhf
Ow0KfTsNCg0KI2VuZGlmDQoNCg0KLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCmNsYXNzIGJ1aWx0aW5S
dWxlVHlwZSA6IHB1YmxpYyB0cmFuc3BvcnRSdWxlczo6UnVsZVR5cGUgew0KcHVibGljOg0KICBi
dWlsdGluUnVsZVR5cGUoKSB7DQogICAgdHJhbnNwb3J0UnVsZXM6OmFkZFJ1bGVUeXBlKCh0cmFu
c3BvcnRSdWxlczo6UnVsZVR5cGUqKXRoaXMpOw0KICB9DQogIHZpcnR1YWwgfmJ1aWx0aW5SdWxl
VHlwZSgpIHt9DQoNCiAgdHJhbnNwb3J0UnVsZXM6OlJ1bGUqIGNyZWF0ZVJ1bGUoY29uc3QgY2hh
ciogYWRkcmVzc19tYXNrKSB7DQogICAgDQogICAgQ09SQkE6OlVMb25nIG5ldHdvcmsgPSAwLCBu
ZXRtYXNrID0gMDsNCg0KI2lmIGRlZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQogICAgYnVpbHRp
bklQdjZSdWxlOjpBZGRyIGlwNm5ldHdvcms7DQogICAgQ09SQkE6OlVMb25nIHByZWZpeDsNCiNl
bmRpZg0KDQogICAgaWYgKCBvbW5pOjpzdHJNYXRjaChhZGRyZXNzX21hc2ssIioiICkgKSB7DQog
ICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxlKikgbmV3IGJ1aWx0aW5NYXRjaEFsbFJ1
bGUoYWRkcmVzc19tYXNrKTsNCiAgICB9DQogICAgZWxzZSBpZiAoIG9tbmk6OnN0ck1hdGNoKGFk
ZHJlc3NfbWFzaywibG9jYWxob3N0IikgKSB7DQogICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVz
OjpSdWxlKikgbmV3IGJ1aWx0aW5Mb2NhbEhvc3RSdWxlKGFkZHJlc3NfbWFzayk7DQogICAgfQ0K
ICAgIGVsc2UgaWYgKCBwYXJzZUlQdjRBZGRyZXNzTWFzayhhZGRyZXNzX21hc2ssbmV0d29yayxu
ZXRtYXNrKSApIHsNCiAgICAgIHJldHVybiAodHJhbnNwb3J0UnVsZXM6OlJ1bGUqKSBuZXcgYnVp
bHRpbklQdjRSdWxlKGFkZHJlc3NfbWFzaywNCgkJCQkJCQkgbmV0d29yaywNCgkJCQkJCQkgbmV0
bWFzayk7DQogICAgfQ0KI2lmIGRlZmluZWQoT01OSV9TVVBQT1JUX0lQVjYpDQogICAgZWxzZSBp
ZiAoIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGFkZHJlc3NfbWFzayxpcDZuZXR3b3JrLHByZWZpeCkg
KSB7DQogICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxlKikgbmV3IGJ1aWx0aW5JUHY2
UnVsZShhZGRyZXNzX21hc2ssDQoJCQkJCQkJIGlwNm5ldHdvcmssDQoJCQkJCQkJIHByZWZpeCk7
DQogICAgfQ0KI2VuZGlmDQogICAgLy8gVHJ5IHRvIHJlc29sdmUgYXMgYSBob3N0bmFtZQ0KICAg
IExpYmNXcmFwcGVyOjpBZGRySW5mb192YXIgYWkoTGliY1dyYXBwZXI6OmdldEFkZHJJbmZvKGFk
ZHJlc3NfbWFzaywwKSk7DQogICAgaWYgKGFpLmluKCkpIHsNCiAgICAgIENPUkJBOjpTdHJpbmdf
dmFyIGFkZHIgPSBhaS0+YXNTdHJpbmcoKTsNCiAgICAgIGlmIChvbW5pT1JCOjp0cmFjZSgyMCkp
IHsNCiAgICAgICAgb21uaU9SQjo6bG9nZ2VyIGxvZzsNCiAgICAgICAgbG9nIDw8ICJOYW1lICci
IDw8IGFkZHJlc3NfbWFzayA8PCAiJyBpbiB0cmFuc3BvcnQgcnVsZSByZXNvbHZlZCB0byAnIg0K
ICAgICAgICAgICAgPDwgYWRkciA8PCAiJy5cbiI7DQogICAgICB9DQogICAgICBpZiAoIHBhcnNl
SVB2NEFkZHJlc3NNYXNrKGFkZHIsbmV0d29yayxuZXRtYXNrKSApIHsNCiAgICAgICAgcmV0dXJu
ICh0cmFuc3BvcnRSdWxlczo6UnVsZSopIG5ldyBidWlsdGluSVB2NFJ1bGUoYWRkcmVzc19tYXNr
LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXR3b3JrLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXRtYXNrKTsNCiAgICAgIH0NCiNpZiBkZWZpbmVkKE9NTklfU1VQ
UE9SVF9JUFY2KQ0KICAgICAgZWxzZSBpZiAoIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGFkZHIsaXA2
bmV0d29yayxwcmVmaXgpICkgew0KICAgICAgICByZXR1cm4gKHRyYW5zcG9ydFJ1bGVzOjpSdWxl
KikgbmV3IGJ1aWx0aW5JUHY2UnVsZShhZGRyZXNzX21hc2ssDQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwNm5ldHdvcmssDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZWZpeCk7DQogICAgICB9DQojZW5kaWYNCiAgICB9DQogICAgcmV0dXJuIDA7DQogIH0NCg0KICBz
dGF0aWMgQ09SQkE6OkJvb2xlYW4gcGFyc2VJUHY0QWRkcmVzc01hc2soY29uc3QgY2hhciogYWRk
cmVzcywNCgkJCQkJICAgICBDT1JCQTo6VUxvbmcmIG5ldHdvcmssDQoJCQkJCSAgICAgQ09SQkE6
OlVMb25nJiBuZXRtYXNrKSB7DQogICAgQ09SQkE6OlN0cmluZ192YXIgY3AoYWRkcmVzcyk7DQog
ICAgY2hhciogbWFzayA9IHN0cmNocigoY2hhciopY3AsJy8nKTsNCiAgICBpZiAobWFzaykgew0K
ICAgICAgKm1hc2sgPSAnXDAnOw0KICAgICAgbWFzaysrOw0KICAgIH0NCiAgICBlbHNlIHsNCiAg
ICAgIG1hc2sgPSAoY2hhciopICIyNTUuMjU1LjI1NS4yNTUiOw0KICAgIH0NCg0KICAgIGlmICgg
ISBMaWJjV3JhcHBlcjo6aXNpcDRhZGRyKGNwKSApIHJldHVybiAwOw0KICAgIG5ldHdvcmsgPSBp
bmV0X2FkZHIoKGNoYXIqKWNwLmluKCkpOw0KDQogICAgaWYgKCBMaWJjV3JhcHBlcjo6aXNpcDRh
ZGRyKG1hc2spICkgew0KICAgICAgbmV0bWFzayA9IGluZXRfYWRkcihtYXNrKTsNCiAgICB9DQog
ICAgZWxzZSB7DQogICAgICBjaGFyKiBtYXNrZTsNCiAgICAgIENPUkJBOjpVTG9uZyBwcmVmaXgg
PSBzdHJ0b3VsKG1hc2ssICZtYXNrZSwgMTApOw0KICAgICAgaWYgKCptYXNrZSB8fCBwcmVmaXgg
PiAzMikNCglyZXR1cm4gMDsNCiAgICAgIG5ldG1hc2sgPSAweGZmZmZmZmZmVSA8PCAoMzIgLSBw
cmVmaXgpOw0KICAgICAgbmV0bWFzayA9IGh0b25sKG5ldG1hc2spOw0KICAgIH0NCiAgICByZXR1
cm4gMTsNCiAgfQ0KDQojaWYgZGVmaW5lZChPTU5JX1NVUFBPUlRfSVBWNikNCiAgc3RhdGljIENP
UkJBOjpCb29sZWFuIHBhcnNlSVB2NkFkZHJlc3NNYXNrKGNvbnN0IGNoYXIqICAgICAgICAgICAg
YWRkcmVzcywNCgkJCQkJICAgICBidWlsdGluSVB2NlJ1bGU6OkFkZHImIG5ldHdvcmssDQoJCQkJ
CSAgICAgQ09SQkE6OlVMb25nJiAgICAgICAgICBwcmVmaXgpIHsNCiAgICBDT1JCQTo6U3RyaW5n
X3ZhciBjcChhZGRyZXNzKTsNCg0KICAgIGNoYXIqIG1hc2sgPSBzdHJjaHIoKGNoYXIqKWNwLCcv
Jyk7DQogICAgaWYgKG1hc2spIHsNCiAgICAgICptYXNrID0gJ1wwJzsNCiAgICAgIG1hc2srKzsN
CiAgICAgIGNoYXIqIG1hc2tlOw0KICAgICAgcHJlZml4ID0gc3RydG91bChtYXNrLCAmbWFza2Us
IDEwKTsNCg0KICAgICAgaWYgKCEqbWFzayB8fCAqbWFza2UgfHwgcHJlZml4ID4gMTI4KQ0KCXJl
dHVybiAwOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHByZWZpeCA9IDEyODsNCiAgICB9DQog
ICAgaWYgKCFMaWJjV3JhcHBlcjo6aXNpcDZhZGRyKGNwKSkgcmV0dXJuIDA7DQoNCiAgICBMaWJj
V3JhcHBlcjo6QWRkckluZm9fdmFyIGFpKExpYmNXcmFwcGVyOjpnZXRBZGRySW5mbyhjcCwgMCkp
Ow0KICAgIGlmICghYWkuaW4oKSkNCiAgICAgIHJldHVybiAwOw0KDQogICAgc29ja2FkZHJfaW42
KiBzYSA9IChzb2NrYWRkcl9pbjYqKWFpLT5hZGRyKCk7DQogICAgbWVtY3B5KCh2b2lkKikmbmV0
d29yaywgKGNvbnN0IHZvaWQqKSYoc2EtPnNpbjZfYWRkci5zNl9hZGRyKSwgMTYpOw0KICAgIHJl
dHVybiAxOw0KICB9DQojZW5kaWYNCg0KfTsNCg0Kc3RhdGljIGJ1aWx0aW5SdWxlVHlwZSBidWls
dGluUnVsZVR5cGVfOw0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8NCnN0YXRpYw0KQ09SQkE6OkJvb2xlYW4NCnBhcnNlQW5kQWRkUnVsZVN0cmluZyhvbW5pdmVj
dG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+JiBydWxlU3RvcmUsDQoJCSAgICAg
IGNvbnN0IGNoYXIqIHJ1bGVfc3RyaW5nKSB7DQoNCiAgdHJhbnNwb3J0UnVsZXM6OnNlcXVlbmNl
U3RyaW5nIGFjdGlvbig0KTsNCiAgQ09SQkE6OlN0cmluZ192YXIgYWRkcmVzc19tYXNrOw0KICBD
T1JCQTo6Qm9vbGVhbiByZXNldF9saXN0ID0gMDsNCg0KICBDT1JCQTo6U3RyaW5nX3ZhciBycyhy
dWxlX3N0cmluZyk7ICAvLyBtYWtlIGEgY29weQ0KDQogIC8vIEV4dHJhY3QgYWRkcmVzcyBtYXNr
DQogIGNoYXIqIHAgPSByczsNCiAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgcCsrOw0KDQog
IGNoYXIqIHEgPSBwOw0KICB3aGlsZSAoICFpc3NwYWNlKCpwKSAmJiAqcCAhPSAnXDAnICkNCiAg
ICBwKys7DQoNCiAgaWYgKCpwID09ICdcMCcpDQogICAgcmV0dXJuIDA7DQoNCiAgKnAgPSAnXDAn
Ow0KDQogIGlmICggKnEgPT0gJ14nICkgew0KICAgIHJlc2V0X2xpc3QgPSAxOw0KICAgIHErKzsN
CiAgICBpZiAoKnEgPT0gJ1wwJykgcmV0dXJuIDA7DQogIH0NCiAgYWRkcmVzc19tYXNrID0gQ09S
QkE6OnN0cmluZ19kdXAocSk7DQogIHArKzsNCg0KICAvLyBFeHRyYWN0IGFjdGlvbiBsaXN0LCBv
bmUgb3IgbW9yZSBjb21tYSBzZXBhcmF0ZWQgYWN0aW9uLg0KICAvLyBUaGVyZSBtYXkgYWxzbyBi
ZSB3aGl0ZSBzcGFjZXMgYmV0d2VlbiB0aGUgYWN0aW9ucyBhbmQgY29tbWEgc2VwYXJhdG9ycy4N
CiAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgcCsrOw0KICANCiAgcSA9IHA7DQogIA0KICBw
ID0gc3RyY2hyKHEsJywnKTsNCiAgd2hpbGUgKCBwICYmIHAgIT0gcSApIHsNCiAgICAqcCA9ICdc
MCc7DQogICAgY2hhciogdCA9IHE7DQogICAgd2hpbGUgKCAhaXNzcGFjZSgqdCkgJiYgKnQgIT0g
J1wwJyApDQogICAgICB0Kys7DQogICAgKnQgPSAnXDAnOw0KICAgIGFjdGlvbi5sZW5ndGgoYWN0
aW9uLmxlbmd0aCgpKzEpOw0KICAgIGFjdGlvblthY3Rpb24ubGVuZ3RoKCktMV0gPSAoY29uc3Qg
Y2hhciopIHE7DQoNCiAgICBwKys7DQogICAgd2hpbGUgKCBpc3NwYWNlKCpwKSApDQogICAgICBw
Kys7DQogICAgcSA9IHA7DQogICAgcCA9IHN0cmNocihxLCcsJyk7DQogIH0NCiAgaWYgKCpxID09
ICcsJykNCiAgICByZXR1cm4gMDsNCiAgaWYgKCpxICE9ICdcMCcpIHsNCiAgICBwID0gcTsNCiAg
ICB3aGlsZSAoICFpc3NwYWNlKCpwKSAmJiAqcCAhPSAnXDAnICkNCiAgICAgIHArKzsNCiAgICBp
ZiAoKnAgIT0gJ1wwJykNCiAgICAgICpwID0gJ1wwJzsNCiAgICBhY3Rpb24ubGVuZ3RoKGFjdGlv
bi5sZW5ndGgoKSsxKTsNCiAgICBhY3Rpb25bYWN0aW9uLmxlbmd0aCgpLTFdID0gKGNvbnN0IGNo
YXIqKSBxOw0KICB9DQoNCiAgb21uaXZlY3Rvcjx0cmFuc3BvcnRSdWxlczo6UnVsZVR5cGUqPiYg
cnVsZXR5cGVzID0gKnJ1bGVUeXBlcygpOw0KICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpS
dWxlVHlwZSo+OjppdGVyYXRvciBpID0gcnVsZXR5cGVzLmJlZ2luKCk7DQogIG9tbml2ZWN0b3I8
dHJhbnNwb3J0UnVsZXM6OlJ1bGVUeXBlKj46Oml0ZXJhdG9yIGxhc3QgPSBydWxldHlwZXMuZW5k
KCk7DQoNCiAgd2hpbGUgKGkgIT0gbGFzdCkgew0KICAgIHRyYW5zcG9ydFJ1bGVzOjpSdWxlKiBy
dWxlID0gKCppKS0+Y3JlYXRlUnVsZShhZGRyZXNzX21hc2spOw0KICAgIGlmIChydWxlKSB7DQog
ICAgICB0cmFuc3BvcnRSdWxlczo6UnVsZUFjdGlvblBhaXIqIHJhOw0KICAgICAgcmEgPSBuZXcg
dHJhbnNwb3J0UnVsZXM6OlJ1bGVBY3Rpb25QYWlyKHJ1bGUsYWN0aW9uKTsNCiAgICAgIGlmIChy
ZXNldF9saXN0KSBydWxlU3RvcmUuZXJhc2UocnVsZVN0b3JlLmJlZ2luKCkscnVsZVN0b3JlLmVu
ZCgpKTsNCiAgICAgIHJ1bGVTdG9yZS5wdXNoX2JhY2socmEpOw0KICAgICAgcmV0dXJuIDE7DQog
ICAgfQ0KICAgIGkrKzsNCiAgfQ0KICByZXR1cm4gMDsNCn0NCg0KLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8NCnN0YXRpYw0KY2hhcioNCmR1bXBSdWxlU3RyaW5nKHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0
aW9uUGFpciogcmEpIHsNCg0KICB0cmFuc3BvcnRSdWxlczo6c2VxdWVuY2VTdHJpbmcmIHNzID0g
cmEtPmFjdGlvbl87DQogIENPUkJBOjpVTG9uZyBsZW4gPSBzdHJsZW4ocmEtPnJ1bGVfLT5hZGRy
ZXNzTWFzaygpKSArIDE7DQoNCiAgQ09SQkE6OlVMb25nIGkgPSAwOw0KICBmb3IgKDsgaSA8IHNz
Lmxlbmd0aCgpOyBpKyspIHsNCiAgICBsZW4gKz0gc3RybGVuKHNzW2ldKSArIDE7DQogIH0NCiAg
DQogIENPUkJBOjpTdHJpbmdfdmFyIHYoQ09SQkE6OnN0cmluZ19hbGxvYyhsZW4pKTsNCiAgc3By
aW50Zih2LCIlcyAiLHJhLT5ydWxlXy0+YWRkcmVzc01hc2soKSk7DQoNCiAgaSA9IDA7DQogIHdo
aWxlICggaSA8IHNzLmxlbmd0aCgpICkgew0KICAgIHN0cmNhdCh2LHNzW2ldKTsNCiAgICBpKys7
DQogICAgaWYgKGkgIT0gc3MubGVuZ3RoKCkpIHN0cmNhdCh2LCIsIik7DQogIH0NCiAgcmV0dXJu
IHYuX3JldG4oKTsNCn0NCg0KDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KY2xhc3MgY2xpZW50VHJh
bnNwb3J0UnVsZUhhbmRsZXIgOiBwdWJsaWMgb3JiT3B0aW9uczo6SGFuZGxlciB7DQpwdWJsaWM6
DQoNCiAgY2xpZW50VHJhbnNwb3J0UnVsZUhhbmRsZXIoKSA6IA0KICAgIG9yYk9wdGlvbnM6Okhh
bmRsZXIoImNsaWVudFRyYW5zcG9ydFJ1bGUiLA0KCQkJImNsaWVudFRyYW5zcG9ydFJ1bGUgPSA8
YWRkcmVzcyBtYXNrPiAgW2FjdGlvbl0rIiwNCgkJCTEsDQoJCQkiLU9SQmNsaWVudFRyYW5zcG9y
dFJ1bGUgXCI8YWRkcmVzcyBtYXNrPiAgW2FjdGlvbl0rXCIiKSB7fQ0KDQogIHZvaWQgdmlzaXQo
Y29uc3QgY2hhciogdmFsdWUsDQoJICAgICBvcmJPcHRpb25zOjpTb3VyY2UpICB0aHJvdyAob3Ji
T3B0aW9uczo6QmFkUGFyYW0pIHsNCg0KICAgIGlmICghcGFyc2VBbmRBZGRSdWxlU3RyaW5nKGNs
aWVudFJ1bGVzXy5wZF9ydWxlcyx2YWx1ZSkpIHsNCiAgICAgIHRocm93IG9yYk9wdGlvbnM6OkJh
ZFBhcmFtKGtleSgpLHZhbHVlLCJVbnJlY29nbmlzZWQgYWRkcmVzcyBtYXNrIik7DQogICAgfQ0K
ICB9DQoNCiAgdm9pZCBkdW1wKG9yYk9wdGlvbnM6OnNlcXVlbmNlU3RyaW5nJiByZXN1bHQpIHsN
CiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQogICAgICA6
Oml0ZXJhdG9yIGkgPSBjbGllbnRSdWxlc18ucGRfcnVsZXMuYmVnaW4oKTsNCiAgICBvbW5pdmVj
dG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQogICAgICA6Oml0ZXJhdG9yIGxh
c3QgPSBjbGllbnRSdWxlc18ucGRfcnVsZXMuZW5kKCk7DQoNCiAgICB3aGlsZSAoIGkgIT0gbGFz
dCApIHsNCiAgICAgIENPUkJBOjpTdHJpbmdfdmFyIHY7DQogICAgICB2ID0gZHVtcFJ1bGVTdHJp
bmcoKmkpOw0KICAgICAgb3JiT3B0aW9uczo6YWRkS1ZTdHJpbmcoa2V5KCksdixyZXN1bHQpOw0K
ICAgICAgaSsrOw0KICAgIH0NCiAgfQ0KfTsNCg0Kc3RhdGljIGNsaWVudFRyYW5zcG9ydFJ1bGVI
YW5kbGVyIGNsaWVudFRyYW5zcG9ydFJ1bGVIYW5kbGVyXzsNCg0KLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8NCmNsYXNzIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyIDogcHVibGljIG9yYk9wdGlvbnM6
OkhhbmRsZXIgew0KcHVibGljOg0KDQogIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyKCkgOiAN
CiAgICBvcmJPcHRpb25zOjpIYW5kbGVyKCJzZXJ2ZXJUcmFuc3BvcnRSdWxlIiwNCgkJCSJzZXJ2
ZXJUcmFuc3BvcnRSdWxlID0gPGFkZHJlc3MgbWFzaz4gIFthY3Rpb25dKyIsDQoJCQkxLA0KCQkJ
Ii1PUkJzZXJ2ZXJUcmFuc3BvcnRSdWxlIFwiPGFkZHJlc3MgbWFzaz4gIFthY3Rpb25dK1wiIikg
e30NCg0KICB2b2lkIHZpc2l0KGNvbnN0IGNoYXIqIHZhbHVlLA0KCSAgICAgb3JiT3B0aW9uczo6
U291cmNlKSB0aHJvdyAob3JiT3B0aW9uczo6QmFkUGFyYW0pIHsNCg0KICAgIGlmICghcGFyc2VB
bmRBZGRSdWxlU3RyaW5nKHNlcnZlclJ1bGVzXy5wZF9ydWxlcyx2YWx1ZSkpIHsNCiAgICAgIHRo
cm93IG9yYk9wdGlvbnM6OkJhZFBhcmFtKGtleSgpLHZhbHVlLCJVbnJlY29nbmlzZWQgYWRkcmVz
cyBtYXNrIik7DQogICAgfQ0KICB9DQoNCiAgdm9pZCBkdW1wKG9yYk9wdGlvbnM6OnNlcXVlbmNl
U3RyaW5nJiByZXN1bHQpIHsNCiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0
aW9uUGFpcio+DQogICAgICA6Oml0ZXJhdG9yIGkgPSBzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuYmVn
aW4oKTsNCiAgICBvbW5pdmVjdG9yPHRyYW5zcG9ydFJ1bGVzOjpSdWxlQWN0aW9uUGFpcio+DQog
ICAgICA6Oml0ZXJhdG9yIGxhc3QgPSBzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuZW5kKCk7DQoNCiAg
ICB3aGlsZSAoIGkgIT0gbGFzdCApIHsNCiAgICAgIENPUkJBOjpTdHJpbmdfdmFyIHY7DQogICAg
ICB2ID0gZHVtcFJ1bGVTdHJpbmcoKmkpOw0KICAgICAgb3JiT3B0aW9uczo6YWRkS1ZTdHJpbmco
a2V5KCksdixyZXN1bHQpOw0KICAgICAgaSsrOw0KICAgIH0NCiAgfQ0KfTsNCg0Kc3RhdGljIHNl
cnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyIHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyXzsNCg0K
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8NCi8vICAgICAgICAgICAgTW9kdWxlIGluaXRpYWxpc2VyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQovLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLw0KY2xhc3Mgb21uaV90cmFuc3BvcnRSdWxlc19pbml0aWFsaXNlciA6IHB1YmxpYyBv
bW5pSW5pdGlhbGlzZXIgew0KcHVibGljOg0KDQogIG9tbmlfdHJhbnNwb3J0UnVsZXNfaW5pdGlh
bGlzZXIoKSB7DQogICAgb3JiT3B0aW9uczo6c2luZ2xldG9uKCkucmVnaXN0ZXJIYW5kbGVyKGNs
aWVudFRyYW5zcG9ydFJ1bGVIYW5kbGVyXyk7DQogICAgb3JiT3B0aW9uczo6c2luZ2xldG9uKCku
cmVnaXN0ZXJIYW5kbGVyKHNlcnZlclRyYW5zcG9ydFJ1bGVIYW5kbGVyXyk7DQogIH0NCiAgdmly
dHVhbCB+b21uaV90cmFuc3BvcnRSdWxlc19pbml0aWFsaXNlcigpIHsNCiAgICBvbW5pdmVjdG9y
PHRyYW5zcG9ydFJ1bGVzOjpSdWxlVHlwZSo+KiYgcnVsZXR5cGVzID0gcnVsZVR5cGVzKCk7DQog
ICAgaWYgKHJ1bGV0eXBlcykgew0KICAgICAgZGVsZXRlIHJ1bGV0eXBlczsNCiAgICAgIHJ1bGV0
eXBlcyA9IDA7DQogICAgfQ0KICB9DQogIHZvaWQgYXR0YWNoKCkgeyANCiAgICBpZiAoY2xpZW50
UnVsZXNfLnBkX3J1bGVzLnNpemUoKSA9PSAwKSB7DQogICAgICAvLyBBZGQgYSBkZWZhdWx0IHJ1
bGUNCiAgICAgIHBhcnNlQW5kQWRkUnVsZVN0cmluZyhjbGllbnRSdWxlc18ucGRfcnVsZXMsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogdW5peCxzc2wsdGNwIik7DQogICAgfQ0KICAg
IGlmIChzZXJ2ZXJSdWxlc18ucGRfcnVsZXMuc2l6ZSgpID09IDApIHsNCiAgICAgIC8vIEFkZCBh
IGRlZmF1bHQgcnVsZQ0KICAgICAgcGFyc2VBbmRBZGRSdWxlU3RyaW5nKHNlcnZlclJ1bGVzXy5w
ZF9ydWxlcywNCgkJCSAgICAiKiB1bml4LHNzbCx0Y3AiKTsNCiAgICB9DQogIH0NCiAgdm9pZCBk
ZXRhY2goKSB7IA0KICAgIHNlcnZlclJ1bGVzXy5yZXNldCgpOw0KICAgIGNsaWVudFJ1bGVzXy5y
ZXNldCgpOw0KICB9DQp9Ow0KDQoNCnN0YXRpYyBvbW5pX3RyYW5zcG9ydFJ1bGVzX2luaXRpYWxp
c2VyIGluaXRpYWxpc2VyOw0KDQpvbW5pSW5pdGlhbGlzZXImIG9tbmlfdHJhbnNwb3J0UnVsZXNf
aW5pdGlhbGlzZXJfID0gaW5pdGlhbGlzZXI7DQoNCg0KDQpPTU5JX05BTUVTUEFDRV9FTkQob21u
aSkNCg==

--_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
omniORB-dev mailing list
[email protected]
http://www.omniorb-support.com/mailman/listinfo/omniorb-dev

--_002_93BC09B2B8795C49B4E3453CE6A45A186678CFE737ILPTMAIL02eci_--