This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: something wrong with template instantiation mechanics



>   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.
> 
> ---559023410-1804928587-876430667=:6246
> Content-Type: TEXT/PLAIN; charset=US-ASCII
> 
> 
>   Hi,
> 
> i've tried my code and lloks like tons of
> small inline template functions are not
> instantiated.
> 
> drabble ~ $ c++ -v
> Reading specs from
> /home/room1/kriol/local/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.12/specs
> gcc version egcs-2.90.12 971008 (gcc2-970802 experimental)
> drabble ~ $ uname -a
> SunOS drabble 5.5.1 Generic_103640-08 sun4m sparc SUNW,SPARCstation-4
> 
> in a simple example:
> 
> #include "typedefs.H"
> #include "Vector3D.H"
> 
> int
> main( void ) {
>   return 0;
> }
> 
> void
> superdummy( void ) {
>   TVector3D<double> ccc;
>   ccc = 1.0;
>   abs(ccc);
> }
> 
> 
> where abs(ccc) declared as
> 
> template <class x> inline x
> abs( const TVector3D<x>& y );
> 
> is not instantiated:
> 
> c++ -c test.ii        
> nm -s test.o | c++filt | grep abs
>          U abs(TVector3D<double> const &)
> 
> i'd expect it to be instantiated and marked W
> 
> i've enclosed full preprocessor output file.
> 
> thanks
> 
> OK
> 
> ---559023410-1804928587-876430667=:6246
> Content-Type: TEXT/PLAIN; charset=US-ASCII; name="test.ii"
> Content-Transfer-Encoding: BASE64
> Content-ID: <Pine.GSO.3.96.971009155747.6246B@drabble>
> Content-Description: 
> 
> IyAxICJ0ZXN0LkMiDQojIDEgIi9ob21lL3Jvb20xL2tyaW9sL3dvcmsvUHJv
> amVjdC9jb25maWcvc3BhcmMtc3VuLXNvbGFyaXMtZ2NjL2NvbmZpZ3VyYXRp
> b24uaCIgMQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEg
> InRlc3QuQyIgMg0KIyAxICIvaG9tZS9yb29tMS9rcmlvbC93b3JrL1Byb2pl
> Y3QvaW5jbHVkZS90eXBlZGVmcy5IIiAxIDMNCiANCg0KDQoNCg0KDQoNCg0K
> DQp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIHVjaGFyX3Q7DQp0eXBlZGVmIGNo
> YXIgICAgICAgICAgIGNoYXJfdDsNCnR5cGVkZWYgaW50ICAgICAgICAgICAg
> aW50X3Q7DQoNCnR5cGVkZWYgdW5zaWduZWQgaW50ICAgdWludF90Ow0KdHlw
> ZWRlZiBsb25nICAgICAgICAgICBsb25nX3Q7DQoNCg0KdHlwZWRlZiBib29s
> ICAgICAgICAgICBib29sX3Q7DQoNCg0KdHlwZWRlZiBmbG9hdCAgICAgICAg
> ICBmbG9hdF90Ow0KdHlwZWRlZiBkb3VibGUgICAgICAgICBkb3VibGVfdDsN
> Cg0KIA0KDQoNCg0KDQoNCg0KIyAxICJ0ZXN0LkMiIDINCg0KIyAxICIvaG9t
> ZS9yb29tMS9rcmlvbC93b3JrL1Byb2plY3QvaW5jbHVkZS9WZWN0b3IzRC5I
> IiAxIDMNCiANCg0KDQoNCg0KIyAxICIvaG9tZS9yb29tMS9rcmlvbC9sb2Nh
> bC9pbmNsdWRlL2lvc3RyZWFtIiAxIDMNCiANCg0KDQoNCg0KIyAxICIvaG9t
> ZS9yb29tMS9rcmlvbC9sb2NhbC9pbmNsdWRlL2crKy9pb3N0cmVhbS5oIiAx
> IDMNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KI3ByYWdtYSBpbnRlcmZhY2UNCg0KDQoNCiMgMSAiL2hv
> bWUvcm9vbTEva3Jpb2wvbG9jYWwvaW5jbHVkZS9nKysvc3RyZWFtYnVmLmgi
> IDEgMw0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCiNwcmFnbWEgaW50ZXJmYWNlDQoNCg0KICAgDQoN
> Cg0KDQpleHRlcm4gIkMiIHsNCiMgMSAiL2hvbWUvcm9vbTEva3Jpb2wvbG9j
> YWwvaW5jbHVkZS9nKysvbGliaW8uaCIgMSAzDQogDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMg
> MSAiL2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvc3BhcmMtc3VuLXNvbGFyaXMy
> LjUuMS9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMgNA0KICANCg0KDQoNCg0K
> DQoNCg0KDQoNCnR5cGVkZWYgICAgICAgICAgaW50ICAgX0dfaW50OF90IF9f
> YXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsNCnR5cGVkZWYgdW5z
> aWduZWQgaW50ICBfR191aW50OF90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9f
> KF9fUUlfXykpKTsNCnR5cGVkZWYgICAgICAgICAgaW50ICBfR19pbnQxNl90
> IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fSElfXykpKTsNCnR5cGVkZWYg
> dW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18oKF9fbW9k
> ZV9fKF9fSElfXykpKTsNCnR5cGVkZWYgICAgICAgICAgaW50ICBfR19pbnQz
> Ml90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsNCnR5cGVk
> ZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18oKF9f
> bW9kZV9fKF9fU0lfXykpKTsNCnR5cGVkZWYgICAgICAgICAgaW50ICBfR19p
> bnQ2NF90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsNCnR5
> cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQ2NF90IF9fYXR0cmlidXRlX18o
> KF9fbW9kZV9fKF9fRElfXykpKTsNCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBs
> b25nIGxvbmcgX0dfbGxvbmc7DQpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5z
> aWduZWQgbG9uZyBsb25nIF9HX3VsbG9uZzsNCg0KDQoNCg0KDQoNCg0KdHlw
> ZWRlZiBsb25nIF9HX2Nsb2NrX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
> X0dfZGV2X3Q7DQp0eXBlZGVmIGxvbmcgX0dfZnBvc190Ow0KdHlwZWRlZiBs
> b25nIF9HX2dpZF90Ow0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9HX2lub190
> Ow0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9HX21vZGVfdDsNCnR5cGVkZWYg
> dW5zaWduZWQgbG9uZyBfR19ubGlua190Ow0KdHlwZWRlZiBsb25nIF9HX29m
> Zl90Ow0KdHlwZWRlZiBsb25nIF9HX3BpZF90Ow0KDQoNCg0KdHlwZWRlZiBp
> bnQgX0dfcHRyZGlmZl90Ow0KdHlwZWRlZiBpbnQgICBfR19zaWdzZXRfdDsN
> Cg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3NpemVfdDsNCnR5cGVk
> ZWYgbG9uZyBfR190aW1lX3Q7DQp0eXBlZGVmIGxvbmcgX0dfdWlkX3Q7DQp0
> eXBlZGVmIGxvbmcgaW50IF9HX3djaGFyX3Q7DQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQp0eXBlZGVmIGludCBfR19zc2l6ZV90Ow0KdHlwZWRl
> ZiB1bnNpZ25lZCBpbnQgX0dfd2ludF90Ow0KdHlwZWRlZiB2b2lkICogX0df
> dmFfbGlzdDsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyAz
> MCAiL2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvaW5jbHVkZS9nKysvbGliaW8u
> aCIgMiAzDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNTEgIi9ob21l
> L3Jvb20xL2tyaW9sL2xvY2FsL2luY2x1ZGUvZysrL2xpYmlvLmgiIDMNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0Kc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lP
> X0ZJTEU7DQoNCiANCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoN
> Cg0KdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7DQoNCg0KDQoNCiANCg0Kc3Ry
> dWN0IF9JT19tYXJrZXIgew0KICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7
> DQogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7DQogICANCg0KICAgDQogIGlu
> dCBfcG9zOw0KIyAxOTEgIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2luY2x1
> ZGUvZysrL2xpYmlvLmgiIDMNCg0KfTsNCg0Kc3RydWN0IF9JT19GSUxFIHsN
> CiAgaW50IF9mbGFnczsJCSANCg0KDQogICANCiAgIA0KICBjaGFyKiBfSU9f
> cmVhZF9wdHI7CSANCiAgY2hhciogX0lPX3JlYWRfZW5kOwkgDQogIGNoYXIq
> IF9JT19yZWFkX2Jhc2U7CSANCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSAN
> CiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIA0KICBjaGFyKiBfSU9fd3JpdGVf
> ZW5kOwkgDQogIGNoYXIqIF9JT19idWZfYmFzZTsJIA0KICBjaGFyKiBfSU9f
> YnVmX2VuZDsJIA0KICAgDQogIGNoYXIgKl9JT19zYXZlX2Jhc2U7ICANCiAg
> Y2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIA0KICBjaGFyICpfSU9fc2F2ZV9l
> bmQ7ICANCg0KICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7DQoNCiAg
> c3RydWN0IF9JT19GSUxFICpfY2hhaW47DQoNCiAgaW50IF9maWxlbm87DQog
> IGludCBfYmxrc2l6ZTsNCiAgX0dfb2ZmX3QgIF9vZmZzZXQ7DQoNCg0KICAg
> DQogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOw0KICBjaGFyIF91bnVz
> ZWQ7DQogIGNoYXIgX3Nob3J0YnVmWzFdOw0KDQogICANCg0KDQoNCg0KfTsN
> Cg0KDQoNCg0KDQpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsNCmV4dGVybiBzdHJ1
> Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fc3RkaW5fLCBfSU9fc3Rkb3V0XywgX0lP
> X3N0ZGVycl87DQoNCg0KDQoNCg0KIA0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAg
> X0dfc3NpemVfdCAgKCpyZWFkKSAgKHN0cnVjdCBfSU9fRklMRSAqLCB2b2lk
> ICosIF9HX3NzaXplX3QgKSAgOw0KICBfR19zc2l6ZV90ICAoKndyaXRlKSAg
> KHN0cnVjdCBfSU9fRklMRSAqLCBjb25zdCB2b2lkICosIF9HX3NzaXplX3Qg
> KSAgOw0KICBfR19mcG9zX3QgICgqc2VlaykgIChzdHJ1Y3QgX0lPX0ZJTEUg
> KiwgX0dfb2ZmX3QgLCBpbnQpICA7DQogIGludCAoKmNsb3NlKSAgKHN0cnVj
> dCBfSU9fRklMRSAqKSAgOw0KfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190
> Ow0KDQogDQpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlDQp7DQogIHN0cnVjdCBf
> SU9fRklMRSBmaWxlOw0KICBjb25zdCB2b2lkICp2dGFibGU7DQogIHZvaWQg
> KmNvb2tpZTsNCiAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBpb19mdW5j
> dGlvbnM7DQp9Ow0KDQoNCg0KZXh0ZXJuICJDIiB7DQoNCg0KZXh0ZXJuIGlu
> dCBfX3VuZGVyZmxvdyAgKF9JT19GSUxFICopICA7DQpleHRlcm4gaW50IF9f
> dWZsb3cgIChfSU9fRklMRSAqKSAgOw0KZXh0ZXJuIGludCBfX292ZXJmbG93
> ICAoX0lPX0ZJTEUgKiwgaW50KSAgOw0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgX0lPX2dldGMgIChfSU9fRklMRSAq
> X19mcCkgIDsNCmV4dGVybiBpbnQgX0lPX3B1dGMgIChpbnQgX19jLCBfSU9f
> RklMRSAqX19mcCkgIDsNCmV4dGVybiBpbnQgX0lPX2Zlb2YgIChfSU9fRklM
> RSAqX19mcCkgIDsNCmV4dGVybiBpbnQgX0lPX2ZlcnJvciAgKF9JT19GSUxF
> ICpfX2ZwKSAgOw0KDQpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgIChf
> SU9fRklMRSAqX19mcCkgIDsNCg0KIA0KDQoNCg0KZXh0ZXJuIHZvaWQgX0lP
> X2Zsb2NrZmlsZSAgKF9JT19GSUxFICopICA7DQpleHRlcm4gdm9pZCBfSU9f
> ZnVubG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgOw0KZXh0ZXJuIGludCBfSU9f
> ZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxF
> ICosIGNvbnN0IGNoYXIgKiwgX0dfdmFfbGlzdCAsIGludCAqKSAgOw0KZXh0
> ZXJuIGludCBfSU9fdmZwcmludGYgIChfSU9fRklMRSAqLCBjb25zdCBjaGFy
> ICosIF9HX3ZhX2xpc3QgKSAgOw0KZXh0ZXJuIF9HX3NzaXplX3QgIF9JT19w
> YWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfR19zc2l6ZV90ICkgIDsNCmV4dGVy
> biBfR19zaXplX3QgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwg
> X0dfc2l6ZV90ICkgIDsNCg0KZXh0ZXJuIF9HX2Zwb3NfdCAgX0lPX3NlZWtv
> ZmYgIChfSU9fRklMRSAqLCBfR19vZmZfdCAsIGludCwgaW50KSAgOw0KZXh0
> ZXJuIF9HX2Zwb3NfdCAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfR19m
> cG9zX3QgLCBpbnQpICA7DQoNCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1
> cF9hcmVhICAoX0lPX0ZJTEUgKikgIDsNCg0KDQp9DQoNCg0KDQojIDM2ICIv
> aG9tZS9yb29tMS9rcmlvbC9sb2NhbC9pbmNsdWRlL2crKy9zdHJlYW1idWYu
> aCIgMiAzDQoNCn0NCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KZXh0ZXJuICJDKysiIHsNCmNsYXNzIGlzdHJlYW07
> ICANCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsNCg0KIA0KDQoN
> Cg0KdHlwZWRlZiBfR19vZmZfdCAgc3RyZWFtb2ZmOw0KdHlwZWRlZiBfR19m
> cG9zX3QgIHN0cmVhbXBvczsNCnR5cGVkZWYgX0dfc3NpemVfdCAgc3RyZWFt
> c2l6ZTsNCg0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fZm10ZmxhZ3M7DQp0
> eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pb3N0YXRlOw0KDQpzdHJ1Y3QgX2lv
> c19maWVsZHMNCnsgIA0KICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1ZjsNCiAgICBv
> c3RyZWFtKiBfdGllOw0KICAgIGludCBfd2lkdGg7DQogICAgX19mbXRmbGFn
> cyBfZmxhZ3M7DQogICAgc2hvcnQgIF9maWxsOw0KICAgIF9faW9zdGF0ZSBf
> c3RhdGU7DQogICAgX19pb3N0YXRlIF9leGNlcHRpb25zOw0KICAgIGludCBf
> cHJlY2lzaW9uOw0KDQogICAgdm9pZCAqX2FycmF5czsgIA0KfTsNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiMgMTE1ICIvaG9tZS9yb29tMS9r
> cmlvbC9sb2NhbC9pbmNsdWRlL2crKy9zdHJlYW1idWYuaCIgMw0KDQoNCmNs
> YXNzIGlvcyA6IHB1YmxpYyBfaW9zX2ZpZWxkcyB7DQogIGlvcyYgb3BlcmF0
> b3I9KGlvcyYpOyAgIA0KICBpb3MgKGNvbnN0IGlvcyYpOyAgDQogIHB1Ymxp
> YzoNCiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7DQogICAgdHlw
> ZWRlZiBpbnQgaW9zdGF0ZTsNCiAgICB0eXBlZGVmIGludCBvcGVubW9kZTsN
> CiAgICB0eXBlZGVmIGludCBzdHJlYW1zaXplOw0KICAgIGVudW0gaW9fc3Rh
> dGUgew0KCWdvb2RiaXQgPSAwICwNCgllb2ZiaXQgPSAxICwNCglmYWlsYml0
> ID0gMiAsDQoJYmFkYml0ID0gNCAgfTsNCiAgICBlbnVtIG9wZW5fbW9kZSB7
> DQoJaW4gPSAxICwNCglvdXQgPSAyICwNCglhdGUgPSA0ICwNCglhcHAgPSA4
> ICwNCgl0cnVuYyA9IDE2ICwNCglub2NyZWF0ZSA9IDMyICwNCglub3JlcGxh
> Y2UgPSA2NCAsDQoJYmluID0gMTI4ICwgIA0KCWJpbmFyeSA9IDEyOCAgfTsN
> CiAgICBlbnVtIHNlZWtfZGlyIHsgYmVnLCBjdXIsIGVuZH07DQogICAgdHlw
> ZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7DQogICAgIA0KICAgIGVudW0g
> eyBza2lwd3M9IDAxICwNCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGlu
> dGVybmFsPSAwMTAgLA0KCSAgIGRlYz0gMDIwICwgb2N0PSAwNDAgLCBoZXg9
> IDAxMDAgLA0KCSAgIHNob3diYXNlPSAwMjAwICwgc2hvd3BvaW50PSAwNDAw
> ICwNCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIwMDAgLA0K
> CSAgIHNjaWVudGlmaWM9IDA0MDAwICwgZml4ZWQ9IDAxMDAwMCAsDQoJICAg
> dW5pdGJ1Zj0gMDIwMDAwICwgc3RkaW89IDA0MDAwMCANCg0KDQoNCgkgICB9
> Ow0KICAgIGVudW0geyAgDQoJYmFzZWZpZWxkPWRlYytvY3QraGV4LA0KCWZs
> b2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLA0KCWFkanVzdGZpZWxkID0g
> bGVmdCtyaWdodCtpbnRlcm5hbA0KICAgIH07DQoNCiMgMTY4ICIvaG9tZS9y
> b29tMS9rcmlvbC9sb2NhbC9pbmNsdWRlL2crKy9zdHJlYW1idWYuaCIgMw0K
> DQoNCiAgICBvc3RyZWFtKiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9
> DQogICAgb3N0cmVhbSogdGllKG9zdHJlYW0qIHZhbCkgeyBvc3RyZWFtKiBz
> YXZlPV90aWU7IF90aWU9dmFsOyByZXR1cm4gc2F2ZTsgfQ0KDQogICAgIA0K
> ICAgIHNob3J0ICBmaWxsKCkgY29uc3QgeyByZXR1cm4gKHNob3J0IClfZmls
> bDsgfQ0KICAgIHNob3J0ICBmaWxsKHNob3J0ICBuZXdmKQ0KCXtzaG9ydCAg
> b2xkZiA9IChzaG9ydCApX2ZpbGw7IF9maWxsID0gKGNoYXIpbmV3ZjsgcmV0
> dXJuIG9sZGY7fQ0KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1
> cm4gX2ZsYWdzOyB9DQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3
> X3ZhbCkgew0KCWZtdGZsYWdzIG9sZF92YWwgPSBfZmxhZ3M7IF9mbGFncyA9
> IG5ld192YWw7IHJldHVybiBvbGRfdmFsOyB9DQogICAgaW50IHByZWNpc2lv
> bigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0NCiAgICBpbnQgcHJl
> Y2lzaW9uKGludCBuZXdwKSB7DQoJdW5zaWduZWQgc2hvcnQgb2xkcCA9IF9w
> cmVjaXNpb247IF9wcmVjaXNpb24gPSAodW5zaWduZWQgc2hvcnQpbmV3cDsN
> CglyZXR1cm4gb2xkcDsgfQ0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3Mg
> dmFsKSB7DQoJZm10ZmxhZ3Mgb2xkYml0cyA9IF9mbGFnczsNCglfZmxhZ3Mg
> fD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQ0KICAgIGZtdGZsYWdzIHNldGYo
> Zm10ZmxhZ3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7DQoJZm10ZmxhZ3Mgb2xk
> Yml0cyA9IF9mbGFnczsNCglfZmxhZ3MgPSAoX2ZsYWdzICYgfm1hc2spIHwg
> KHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQ0KICAgIGZtdGZsYWdz
> IHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7DQoJZm10ZmxhZ3Mgb2xkYml0cyA9
> IF9mbGFnczsNCglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9
> DQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9DQog
> ICAgaW50IHdpZHRoKGludCB2YWwpIHsgaW50IHNhdmUgPSBfd2lkdGg7IF93
> aWR0aCA9IHZhbDsgcmV0dXJuIHNhdmU7IH0NCg0KDQoNCg0KICAgIHZvaWQg
> X3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0NCg0KICAgIHZvaWQgY2xlYXIo
> aW9zdGF0ZSBzdGF0ZSA9IDApIHsNCglfc3RhdGUgPSBfc3RyYnVmID8gc3Rh
> dGUgOiBzdGF0ZXxiYWRiaXQ7DQoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25z
> KSBfdGhyb3dfZmFpbHVyZSgpOyB9DQogICAgdm9pZCBzZXQoaW9zdGF0ZSBm
> bGFnKSB7IF9zdGF0ZSB8PSBmbGFnOw0KCWlmIChfc3RhdGUgJiBfZXhjZXB0
> aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQ0KICAgIHZvaWQgc2V0c3RhdGUo
> aW9zdGF0ZSBmbGFnKSB7IF9zdGF0ZSB8PSBmbGFnOyAgDQoJaWYgKF9zdGF0
> ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9DQogICAgaW50
> IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0gMDsgfQ0KICAgIGlu
> dCBlb2YoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmVvZmJpdDsg
> fQ0KICAgIGludCBmYWlsKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgKGlv
> czo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0NCiAgICBpbnQgYmFkKCkgY29u
> c3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0NCiAgICBpb3N0
> YXRlIHJkc3RhdGUoKSBjb25zdCB7IHJldHVybiBfc3RhdGU7IH0NCiAgICBv
> cGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lk
> KikwIDogKHZvaWQqKSgtMSk7IH0NCiAgICBpbnQgb3BlcmF0b3IhKCkgY29u
> c3QgeyByZXR1cm4gZmFpbCgpOyB9DQogICAgaW9zdGF0ZSBleGNlcHRpb25z
> KCkgY29uc3QgeyByZXR1cm4gX2V4Y2VwdGlvbnM7IH0NCiAgICB2b2lkIGV4
> Y2VwdGlvbnMoaW9zdGF0ZSBlbmFibGUpIHsNCglfZXhjZXB0aW9ucyA9IGVu
> YWJsZTsNCglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWls
> dXJlKCk7IH0NCg0KICAgIHN0cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJl
> dHVybiBfc3RyYnVmOyB9DQogICAgc3RyZWFtYnVmKiByZGJ1ZihzdHJlYW1i
> dWYgKl9zKSB7DQogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBf
> c3RyYnVmID0gX3M7IGNsZWFyICgpOyByZXR1cm4gX29sZDsgfQ0KDQogICAg
> c3RhdGljIGludCBzeW5jX3dpdGhfc3RkaW8oaW50IG9uKTsNCiAgICBzdGF0
> aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygx
> KTsgfQ0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOw0KICAgIHN0
> YXRpYyBpbnQgeGFsbG9jKCk7DQogICAgdm9pZComIHB3b3JkKGludCk7DQog
> ICAgdm9pZCogcHdvcmQoaW50KSBjb25zdDsNCiAgICBsb25nJiBpd29yZChp
> bnQpOw0KICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsNCg0KDQoNCg0KDQoN
> Cg0KDQoNCiAgICAgDQogICAgY2xhc3MgSW5pdCB7DQogICAgcHVibGljOg0K
> ICAgICAgSW5pdCAoKSB7IH0NCiAgICB9Ow0KDQogIHByb3RlY3RlZDoNCiAg
> ICBpbmxpbmUgaW9zKHN0cmVhbWJ1Ziogc2IgPSAwLCBvc3RyZWFtKiB0aWVf
> dG8gPSAwKTsNCiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7DQogICAgaW5s
> aW5lIHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAw
> KTsNCn07DQoNCg0KDQoNCnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19k
> aXI7DQoNCg0KIA0KIA0KIA0KIA0KIA0KDQogDQogDQpjbGFzcyBzdHJlYW1t
> YXJrZXIgOiBwcml2YXRlIF9JT19tYXJrZXIgew0KICAgIGZyaWVuZCBjbGFz
> cyBzdHJlYW1idWY7DQogICAgdm9pZCBzZXRfb2Zmc2V0KGludCBvZmZzZXQp
> IHsgX3BvcyA9IG9mZnNldDsgfQ0KICBwdWJsaWM6DQogICAgc3RyZWFtbWFy
> a2VyKHN0cmVhbWJ1ZiAqc2IpOw0KICAgIH5zdHJlYW1tYXJrZXIoKTsNCiAg
> ICBpbnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0NCiAgICBpbnQgZGVsdGEo
> c3RyZWFtbWFya2VyJik7DQogICAgaW50IGRlbHRhKCk7DQp9Ow0KDQpzdHJ1
> Y3Qgc3RyZWFtYnVmIDogcHVibGljIF9JT19GSUxFIHsgIA0KICAgIGZyaWVu
> ZCBjbGFzcyBpb3M7DQogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07DQogICAg
> ZnJpZW5kIGNsYXNzIG9zdHJlYW07DQogICAgZnJpZW5kIGNsYXNzIHN0cmVh
> bW1hcmtlcjsNCiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0dXJu
> ICooY29uc3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQ0KICBw
> cm90ZWN0ZWQ6DQogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3RfYWxsOyAg
> DQogICAgX0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0N
> CiAgICB2b2lkIF91bl9saW5rKCk7DQogICAgdm9pZCBfbGlua19pbigpOw0K
> ICAgIGNoYXIqIGdwdHIoKSBjb25zdA0KICAgICAgeyByZXR1cm4gX2ZsYWdz
> ICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9wdHI7IH0N
> CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0
> cjsgfQ0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QNCiAgICAgIHsgcmV0dXJu
> IF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9l
> bmQ7IH0NCiAgICBjaGFyKiBlcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9JT193
> cml0ZV9lbmQ7IH0NCiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsgcmV0dXJu
> IF9JT193cml0ZV9iYXNlOyB9DQogICAgY2hhciogZWJhY2soKSBjb25zdA0K
> ICAgICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jh
> c2UgOiBfSU9fcmVhZF9iYXNlO30NCiAgICBjaGFyKiBiYXNlKCkgY29uc3Qg
> eyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9DQogICAgY2hhciogZWJ1ZigpIGNv
> bnN0IHsgcmV0dXJuIF9JT19idWZfZW5kOyB9DQogICAgaW50IGJsZW4oKSBj
> b25zdCB7IHJldHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQ0K
> ICAgIHZvaWQgeHB1dF9jaGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisr
> ID0gYzsgfQ0KICAgIGludCB4ZmxhZ3MoKSB7IHJldHVybiBfZmxhZ3MgOyB9
> DQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9m
> bGFncyAgPSBmOyByZXR1cm4gZmw7fQ0KICAgIHZvaWQgeHNldGZsYWdzKGlu
> dCBmKSB7IF9mbGFncyAgfD0gZjsgfQ0KICAgIHZvaWQgeHNldGZsYWdzKGlu
> dCBmLCBpbnQgbWFzaykNCiAgICAgIHsgX2ZsYWdzICA9IChfZmxhZ3MgICYg
> fm1hc2spIHwgKGYgJiBtYXNrKTsgfQ0KICAgIHZvaWQgZ2J1bXAoaW50IG4p
> DQogICAgICB7IF9mbGFncyAgJiAweDEwMCAgPyAoX0lPX3NhdmVfYmFzZSs9
> bik6KF9JT19yZWFkX3B0cis9bik7fQ0KICAgIHZvaWQgcGJ1bXAoaW50IG4p
> IHsgX0lPX3dyaXRlX3B0ciArPSBuOyB9DQogICAgdm9pZCBzZXRiKGNoYXIq
> IGIsIGNoYXIqIGViLCBpbnQgYT0wKTsNCiAgICB2b2lkIHNldHAoY2hhciog
> cCwgY2hhciogZXApDQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0
> ZV9wdHI9cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQ0KICAgIHZvaWQgc2V0Zyhj
> aGFyKiBlYiwgY2hhciogZywgY2hhciAqZWcpIHsNCiAgICAgIGlmIChfZmxh
> Z3MgICYgMHgxMDAgKSBfSU9fZnJlZV9iYWNrdXBfYXJlYSh0aGlzKTsgDQog
> ICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7IF9J
> T19yZWFkX2VuZCA9IGVnOyB9DQogICAgY2hhciAqc2hvcnRidWYoKSB7IHJl
> dHVybiBfc2hvcnRidWY7IH0NCg0KICAgIGludCBpbl9iYWNrdXAoKSB7IHJl
> dHVybiBfZmxhZ3MgJiAweDEwMCA7IH0NCiAgICAgDQogICAgY2hhciAqR2Jh
> c2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19zYXZlX2Jhc2UgOiBf
> SU9fcmVhZF9iYXNlOyB9DQogICAgIA0KICAgIGNoYXIgKmVHcHRyKCkgeyBy
> ZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9l
> bmQ7IH0NCiAgICAgDQogICAgY2hhciAqQmJhc2UoKSB7IHJldHVybiBpbl9i
> YWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2ZV9iYXNlOyB9DQog
> ICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9JT19iYWNrdXBfYmFzZTsgfQ0K
> ICAgICANCiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgp
> ID8gX0lPX3JlYWRfZW5kIDogX0lPX3NhdmVfZW5kOyB9DQogICAgY2hhciAq
> TmJhc2UoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9DQogICAgY2hhciAq
> ZU5wdHIoKSB7IHJldHVybiBfSU9fc2F2ZV9lbmQ7IH0NCiAgICBpbnQgaGF2
> ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IChfX251bGwp
> IDsgfQ0KICAgIGludCBoYXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2Vy
> cyAhPSAoX19udWxsKSA7IH0NCiAgICB2b2lkIGZyZWVfYmFja3VwX2FyZWEo
> KTsNCiAgICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7ICANCiAgICBpbnQgcHV0
> X21vZGUoKSB7IHJldHVybiBfZmxhZ3MgJiAweDgwMCA7IH0NCiAgICBpbnQg
> c3dpdGNoX3RvX2dldF9tb2RlKCk7DQogICAgDQogICAgc3RyZWFtYnVmKGlu
> dCBmbGFncz0wKTsNCiAgcHVibGljOg0KICAgIHN0YXRpYyBpbnQgZmx1c2hf
> YWxsKCk7DQogICAgc3RhdGljIHZvaWQgZmx1c2hfYWxsX2xpbmVidWZmZXJl
> ZCgpOyAgDQogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7DQogICAgdmlydHVh
> bCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICANCiAgICB2aXJ0dWFs
> IGludCB1bmRlcmZsb3coKTsgIA0KICAgIHZpcnR1YWwgaW50IHVmbG93KCk7
> ICANCiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOw0KIA0KICAg
> IHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3Ry
> ZWFtc2l6ZSBuKTsNCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRuKGNo
> YXIqIHMsIHN0cmVhbXNpemUgbik7DQogICAgdmlydHVhbCBzdHJlYW1wb3Mg
> c2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjpp
> bnxpb3M6Om91dCk7DQogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bvcyhz
> dHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOw0K
> DQogICAgc3RyZWFtcG9zIHB1YnNlZWtvZmYoc3RyZWFtb2ZmIG8sIF9zZWVr
> X2RpciBkLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KQ0KICAgICAgeyBy
> ZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUpOyB9DQogICAg
> c3RyZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUg
> PSBpb3M6OmlufGlvczo6b3V0KQ0KICAgICAgeyByZXR1cm4gX0lPX3NlZWtw
> b3MgKHRoaXMsIHBvcywgbW9kZSk7IH0NCiAgICBzdHJlYW1wb3Mgc3NlZWtv
> ZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58aW9z
> OjpvdXQpOw0KICAgIHN0cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1wb3MgcG9z
> LCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOw0KICAgIHZpcnR1YWwg
> c3RyZWFtYnVmKiBzZXRidWYoY2hhciogcCwgaW50IGxlbik7DQogICAgdmly
> dHVhbCBpbnQgc3luYygpOw0KICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUo
> KTsNCg0KICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1hcmssIGlu
> dCBkZWx0YSA9IDApOw0KICAgIGludCBzcHV0YmFja2MoY2hhciBjKTsNCiAg
> ICBpbnQgc3VuZ2V0YygpOw0KICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1
> cm4gX2ZsYWdzICYgMiAgPyAxIDogMDsgfQ0KICAgIGludCBsaW5lYnVmZmVy
> ZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAweDIwMCAgPyAxIDogMDsgfQ0KICAg
> IHZvaWQgdW5idWZmZXJlZChpbnQgaSkNCgl7IGlmIChpKSBfZmxhZ3MgfD0g
> MiA7IGVsc2UgX2ZsYWdzICY9IH4yIDsgfQ0KICAgIHZvaWQgbGluZWJ1ZmZl
> cmVkKGludCBpKQ0KCXsgaWYgKGkpIF9mbGFncyB8PSAweDIwMCA7IGVsc2Ug
> X2ZsYWdzICY9IH4weDIwMCA7IH0NCiAgICBpbnQgYWxsb2NhdGUoKSB7ICAN
> CglpZiAoYmFzZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7DQoJZWxz
> ZSByZXR1cm4gZG9hbGxvY2F0ZSgpOyB9DQogICAgIA0KICAgIHZvaWQgYWxs
> b2NidWYoKSB7IGlmIChiYXNlKCkgPT0gKF9fbnVsbCkgKSBkb2FsbG9jYnVm
> KCk7IH0NCiAgICB2b2lkIGRvYWxsb2NidWYoKTsNCiAgICBpbnQgaW5fYXZh
> aWwoKSB7IHJldHVybiBfSU9fcmVhZF9lbmQgLSBfSU9fcmVhZF9wdHI7IH0N
> CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRy
> IC0gX0lPX3dyaXRlX2Jhc2U7IH0NCiAgICBzdHJlYW1zaXplIHNwdXRuKGNv
> bnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMs
> IG4pOyB9DQogICAgc3RyZWFtc2l6ZSBwYWRuKGNoYXIgcGFkLCBzdHJlYW1z
> aXplIG4pIHsgcmV0dXJuIF9JT19wYWRuKHRoaXMsIHBhZCwgbik7IH0NCiAg
> ICBzdHJlYW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyBy
> ZXR1cm4gX0lPX3NnZXRuKHRoaXMsIHMsIG4pOyB9DQogICAgaW50IGlnbm9y
> ZShpbnQpOw0KICAgIGludCBnZXRfY29sdW1uKCk7DQogICAgaW50IHNldF9j
> b2x1bW4oaW50KTsNCiAgICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1ZiwgX0df
> c2l6ZV90ICBuLCBjaGFyIGRlbGltLCBpbnQgcHV0YmFja19kZWxpbSk7DQog
> ICAgaW50IHNwdXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0aGlz
> KTsgfQ0KICAgIGludCBzYnVtcGMoKSB7IHJldHVybiBfSU9fZ2V0Yyh0aGlz
> KTsgfQ0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuICgoICB0aGlzICApLT5f
> SU9fcmVhZF9wdHIgPj0gKCAgdGhpcyAgKS0+X0lPX3JlYWRfZW5kICYmIF9f
> dW5kZXJmbG93ICggIHRoaXMgICkgPT0gKC0xKSAgPyAoLTEpICA6ICoodW5z
> aWduZWQgY2hhciAqKSAoICB0aGlzICApLT5fSU9fcmVhZF9wdHIpICA7IH0N
> CiAgICBpbnQgc25leHRjKCkgew0KCWlmIChfSU9fcmVhZF9wdHIgPj0gX0lP
> X3JlYWRfZW5kICYmIF9fdW5kZXJmbG93KHRoaXMpID09ICgtMSkgKQ0KCSAg
> cmV0dXJuICgtMSkgOw0KCWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0cisrLCBz
> Z2V0YygpOyB9DQogICAgdm9pZCBzdG9zc2MoKSB7IGlmIChfSU9fcmVhZF9w
> dHIgPCBfSU9fcmVhZF9lbmQpIF9JT19yZWFkX3B0cisrOyB9DQogICAgaW50
> IHZzY2FuKGNoYXIgY29uc3QgKmZtdDAsIF9HX3ZhX2xpc3QgIGFwLCBpb3Mq
> IHN0cmVhbSA9IChfX251bGwpICk7DQogICAgaW50IHNjYW4oY2hhciBjb25z
> dCAqZm10MCAuLi4pOw0KICAgIGludCB2Zm9ybShjaGFyIGNvbnN0ICpmbXQw
> LCBfR192YV9saXN0ICBhcCk7DQogICAgaW50IGZvcm0oY2hhciBjb25zdCAq
> Zm10MCAuLi4pOw0KDQoNCg0KDQogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5
> c19yZWFkKGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsNCiAgICB2aXJ0
> dWFsIHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1z
> aXplKTsNCiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1v
> ZmYsIF9zZWVrX2Rpcik7DQogICAgdmlydHVhbCBpbnQgc3lzX2Nsb3NlKCk7
> DQogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgDQp9Ow0KDQog
> DQogDQoNCmNsYXNzIGZpbGVidWYgOiBwdWJsaWMgc3RyZWFtYnVmIHsNCiAg
> cHJvdGVjdGVkOg0KICAgIHZvaWQgaW5pdCgpOw0KICBwdWJsaWM6DQogICAg
> c3RhdGljIGNvbnN0IGludCBvcGVucHJvdDsgIA0KICAgIGZpbGVidWYoKTsN
> CiAgICBmaWxlYnVmKGludCBmZCk7DQogICAgZmlsZWJ1ZihpbnQgZmQsIGNo
> YXIqIHAsIGludCBsZW4pOw0KDQoNCg0KICAgIH5maWxlYnVmKCk7DQogICAg
> ZmlsZWJ1ZiogYXR0YWNoKGludCBmZCk7DQogICAgZmlsZWJ1Ziogb3Blbihj
> b25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7DQogICAg
> ZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW9zOjpvcGVu
> bW9kZSBtb2RlLCBpbnQgcHJvdCA9IDA2NjQpOw0KICAgIHZpcnR1YWwgaW50
> IHVuZGVyZmxvdygpOw0KICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGludCBj
> ID0gKC0xKSApOw0KICAgIGludCBpc19vcGVuKCkgY29uc3QgeyByZXR1cm4g
> X2ZpbGVubyA+PSAwOyB9DQogICAgaW50IGZkKCkgY29uc3QgeyByZXR1cm4g
> aXNfb3BlbigpID8gX2ZpbGVubyA6ICgtMSkgOyB9DQogICAgZmlsZWJ1Ziog
> Y2xvc2UoKTsNCiAgICB2aXJ0dWFsIGludCBkb2FsbG9jYXRlKCk7DQogICAg
> dmlydHVhbCBzdHJlYW1wb3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2Rp
> ciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91dCk7DQogICAgdmlydHVhbCBz
> dHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsNCiAgICBzdHJl
> YW1zaXplIHhzcHV0bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOw0K
> ICAgIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7
> DQogICAgdmlydHVhbCBpbnQgc3luYygpOw0KICBwcm90ZWN0ZWQ6ICANCiAN
> CiAgICBpbnQgaXNfcmVhZGluZygpIHsgcmV0dXJuIGViYWNrKCkgIT0gZWdw
> dHIoKTsgfQ0KICAgIGNoYXIqIGN1cl9wdHIoKSB7IHJldHVybiBpc19yZWFk
> aW5nKCkgPyAgZ3B0cigpIDogcHB0cigpOyB9DQogICAgIA0KICAgIGNoYXIq
> IGZpbGVfcHRyKCkgeyByZXR1cm4gZUdwdHIoKTsgfQ0KICAgICANCiAgICB2
> aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1z
> aXplIHNpemUpOw0KICAgIHZpcnR1YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0
> cmVhbW9mZiwgX3NlZWtfZGlyKTsNCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUg
> c3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsNCiAgICB2aXJ0
> dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICANCiAgICB2aXJ0dWFsIGludCBz
> eXNfY2xvc2UoKTsNCg0KDQoNCg0KfTsNCg0KaW5saW5lIHZvaWQgaW9zOjpp
> bml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgew0KCQlfc3Rh
> dGUgPSBzYiA/IGlvczo6Z29vZGJpdCA6IGlvczo6YmFkYml0OyBfZXhjZXB0
> aW9ucz0wOw0KCQlfc3RyYnVmPXNiOyBfdGllID0gdGllX3RvOyBfd2lkdGg9
> MDsgX2ZpbGw9JyAnOw0KDQoJCV9mbGFncz1pb3M6OnNraXB3c3xpb3M6OmRl
> YzsNCg0KDQoNCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0gMDsgfQ0KDQpp
> bmxpbmUgaW9zOjppb3Moc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3Rv
> KSB7IGluaXQoc2IsIHRpZV90byk7IH0NCg0KaW5saW5lIGlvczo6fmlvcygp
> IHsNCg0KDQoNCiAgICBpZiAoX2FycmF5cykgZGVsZXRlIFtdIF9hcnJheXM7
> DQp9DQp9ICANCg0KIyAzMSAiL2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvaW5j
> bHVkZS9nKysvaW9zdHJlYW0uaCIgMiAzDQoNCg0KZXh0ZXJuICJDKysiIHsN
> CmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07DQp0eXBlZGVmIGlvcyYg
> KCpfX21hbmlwKShpb3MmKTsNCnR5cGVkZWYgaXN0cmVhbSYgKCpfX2ltYW5p
> cCkoaXN0cmVhbSYpOw0KdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShv
> c3RyZWFtJik7DQoNCmV4dGVybiBpc3RyZWFtJiB3cyhpc3RyZWFtJiBpbnMp
> Ow0KZXh0ZXJuIG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOw0KZXh0
> ZXJuIG9zdHJlYW0mIGVuZGwob3N0cmVhbSYgb3V0cyk7DQpleHRlcm4gb3N0
> cmVhbSYgZW5kcyhvc3RyZWFtJiBvdXRzKTsNCg0KY2xhc3Mgb3N0cmVhbSA6
> IHZpcnR1YWwgcHVibGljIGlvcw0Kew0KICAgICANCiAgICB2b2lkIGRvX29z
> ZngoKTsNCiAgcHVibGljOg0KICAgIG9zdHJlYW0oKSB7IH0NCiAgICBvc3Ry
> ZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZWQ9IChfX251bGwpICk7
> DQogICAgaW50IG9wZngoKSB7DQoJaWYgKCFnb29kKCkpIHJldHVybiAwOw0K
> CWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJuIDE7
> fSB9DQogICAgdm9pZCBvc2Z4KCkgeyAgOw0KCQkgIGlmIChmbGFncygpICYg
> KGlvczo6dW5pdGJ1Znxpb3M6OnN0ZGlvKSkNCgkJICAgICAgZG9fb3NmeCgp
> OyB9DQogICAgb3N0cmVhbSYgZmx1c2goKTsNCiAgICBvc3RyZWFtJiBwdXQo
> Y2hhciBjKSB7IF9zdHJidWYtPnNwdXRjKGMpOyByZXR1cm4gKnRoaXM7IH0N
> Cg0KDQoNCg0KDQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgY2hhciAqcywg
> c3RyZWFtc2l6ZSBuKTsNCiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCB1bnNp
> Z25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pDQogICAgICB7IHJldHVybiB3
> cml0ZSgoY29uc3QgY2hhciopcywgbik7fQ0KICAgIG9zdHJlYW0mIHdyaXRl
> KGNvbnN0IHNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pDQogICAgICB7
> IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQ0KICAgIG9zdHJl
> YW0mIHdyaXRlKGNvbnN0IHZvaWQgKnMsIHN0cmVhbXNpemUgbikNCiAgICAg
> IHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9DQogICAgb3N0
> cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsNCiAgICBvc3RyZWFtJiBzZWVrcChz
> dHJlYW1vZmYsIF9zZWVrX2Rpcik7DQogICAgc3RyZWFtcG9zIHRlbGxwKCk7
> DQogICAgb3N0cmVhbSYgZm9ybShjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsN
> CiAgICBvc3RyZWFtJiB2Zm9ybShjb25zdCBjaGFyICpmb3JtYXQsIF9HX3Zh
> X2xpc3QgIGFyZ3MpOw0KDQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjaGFy
> IGMpOw0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBj
> KSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFyKWM7IH0NCiAgICBvc3RyZWFt
> JiBvcGVyYXRvcjw8KHNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykg
> PDwgKGNoYXIpYzsgfQ0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qg
> Y2hhciAqcyk7DQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB1bnNp
> Z25lZCBjaGFyICpzKQ0KCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNo
> YXIqKXM7IH0NCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHNpZ25l
> ZCBjaGFyICpzKQ0KCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIq
> KXM7IH0NCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZvaWQgKnAp
> Ow0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoaW50IG4pOw0KICAgIG9zdHJl
> YW0mIG9wZXJhdG9yPDwodW5zaWduZWQgaW50IG4pOw0KICAgIG9zdHJlYW0m
> IG9wZXJhdG9yPDwobG9uZyBuKTsNCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
> KHVuc2lnbmVkIGxvbmcgbik7DQoNCiAgICBfX2V4dGVuc2lvbl9fIG9zdHJl
> YW0mIG9wZXJhdG9yPDwobG9uZyBsb25nIG4pOw0KICAgIF9fZXh0ZW5zaW9u
> X18gb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIGxvbmcgbik7
> DQoNCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4g
> b3BlcmF0b3I8PCgoaW50KW4pO30NCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8
> KHVuc2lnbmVkIHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8PCgodW5zaWdu
> ZWQgaW50KW4pO30NCg0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoYm9vbCBi
> KSB7IHJldHVybiBvcGVyYXRvcjw8KChpbnQpYik7IH0NCg0KICAgIG9zdHJl
> YW0mIG9wZXJhdG9yPDwoZG91YmxlIG4pOw0KICAgIG9zdHJlYW0mIG9wZXJh
> dG9yPDwoZmxvYXQgbikgeyByZXR1cm4gb3BlcmF0b3I8PCgoZG91YmxlKW4p
> OyB9DQoNCg0KDQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIGRvdWJs
> ZSBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0NCg0KICAg
> IG9zdHJlYW0mIG9wZXJhdG9yPDwoX19vbWFuaXAgZnVuYykgeyByZXR1cm4g
> KCpmdW5jKSgqdGhpcyk7IH0NCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KF9f
> bWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQ0K
> ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3RyZWFtYnVmKik7DQoNCg0KDQp9
> Ow0KDQpjbGFzcyBpc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zDQp7DQog
> ICAgIA0KcHJvdGVjdGVkOg0KICAgIF9HX3NpemVfdCAgX2djb3VudDsNCg0K
> ICAgIGludCBfc2tpcF93cygpOw0KICBwdWJsaWM6DQogICAgaXN0cmVhbSgp
> OiBfZ2NvdW50ICgwKSB7IH0NCiAgICBpc3RyZWFtKHN0cmVhbWJ1Ziogc2Is
> IG9zdHJlYW0qdGllZD0gKF9fbnVsbCkgKTsNCiAgICBpc3RyZWFtJiBnZXQo
> Y2hhciogcHRyLCBpbnQgbGVuLCBjaGFyIGRlbGltID0gJ1xuJyk7DQogICAg
> aXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hh
> ciBkZWxpbSA9ICdcbicpDQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxl
> biwgZGVsaW0pOyB9DQogICAgaXN0cmVhbSYgZ2V0KGNoYXImIGMpOw0KICAg
> IGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyJiBjKSB7IHJldHVybiBnZXQo
> KGNoYXImKWMpOyB9DQogICAgaXN0cmVhbSYgZ2V0bGluZShjaGFyKiBwdHIs
> IGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKTsNCiAgICBpc3RyZWFtJiBn
> ZXRsaW5lKHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxp
> bSA9ICdcbicpDQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4s
> IGRlbGltKTsgfQ0KICAgIGlzdHJlYW0mIGdldChzaWduZWQgY2hhciYgYykg
> IHsgcmV0dXJuIGdldCgoY2hhciYpYyk7IH0NCiAgICBpc3RyZWFtJiBnZXQo
> c2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicp
> DQoJeyByZXR1cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9DQog
> ICAgaXN0cmVhbSYgZ2V0bGluZShzaWduZWQgY2hhciogcHRyLCBpbnQgbGVu
> LCBjaGFyIGRlbGltID0gJ1xuJykNCgl7IHJldHVybiBnZXRsaW5lKChjaGFy
> KilwdHIsIGxlbiwgZGVsaW0pOyB9DQogICAgaXN0cmVhbSYgcmVhZChjaGFy
> ICpwdHIsIHN0cmVhbXNpemUgbik7DQogICAgaXN0cmVhbSYgcmVhZCh1bnNp
> Z25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikNCiAgICAgIHsgcmV0dXJu
> IHJlYWQoKGNoYXIqKXB0ciwgbik7IH0NCiAgICBpc3RyZWFtJiByZWFkKHNp
> Z25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikNCiAgICAgIHsgcmV0dXJu
> IHJlYWQoKGNoYXIqKXB0ciwgbik7IH0NCiAgICBpc3RyZWFtJiByZWFkKHZv
> aWQgKnB0ciwgc3RyZWFtc2l6ZSBuKQ0KICAgICAgeyByZXR1cm4gcmVhZCgo
> Y2hhciopcHRyLCBuKTsgfQ0KICAgIGlzdHJlYW0mIGdldChzdHJlYW1idWYm
> IHNiLCBjaGFyIGRlbGltID0gJ1xuJyk7DQogICAgaXN0cmVhbSYgZ2V0cyhj
> aGFyICoqcywgY2hhciBkZWxpbSA9ICdcbicpOw0KICAgIGludCBpcGZ4KGlu
> dCBuZWVkID0gMCkgew0KCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxi
> aXQpOyByZXR1cm4gMDsgfQ0KCWVsc2Ugew0KCSAgIDsNCgkgIGlmIChfdGll
> ICYmIChuZWVkID09IDAgfHwgcmRidWYoKS0+aW5fYXZhaWwoKSA8IG5lZWQp
> KSBfdGllLT5mbHVzaCgpOw0KCSAgaWYgKCFuZWVkICYmIChmbGFncygpICYg
> aW9zOjpza2lwd3MpKSByZXR1cm4gX3NraXBfd3MoKTsNCgkgIGVsc2UgcmV0
> dXJuIDE7DQoJfQ0KICAgIH0NCiAgICBpbnQgaXBmeDAoKSB7ICANCglpZiAo
> IWdvb2QoKSkgeyBzZXQoaW9zOjpmYWlsYml0KTsgcmV0dXJuIDA7IH0NCgll
> bHNlIHsNCgkgICA7DQoJICBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsNCgkg
> IGlmIChmbGFncygpICYgaW9zOjpza2lwd3MpIHJldHVybiBfc2tpcF93cygp
> Ow0KCSAgZWxzZSByZXR1cm4gMTsNCgl9DQogICAgfQ0KICAgIGludCBpcGZ4
> MSgpIHsgIA0KCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyBy
> ZXR1cm4gMDsgfQ0KCWVsc2Ugew0KCSAgIDsNCgkgIGlmIChfdGllICYmIHJk
> YnVmKCktPmluX2F2YWlsKCkgPT0gMCkgX3RpZS0+Zmx1c2goKTsNCgkgIHJl
> dHVybiAxOw0KCX0NCiAgICB9DQogICAgdm9pZCBpc2Z4KCkgeyAgOyB9DQog
> ICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1cm4gKC0xKSA7DQoJ
> CWVsc2UgeyBpbnQgY2ggPSBfc3RyYnVmLT5zYnVtcGMoKTsNCgkJICAgICAg
> IGlmIChjaCA9PSAoLTEpICkgc2V0KGlvczo6ZW9mYml0KTsNCgkJICAgICAg
> IHJldHVybiBjaDsNCgkJICAgICB9IH0NCiAgICBpbnQgcGVlaygpOw0KICAg
> IF9HX3NpemVfdCAgZ2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQ0KICAg
> IGlzdHJlYW0mIGlnbm9yZShpbnQgbj0xLCBpbnQgZGVsaW0gPSAoLTEpICk7
> DQogICAgaW50IHN5bmMgKCk7DQogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFt
> cG9zKTsNCiAgICBpc3RyZWFtJiBzZWVrZyhzdHJlYW1vZmYsIF9zZWVrX2Rp
> cik7DQogICAgc3RyZWFtcG9zIHRlbGxnKCk7DQogICAgaXN0cmVhbSYgcHV0
> YmFjayhjaGFyIGNoKSB7DQoJaWYgKGdvb2QoKSAmJiBfc3RyYnVmLT5zcHV0
> YmFja2MoY2gpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7DQoJcmV0
> dXJuICp0aGlzO30NCiAgICBpc3RyZWFtJiB1bmdldCgpIHsNCglpZiAoZ29v
> ZCgpICYmIF9zdHJidWYtPnN1bmdldGMoKSA9PSAoLTEpICkgY2xlYXIoaW9z
> OjpiYWRiaXQpOw0KCXJldHVybiAqdGhpczt9DQogICAgaXN0cmVhbSYgc2Nh
> bihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsNCiAgICBpc3RyZWFtJiB2c2Nh
> bihjb25zdCBjaGFyICpmb3JtYXQsIF9HX3ZhX2xpc3QgIGFyZ3MpOw0KDQoN
> Cg0KDQoNCg0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oY2hhciopOw0KICAg
> IGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgY2hhciogcCkgeyByZXR1
> cm4gb3BlcmF0b3I+PigoY2hhciopcCk7IH0NCiAgICBpc3RyZWFtJiBvcGVy
> YXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNo
> YXIqKXApOyB9DQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsN
> CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGNoYXImIGMpIHty
> ZXR1cm4gb3BlcmF0b3I+PigoY2hhciYpYyk7fQ0KICAgIGlzdHJlYW0mIG9w
> ZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+Pigo
> Y2hhciYpYyk7fQ0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50Jik7DQog
> ICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihsb25nJik7DQoNCiAgICBfX2V4dGVu
> c2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBsb25nJik7DQogICAg
> X19leHRlbnNpb25fXyBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGxv
> bmcgbG9uZyYpOw0KDQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaG9ydCYp
> Ow0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQgaW50Jik7DQog
> ICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7DQogICAg
> aXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYpOw0KDQogICAg
> aXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7DQoNCiAgICBpc3RyZWFtJiBv
> cGVyYXRvcj4+KGZsb2F0Jik7DQogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihk
> b3VibGUmKTsNCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGxvbmcgZG91Ymxl
> Jik7DQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PiggX19tYW5pcCBmdW5jKSB7
> KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9DQogICAgaXN0cmVhbSYg
> b3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0
> aGlzKTsgfQ0KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7
> DQp9Ow0KDQpjbGFzcyBpb3N0cmVhbSA6IHB1YmxpYyBpc3RyZWFtLCBwdWJs
> aWMgb3N0cmVhbQ0Kew0KICBwdWJsaWM6DQogICAgaW9zdHJlYW0oKSB7IH0N
> CiAgICBpb3N0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IChf
> X251bGwpICk7DQp9Ow0KDQpjbGFzcyBfSU9faXN0cmVhbV93aXRoYXNzaWdu
> IDogcHVibGljIGlzdHJlYW0gew0KcHVibGljOg0KICBfSU9faXN0cmVhbV93
> aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYpOw0KICBfSU9faXN0cmVh
> bV93aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1fd2l0aGFzc2ln
> biYgcmhzKQ0KICAgIHsgcmV0dXJuIG9wZXJhdG9yPSAoc3RhdGljX2Nhc3Q8
> aXN0cmVhbSY+IChyaHMpKTsgfQ0KfTsNCg0KY2xhc3MgX0lPX29zdHJlYW1f
> d2l0aGFzc2lnbiA6IHB1YmxpYyBvc3RyZWFtIHsNCnB1YmxpYzoNCiAgX0lP
> X29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9zdHJlYW0mKTsNCiAg
> X0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KF9JT19vc3RyZWFt
> X3dpdGhhc3NpZ24mIHJocykNCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0
> YXRpY19jYXN0PG9zdHJlYW0mPiAocmhzKSk7IH0NCn07DQoNCmV4dGVybiBf
> SU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsNCiANCmV4dGVybiBfSU9fb3N0
> cmVhbV93aXRoYXNzaWduIGNvdXQsIGNlcnI7DQoNCmV4dGVybiBfSU9fb3N0
> cmVhbV93aXRoYXNzaWduIGNsb2cNCg0KDQoNCjsNCg0KZXh0ZXJuIGlzdHJl
> YW0mIGxvY2soaXN0cmVhbSYgaW5zKTsNCmV4dGVybiBpc3RyZWFtJiB1bmxv
> Y2soaXN0cmVhbSYgaW5zKTsNCmV4dGVybiBvc3RyZWFtJiBsb2NrKG9zdHJl
> YW0mIG91dHMpOw0KZXh0ZXJuIG9zdHJlYW0mIHVubG9jayhvc3RyZWFtJiBv
> dXRzKTsNCg0Kc3RydWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICANCg0KaW5s
> aW5lIGlvcyYgZGVjKGlvcyYgaSkNCnsgaS5zZXRmKGlvczo6ZGVjLCBpb3M6
> OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9DQppbmxpbmUg
> aW9zJiBoZXgoaW9zJiBpKQ0KeyBpLnNldGYoaW9zOjpoZXgsIGlvczo6ZGVj
> fGlvczo6aGV4fGlvczo6b2N0KTsgcmV0dXJuIGk7IH0NCmlubGluZSBpb3Mm
> IG9jdChpb3MmIGkpDQp7IGkuc2V0Zihpb3M6Om9jdCwgaW9zOjpkZWN8aW9z
> OjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQ0KfSAgDQoNCg0KIyA2ICIv
> aG9tZS9yb29tMS9rcmlvbC9sb2NhbC9pbmNsdWRlL2lvc3RyZWFtIiAyIDMN
> Cg0KDQoNCiMgNiAiL2hvbWUvcm9vbTEva3Jpb2wvd29yay9Qcm9qZWN0L2lu
> Y2x1ZGUvVmVjdG9yM0QuSCIgMiAzDQoNCg0KDQoNCg0KDQp0ZW1wbGF0ZSA8
> Y2xhc3MgbnVtVD4gY2xhc3MgVFF1YXRlcm5pb247DQoNCnRlbXBsYXRlIDxj
> bGFzcyBudW1UPg0KY2xhc3MgVFZlY3RvcjNEIHsNCiAgICANCiAgcHVibGlj
> Og0KICANCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgIFRW
> ZWN0b3IzRCggdm9pZCApOw0KDQogICAgVFZlY3RvcjNEKCBudW1UIGRUICk7
> DQoNCiAgICBUVmVjdG9yM0QoIG51bVQgZFgsIG51bVQgZFksIG51bVQgZFog
> KTsNCg0KICAgIFRWZWN0b3IzRCggY29uc3QgbnVtVCogcGRYICk7DQoNCiAg
> ICBUVmVjdG9yM0QoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgcmhzICk7DQog
> IA0KICAgIH5UVmVjdG9yM0QoKTsNCiAgICAgIA0KICAgICAgICANCiAgICAg
> ICAgDQogICAgICAgIA0KDQogICAgVFZlY3RvcjNEPG51bVQ+JiAgIG9wZXJh
> dG9yID0gKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIHJocyApOw0KICAgIFRW
> ZWN0b3IzRDxudW1UPiYgICBvcGVyYXRvciA9ICggbnVtVCBkVCApOw0KDQog
> ICAgbnVtVCYgICAgICBvcGVyYXRvcltdKCBpbnQgaUlkeCApOw0KICAgIA0K
> ICAgIFRWZWN0b3IzRDxudW1UPiAgICBvcGVyYXRvciAtICggdm9pZCApOw0K
> DQogICAgVFZlY3RvcjNEPG51bVQ+JiAgIG9wZXJhdG9yICs9ICggY29uc3Qg
> VFZlY3RvcjNEPG51bVQ+JiByaHMgKTsNCiAgICBUVmVjdG9yM0Q8bnVtVD4m
> ICAgb3BlcmF0b3IgKz0gKCBudW1UIGRUICk7DQoNCiAgICBUVmVjdG9yM0Q8
> bnVtVD4mICAgb3BlcmF0b3IgLT0gKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4m
> IHJocyApOw0KICAgIFRWZWN0b3IzRDxudW1UPiYgICBvcGVyYXRvciAtPSAo
> IG51bVQgZFQgKTsNCg0KICAgIFRWZWN0b3IzRDxudW1UPiYgICBvcGVyYXRv
> ciAqPSAoIG51bVQgZFQgKTsNCiAgICBUVmVjdG9yM0Q8bnVtVD4mICAgb3Bl
> cmF0b3IgLz0gKCBudW1UIGRUICk7DQoNCiAgICB2b2lkIG5vcm1hbGl6ZSgg
> dm9pZCApOw0KDQogICAgdm9pZCBzZXRYKCBudW1UIGRYICk7DQogICAgdm9p
> ZCBzZXRZKCBudW1UIGRZICk7DQogICAgdm9pZCBzZXRaKCBudW1UIGRaICk7
> DQoNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCg0KICAgIG51bVQg
> ICAgICBvcGVyYXRvcltdKCBpbnQgaUlkeCApIGNvbnN0Ow0KICAgIA0KICAg
> IG51bVQgICAgICBkWCggdm9pZCApIGNvbnN0OyAgICANCiAgICBudW1UICAg
> ICAgZFkoIHZvaWQgKSBjb25zdDsNCiAgICBudW1UICAgICAgZFooIHZvaWQg
> KSBjb25zdDsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0KDQog
> ICAgZnJpZW5kIGNsYXNzICBUUXVhdGVybmlvbjxudW1UPjsNCg0KICAgIGZy
> aWVuZCBUVmVjdG9yM0Q8bnVtVD4gb3BlcmF0b3IgKyAoIGNvbnN0IFRWZWN0
> b3IzRDxudW1UPiYsIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgKTsNCiAgICBm
> cmllbmQgVFZlY3RvcjNEPG51bVQ+IG9wZXJhdG9yICsgKCBjb25zdCBUVmVj
> dG9yM0Q8bnVtVD4mLCBudW1UICk7DQogICAgZnJpZW5kIFRWZWN0b3IzRDxu
> dW1UPiBvcGVyYXRvciArICggbnVtVCwgY29uc3QgVFZlY3RvcjNEPG51bVQ+
> JiApOw0KICAgIGZyaWVuZCBUVmVjdG9yM0Q8bnVtVD4gb3BlcmF0b3IgLSAo
> IGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIGNvbnN0IFRWZWN0b3IzRDxudW1U
> PiYgKTsNCiAgICBmcmllbmQgVFZlY3RvcjNEPG51bVQ+IG9wZXJhdG9yIC0g
> KCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mLCBudW1UICk7DQogICAgZnJpZW5k
> IFRWZWN0b3IzRDxudW1UPiBvcGVyYXRvciAtICggbnVtVCwgY29uc3QgVFZl
> Y3RvcjNEPG51bVQ+JiApOw0KICAgIGZyaWVuZCBUVmVjdG9yM0Q8bnVtVD4g
> b3BlcmF0b3IgKiAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIG51bVQgKTsN
> CiAgICBmcmllbmQgVFZlY3RvcjNEPG51bVQ+IG9wZXJhdG9yICogKCBudW1U
> LCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mICk7DQogICAgZnJpZW5kIG51bVQg
> ICAgICAgICAgICBvcGVyYXRvciAqICggY29uc3QgVFZlY3RvcjNEPG51bVQ+
> JiwgY29uc3QgVFZlY3RvcjNEPG51bVQ+JiApOyAgDQogICAgDQogICAgZnJp
> ZW5kIFRWZWN0b3IzRDxudW1UPiBvcGVyYXRvciAvICggY29uc3QgVFZlY3Rv
> cjNEPG51bVQ+JiwgbnVtVCApOw0KICAgIGZyaWVuZCBUVmVjdG9yM0Q8bnVt
> VD4gb3BlcmF0b3IgXiAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIGNvbnN0
> IFRWZWN0b3IzRDxudW1UPiYgKTsNCiAgICANCiAgICBmcmllbmQgYm9vbF90
> IG9wZXJhdG9yICE9ICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIGNv
> bnN0IFRWZWN0b3IzRDxudW1UPiYgcmhzICk7DQogICAgZnJpZW5kIGJvb2xf
> dCBvcGVyYXRvciAhPSAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIG51bVQg
> KTsNCiAgICBmcmllbmQgYm9vbF90IG9wZXJhdG9yICE9ICggbnVtVCwgY29u
> c3QgVFZlY3RvcjNEPG51bVQ+JiApOw0KICAgIA0KICAgIGZyaWVuZCBib29s
> X3Qgb3BlcmF0b3IgPT0gKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mLCBjb25z
> dCBUVmVjdG9yM0Q8bnVtVD4mICk7DQogICAgZnJpZW5kIGJvb2xfdCBvcGVy
> YXRvciA9PSAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIG51bVQgKTsNCiAg
> ICBmcmllbmQgYm9vbF90IG9wZXJhdG9yID09ICggbnVtVCwgY29uc3QgVFZl
> Y3RvcjNEPG51bVQ+JiApOw0KICAgIA0KICAgIGZyaWVuZCBudW1UICAgICAg
> ICAgICAgYWJzKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mICk7ICAgICAgDQog
> ICAgZnJpZW5kIG51bVQgICAgICAgICAgICBub3JtKCBjb25zdCBUVmVjdG9y
> M0Q8bnVtVD4mICk7ICAgICANCiAgICBmcmllbmQgbnVtVCAgICAgICAgICAg
> IGFic190cmFucyggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiApOw0KICAgIGZy
> aWVuZCBudW1UICAgICAgICAgICAgbm9ybV90cmFucyggY29uc3QgVFZlY3Rv
> cjNEPG51bVQ+JiApOw0KICAgIGZyaWVuZCBudW1UICAgICAgICAgICAgYW5n
> bGUoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYsIGNvbnN0IFRWZWN0b3IzRDxu
> dW1UPiYgKTsNCiAgICBmcmllbmQgVFZlY3RvcjNEPG51bVQ+IHVuaXQoIGNv
> bnN0IFRWZWN0b3IzRCYgKTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAg
> ICAgIA0KDQogICAgZnJpZW5kIGlzdHJlYW0mIG9wZXJhdG9yID4+ICggaXN0
> cmVhbSYgaXMsIFRWZWN0b3IzRDxudW1UPiYgKTsNCiAgICBmcmllbmQgb3N0
> cmVhbSYgb3BlcmF0b3IgPDwgKCBvc3RyZWFtJiBvcywgY29uc3QgVFZlY3Rv
> cjNEPG51bVQ+JiApOw0KDQogIHByaXZhdGU6DQoNCiAgICBudW1UIGRYXzsN
> CiAgICBudW1UIGRZXzsNCiAgICBudW1UIGRaXzsNCg0KfTsNCg0KIA0KIA0K
> IA0KDQojIDEgIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2luY2x1ZGUvZysr
> L2NtYXRoIiAxIDMNCiANCiANCg0KDQoNCg0KIyAxICIvaG9tZS9yb29tMS9r
> cmlvbC9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNS4x
> L2VnY3MtMi45MC4xMi9pbmNsdWRlL21hdGguaCIgMSAzIDQNCiANCg0KDQoN
> Cg0KDQoNCg0KZXh0ZXJuICJDIiB7DQoNCg0KI3ByYWdtYSBpZGVudAkiQCgj
> KW1hdGguaAkyLjUJOTUvMDIvMDciDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQogDQoNCg0KdHlwZWRlZiB1bmlvbiBfaF92YWwgew0KICAJdW5z
> aWduZWQgbG9uZyBfaVsyXTsNCglkb3VibGUgX2Q7DQp9IF9oX3ZhbDsNCg0K
> DQpleHRlcm4gY29uc3QgX2hfdmFsIF9faHVnZV92YWw7DQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> ZXh0ZXJuIGludCBzaWduZ2FtOw0KDQoNCg0KDQogDQoNCg0KZW51bSB2ZXJz
> aW9uIHtsaWJtX2llZWUgPSAtMSwgY19pc3N1ZV80LCBhbnNpXzEsIHN0cmlj
> dF9hbnNpfTsNCg0KDQpleHRlcm4gY29uc3QgZW51bSB2ZXJzaW9uIF9saWJf
> dmVyc2lvbjsNCg0KDQoNCg0KDQoNCg0Kc3RydWN0IF9fbWF0aF9leGNlcHRp
> b24gIHsNCg0KDQoNCglpbnQgdHlwZTsNCgljaGFyICpuYW1lOw0KCWRvdWJs
> ZSBhcmcxOw0KCWRvdWJsZSBhcmcyOw0KCWRvdWJsZSByZXR2YWw7DQp9Ow0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQogDQoNCg0KZXh0ZXJuIGRvdWJsZSBhY29zICAoZG91Ymxl
> KSAgOw0KZXh0ZXJuIGRvdWJsZSBhc2luICAoZG91YmxlKSAgOw0KZXh0ZXJu
> IGRvdWJsZSBhdGFuICAoZG91YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBhdGFu
> MiAgKGRvdWJsZSwgZG91YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBjb3MgIChk
> b3VibGUpICA7DQpleHRlcm4gZG91YmxlIHNpbiAgKGRvdWJsZSkgIDsNCmV4
> dGVybiBkb3VibGUgdGFuICAoZG91YmxlKSAgOw0KDQpleHRlcm4gZG91Ymxl
> IGNvc2ggIChkb3VibGUpICA7DQpleHRlcm4gZG91YmxlIHNpbmggIChkb3Vi
> bGUpICA7DQpleHRlcm4gZG91YmxlIHRhbmggIChkb3VibGUpICA7DQoNCmV4
> dGVybiBkb3VibGUgZXhwICAoZG91YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBm
> cmV4cCAgKGRvdWJsZSwgaW50ICopICA7DQpleHRlcm4gZG91YmxlIGxkZXhw
> ICAoZG91YmxlLCBpbnQpICA7DQpleHRlcm4gZG91YmxlIGxvZyAgKGRvdWJs
> ZSkgIDsNCmV4dGVybiBkb3VibGUgbG9nMTAgIChkb3VibGUpICA7DQpleHRl
> cm4gZG91YmxlIG1vZGYgIChkb3VibGUsIGRvdWJsZSAqKSAgOw0KDQpleHRl
> cm4gZG91YmxlIHBvdyAgKGRvdWJsZSwgZG91YmxlKSAgOw0KZXh0ZXJuIGRv
> dWJsZSBzcXJ0ICAoZG91YmxlKSAgOw0KDQpleHRlcm4gZG91YmxlIGNlaWwg
> IChkb3VibGUpICA7DQpleHRlcm4gZG91YmxlIGZhYnMgIChkb3VibGUpICA7
> DQpleHRlcm4gZG91YmxlIGZsb29yICAoZG91YmxlKSAgOw0KZXh0ZXJuIGRv
> dWJsZSBmbW9kICAoZG91YmxlLCBkb3VibGUpICA7DQoNCg0KDQogDQoNCg0K
> ZXh0ZXJuIGRvdWJsZSBlcmYgIChkb3VibGUpICA7DQpleHRlcm4gZG91Ymxl
> IGVyZmMgIChkb3VibGUpICA7DQpleHRlcm4gZG91YmxlIGdhbW1hICAoZG91
> YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBoeXBvdCAgKGRvdWJsZSwgZG91Ymxl
> KSAgOw0KZXh0ZXJuIGludCBpc25hbiAgKGRvdWJsZSkgIDsNCmV4dGVybiBk
> b3VibGUgajAgIChkb3VibGUpICA7DQpleHRlcm4gZG91YmxlIGoxICAoZG91
> YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBqbiAgKGludCwgZG91YmxlKSAgOw0K
> ZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgIChkb3VibGUpICA7DQpleHRlcm4gZG91
> YmxlIHkwICAoZG91YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSB5MSAgKGRvdWJs
> ZSkgIDsNCmV4dGVybiBkb3VibGUgeW4gIChpbnQsIGRvdWJsZSkgIDsNCg0K
> DQoNCiANCg0KDQpleHRlcm4gZG91YmxlIGFjb3NoICAoZG91YmxlKSAgOw0K
> ZXh0ZXJuIGRvdWJsZSBhc2luaCAgKGRvdWJsZSkgIDsNCmV4dGVybiBkb3Vi
> bGUgYXRhbmggIChkb3VibGUpICA7DQpleHRlcm4gZG91YmxlIGNicnQgIChk
> b3VibGUpICA7DQpleHRlcm4gZG91YmxlIGxvZ2IgIChkb3VibGUpICA7DQpl
> eHRlcm4gZG91YmxlIG5leHRhZnRlciAgKGRvdWJsZSwgZG91YmxlKSAgOw0K
> ZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgIChkb3VibGUsIGRvdWJsZSkgIDsN
> CmV4dGVybiBkb3VibGUgc2NhbGIgIChkb3VibGUsIGRvdWJsZSkgIDsNCg0K
> IA0KDQoNCmV4dGVybiBkb3VibGUgZXhwbTEgIChkb3VibGUpICA7DQpleHRl
> cm4gaW50IGlsb2diICAoZG91YmxlKSAgOw0KZXh0ZXJuIGRvdWJsZSBsb2cx
> cCAgKGRvdWJsZSkgIDsNCmV4dGVybiBkb3VibGUgcmludCAgKGRvdWJsZSkg
> IDsNCg0KDQoNCiANCg0KDQoNCg0KDQpleHRlcm4gaW50IG1hdGhlcnIgIChz
> dHJ1Y3QgX19tYXRoX2V4Y2VwdGlvbiAgKikgIDsNCg0KDQoNCg0KIA0KDQoN
> CmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgIChkb3VibGUpICA7DQoNCiAN
> Cg0KDQpleHRlcm4gZG91YmxlIGNvcHlzaWduICAoZG91YmxlLCBkb3VibGUp
> ICA7DQpleHRlcm4gZG91YmxlIHNjYWxibiAgKGRvdWJsZSwgaW50KSAgOw0K
> DQogDQoNCg0KDQoNCg0KDQoNCg0KIA0KDQoNCmV4dGVybiBmbG9hdCBtb2Rm
> ZiAgKGZsb2F0LCBmbG9hdCAqKSAgOw0KDQojIDEgIi9ob21lL3Jvb20xL2ty
> aW9sL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi41LjEv
> ZWdjcy0yLjkwLjEyL2luY2x1ZGUvZmxvYXRpbmdwb2ludC5oIiAxIDMgNA0K
> IA0KIA0KDQogDQogDQogDQoNCg0KDQoNCg0KZXh0ZXJuICJDIiB7DQoNCg0K
> I3ByYWdtYSBpZGVudAkiQCgjKWZsb2F0aW5ncG9pbnQuaAkyLjQgOTQvMDYv
> MDkiDQoNCiANCg0KDQoNCg0KIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQojIDEg
> Ii9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
> bi1zb2xhcmlzMi41LjEvZWdjcy0yLjkwLjEyL2luY2x1ZGUvc3RkaW8uaCIg
> MSAzIDQNCiANCiANCg0KIA0KIA0KIA0KDQogDQoNCg0KDQoNCg0KDQojcHJh
> Z21hIGlkZW50CSJAKCMpc3RkaW8uaAkxLjM5CTk1LzEyLzA0IFNNSSIJDQoN
> CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMyA0
> DQogDQogDQoNCiANCiANCiANCg0KDQoNCg0KI3ByYWdtYSBpZGVudAkiQCgj
> KWZlYXR1cmVfdGVzdHMuaAkxLjcJOTQvMTIvMDYgU01JIg0KDQoNCmV4dGVy
> biAiQyIgew0KDQoNCiANCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCg0K
> DQoNCiMgMTcgIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2xpYi9nY2MtbGli
> L3NwYXJjLXN1bi1zb2xhcmlzMi41LjEvZWdjcy0yLjkwLjEyL2luY2x1ZGUv
> c3RkaW8uaCIgMiAzIDQNCg0KIyAxICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xp
> c3QuaCIgMSAzIDQNCiANCg0KDQoNCg0KDQoNCg0KI3ByYWdtYSBpZGVudAki
> QCgjKXZhX2xpc3QuaAkxLjYJOTYvMDEvMjYgU01JIg0KDQogDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCmV4dGVybiAiQyIgew0KDQoNCiMgNDEgIi91c3IvaW5j
> bHVkZS9zeXMvdmFfbGlzdC5oIiAzIDQNCg0KDQoNCnR5cGVkZWYgdm9pZCAq
> X192YV9saXN0Ow0KDQoNCg0KDQoNCg0KDQp9DQoNCg0KDQojIDE4ICIvaG9t
> ZS9yb29tMS9rcmlvbC9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
> YXJpczIuNS4xL2VnY3MtMi45MC4xMi9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0
> DQoNCg0KDQpleHRlcm4gIkMiIHsNCg0KDQoNCg0KdHlwZWRlZiB1bnNpZ25l
> ZCBpbnQJc2l6ZV90Ow0KDQoNCnR5cGVkZWYgbG9uZwlmcG9zX3Q7DQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiAN
> Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KIyA4MSAi
> L2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
> LXNvbGFyaXMyLjUuMS9lZ2NzLTIuOTAuMTIvaW5jbHVkZS9zdGRpby5oIiAz
> IDQNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QJIA0Kew0KDQoNCg0K
> DQoJaW50CQlfY250OwkgDQoJdW5zaWduZWQgY2hhcgkqX3B0cjsJIA0KDQoJ
> dW5zaWduZWQgY2hhcgkqX2Jhc2U7CSANCgl1bnNpZ25lZCBjaGFyCV9mbGFn
> OwkgDQoJdW5zaWduZWQgY2hhcglfZmlsZTsJIA0KfSBGSUxFOw0KDQoNCmV4
> dGVybiBGSUxFCQlfX2lvYlsyMCBdOw0KDQoNCg0KZXh0ZXJuIEZJTEUJCSpf
> bGFzdGJ1ZjsNCmV4dGVybiB1bnNpZ25lZCBjaGFyCSpfYnVmZW5kdGFiW107
> DQoNCmV4dGVybiB1bnNpZ25lZCBjaGFyCSBfc2lidWZbXSwgX3NvYnVmW107
> DQoNCg0KDQoNCmV4dGVybiBpbnQJcmVtb3ZlKGNvbnN0IGNoYXIgKik7DQpl
> eHRlcm4gaW50CXJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
> DQpleHRlcm4gRklMRQkqdG1wZmlsZSh2b2lkKTsNCmV4dGVybiBjaGFyCSp0
> bXBuYW0oY2hhciAqKTsNCg0KZXh0ZXJuIGNoYXIJKnRtcG5hbV9yKGNoYXIg
> Kik7DQoNCmV4dGVybiBpbnQJZmNsb3NlKEZJTEUgKik7DQpleHRlcm4gaW50
> CWZmbHVzaChGSUxFICopOw0KZXh0ZXJuIEZJTEUJKmZvcGVuKGNvbnN0IGNo
> YXIgKiwgY29uc3QgY2hhciAqKTsNCmV4dGVybiBGSUxFCSpmcmVvcGVuKGNv
> bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOw0KZXh0ZXJuIHZv
> aWQJc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsNCmV4dGVybiBpbnQJc2V0dmJ1
> ZihGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOw0KIA0KZXh0ZXJuIGlu
> dAlmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOw0KIA0KZXh0
> ZXJuIGludAlmc2NhbmYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7DQog
> DQpleHRlcm4gaW50CXByaW50Zihjb25zdCBjaGFyICosIC4uLik7DQogDQpl
> eHRlcm4gaW50CXNjYW5mKGNvbnN0IGNoYXIgKiwgLi4uKTsNCiANCmV4dGVy
> biBpbnQJc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNCiAN
> CmV4dGVybiBpbnQJc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
> LCAuLi4pOw0KZXh0ZXJuIGludAl2ZnByaW50ZihGSUxFICosIGNvbnN0IGNo
> YXIgKiwgX192YV9saXN0KTsNCmV4dGVybiBpbnQJdnByaW50Zihjb25zdCBj
> aGFyICosIF9fdmFfbGlzdCk7DQpleHRlcm4gaW50CXZzcHJpbnRmKGNoYXIg
> KiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOw0KZXh0ZXJuIGludAlmZ2V0
> YyhGSUxFICopOw0KZXh0ZXJuIGNoYXIJKmZnZXRzKGNoYXIgKiwgaW50LCBG
> SUxFICopOw0KZXh0ZXJuIGludAlmcHV0YyhpbnQsIEZJTEUgKik7DQpleHRl
> cm4gaW50CWZwdXRzKGNvbnN0IGNoYXIgKiwgRklMRSAqKTsNCmV4dGVybiBp
> bnQJZ2V0YyhGSUxFICopOw0KZXh0ZXJuIGludAlnZXRjaGFyKHZvaWQpOw0K
> ZXh0ZXJuIGNoYXIJKmdldHMoY2hhciAqKTsNCmV4dGVybiBpbnQJcHV0Yyhp
> bnQsIEZJTEUgKik7DQpleHRlcm4gaW50CXB1dGNoYXIoaW50KTsNCmV4dGVy
> biBpbnQJcHV0cyhjb25zdCBjaGFyICopOw0KZXh0ZXJuIGludAl1bmdldGMo
> aW50LCBGSUxFICopOw0KZXh0ZXJuIHNpemVfdAlmcmVhZCh2b2lkICosIHNp
> emVfdCwgc2l6ZV90LCBGSUxFICopOw0KZXh0ZXJuIHNpemVfdAlmd3JpdGUo
> Y29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAqKTsNCmV4dGVy
> biBpbnQJZmdldHBvcyhGSUxFICosIGZwb3NfdCAqKTsNCmV4dGVybiBpbnQJ
> ZnNlZWsoRklMRSAqLCBsb25nLCBpbnQpOw0KZXh0ZXJuIGludAlmc2V0cG9z
> KEZJTEUgKiwgY29uc3QgZnBvc190ICopOw0KZXh0ZXJuIGxvbmcJZnRlbGwo
> RklMRSAqKTsNCmV4dGVybiB2b2lkCXJld2luZChGSUxFICopOw0KZXh0ZXJu
> IHZvaWQJY2xlYXJlcnIoRklMRSAqKTsNCmV4dGVybiBpbnQJZmVvZihGSUxF
> ICopOw0KZXh0ZXJuIGludAlmZXJyb3IoRklMRSAqKTsNCmV4dGVybiB2b2lk
> CXBlcnJvcihjb25zdCBjaGFyICopOw0KDQpleHRlcm4gaW50CV9fZmlsYnVm
> KEZJTEUgKik7DQpleHRlcm4gaW50CV9fZmxzYnVmKGludCwgRklMRSAqKTsN
> Cg0KIA0KDQoNCg0KDQoNCmV4dGVybiBGSUxFCSpmZG9wZW4oaW50LCBjb25z
> dCBjaGFyICopOw0KZXh0ZXJuIGNoYXIJKmN0ZXJtaWQoY2hhciAqKTsNCmV4
> dGVybiBpbnQJZmlsZW5vKEZJTEUgKik7DQoNCg0KDQogDQoNCg0KDQoNCmV4
> dGVybiB2b2lkCWZsb2NrZmlsZShGSUxFICopOw0KZXh0ZXJuIGludAlmdHJ5
> bG9ja2ZpbGUoRklMRSAqKTsNCmV4dGVybiB2b2lkCWZ1bmxvY2tmaWxlKEZJ
> TEUgKik7DQpleHRlcm4gaW50CWdldGNfdW5sb2NrZWQoRklMRSAqKTsNCmV4
> dGVybiBpbnQJZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsNCmV4dGVybiBpbnQJ
> cHV0Y191bmxvY2tlZChpbnQsIEZJTEUgKik7DQpleHRlcm4gaW50CXB1dGNo
> YXJfdW5sb2NrZWQoaW50KTsNCg0KDQoNCiANCg0KDQoNCg0KZXh0ZXJuIEZJ
> TEUJKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCmV4dGVy
> biBjaGFyCSpjdXNlcmlkKGNoYXIgKik7DQpleHRlcm4gY2hhcgkqdGVtcG5h
> bShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQpleHRlcm4gaW50CWdl
> dG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7DQoNCmV4
> dGVybiBpbnQJZ2V0c3Vib3B0KGNoYXIgKiosIGNoYXIgKmNvbnN0ICosIGNo
> YXIgKiopOw0KDQpleHRlcm4gY2hhcgkqb3B0YXJnOw0KZXh0ZXJuIGludAlv
> cHRpbmQsIG9wdGVyciwgb3B0b3B0Ow0KZXh0ZXJuIGludAlnZXR3KEZJTEUg
> Kik7DQpleHRlcm4gaW50CXB1dHcoaW50LCBGSUxFICopOw0KZXh0ZXJuIGlu
> dAlwY2xvc2UoRklMRSAqKTsNCg0KDQoNCiMgMzQzICIvaG9tZS9yb29tMS9r
> cmlvbC9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNS4x
> L2VnY3MtMi45MC4xMi9pbmNsdWRlL3N0ZGlvLmgiIDMgNA0KDQoNCiANCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQp9DQoNCg0KDQojIDMzICIvaG9tZS9yb29t
> MS9rcmlvbC9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
> NS4xL2VnY3MtMi45MC4xMi9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMiAz
> IDQNCg0KDQojIDEgIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2xpYi9nY2Mt
> bGliL3NwYXJjLXN1bi1zb2xhcmlzMi41LjEvZWdjcy0yLjkwLjEyL2luY2x1
> ZGUvc3lzL2llZWVmcC5oIiAxIDMgNA0KIA0KDQoNCg0KDQoNCg0KI3ByYWdt
> YSBpZGVudAkiQCgjKWllZWVmcC5oCTIuNyA5NC8xMS8wOSINCg0KDQpleHRl
> cm4gIkMiIHsNCg0KDQogDQoNCg0KDQplbnVtIGZwX2RpcmVjdGlvbl90eXBl
> IHsJIA0KCWZwX25lYXJlc3QJPSAwLA0KCWZwX3RvemVybwk9IDEsDQoJZnBf
> cG9zaXRpdmUJPSAyLA0KCWZwX25lZ2F0aXZlCT0gMw0KfTsNCg0KZW51bSBm
> cF9wcmVjaXNpb25fdHlwZSB7CSANCglmcF9leHRlbmRlZAk9IDAsDQoJZnBf
> c2luZ2xlCT0gMSwNCglmcF9kb3VibGUJPSAyLA0KCWZwX3ByZWNpc2lvbl8z
> CT0gMw0KfTsNCg0KZW51bSBmcF9leGNlcHRpb25fdHlwZSB7CSANCglmcF9p
> bmV4YWN0CT0gMCwNCglmcF9kaXZpc2lvbgk9IDEsDQoJZnBfdW5kZXJmbG93
> CT0gMiwNCglmcF9vdmVyZmxvdwk9IDMsDQoJZnBfaW52YWxpZAk9IDQNCn07
> DQoNCmVudW0gZnBfdHJhcF9lbmFibGVfdHlwZSB7CSANCglmcF90cmFwX2lu
> ZXhhY3QJPSAwLA0KCWZwX3RyYXBfZGl2aXNpb24JPSAxLA0KCWZwX3RyYXBf
> dW5kZXJmbG93CT0gMiwNCglmcF90cmFwX292ZXJmbG93CT0gMywNCglmcF90
> cmFwX2ludmFsaWQJPSA0DQp9Ow0KDQoNCiMgODEgIi9ob21lL3Jvb20xL2ty
> aW9sL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi41LjEv
> ZWdjcy0yLjkwLjEyL2luY2x1ZGUvc3lzL2llZWVmcC5oIiAzIDQNCg0KDQoj
> IDEyMiAiL2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvbGliL2djYy1saWIvc3Bh
> cmMtc3VuLXNvbGFyaXMyLjUuMS9lZ2NzLTIuOTAuMTIvaW5jbHVkZS9zeXMv
> aWVlZWZwLmgiIDMgNA0KDQoNCmVudW0gZnBfY2xhc3NfdHlwZSB7CQkgDQoJ
> ZnBfemVybwkJPSAwLA0KCWZwX3N1Ym5vcm1hbAk9IDEsDQoJZnBfbm9ybWFs
> CT0gMiwNCglmcF9pbmZpbml0eSAgIAk9IDMsDQoJZnBfcXVpZXQJPSA0LA0K
> CWZwX3NpZ25hbGluZwk9IDUNCn07DQoNCg0KfQ0KDQoNCg0KIyAzNSAiL2hv
> bWUvcm9vbTEva3Jpb2wvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
> bGFyaXMyLjUuMS9lZ2NzLTIuOTAuMTIvaW5jbHVkZS9mbG9hdGluZ3BvaW50
> LmgiIDIgMyA0DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdHlwZWRl
> ZiBpbnQgc2lnZnBlX2NvZGVfdHlwZTsJIA0KDQp0eXBlZGVmIHZvaWQgKCpz
> aWdmcGVfaGFuZGxlcl90eXBlKSgpOwkgDQoNCg0KDQoNCg0KZXh0ZXJuIHNp
> Z2ZwZV9oYW5kbGVyX3R5cGUgc2lnZnBlICAoc2lnZnBlX2NvZGVfdHlwZSwg
> c2lnZnBlX2hhbmRsZXJfdHlwZSkgIDsNCg0KIA0KDQoNCnR5cGVkZWYgZmxv
> YXQgc2luZ2xlOwkJCQ0KDQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBleHRlbmRl
> ZFszXTsNCg0KDQp0eXBlZGVmIGxvbmcgZG91YmxlIHF1YWRydXBsZTsJIA0K
> DQp0eXBlZGVmIHVuc2lnbmVkIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlOw0K
> CQkJCSANCg0KDQoNCiANCg0KDQoNCg0KdHlwZWRlZiBjaGFyIGRlY2ltYWxf
> c3RyaW5nWzUxMiBdOwkNCgkJCQkgDQoNCnR5cGVkZWYgc3RydWN0IHsNCgll
> bnVtIGZwX2NsYXNzX3R5cGUgZnBjbGFzczsNCglpbnQJc2lnbjsNCglpbnQJ
> ZXhwb25lbnQ7DQoJZGVjaW1hbF9zdHJpbmcgZHM7CSANCg0KDQoJaW50CW1v
> cmU7CQkgDQoNCg0KCWludCAJbmRpZ2l0czsJIA0KDQoNCn0gZGVjaW1hbF9y
> ZWNvcmQ7DQoNCmVudW0gZGVjaW1hbF9mb3JtIHsNCglmaXhlZF9mb3JtLAkJ
> IA0KDQoNCglmbG9hdGluZ19mb3JtCQkgDQoNCn07DQoNCnR5cGVkZWYgc3Ry
> dWN0IHsNCgllbnVtIGZwX2RpcmVjdGlvbl90eXBlIHJkOwkNCgkJCQkgDQoJ
> ZW51bSBkZWNpbWFsX2Zvcm0gZGY7CSANCg0KCWludCBuZGlnaXRzOwkJIA0K
> fSBkZWNpbWFsX21vZGU7DQoNCmVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSB7
> CSANCglpbnZhbGlkX2Zvcm0sCQkgDQoJd2hpdGVzcGFjZV9mb3JtLAkgDQoJ
> Zml4ZWRfaW50X2Zvcm0sCQkgDQoJZml4ZWRfaW50ZG90X2Zvcm0sCSANCglm
> aXhlZF9kb3RmcmFjX2Zvcm0sCSANCglmaXhlZF9pbnRkb3RmcmFjX2Zvcm0s
> CSANCglmbG9hdGluZ19pbnRfZm9ybSwJIAkNCglmbG9hdGluZ19pbnRkb3Rf
> Zm9ybSwJIA0KCWZsb2F0aW5nX2RvdGZyYWNfZm9ybSwJIA0KCWZsb2F0aW5n
> X2ludGRvdGZyYWNfZm9ybSwgDQoJaW5mX2Zvcm0sCQkgDQoJaW5maW5pdHlf
> Zm9ybSwJCSANCgluYW5fZm9ybSwJCSANCgluYW5zdHJpbmdfZm9ybQkJIA0K
> fTsNCg0KZXh0ZXJuIHZvaWQgc2luZ2xlX3RvX2RlY2ltYWwgIChzaW5nbGUg
> KiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosDQoJCQkJZnBf
> ZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKikgIDsNCmV4dGVybiB2b2lkIGRvdWJs
> ZV90b19kZWNpbWFsICAoZG91YmxlICosIGRlY2ltYWxfbW9kZSAqLCBkZWNp
> bWFsX3JlY29yZCAqLA0KCQkJCWZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICop
> ICA7DQpleHRlcm4gdm9pZCBleHRlbmRlZF90b19kZWNpbWFsICAoZXh0ZW5k
> ZWQgKiwgZGVjaW1hbF9tb2RlICosDQoJCQkJZGVjaW1hbF9yZWNvcmQgKiwg
> ZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKikgIDsNCmV4dGVybiB2b2lkIHF1
> YWRydXBsZV90b19kZWNpbWFsICAocXVhZHJ1cGxlICosIGRlY2ltYWxfbW9k
> ZSAqLA0KCQkJCWRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVs
> ZF90eXBlICopICA7DQoNCmV4dGVybiB2b2lkIGRlY2ltYWxfdG9fc2luZ2xl
> ICAoc2luZ2xlICosIGRlY2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAq
> LA0KCQkJCWZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopICA7DQpleHRlcm4g
> dm9pZCBkZWNpbWFsX3RvX2RvdWJsZSAgKGRvdWJsZSAqLCBkZWNpbWFsX21v
> ZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwNCgkJCQlmcF9leGNlcHRpb25fZmll
> bGRfdHlwZSAqKSAgOw0KZXh0ZXJuIHZvaWQgZGVjaW1hbF90b19leHRlbmRl
> ZCAgKGV4dGVuZGVkICosIGRlY2ltYWxfbW9kZSAqLA0KCQkJCWRlY2ltYWxf
> cmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVsZF90eXBlICopICA7DQpleHRl
> cm4gdm9pZCBkZWNpbWFsX3RvX3F1YWRydXBsZSAgKHF1YWRydXBsZSAqLCBk
> ZWNpbWFsX21vZGUgKiwNCgkJCQlkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNl
> cHRpb25fZmllbGRfdHlwZSAqKSAgOw0KDQpleHRlcm4gdm9pZCBzdHJpbmdf
> dG9fZGVjaW1hbCAgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29y
> ZCAqLA0KCQkJCWVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSAqLCBjaGFyICoq
> KSAgOw0KZXh0ZXJuIHZvaWQgZnVuY190b19kZWNpbWFsICAoY2hhciAqKiwg
> aW50LCBpbnQsIGRlY2ltYWxfcmVjb3JkICosDQoJCQkJZW51bSBkZWNpbWFs
> X3N0cmluZ19mb3JtICosIGNoYXIgKiosDQoJCQkJaW50ICgqKSh2b2lkKSwg
> aW50ICosIGludCAoKikoaW50KSkgIDsNCmV4dGVybiB2b2lkIGZpbGVfdG9f
> ZGVjaW1hbCAgKGNoYXIgKiosIGludCwgaW50LCBkZWNpbWFsX3JlY29yZCAq
> LA0KCQkJCWVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSAqLCBjaGFyICoqLA0K
> CQkJCUZJTEUgKiwgaW50ICopICA7DQoNCmV4dGVybiBjaGFyICpzZWNvbnZl
> cnQgIChzaW5nbGUgKiwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKikgIDsN
> CmV4dGVybiBjaGFyICpzZmNvbnZlcnQgIChzaW5nbGUgKiwgaW50LCBpbnQg
> KiwgaW50ICosIGNoYXIgKikgIDsNCmV4dGVybiBjaGFyICpzZ2NvbnZlcnQg
> IChzaW5nbGUgKiwgaW50LCBpbnQsIGNoYXIgKikgIDsNCmV4dGVybiBjaGFy
> ICplY29udmVydCAgKGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIg
> KikgIDsNCmV4dGVybiBjaGFyICpmY29udmVydCAgKGRvdWJsZSwgaW50LCBp
> bnQgKiwgaW50ICosIGNoYXIgKikgIDsNCmV4dGVybiBjaGFyICpnY29udmVy
> dCAgKGRvdWJsZSwgaW50LCBpbnQsIGNoYXIgKikgIDsNCmV4dGVybiBjaGFy
> ICpxZWNvbnZlcnQgIChxdWFkcnVwbGUgKiwgaW50LCBpbnQgKiwgaW50ICos
> IGNoYXIgKikgIDsNCmV4dGVybiBjaGFyICpxZmNvbnZlcnQgIChxdWFkcnVw
> bGUgKiwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKikgIDsNCmV4dGVybiBj
> aGFyICpxZ2NvbnZlcnQgIChxdWFkcnVwbGUgKiwgaW50LCBpbnQsIGNoYXIg
> KikgIDsNCg0KZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3VibGUsIGludCwgaW50
> ICosIGludCAqKSAgOw0KZXh0ZXJuIGNoYXIgKmZjdnQgIChkb3VibGUsIGlu
> dCwgaW50ICosIGludCAqKSAgOw0KZXh0ZXJuIGNoYXIgKmdjdnQgIChkb3Vi
> bGUsIGludCwgY2hhciAqKSAgOw0KDQogDQoNCg0KDQpleHRlcm4gZG91Ymxl
> IGF0b2YgIChjb25zdCBjaGFyICopICA7DQpleHRlcm4gZG91YmxlIHN0cnRv
> ZCAgKGNvbnN0IGNoYXIgKiwgY2hhciAqKikgIDsNCg0KDQp9DQoNCg0KDQoj
> IDIzMCAiL2hvbWUvcm9vbTEva3Jpb2wvbG9jYWwvbGliL2djYy1saWIvc3Bh
> cmMtc3VuLXNvbGFyaXMyLjUuMS9lZ2NzLTIuOTAuMTIvaW5jbHVkZS9tYXRo
> LmgiIDIgMyA0DQoNCg0KDQoNCg0KfQ0KDQoNCg0KIyA3ICIvaG9tZS9yb29t
> MS9rcmlvbC9sb2NhbC9pbmNsdWRlL2crKy9jbWF0aCIgMiAzDQoNCg0KDQoj
> cHJhZ21hIGludGVyZmFjZSAiY21hdGgiDQoNCg0KZXh0ZXJuICJDKysiIHsN
> CiMgMzggIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2luY2x1ZGUvZysrL2Nt
> YXRoIiAzDQoNCg0KaW5saW5lIGZsb2F0ICBhYnMgKGZsb2F0ICB4KSB7IHJl
> dHVybiBmYWJzICh4KTsgfQ0KDQppbmxpbmUgZG91YmxlIGFicyAoZG91Ymxl
> IHgpIHsgcmV0dXJuIGZhYnMgKHgpOyB9DQoNCg0KIyA3MSAiL2hvbWUvcm9v
> bTEva3Jpb2wvbG9jYWwvaW5jbHVkZS9nKysvY21hdGgiIDMNCg0KaW5saW5l
> IGxvbmcgZG91YmxlIGFicyAobG9uZyBkb3VibGUgeCkgeyByZXR1cm4gZmFi
> cyAoeCk7IH0NCg0KfSAgDQoNCg0KIyAxMjQgIi9ob21lL3Jvb20xL2tyaW9s
> L3dvcmsvUHJvamVjdC9pbmNsdWRlL1ZlY3RvcjNELkgiIDIgMw0KDQoNCiAg
> ICANCiAgICANCiAgICANCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGlu
> ZQ0KVFZlY3RvcjNEPG51bVQ+OjpUVmVjdG9yM0QoIHZvaWQgKSB7DQp9DQoN
> CnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUNClRWZWN0b3IzRDxudW1U
> Pjo6VFZlY3RvcjNEKCBudW1UIGRUICk6DQogIGRYXyhkVCksIGRZXyhkVCks
> IGRaXyhkVCkgew0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5l
> DQpUVmVjdG9yM0Q8bnVtVD46OlRWZWN0b3IzRCggbnVtVCBkWCwgbnVtVCBk
> WSwgbnVtVCBkWiApOg0KICBkWF8oZFgpLCBkWV8oZFkpLCBkWl8oZFopIHsN
> Cn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZQ0KVFZlY3RvcjNE
> PG51bVQ+OjpUVmVjdG9yM0QoIGNvbnN0IG51bVQqIHBkWCApOg0KICBkWF8o
> IHBkWFswXSApLCBkWV8oIHBkWFsxXSApLCBkWl8oIHBkWFsyXSApIHsNCn0N
> Cg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZQ0KVFZlY3RvcjNEPG51
> bVQ+OjpUVmVjdG9yM0QoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgcmhzICk6
> DQogIGRYXyggcmhzLmRYXyApLA0KICBkWV8oIHJocy5kWV8gKSwNCiAgZFpf
> KCByaHMuZFpfICkgew0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5s
> aW5lDQpUVmVjdG9yM0Q8bnVtVD46On5UVmVjdG9yM0QoKSB7DQp9DQoNCiAg
> ICANCiAgICANCiAgICANCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGlu
> ZSBudW1UJg0KVFZlY3RvcjNEPG51bVQ+OjpvcGVyYXRvcltdKCBpbnQgaUlk
> eCApIHsNCiAgcmV0dXJuICggKiggKCZkWF8pICsgaUlkeCApICk7ICAgDQp9
> DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51
> bVQ+Jg0KVFZlY3RvcjNEPG51bVQ+OjpvcGVyYXRvciA9ICggY29uc3QgVFZl
> Y3RvcjNEPG51bVQ+JiB0aGVWZWN0b3IgKSB7DQogIA0KICBkWF8gPSB0aGVW
> ZWN0b3IuZFhfOw0KICBkWV8gPSB0aGVWZWN0b3IuZFlfOw0KICBkWl8gPSB0
> aGVWZWN0b3IuZFpfOw0KICANCiAgcmV0dXJuICgqdGhpcyk7DQp9DQoNCnRl
> bXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+Jg0K
> VFZlY3RvcjNEPG51bVQ+OjpvcGVyYXRvciA9ICggbnVtVCBkVCApIHsNCiAg
> DQogIGRYXyA9IGRUOw0KICBkWV8gPSBkVDsNCiAgZFpfID0gZFQ7DQogIA0K
> ICByZXR1cm4gKCp0aGlzKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+
> IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4NClRWZWN0b3IzRDxudW1UPjo6b3Bl
> cmF0b3IgLSAoIHZvaWQgKSB7DQogIHJldHVybiBUVmVjdG9yM0Q8bnVtVD4o
> IC1kWF8sIC1kWV8sIC1kWl8gKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51
> bVQ+IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4mDQpUVmVjdG9yM0Q8bnVtVD46
> Om9wZXJhdG9yICs9ICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiByaHMgKSB7
> DQogIA0KICBkWF8gKz0gcmhzLmRYXzsNCiAgZFlfICs9IHJocy5kWV87DQog
> IGRaXyArPSByaHMuZFpfOw0KICANCiAgcmV0dXJuICgqdGhpcyk7DQp9DQoN
> CnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+
> Jg0KVFZlY3RvcjNEPG51bVQ+OjpvcGVyYXRvciArPSAoIG51bVQgZFQgKSB7
> DQogIA0KICBkWF8gKz0gZFQ7DQogIGRZXyArPSBkVDsNCiAgZFpfICs9IGRU
> Ow0KICANCiAgcmV0dXJuICgqdGhpcyk7DQp9DQoNCnRlbXBsYXRlIDxjbGFz
> cyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+Jg0KVFZlY3RvcjNEPG51
> bVQ+OjpvcGVyYXRvciAtPSAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgcmhz
> ICkgew0KICANCiAgZFhfIC09IHJocy5kWF87DQogIGRZXyAtPSByaHMuZFlf
> Ow0KICBkWl8gLT0gcmhzLmRaXzsNCiAgDQogIHJldHVybiAoKnRoaXMpOw0K
> fQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIFRWZWN0b3IzRDxu
> dW1UPiYNClRWZWN0b3IzRDxudW1UPjo6b3BlcmF0b3IgLT0gKCBudW1UIGRU
> ICkgew0KICANCiAgZFhfIC09IGRUOw0KICBkWV8gLT0gZFQ7DQogIGRaXyAt
> PSBkVDsNCiAgDQogIHJldHVybiAoKnRoaXMpOw0KfQ0KDQp0ZW1wbGF0ZSA8
> Y2xhc3MgbnVtVD4gaW5saW5lIFRWZWN0b3IzRDxudW1UPiYNClRWZWN0b3Iz
> RDxudW1UPjo6b3BlcmF0b3IgKj0gKCBudW1UIGRUICkgew0KICANCiAgZFhf
> ICo9IGRUOw0KICBkWV8gKj0gZFQ7DQogIGRaXyAqPSBkVDsNCiAgDQogIHJl
> dHVybiAoKnRoaXMpOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5s
> aW5lIFRWZWN0b3IzRDxudW1UPiYNClRWZWN0b3IzRDxudW1UPjo6b3BlcmF0
> b3IgLz0gKCBudW1UIGRUICkgew0KICBkWF8gLz0gZFQ7DQogIGRZXyAvPSBk
> VDsNCiAgZFpfIC89IGRUOw0KICByZXR1cm4gKCp0aGlzKTsNCn0NCg0KdGVt
> cGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSB2b2lkDQpUVmVjdG9yM0Q8bnVt
> VD46Om5vcm1hbGl6ZSggdm9pZCApIHsNCiAgbnVtVCBkTiAgPSA6OnNxcnQo
> IGRYXypkWF8gKyBkWV8qZFlfICsgZFpfKmRaXyApOw0KICBkWF8gICAgIC89
> IGROOw0KICBkWV8gICAgIC89IGROOw0KICBkWl8gICAgIC89IGROOw0KfQ0K
> DQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIHZvaWQNClRWZWN0b3Iz
> RDxudW1UPjo6c2V0WCggbnVtVCBkWCApIHsNCiAgZFhfID0gZFg7DQp9DQoN
> CnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgdm9pZA0KVFZlY3RvcjNE
> PG51bVQ+OjpzZXRZKCBudW1UIGRZICkgew0KICBkWV8gPSBkWTsNCn0NCg0K
> dGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSB2b2lkDQpUVmVjdG9yM0Q8
> bnVtVD46OnNldFooIG51bVQgZFogKSB7DQogIGRaXyA9IGRaOw0KfQ0KDQog
> ICAgDQogICAgDQogICAgDQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxp
> bmUgbnVtVA0KVFZlY3RvcjNEPG51bVQ+OjpvcGVyYXRvcltdKCBpbnQgaUlk
> eCApIGNvbnN0IHsNCiAgcmV0dXJuICggKiggJihkWF8pICsgaUlkeCApICk7
> ICAgDQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgbnVtVA0K
> VFZlY3RvcjNEPG51bVQ+OjpkWCggdm9pZCApIGNvbnN0IHsNCiAgcmV0dXJu
> IGRYXzsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSBudW1U
> DQpUVmVjdG9yM0Q8bnVtVD46OmRZKCB2b2lkICkgY29uc3Qgew0KICByZXR1
> cm4gZFlfOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIG51
> bVQNClRWZWN0b3IzRDxudW1UPjo6ZFooIHZvaWQgKSBjb25zdCB7DQogIHJl
> dHVybiBkWl87DQp9DQoNCiAgICANCiAgICANCiAgICANCg0KdGVtcGxhdGUg
> PGNsYXNzIG51bVQ+IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4NCm9wZXJhdG9y
> ICsgKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIGxocywgY29uc3QgVFZlY3Rv
> cjNEPG51bVQ+JiByaHMgKSB7DQogIHJldHVybiBUVmVjdG9yM0Q8bnVtVD4o
> IGxocy5kWF8gKyByaHMuZFhfLA0KICAgICAgICAgICAgICAgICAgICAgICAg
> ICBsaHMuZFlfICsgcmhzLmRZXywNCiAgICAgICAgICAgICAgICAgICAgICAg
> ICAgbGhzLmRaXyArIHJocy5kWl8gKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
> IG51bVQ+IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4gDQpvcGVyYXRvciArICgg
> Y29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIG51bVQgZFggKSB7DQogIHJl
> dHVybiBUVmVjdG9yM0Q8bnVtVD4oIGxocy5kWF8gKyBkWCwNCiAgICAgICAg
> ICAgICAgICAgICAgICAgICAgbGhzLmRZXyArIGRYLA0KICAgICAgICAgICAg
> ICAgICAgICAgICAgICBsaHMuZFpfICsgZFggKTsNCn0NCg0KdGVtcGxhdGUg
> PGNsYXNzIG51bVQ+IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4gDQpvcGVyYXRv
> ciArICggbnVtVCBkWCwgY29uc3QgVFZlY3RvcjNEPG51bVQ+JiByaHMgKSB7
> DQogIHJldHVybiBUVmVjdG9yM0Q8bnVtVD4oIHJocy5kWF8gKyBkWCwNCiAg
> ICAgICAgICAgICAgICAgICAgICAgICAgcmhzLmRZXyArIGRYLA0KICAgICAg
> ICAgICAgICAgICAgICAgICAgICByaHMuZFpfICsgZFggKTsNCn0NCg0KdGVt
> cGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSBUVmVjdG9yM0Q8bnVtVD4gDQpv
> cGVyYXRvciAtICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIGNvbnN0
> IFRWZWN0b3IzRDxudW1UPiYgcmhzICkgew0KICByZXR1cm4gVFZlY3RvcjNE
> PG51bVQ+KCBsaHMuZFhfIC0gcmhzLmRYXywNCiAgICAgICAgICAgICAgICAg
> ICAgICAgICAgbGhzLmRZXyAtIHJocy5kWV8sDQogICAgICAgICAgICAgICAg
> ICAgICAgICAgIGxocy5kWl8gLSByaHMuZFpfICk7DQp9DQoNCnRlbXBsYXRl
> IDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+IA0Kb3BlcmF0
> b3IgLSAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgbGhzLCBudW1UIGRYICkg
> ew0KICByZXR1cm4gVFZlY3RvcjNEPG51bVQ+KCBsaHMuZFhfIC0gZFgsDQog
> ICAgICAgICAgICAgICAgICAgICAgICAgIGxocy5kWV8gLSBkWCwNCiAgICAg
> ICAgICAgICAgICAgICAgICAgICAgbGhzLmRaXyAtIGRYICk7DQp9DQoNCnRl
> bXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+IA0K
> b3BlcmF0b3IgLSAoIG51bVQgZFgsIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYg
> cmhzICkgew0KICByZXR1cm4gVFZlY3RvcjNEPG51bVQ+KCAtcmhzLmRYXyAr
> IGRYLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAtcmhzLmRZXyArIGRY
> LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAtcmhzLmRaXyArIGRYICk7
> DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNE
> PG51bVQ+IA0Kb3BlcmF0b3IgKiAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYg
> bGhzICwgbnVtVCBkWCApIHsNCiAgcmV0dXJuIFRWZWN0b3IzRDxudW1UPigg
> bGhzLmRYXyAqIGRYLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBsaHMu
> ZFlfICogZFgsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxocy5kWl8g
> KiBkWCApOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIFRW
> ZWN0b3IzRDxudW1UPiANCm9wZXJhdG9yICogKCBudW1UIGRYLCBjb25zdCBU
> VmVjdG9yM0Q8bnVtVD4mIHJocyApIHsNCiAgcmV0dXJuIFRWZWN0b3IzRDxu
> dW1UPiggcmhzLmRYXyAqIGRYLA0KICAgICAgICAgICAgICAgICAgICAgICAg
> ICByaHMuZFlfICogZFgsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHJo
> cy5kWl8gKiBkWCApOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5s
> aW5lIG51bVQNCm9wZXJhdG9yICogKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4m
> IGxocywgY29uc3QgVFZlY3RvcjNEPG51bVQ+JiByaHMgKSB7ICAgDQogIHJl
> dHVybiAoIGxocy5kWF8gKiByaHMuZFhfICsgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgICANCiAgICAgICAgICAgbGhzLmRZXyAqIHJocy5kWV8gKw0K
> ICAgICAgICAgICBsaHMuZFpfICogcmhzLmRaXyAgICk7DQp9DQoNCnRlbXBs
> YXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+IA0Kb3Bl
> cmF0b3IgLyAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgbGhzLCBudW1UIGRY
> ICkgew0KICByZXR1cm4gVFZlY3RvcjNEPG51bVQ+KCBsaHMuZFhfIC8gZFgs
> DQogICAgICAgICAgICAgICAgICAgICAgICAgIGxocy5kWV8gLyBkWCwNCiAg
> ICAgICAgICAgICAgICAgICAgICAgICAgbGhzLmRaXyAvIGRYICk7DQp9DQoN
> CnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgVFZlY3RvcjNEPG51bVQ+
> DQpvcGVyYXRvciBeICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIGNv
> bnN0IFRWZWN0b3IzRDxudW1UPiYgcmhzICkgeyAgDQogIHJldHVybiBUVmVj
> dG9yM0Q8bnVtVD4oIGxocy5kWV8gKiByaHMuZFpfIC0gbGhzLmRaXyAqIHJo
> cy5kWV8sDQogICAgICAgICAgICAgICAgICAgICAgICAgIGxocy5kWl8gKiBy
> aHMuZFhfIC0gbGhzLmRYXyAqIHJocy5kWl8sDQogICAgICAgICAgICAgICAg
> ICAgICAgICAgIGxocy5kWF8gKiByaHMuZFlfIC0gbGhzLmRZXyAqIHJocy5k
> WF8gICk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgYm9v
> bF90IA0Kb3BlcmF0b3IgIT0gKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIGxl
> ZnQsDQogICAgICAgICAgICAgIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgcmln
> aHQgKSB7DQogIHJldHVybiAoIChsZWZ0LmRYXyAhPSByaWdodC5kWF8pIHx8
> DQogICAgICAgICAgIChsZWZ0LmRZXyAhPSByaWdodC5kWV8pIHx8DQogICAg
> ICAgICAgIChsZWZ0LmRaXyAhPSByaWdodC5kWl8pICAgICk7DQp9DQoNCnRl
> bXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgYm9vbF90DQpvcGVyYXRvciAh
> PSAoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYgbGhzLCBudW1UIHJocyApIHsN
> CiAgcmV0dXJuICggKCBsaHMuZFhfICE9IHJocyApIHx8DQogICAgICAgICAg
> ICggbGhzLmRZXyAhPSByaHMgKSB8fA0KICAgICAgICAgICAoIGxocy5kWl8g
> IT0gcmhzICkgICAgKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlu
> bGluZSBib29sX3QNCm9wZXJhdG9yICE9ICggbnVtVCBsaHMsIGNvbnN0IFRW
> ZWN0b3IzRDxudW1UPiYgcmhzICkgew0KICByZXR1cm4gKCAoIGxocyAhPSBy
> aHMuZFhfICkgfHwNCiAgICAgICAgICAgKCBsaHMgIT0gcmhzLmRZXyApIHx8
> DQogICAgICAgICAgICggbGhzICE9IHJocy5kWl8gKSAgICApOw0KfQ0KDQp0
> ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIGJvb2xfdCANCm9wZXJhdG9y
> ID09ICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIGNvbnN0IFRWZWN0
> b3IzRDxudW1UPiYgcmhzICkgew0KICByZXR1cm4gKCAobGhzLmRYXyA9PSBy
> aHMuZFhfKSAmJg0KICAgICAgICAgICAobGhzLmRZXyA9PSByaHMuZFlfKSAm
> Jg0KICAgICAgICAgICAobGhzLmRaXyA9PSByaHMuZFpfKSAgICApOw0KfQ0K
> DQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIGJvb2xfdCANCm9wZXJh
> dG9yID09ICggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMsIG51bVQgZFgg
> KSB7DQogIHJldHVybiAoIChsaHMuZFhfID09IGRYKSAmJg0KICAgICAgICAg
> ICAobGhzLmRZXyA9PSBkWCkgJiYNCiAgICAgICAgICAgKGxocy5kWl8gPT0g
> ZFgpICAgICk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUg
> Ym9vbF90IA0Kb3BlcmF0b3IgPT0gKCBudW1UIGRYLCBjb25zdCBUVmVjdG9y
> M0Q8bnVtVD4mIHJocyApIHsNCiAgcmV0dXJuICggKHJocy5kWF8gPT0gZFgp
> ICYmDQogICAgICAgICAgIChyaHMuZFlfID09IGRYKSAmJg0KICAgICAgICAg
> ICAocmhzLmRaXyA9PSBkWCkgICAgKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNz
> IG51bVQ+IGlubGluZSBudW1UDQphYnMoIGNvbnN0IFRWZWN0b3IzRDxudW1U
> PiYgbGhzICkgew0KICByZXR1cm4gOjpzcXJ0KCBsaHMuZFhfKmxocy5kWF8g
> KyBsaHMuZFlfKmxocy5kWV8gKyBsaHMuZFpfKmxocy5kWl8gKTsNCn0NCg0K
> dGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSBudW1UDQpub3JtKCBjb25z
> dCBUVmVjdG9yM0Q8bnVtVD4mIGxocyApIHsNCiAgcmV0dXJuICggbGhzLmRY
> XypsaHMuZFhfICsgbGhzLmRZXypsaHMuZFlfICsgbGhzLmRaXypsaHMuZFpf
> ICk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgbnVtVA0K
> YWJzX3RyYW5zKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIGxocyApIHsNCiAg
> cmV0dXJuIDo6c3FydCggbGhzLmRYXypsaHMuZFhfICsgbGhzLmRZXypsaHMu
> ZFlfICk7DQp9DQoNCnRlbXBsYXRlIDxjbGFzcyBudW1UPiBpbmxpbmUgbnVt
> VA0Kbm9ybV90cmFucyggY29uc3QgVFZlY3RvcjNEPG51bVQ+JiBsaHMgKSB7
> DQogIHJldHVybiAoIGxocy5kWF8qbGhzLmRYXyArIGxocy5kWV8qbGhzLmRZ
> XyApOw0KfQ0KDQp0ZW1wbGF0ZSA8Y2xhc3MgbnVtVD4gaW5saW5lIG51bVQN
> CmFuZ2xlKCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIGxocywgY29uc3QgVFZl
> Y3RvcjNEPG51bVQ+JiByaHMgKSB7DQogIHJldHVybiAoIDo6YWNvcyggKCBs
> aHMgKiByaHMgKSAvIDo6c3FydCggbm9ybSggbGhzICkgKiBub3JtKCByaHMg
> KSApICkgKTsNCn0NCg0KdGVtcGxhdGUgPGNsYXNzIG51bVQ+IGlubGluZSBU
> VmVjdG9yM0Q8bnVtVD4NCnVuaXQoIGNvbnN0IFRWZWN0b3IzRDxudW1UPiYg
> bGhzICkgew0KICBudW1UIGROb3JtID0gOjpzcXJ0KCBsaHMuZFhfKmxocy5k
> WF8gKyBsaHMuZFlfKmxocy5kWV8gKyBsaHMuZFpfKmxocy5kWl8gKTsNCiAg
> cmV0dXJuIFRWZWN0b3IzRDxudW1UPiggbGhzLmRYXyAvIGROb3JtLA0KICAg
> ICAgICAgICAgICAgICAgICAgICAgICBsaHMuZFlfIC8gZE5vcm0sDQogICAg
> ICAgICAgICAgICAgICAgICAgICAgIGxocy5kWl8gLyBkTm9ybSApOw0KfQ0K
> DQoNCiMgMSAiL2hvbWUvcm9vbTEva3Jpb2wvd29yay9Qcm9qZWN0L2luY2x1
> ZGUvVmVjdG9yM0QuaUMiIDEgMw0KIA0KDQoNCg0KICAgIA0KICAgIA0KICAg
> IA0KDQoNCiMgMSAiL2hvbWUvcm9vbTEva3Jpb2wvd29yay9Qcm9qZWN0L2lu
> Y2x1ZGUvZm9ybWF0LkgiIDEgMw0KIA0KDQoNCg0KDQoNCiMgMSAiL2hvbWUv
> cm9vbTEva3Jpb2wvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
> aXMyLjUuMS9lZ2NzLTIuOTAuMTIvaW5jbHVkZS92YWx1ZXMuaCIgMSAzIDQN
> CiANCiANCg0KIA0KIA0KIA0KDQoNCg0KDQojcHJhZ21hIGlkZW50CSJAKCMp
> dmFsdWVzLmgJMS4xMwk5NC8wNy8yOSBTTUkiCQ0KDQoNCmV4dGVybiAiQyIg
> ew0KDQoNCiANCg0KDQoNCg0KIA0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoN
> Cg0KDQoNCg0KDQoNCg0KIA0KDQoNCg0KDQogDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCiANCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN
> Cg0KIyAxMjQgIi9ob21lL3Jvb20xL2tyaW9sL2xvY2FsL2xpYi9nY2MtbGli
> L3NwYXJjLXN1bi1zb2xhcmlzMi41LjEvZWdjcy0yLjkwLjEyL2luY2x1ZGUv
> dmFsdWVzLmgiIDMgNA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
> DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCg0KDQoNCiMg
> NyAiL2hvbWUvcm9vbTEva3Jpb2wvd29yay9Qcm9qZWN0L2luY2x1ZGUvZm9y
> bWF0LkgiIDIgMw0KDQoNCg0KDQoNCg0KY2xhc3MgZm9ybWF0IHsNCiAgICAN
> CiAgcHVibGljOg0KICAgIA0KICAgIGVudW0gew0KICAgICAgICAgICAgZGVm
> ZmxhZ3MgPWlvczo6c2tpcHdzIHwNCiAgICAgICAgICAgICAgICAgICAgICBp
> b3M6OnJpZ2h0IHwNCiAgICAgICAgICAgICAgICAgICAgICBpb3M6OmRlYyB8
> DQogICAgICAgICAgICAgICAgICAgICAgaW9zOjpzaG93cG9pbnQgfA0KICAg
> ICAgICAgICAgICAgICAgICAgIGlvczo6Zml4ZWQsDQogICAgICAgICAgICBk
> ZWZwcmVjICA9NCwNCiAgICAgICAgICAgIGRlZndpZHRoID0wLA0KICAgICAg
> ICAgICAgZGVmZmlsbCAgPScgJw0KICAgIH07DQoNCiAgICAgICAgDQogICAg
> ICAgIA0KICAgICAgICANCg0KICAgIGZvcm1hdCggaW9zJiBpICk7DQogIA0K
> ICAgIGZvcm1hdCggbG9uZ190IGwsIGludF90IHcsIGludF90IHAsIGNoYXJf
> dCBmICk7DQogIA0KICAgIGZvcm1hdCggbG9uZ190IGwsIGNoYXJfdCBmICk7
> DQogIA0KICAgIGZvcm1hdCggbG9uZ190IGwgKTsNCiAgDQogICAgZm9ybWF0
> KCBpbnRfdCB3LCBpbnRfdCBwLCBjaGFyX3QgZiApOw0KDQogICAgZm9ybWF0
> KCBsb25nX3QgbCwgaW50X3QgdywgaW50X3QgcCApOw0KICAgIA0KICAgIGZv
> cm1hdCggY2hhcl90IGwsIGludF90IHcsIGludF90IHAgKTsNCiAgDQogICAg
> Zm9ybWF0KCBpbnRfdCB3LCBpbnRfdCBwICk7DQogIA0KICAgIGZvcm1hdCgg
> Y2hhcl90IGYgKTsNCg0KICAgICAgICANCiAgICAgICAgDQogICAgICAgIA0K
> ICANCiAgICB2b2lkIHNldCggaW9zJiBmICkgY29uc3Q7DQoNCiAgcHJpdmF0
> ZToNCiAgICANCiAgICBlbnVtIHsgeGZpID0gMSwgeHdkID0gMiwgeHByID0g
> NCwgeGZsID0gOCwgeGFsID0gMTUgfTsNCiAgICANCiAgICBsb25nX3QgZmxh
> Z3M7DQogICAgaW50X3QgIHdpZHRoOw0KICAgIGludF90ICBwcmVjaXNpb247
> DQogICAgY2hhcl90IGZpbGw7DQogICAgY2hhcl90IHh4eDsNCn07DQoNCiAN
> CiANCiANCg0KICAgIA0KICAgIA0KICAgIA0KDQppbmxpbmUNCmZvcm1hdDo6
> Zm9ybWF0KCBpb3MmIGkgKToNCiAgZmxhZ3MoICAgICBpLmZsYWdzKCkgKSwN
> CiAgd2lkdGgoICAgICBpLndpZHRoKCkgKSwNCiAgcHJlY2lzaW9uKCBpLnBy
> ZWNpc2lvbigpICksDQogIGZpbGwoICAgICAgaS5maWxsKCkgKSwNCiAgeHh4
> KCB4YWwgKSAgICAgICAgICAgeyAgDQp9DQoNCmlubGluZQ0KZm9ybWF0Ojpm
> b3JtYXQoIGxvbmdfdCBsLCBpbnRfdCB3LCBpbnRfdCBwLCBjaGFyX3QgZiAp
> Og0KICBmbGFncyggbCApLA0KICB3aWR0aCggdyApLA0KICBwcmVjaXNpb24o
> IHAgKSwNCiAgZmlsbCggZiApLA0KICB4eHgoIHhhbCApIHsNCn0NCiAgDQpp
> bmxpbmUNCmZvcm1hdDo6Zm9ybWF0KCBsb25nX3QgbCwgY2hhcl90IGYgKToN
> CiAgZmxhZ3MoIGwgKSwNCiAgd2lkdGgoIGRlZndpZHRoICksDQogIHByZWNp
> c2lvbiggZGVmcHJlYyApLA0KICBmaWxsKCBmICksDQogIHh4eCggeGZsIHwg
> eGZpICkgew0KfQ0KDQppbmxpbmUNCmZvcm1hdDo6Zm9ybWF0KCBsb25nX3Qg
> bCApOg0KICBmbGFncyggbCApLA0KICB3aWR0aCggZGVmd2lkdGggKSwNCiAg
> cHJlY2lzaW9uKCBkZWZwcmVjICksDQogIGZpbGwoIGRlZmZpbGwgKSwNCiAg
> eHh4KCB4ZmwgKSB7DQp9DQogIA0KaW5saW5lDQpmb3JtYXQ6OmZvcm1hdCgg
> aW50X3QgdywgaW50X3QgcCwgY2hhcl90IGYgKToNCiAgZmxhZ3MoIGRlZmZs
> YWdzICksDQogIHdpZHRoKCB3ICksDQogIHByZWNpc2lvbiggcCApLA0KICBm
> aWxsKCBmICksDQogIHh4eCggeGZpIHwgeHdkIHwgeHByICkgew0KfQ0KDQpp
> bmxpbmUNCmZvcm1hdDo6Zm9ybWF0KCBsb25nX3QgbCwgaW50X3QgdywgaW50
> X3QgcCApOg0KICBmbGFncyggbCApLA0KICB3aWR0aCggdyApLA0KICBwcmVj
> aXNpb24oIHAgKSwNCiAgZmlsbCggZGVmZmlsbCApLA0KICB4eHgoIHhmbCB8
> IHh3ZCB8IHhwciApIHsNCn0NCg0KaW5saW5lDQpmb3JtYXQ6OmZvcm1hdCgg
> aW50X3QgdywgaW50X3QgcCApOg0KICBmbGFncyggZGVmZmxhZ3MgKSwNCiAg
> d2lkdGgoIHcgKSwNCiAgcHJlY2lzaW9uKCBwICksDQogIGZpbGwoIGRlZmZp
> bGwgKSwNCiAgeHh4KCB4d2QgfCB4cHIgKSB7DQp9DQogIA0KaW5saW5lDQpm
> b3JtYXQ6OmZvcm1hdCggY2hhcl90IGYgKToNCiAgZmxhZ3MoIGRlZmZsYWdz
> ICksDQogIHdpZHRoKCBkZWZ3aWR0aCApLA0KICBwcmVjaXNpb24oIGRlZnBy
> ZWMgKSwNCiAgZmlsbCggZiApLA0KICB4eHgoIHhmaSApIHsNCn0NCg0KaW5s
> aW5lIG9zdHJlYW0mDQpvcGVyYXRvcjw8KCBvc3RyZWFtJiBvcywgY29uc3Qg
> Zm9ybWF0JiBmbXQgKSB7IA0KICBmbXQuc2V0KCBvcyApOyByZXR1cm4gb3M7
> DQp9DQoNCg0KIyAxMCAiL2hvbWUvcm9vbTEva3Jpb2wvd29yay9Qcm9qZWN0
> L2luY2x1ZGUvVmVjdG9yM0QuaUMiIDIgMw0KDQoNCg0KdGVtcGxhdGUgPGNs
> YXNzIG51bVQ+IGlzdHJlYW0mDQpvcGVyYXRvciA+PiAoIGlzdHJlYW0mIGlz
> LCBUVmVjdG9yM0Q8bnVtVD4mIHJocyApIHsNCiAgaXMgPj4gcmhzLmRYXyA+
> PiByaHMuZFlfID4+IHJocy5kWl87DQogIHJldHVybiBpczsNCn0NCg0KdGVt
> cGxhdGUgPGNsYXNzIG51bVQ+IG9zdHJlYW0mDQpvcGVyYXRvciA8PCAoIG9z
> dHJlYW0mIG9zLCBjb25zdCBUVmVjdG9yM0Q8bnVtVD4mIHJocyApIHsNCiAg
> DQogIGNvbnN0IGNoYXIqIHNlcGFyYXRvciA9ICIgICI7DQogIA0KICBvcyA8
> PCBmb3JtYXQoICdFJywgMTgsIDEyICkgPDwgcmhzLmRYXyA8PCBzZXBhcmF0
> b3INCiAgICAgPDwgZm9ybWF0KCAnRScsIDE4LCAxMiApIDw8IHJocy5kWV8g
> PDwgc2VwYXJhdG9yDQogICAgIDw8IGZvcm1hdCggJ0UnLCAxOCwgMTIgKSA8
> PCByaHMuZFpfIDsNCiAgDQogIHJldHVybiBvczsNCn0NCiMgNDU3ICIvaG9t
> ZS9yb29tMS9rcmlvbC93b3JrL1Byb2plY3QvaW5jbHVkZS9WZWN0b3IzRC5I
> IiAyIDMNCg0KDQoNCnR5cGVkZWYgVFZlY3RvcjNEPGRvdWJsZV90PiBUVmVj
> dG9yM0RfdDsNCg0KDQojIDIgInRlc3QuQyIgMg0KDQoNCmludA0KbWFpbigg
> dm9pZCApIHsNCiAgcmV0dXJuIDA7DQp9DQoNCnZvaWQNCnN1cGVyZHVtbXko
> IHZvaWQgKSB7DQogIFRWZWN0b3IzRDxkb3VibGU+IGNjYzsNCiAgY2NjID0g
> MS4wOw0KICBhYnMoY2NjKTsNCn0NCg==
> ---559023410-1804928587-876430667=:6246--
> 



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]