From: Rafal Somla Date: December 10 2009 11:24am Subject: bzr commit into mysql-6.0-backup branch (Rafal.Somla:2903) Bug#43596 List-Archive: http://lists.mysql.com/commits/93477 X-Bug: 43596 Message-Id: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_LtOivzj+fcO5AXAOZxBQYw)" --Boundary_(ID_LtOivzj+fcO5AXAOZxBQYw) MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-transfer-encoding: BASE64 Content-disposition: inline I0F0IGZpbGU6Ly8vZXh0L215c3FsL2J6ci9iYWNrdXAvYnVnNDM1OTYvIGJhc2Vk IG9uIHJldmlkOnRoYXZhbXVuaS5hbGFndUBzdW4uY29tLTIwMDkxMjAyMjI1ODQx LTEwOHNxejA1enJpanlwOGcNCg0KIDI5MDMgUmFmYWwgU29tbGEJMjAwOS0xMi0x MA0KICAgICAgQlVHIzQzNTk2IFJlc3RvcmUgZmFpbHMgb24gY2FzZSBpbnMuIHNl cnZlciBmb3IgZGF0YWJhc2VzIHdobydzIG5hbWVzIA0KICAgICAgZGlmZmVyIGlu IGNhc2Ugb25seS4NCiAgICAgIA0KICAgICAgT24gYSBjYXNlIHNlbnNpdGl2ZSBz eXN0ZW0gc3VjaCBhcyBsaW51eCwgaXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIHR3 byANCiAgICAgIHNlcnZlciBvYmplY3RzIHdob3NlIG5hbWVzIGRpZmZlciBpbiBs ZXR0ZXIgY2FzZSBvbmx5LiBUaGlzIGlzIHRydWUgZm9yIA0KICAgICAgZGF0YWJh c2VzLCB0YWJsZXMsIHZpZXdzIGFuZCB0cmlnZ2Vycy4gV2hlbiBzdWNoIG9iamVj dHMgYXJlIGJhY2tlZCB1cCBhbmQgDQogICAgICB0aGVuIHJlc3RvcmVkIG9uIGEg Y2FzZSBpbnNlbnNpdGl2ZSBzeXN0ZW0sIHRoZXkgYXJlIHdyb25nbHkgdHJlYXRl ZCBhcyBhIA0KICAgICAgc2luZ2xlIG9iamVjdCB3aGljaCBsZWFkcyB0byBtYW55 IHByb2JsZW1zLg0KICAgICAgDQogICAgICBUaGlzIHBhdGNoIG1vZGlmaWVzIFJF U1RPUkUgc28gdGhhdCBpdCBhYm9ydHMgb3BlcmF0aW9uIGlmIHR3byBzZXJ2ZXIg DQogICAgICBvYmplY3RzIHdpdGggZXF1aXZhbGVudCBuYW1lcyBhcmUgZm91bmQg aW4gdGhlIGJhY2t1cCBpbWFnZS4gRWFjaCB0aW1lIGEgbmV3IA0KICAgICAgb2Jq ZWN0IGlzIGFkZGVkIHRvIHRoZSBjYXRhbG9ndWUgKGluIGJjYXRfYWRkX2l0ZW0o KSBmdW5jdGlvbikgYSBjaGVjayBpcyANCiAgICAgIG1hZGUgZm9yIHBvc3NpYmxl IGR1cGxpY2F0ZXMuIFRoaXMgY2hlY2sgaXMgaW1wbGVtZW50ZWQgaW4gDQogICAg ICBJbWFnZV9pbmZvOjphZGRfWCgpIG1ldGhvZHMuDQogICAgICANCiAgICAgIElu dGVybmFsbHksIHNlcnZlciBvYmplY3RzIGFyZSByZXByZXNlbnRlZCBieSBpbnN0 YW5jZXMgb2Ygb2JzOjpPYmogY2xhc3MgDQogICAgICBmcm9tIHNpX29iamVjdHMu IFRoaXMgY2xhc3MgaGFzIG1ldGhvZHMgZm9yIHJlYWRpbmcgb2JqZWN0J3MgbmFt ZS4gQSBuZXcgDQogICAgICBtZXRob2QgaXNfbXlfbmFtZSgpIGlzIGFkZGVkIHdo aWNoIGNoZWNrcyBpZiBhIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIG5hbWUgDQog ICAgICBvZiB0aGUgY29ycmVzcG9uZGluZyBvYmplY3QuIFRoZSBzZW1hbnRpY3Mg b2YgdGhpcyBtZXRob2QgZGVwZW5kcyBvbiB0aGUgDQogICAgICBzeXN0ZW0gb24g d2hpY2ggaXQgaXMgcnVuIChjYXNlIHNlbnNpdGl2ZSB2cy4gY2FzZSBpbnNlbnNp dGl2ZSkgYW5kIHNlcnZlciANCiAgICAgIG9wdGlvbnMgc2V0dGluZyAoc3VjaCBh cyAtLWxvd2VyLWNhc2UtdGFibGUtbmFtZXMpLg0KICAgICAgDQogICAgICBCYWNr dXAga2VybmVsIGNvZGUgaGFzIGJlZW4gcmVhcnJhbmdlZCBzbyB0aGF0IGl0IGNv bnNlcXVlbnRseSB1c2VzIG9iczo6T2JqIA0KICAgICAgaW5zdGFuY2VzIHRvIHJl cHJlc2VudCBzZXJ2ZXIgb2JqZWN0cy4gQmVmb3JlLCBzb21ldGltZXMgc2VydmVy IG9iamVjdHMgd2VyZSANCiAgICAgIHJlZmVycmVkIGJ5IHRoZWlyIG5hbWVzIG9y IGJ5IGRhdGFiYXNlIG5hbWUsIG9iamVjdCBuYW1lIHBhaXJzLiBVc2luZyANCiAg ICAgIG9iczo6T2JqIGluc3RhbmNlIGluc3RlYWQsIGRlbGVnYXRlcyBuYW1lIGhh bmRsaW5nIGlzc3VlcyB0byB0aGUgc2lfb2JqZWN0cyANCiAgICAgIGNvZGUuIEZv ciBlYWNoIGJhY2tlZC11cC9yZXN0b3JlZCBzZXJ2ZXIgb2JqZWN0LCBhbiBvYnM6 Ok9iaiBpbnN0YW5jZSBpcyANCiAgICAgIGNyZWF0ZWQgZWFybHkgaW4gdGhlIHBy b2Nlc3MgYW5kIHN0b3JlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBvZiB0 aGUgDQogICAgICBiYWNrdXAvcmVzdG9yZSBjYXRhbG9nLiBUaGVuIG9iczo6T2Jq IG1ldGhvZHMgYXJlIHVzZWQgdG8gZ2V0IHRoZSBjYW5vbmljYWwgDQogICAgICBu YW1lIG9mIHRoZSBvYmplY3Qgb3IgdG8gZGV0ZXJtaW5lIGlmIGl0IGhhcyBhbiBh bHRlcm5hdGl2ZSBuYW1lLg0KICAgICAgDQogICAgICBTaW5jZSB3ZSB3YW50IHRv IGNyZWF0ZSBvYnM6Ok9iaiBpbnN0YW5jZXMgYmVmb3JlIHNlcmlhbGl6YXRpb24g ZGF0YSBpcyANCiAgICAgIGF2YWlsYWJsZSwgdGhlIG9iczo6Z2V0X1goKSBmdW5j dGlvbnMgYXJlIGNoYW5nZWQgc28gdGhhdCB0aGV5IGNhbiBjcmVhdGUgDQogICAg ICBpbnN0YW5jZXMgd2hlbiBvbmx5IHNlcnZlciBvYmplY3QncyBuYW1lIGlzIGtu b3duLiBMYXRlciwgdGhlc2UgaW5zdGFuY2VzIA0KICAgICAgd2lsbCBiZSB1cGRh dGVkIHdpdGggdGhlIGluZm9ybWF0aW9uIGZyb20gc2VyaWFsaXphdGlvbiBzdHJp bmcgdXNpbmcgbmV3IA0KICAgICAgb2JzOjpPYmo6OmluaXRfZnJvbV9pbWFnZSgp IG1ldGhvZC4gQWZ0ZXIgdGhhdCwgdGhlIGNvcnJlc3BvbmRpbmcgc2VydmVyIA0K ICAgICAgb2JqZWN0IGNhbiBiZSBjcmVhdGVkIHdpdGggb2JzOjpPYmo6OmNyZWF0 ZSgpIG1ldGhvZCBhcyBiZWZvcmUuDQogICAgICANCiAgICAgIFRoZSBwYXRjaCBh bHNvIGNvbnRhaW5zIHNvbWUgY2xlYW4tdXAgaW4gcmVsYXRlZCBjb2RlIGFyZWFz IChzZWUgcGVyLWZpbGUgDQogICAgICBjb21tZW50cykuDQogICAgIEAgbXlzcWwt dGVzdC9zdWl0ZS9iYWNrdXAvaW5jbHVkZS90ZXN0X2Zvcl9lcnJvci5pbmMNCiAg ICAgICAgTWFzayBwb3NzaWJseSBub24tZGV0ZXJtaW5pc3RpYyByZXN1bHQgaGVy ZSBpbnN0ZWFkIG9mIGRvaW5nIGl0IGluIHRoZSBjb2RlLg0KICAgICBAIG15c3Fs LXRlc3Qvc3VpdGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVzX2QuYmtwDQogICAg ICAgIEltYWdlIHdpdGggY2xhc2hpbmcgZGF0YWJhc2UgbmFtZXMuDQogICAgIEAg bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNfci5ia3AN CiAgICAgICAgSW1hZ2Ugd2l0aCBjbGFzaGluZyB0cmlnZ2VyIG5hbWVzLg0KICAg ICBAIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVzX3Qu YmtwDQogICAgICAgIEltYWdlIHdpdGggY2xhc2hpbmcgdGFibGUgbmFtZXMuDQog ICAgIEAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNf di5ia3ANCiAgICAgICAgSW1hZ2Ugd2l0aCBjbGFzaGluZyB2aWV3IG5hbWVzLg0K ICAgICBAIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz LnRlc3QNCiAgICAgICAgVGVzdCBzY3JpcHQgd2hpY2ggY3JlYXRlcyBiYWNrdXAg aW1hZ2VzIHdpdGggY2xhc2hpbmcgb2JqZWN0IG5hbWVzLCB0byBiZQ0KICAgICAg ICB1c2VkIGJ5IGJhY2t1cF9jc19uYW1lc19sY3RuPyB0ZXN0cy4NCiAgICAgQCBt eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC90L2JhY2t1cF9jc19uYW1lc19sY3RuMS50 ZXN0DQogICAgICAgIFRlc3QgcmVzdG9yZSBvZiBjbGFzaGluZyBvYmplY3QgbmFt ZXMgb24gbGN0bj0xIHN5c3RlbS4NCiAgICAgQCBteXNxbC10ZXN0L3N1aXRlL2Jh Y2t1cC90L2JhY2t1cF9jc19uYW1lc19sY3RuMi50ZXN0DQogICAgICAgIFRlc3Qg cmVzdG9yZSBvZiBjbGFzaGluZyBvYmplY3QgbmFtZXMgb24gbGN0bj0yIHN5c3Rl bS4NCiAgICAgQCBzcWwvYmFja3VwL2FwaV90eXBlcy5oDQogICAgICAgIEFkZCBE Yl9yZWY6OmRlc2NyaWJlKCkgbWV0aG9kLCBhbmFsb2dvdXMgdG8gVGFibGVfcmVm OjpkZXNjcmliZSgpLg0KICAgICBAIHNxbC9iYWNrdXAvYmFja3VwX2luZm8uY2MN CiAgICAgICAgLSBBZGFwdCBjb2RlIHRvIHRoZSBmYWN0IHRoYXQgbm93IGFkZF9Y KCkgbWV0aG9kcyBleHBlY3Qgb2JzOjpPYmogaW5zdGFuY2UgYXMNCiAgICAgICAg ICBhIHBhcmFtZXRlci4NCiAgICAgICAgLSBIYXNfZGIoKSBpcyByZXBsYWNlZCBi eSBmaW5kX2RiKCkuDQogICAgICAgIC0gRml4IHBvc3NpYmxlIG1lbW9yeSBsZWFr IGluIGVycm9yIGluc2VydGVkIGNvZGUgLSBkZWxldGUgaXRlcmF0b3JzIHdoaWNo IGhhdmUNCiAgICAgICAgICBiZWVuIGNyZWF0ZWQuDQogICAgICAgIC0gRXJyb3Ig aW5qZWN0aW9uIHBvaW50ICJFUl9CQUNLVVBfQ0FUQUxPR19BRERfVEFCTEUiIGlz IG1vdmVkIHRvIA0KICAgICAgICAgIEltYWdlX2luZm86OmFkZF90YWJsZSgpLCBz byB0aGF0IHRhYmxlIGlzICpub3QqIGFkZGVkIHRvIHRoZSBjYXRhbG9ndWUgd2hl biANCiAgICAgICAgICBlcnJvciBpcyBzaW11bGF0ZWQuDQogICAgICAgIC0gTW92 ZSBjb2RlIHNldHRpbmcgY29vcmRpbmF0ZXMgb2YgdHJpZ2dlcidzIHRhYmxlIHRv IA0KICAgICAgICAgIEJhY2t1cF9pbmZvOjphZGRfZGJfaXRlbSgpIGJlY2F1c2Ug dGhpcyBjb2RlIHNob3VsZCBleGVjdXRlIG9ubHkgZm9yIGJhY2t1cCANCiAgICAg ICAgICBvcGVyYXRpb24uDQogICAgICAgIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGR5 bmFtaWMgc3RyaW5nIGFsbG9jYXRpb24uDQogICAgIEAgc3FsL2JhY2t1cC9pbWFn ZV9pbmZvLmNjDQogICAgICAgIC0gV2hlbiBJbWFnZV9pbmZvOjpPYmogaW5zdGFu Y2UgaXMgY3JlYXRlZCwgaXQgZ2V0cyBhIHBvaW50ZXIgdG8gb2JzOjpPYmogYW5k IA0KICAgICAgICAgIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoYXQgb2JqZWN0LiBU aHVzIHdlIG5lZWQgc3BlY2lhbCBwcmVjYXV0aW9ucyBpZiBhZGRpbmcgDQogICAg ICAgICAgdGhlIGluc3RhbmNlIHRvIHRoZSBjYXRhbG9ndWUgZmFpbHMuDQogICAg ICAgIC0gSW1wbGVtZW50YXRpb24gb2YgZmluZF9YKCkgbWV0aG9kcy4NCiAgICAg ICAgLSBDb2RlIGhhbmRsaW5nIHRyaWdnZXIgdGFibGVzIGlzIG1vdmVkIHRvIEJh Y2t1cF9pbmZvOjphZGRfZGJfb2JqZWN0KCkgDQogICAgICAgICAgYmVjYXVzZSBp dCBzaG91bGQgYmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgYmFja3VwIG9wZXJhdGlv bi4NCiAgICAgICAgLSBNb3ZlICJFUl9CQUNLVVBfQ0FUQUxPR19BRERfVEFCTEUi IGVycm9yIGluamVjdGlvbiBwb2ludCB0byANCiAgICAgICAgICBJbWFnZV9pbmZv OjphZGRfdGFibGUoKSBiZWNhdXNlIHdlIG5lZWQgdG8gcmVwb3J0IGVycm9yIGJl Zm9yZSB3ZSBhY3R1YWxseSANCiAgICAgICAgICBjcmVhdGUgYW5kIGFkZCB0byB0 aGUgY2F0YWxvZ3VlIHRoZSBUYWJsZSBpbnN0YW5jZS4NCiAgICAgICAgLSBBbHNv IGluIEltYWdlX2luZm86OmFkZF90YWJsZSgpIG1vdmUgYWxsIHByZXBhcmF0b3J5 IGFjdGlvbnMgd2hpY2ggY2FuIGZhaWwsIA0KICAgICAgICAgIGJlZm9yZSB0aGUg bW9tZW50IFRhYmxlIGluc3RhbmNlIGlzIGNyZWF0ZWQgYW5kIGFkZGVkIHRvIHRo ZSBjYXRhbG9ndWUuDQogICAgIEAgc3FsL2JhY2t1cC9pbWFnZV9pbmZvLmgNCiAg ICAgICAgLSBBZGQgZmluZF90cygpIGZ1bmN0aW9uIGZvciBmaW5kaW5nIHRhYmxl IHNwYWNlcyBpbiB0aGUgY2F0YWxvZ3VlLg0KICAgICAgICAtIENoYW5nZSBzaWdu YXR1cmVzIG9mIGFkZF9YKCkgbWV0aG9kcyBzbyB0aGF0IG5vdyB0aGV5IGFjY2Vw dCBvYnM6Ok9iaiANCiAgICAgICAgICBwYXJhbWV0ZXIuDQogICAgICAgIC0gUmVt b3ZlIG1hdGVyaWFsaXplKCkgbWV0aG9kIHdoaWNoIGlzIG5vIGxvbmdlciBuZWVk ZWQgLSBub3cgb2JzOjpPYmogDQogICAgICAgICAgaW5zdGFuY2VzIGFyZSByZXF1 aXJlZCB3aGVuIGVudHJpZXMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNhdGFsb2d1ZS4N CiAgICAgICAgLSBJbWFnZV9pbmZvOjpPYmooKSBjb25zdHJ1Y3RvciBhY2NlcHRz IG9iczo6T2JqIHBhcmFtZXRlciwgYmVjYXVzZSBlYWNoIA0KICAgICAgICAgIGNh dGFsb2d1ZSBlbnRyeSBtdXN0IHBvaW50IGF0IG9iczo6T2JqIGluc3RhbmNlLg0K ICAgICAgICAtIEFkZCBpbml0aWFsaXphdGlvbiBtZXRob2QgSW1hZ2VfaW5mbzo6 T2JqOjpzdG9yZV9pbmZvKCkgd2hpY2ggZmlsbHMgdGhlIA0KICAgICAgICAgIGJh c2ljIHN0X2JzdHJlYW1faW5mbyBtZW1iZXJzLiBPYmplY3QncyBuYW1lIGlzIHJl YWQgZnJvbSBvYnM6Ok9iaiANCiAgICAgICAgICBpbnN0YW5jZSAoYW5kIHRodXMg aXMgbm9ybWFsaXplZCkuDQogICAgICAgIC0gTWFrZSBJbWFnZV9pbmZvOjpUcyBp bmhlcml0IGZyb20gRGJfcmVmLCBzbyB0aGF0IGNvZGUgZm9yIGNvbnN0cnVjdGlu Zw0KICAgICAgICAgIG9iamVjdCBuYW1lIGNhbiBiZSByZXVzZWQuDQogICAgICAg IC0gQWRkIEltYWdlX2luZm86OkRiOjpmaW5kX3RhYmxlL29iamVjdCgpIG1ldGhv ZHMuDQogICAgICAgIC0gUmUtdXNlIERiX3JlZjo6ZGVzY3JpYmUoKSBtZXRob2Qg Zm9yIFRzIGFuZCBEYiBjbGFzc2VzIC0gYXZvaWRzIGNvZGUgDQogICAgICAgICAg ZHVwbGljYXRpb24uDQogICAgIEAgc3FsL2JhY2t1cC9rZXJuZWwuY2MNCiAgICAg ICAgLSBGb3IgZWFjaCBvYmplY3QgYWRkZWQgdG8gdGhlIGNhdGFsb2d1ZSwgZmly c3QgYW4gb2JzOjpPYmogaW5zdGFuY2UgbXVzdCBiZQ0KICAgICAgICAgIGNyZWF0 ZWQgdXNpbmcgb2JzOjpnZXRfWCgpIGZ1bmN0aW9ucy4gSWYgdGhpcyBmYWlscywg ZXJyb3IgaXMgcmVwb3J0ZWQuIE9uY2UgDQogICAgICAgICAgd2UgaGF2ZSBvYnM6 Ok9iaiBpbnN0YW5jZSwgaXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBjYXRhbG9ndWUg d2l0aCBhZGRfWCgpIA0KICAgICAgICAgIG1ldGhvZC4gQWZ0ZXIgdGhhdCB0aGUg Y2F0YWxvZ3VlIGFzc3VtZXMgb3duZXJzaGlwIG9mIHRoYXQgb2JqZWN0IGFuZCB3 aWxsIA0KICAgICAgICAgIGRlbGV0ZSBpdC4NCiAgICAgICAgLSBXaGVuIHJlYWRp bmcgbWV0YWRhdGEsIG9iczo6T2JqIGluc3RhbmNlcyBzdG9yZWQgaW4gY2F0YWxv Z3VlIGVudHJpZXMgYXJlIA0KICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggdGhp cyBkYXRhIGFuZCB0aGVuIG9iamVjdHMgYXJlIGNyZWF0ZWQuDQogICAgICAgIC0g QXZvaWQgdW5uZWNlc3NhcnkgZHluYW1pYyBzdHJpbmcgYWxsb2NhdGlvbi4NCiAg ICAgICAgLSBBIHBvc3NpYmxlIG5vbi1kZXRlcm1pbmlzbSBpbiBlcnJvciBtZXNz YWdlcyBpcyByZXNvbHZlZCBpbiB0ZXN0IHNjcmlwdCwNCiAgICAgICAgICBub3Qg aGVyZS4NCiAgICAgQCBzcWwvYmFja3VwL3Jlc3RvcmVfaW5mby5oDQogICAgICAg IC0gQ2hhbmdlIHNpZ25hdHVyZXMgb2YgYWRkX1goKSBtZXRob2RzIHNvIHRoYXQg bm93IHRoZXkgYWNjZXB0IG9iczo6T2JqDQogICAgICAgICAgcGFyYW1ldGVyLg0K ICAgICAgICAtIEFkZCBjaGVja3MgZm9yIGR1cGxpY2F0ZXMgaW4gYWRkX1goKSBt ZXRob2RzLg0KICAgICBAIHNxbC9zaGFyZS9lcnJtc2ctdXRmOC50eHQNCiAgICAg ICAgTmV3IGVycm9yIG1lc3NhZ2VzLg0KICAgICBAIHNxbC9zaV9vYmplY3RzLmNj DQogICAgICAgIC0gSW1wbGVtZW50IE9iajo6aXNfbXlfbmFtZSgpIG1ldGhvZC4g Rm9yIGRhdGFiYXNlcywgdGFibGVzLCB2aWV3cyBhbmQNCiAgICAgICAgICB0cmln Z2VycyBpdCBpZ25vcmVzIGNhc2UgaWYgbGN0biBpcyBzZXQuDQogICAgICAgIC0g V2hlbiBjb25zdHJ1Y3RpbmcgT2JqIGluc3RhbmNlcywgdHJhbnNmb3JtIG5hbWVz IHRvIGxvd2VyIGNhc2UgaWYgbGN0bj0xLg0KICAgICAgICAtIFJlbW92ZSBBYnN0 cmFjdF9vYmo6OmluaXRfb2JqX2Zyb21faW1hZ2UoKSB3aGljaCBpcyBubyBsb25n ZXIgbmVlZGVkLg0KICAgICAgICAtIE5ldyBpbXBsZW1lbnRhdGlvbiBvZiBnZXRf WCgpIGZ1bmN0aW9ucyB3aGljaCBub3cgZG8gbm90IHRha2Ugc2VyaWFsaXphdGlv biANCiAgICAgICAgICBzdHJpbmcgcGFyYW1ldGVyLg0KICAgICBAIHNxbC9zaV9v YmplY3RzLmgNCiAgICAgICAgLSBBZGQgT2JqOjppc19teV9uYW1lKCkgbWV0aG9k Lg0KICAgICAgICAtIEFkZCBPYmo6OmluaXRfZnJvbV9pbWFnZSgpIG1ldGhvZC4N CiAgICAgICAgLSBDaGFuZ2Ugc2lnbmF0dXJlIG9mIGdldF9YKCkgZnVuY3Rpb25z IC0gbm93IHRoZXkgZG9udCB0YWtlIHNlcmlhbGl6YXRpb24NCiAgICAgICAgICBz dHJpbmcgYXMgYSBwYXJhbWV0ZXIuDQoNCiAgICBhZGRlZDoNCiAgICAgIG15c3Fs LXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2NzX25hbWVzLnJlc3VsdA0KICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFtZXNfbGN0 bjAucmVzdWx0DQogICAgICBteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1 cF9jc19uYW1lc19sY3RuMS5yZXN1bHQNCiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv YmFja3VwL3IvYmFja3VwX2NzX25hbWVzX2xjdG4yLnJlc3VsdA0KICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNfZC5ia3ANCiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVzX3Iu YmtwDQogICAgICBteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9zdGRfZGF0YS9jc19u YW1lc190LmJrcA0KICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2Rh dGEvY3NfbmFtZXNfdi5ia3ANCiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvYmFja3Vw L3QvYmFja3VwX2NzX25hbWVzLW1hc3Rlci5vcHQNCiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzLnRlc3QNCiAgICAgIG15c3Fs LXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzX2xjdG4wLnRlc3QN CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz X2xjdG4xLW1hc3Rlci5vcHQNCiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvYmFja3Vw L3QvYmFja3VwX2NzX25hbWVzX2xjdG4xLnRlc3QNCiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzX2xjdG4yLW1hc3Rlci5vcHQN CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz X2xjdG4yLnRlc3QNCiAgICBtb2RpZmllZDoNCiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvYmFja3VwL2luY2x1ZGUvdGVzdF9mb3JfZXJyb3IuaW5jDQogICAgICBzcWwv YmFja3VwL2FwaV90eXBlcy5oDQogICAgICBzcWwvYmFja3VwL2JhY2t1cF9pbmZv LmNjDQogICAgICBzcWwvYmFja3VwL2ltYWdlX2luZm8uY2MNCiAgICAgIHNxbC9i YWNrdXAvaW1hZ2VfaW5mby5oDQogICAgICBzcWwvYmFja3VwL2tlcm5lbC5jYw0K ICAgICAgc3FsL2JhY2t1cC9yZXN0b3JlX2luZm8uaA0KICAgICAgc3FsL3NoYXJl L2Vycm1zZy11dGY4LnR4dA0KICAgICAgc3FsL3NpX29iamVjdHMuY2MNCiAgICAg IHNxbC9zaV9vYmplY3RzLmgNCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0 L3N1aXRlL2JhY2t1cC9pbmNsdWRlL3Rlc3RfZm9yX2Vycm9yLmluYycNCi0tLSBh L215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL2luY2x1ZGUvdGVzdF9mb3JfZXJyb3Iu aW5jCTIwMDktMTEtMjQgMTY6NDc6MjMgKzAwMDANCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvYmFja3VwL2luY2x1ZGUvdGVzdF9mb3JfZXJyb3IuaW5jCTIwMDktMTIt MTAgMTE6MjQ6MDcgKzAwMDANCkBAIC0zOSw3ICszOSw3IEBAIGlmIChgU0VMRUNU IFNUUkNNUCgiJG9wZXJhdGlvbiIsICJCQUNLVVANCiAgIC0tZWNobyAjDQogICAt LWRpc2FibGVfYWJvcnRfb25fZXJyb3INCiAgIC0tcmVwbGFjZV9jb2x1bW4gMSAj DQotICAtLXJlcGxhY2VfcmVnZXggL0RlZmF1bHQgYmFja3VwIGRyaXZlcnxNeUlT QU0gYmFja3VwIGRyaXZlci9ERUJVRyBURVNUIGJhY2t1cCBkcml2ZXIvDQorICAt LXJlcGxhY2VfcmVnZXggL0RlZmF1bHQgYmFja3VwIGRyaXZlcnxNeUlTQU0gYmFj a3VwIGRyaXZlci9ERUJVRyBURVNUIGJhY2t1cCBkcml2ZXIvIC9GYWlsZWQgdG8g b2J0YWluIG1ldGFkYXRhIGZvciBncmFudCAuKi9GYWlsZWQgdG8gb2J0YWluIG1l dGFkYXRhIGZvciBncmFudCAnRGVidWcgaW5zZXJ0aW9uIHRlc3QnLi8NCiAgICMg U3VwcHJlc3MgZXJyb3IgbnVtYmVycyBpZiB0dXJuZWQgb24uDQogICBpZiAoYFNF TEVDVCBTVFJDTVAoIiRzdXBwcmVzcyIsICJPTiIpID0gMGApDQogICB7DQpAQCAt NjcsNyArNjcsNyBAQCBpZiAoYFNFTEVDVCBTVFJDTVAoIiRvcGVyYXRpb24iLCAi UkVTVE9SDQogICAtLWVjaG8gIw0KICAgLS1kaXNhYmxlX2Fib3J0X29uX2Vycm9y DQogICAtLXJlcGxhY2VfY29sdW1uIDEgIyAyICMNCi0gIC0tcmVwbGFjZV9yZWdl eCAvRGVmYXVsdCByZXN0b3JlIGRyaXZlcnxNeUlTQU0gcmVzdG9yZSBkcml2ZXIv REVCVUcgVEVTVCByZXN0b3JlIGRyaXZlci8NCisgIC0tcmVwbGFjZV9yZWdleCAv RGVmYXVsdCByZXN0b3JlIGRyaXZlcnxNeUlTQU0gcmVzdG9yZSBkcml2ZXIvREVC VUcgVEVTVCByZXN0b3JlIGRyaXZlci8gL0NvdWxkIG5vdCBleGVjdXRlIGdyYW50 IC4qL0NvdWxkIG5vdCBleGVjdXRlIGdyYW50ICdEZWJ1ZyBpbnNlcnRpb24gdGVz dCcuLw0KICAgUkVTVE9SRSBGUk9NICdiYWNrdXBfdGVzdF9vcmlnLmJhaycgT1ZF UldSSVRFOw0KICAgLS1lbmFibGVfYWJvcnRfb25fZXJyb3INCiB9DQpAQCAtOTQs NyArOTQsNyBAQCBpZiAoYFNFTEVDVCAkbXlfZXJyID0gJGVycm5vYCkNCiAgIC0t ZWNobyAjDQogDQogICAjIE1hc2sgb3V0IGVycm9yIG51bWJlciBmcm9tIHNlbGVj dCBzdGF0ZW1lbnQuDQotICAtLXJlcGxhY2VfcmVnZXggL0RlZmF1bHQgYmFja3Vw IGRyaXZlcnxNeUlTQU0gYmFja3VwIGRyaXZlci9ERUJVRyBURVNUIGJhY2t1cCBk cml2ZXIvIC9EZWZhdWx0IHJlc3RvcmUgZHJpdmVyfE15SVNBTSByZXN0b3JlIGRy aXZlci9ERUJVRyBURVNUIHJlc3RvcmUgZHJpdmVyLw0KKyAgLS1yZXBsYWNlX3Jl Z2V4IC9EZWZhdWx0IGJhY2t1cCBkcml2ZXJ8TXlJU0FNIGJhY2t1cCBkcml2ZXIv REVCVUcgVEVTVCBiYWNrdXAgZHJpdmVyLyAvRGVmYXVsdCByZXN0b3JlIGRyaXZl cnxNeUlTQU0gcmVzdG9yZSBkcml2ZXIvREVCVUcgVEVTVCByZXN0b3JlIGRyaXZl ci8gL0NvdWxkIG5vdCBleGVjdXRlIGdyYW50IC4qL0NvdWxkIG5vdCBleGVjdXRl IGdyYW50ICdEZWJ1ZyBpbnNlcnRpb24gdGVzdCcuLyAvRmFpbGVkIHRvIG9idGFp biBtZXRhZGF0YSBmb3IgZ3JhbnQgLiovRmFpbGVkIHRvIG9idGFpbiBtZXRhZGF0 YSBmb3IgZ3JhbnQgJ0RlYnVnIGluc2VydGlvbiB0ZXN0Jy4vDQogICAtLXJlcGxh Y2VfY29sdW1uIDEgIyAzICMjIyMNCiAgIFNFTEVDVCAqIEZST00gbXlzcWwuYmFj a3VwX3Byb2dyZXNzIFdIRVJFIGVycm9yX251bSA8PiAwOw0KIA0KDQo9PT0gYWRk ZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFt ZXMucmVzdWx0Jw0KLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNr dXBfY3NfbmFtZXMucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDANCisr KyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2NzX25hbWVzLnJl c3VsdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtMCwwICsxLDYxIEBA DQorQ0FMTCBtdHIuYWRkX3N1cHByZXNzaW9uKCJ3YXMgZGlzYWJsZWQgZHVyaW5n IHJlc3RvcmUiKTsNCisjIFNob3VsZCBiZSAwLg0KK1NFTEVDVCBAQGxvd2VyX2Nh c2VfdGFibGVfbmFtZXM7DQorQEBsb3dlcl9jYXNlX3RhYmxlX25hbWVzDQorMA0K KyMNCisjIENyZWF0ZSBkYXRhYmFzZSBhbmQgb2JqZWN0cyBvZiB2YXJpb3VzIHR5 cGVzIHdpdGhpbiBpdC4NCisjDQorQ1JFQVRFIERBVEFCQVNFIGRiQTsNCitVU0Ug ZGJBOw0KK0NSRUFURSBUQUJMRSAgICAgdEEgKGEgaW50KSBDT01NRU5UPSd1cHBl ciBjYXNlIG5hbWUnOw0KK0NSRUFURSBWSUVXICAgICAgdkEgQVMgU0VMRUNUIDE7 DQorQ1JFQVRFIFRSSUdHRVIgICByQSBBRlRFUiBVUERBVEUgT04gdEEgRk9SIEVB Q0ggUk9XIFNFVCBAZm9vPTE7DQorQ1JFQVRFIEVWRU5UICAgICBlQSBPTiBTQ0hF RFVMRSBFVkVSWSAxIFlFQVIgRE8gU0VUIEBmb289MTsNCitDUkVBVEUgUFJPQ0VE VVJFIHBBIChhIGludCkgU0VUIEBmb289MTsNCitDUkVBVEUgRlVOQ1RJT04gIGZB IChhIGludCkgUkVUVVJOUyBpbnQgUkVUVVJOIGE7DQorQ1JFQVRFIFRBQkxFICAg ICBgdO+/ve+/vWAgKGIgaW50KSBDT01NRU5UPSd1cHBlciBjYXNlIGFjY2VudGVk IG5hbWUnOw0KK0NSRUFURSBWSUVXICAgICAgYHbvv73vv71gIEFTIFNFTEVDVCAz Ow0KK0NSRUFURSBUUklHR0VSICAgYHLvv73vv71gIEFGVEVSIERFTEVURSBPTiBg dO+/ve+/vWAgRk9SIEVBQ0ggUk9XIFNFVCBAYmF6PTM7DQorQ1JFQVRFIEVWRU5U ICAgICBgZe+/ve+/vWAgT04gU0NIRURVTEUgRVZFUlkgMSBZRUFSIERPIFNFVCBA YmF6PTM7DQorQ1JFQVRFIFBST0NFRFVSRSBgcO+/ve+/vWAgKGIgaW50KSBTRVQg QGJhej0zOw0KK0NSRUFURSBGVU5DVElPTiAgYGbvv73vv71gIChiIGludCkgUkVU VVJOUyBpbnQgUkVUVVJOIGI7DQorIw0KKyMgQmFja3VwIGRhdGFiYXNlIHdpdGhv dXQgcG90ZW50aWFsIG5hbWUgY2xhc2hlcy4NCisjDQorQkFDS1VQIERBVEFCQVNF IGRiQSBUTyAnZGJhLmJrcCc7DQorDQorIyBDcmVhdGluZyBjc19uYW1lc19kLmJr cCBpbWFnZS4NCitDUkVBVEUgREFUQUJBU0UgZGJhOw0KK0NSRUFURSBUQUJMRSAg ZGJhLnQxIChiIGludCkgQ09NTUVOVD0naW4gb3RoZXIgZGF0YWJhc2UnOw0KK0JB Q0tVUCBEQVRBQkFTRSBkYkEsZGJhIFRPICdjc19uYW1lc19kLmJrcCc7DQorDQor IyBDcmVhdGluZyBjc19uYW1lc190LmJrcCBpbWFnZS4NCitVU0UgZGJBOw0KK0NS RUFURSBUQUJMRSB0YSAoYyBjaGFyKSBDT01NRU5UPSdsb3dlciBjYXNlIG5hbWUn Ow0KK0JBQ0tVUCBEQVRBQkFTRSBkYkEgVE8gJ2NzX25hbWVzX3QuYmtwJzsNCisN CisjIENyZWF0aW5nIGNzX25hbWVzX3YuYmtwIGltYWdlLg0KK1JFU1RPUkUgRlJP TSAnZGJhLmJrcCcgT1ZFUldSSVRFOw0KK1VTRSBkYkE7DQorQ1JFQVRFIFZJRVcg dmEgQVMgU0VMRUNUIDI7DQorQkFDS1VQIERBVEFCQVNFIGRiQSBUTyAnY3NfbmFt ZXNfdi5ia3AnOw0KKw0KKyMgQ3JlYXRpbmcgY3NfbmFtZXNfci5ia3AgaW1hZ2Uu DQorUkVTVE9SRSBGUk9NICdkYmEuYmtwJyBPVkVSV1JJVEU7DQorVVNFIGRiQTsN CitDUkVBVEUgVFJJR0dFUiByYSBCRUZPUkUgREVMRVRFIE9OIHRBIEZPUiBFQUNI IFJPVyBTRVQgQGJhcj0yOw0KK0JBQ0tVUCBEQVRBQkFTRSBkYkEgVE8gJ2NzX25h bWVzX3IuYmtwJzsNCisNCisjIENoZWNraW5nIHN0b3JlZCBwcm9jZWR1cmVzIGFu ZCBldmVudHMuDQorVVNFIGRiQTsNCitDUkVBVEUgRVZFTlQgZWEgT04gU0NIRURV TEUgRVZFUlkgMSBZRUFSIERPIFNFVCBAYmFyPTI7DQorRVJST1IgSFkwMDA6IEV2 ZW50ICdlYScgYWxyZWFkeSBleGlzdHMNCitDUkVBVEUgUFJPQ0VEVVJFIHBhIChh IGludCkgU0VUIEBiYXI9MjsNCitFUlJPUiA0MjAwMDogUFJPQ0VEVVJFIHBhIGFs cmVhZHkgZXhpc3RzDQorQ1JFQVRFIEZVTkNUSU9OIGZhIChhIGludCkgUkVUVVJO UyBpbnQgUkVUVVJOIDE7DQorRVJST1IgNDIwMDA6IEZVTkNUSU9OIGZhIGFscmVh ZHkgZXhpc3RzDQorDQorIyBDbGVhbnVwLg0KK0RST1AgREFUQUJBU0UgZGJBOw0K K0RST1AgREFUQUJBU0UgZGJhOw0KDQo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVz dC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFtZXNfbGN0bjAucmVzdWx0Jw0K LS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFtZXNf bGN0bjAucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDANCisrKyBiL215 c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2NzX25hbWVzX2xjdG4wLnJl c3VsdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtMCwwICsxLDMzIEBA DQorQ0FMTCBtdHIuYWRkX3N1cHByZXNzaW9uKCJ3YXMgZGlzYWJsZWQgZHVyaW5n IHJlc3RvcmUiKTsNCisjIFNob3VsZCBiZSAwLg0KK1NFTEVDVCBAQGxvd2VyX2Nh c2VfdGFibGVfbmFtZXM7DQorQEBsb3dlcl9jYXNlX3RhYmxlX25hbWVzDQorMA0K Kw0KKyMgUmVzdG9yaW5nIGZyb20gY3NfbmFtZXNfZC5ia3AgaW1hZ2UuDQorUkVT VE9SRSBGUk9NICdjc19uYW1lc19kLmJrcCcgT1ZFUldSSVRFOw0KK2JhY2t1cF9p ZA0KKyMjIw0KK1dhcm5pbmdzOg0KKyMjIwkjIyMJVGhlIGV2ZW50ICdkYkEuZUEn IHdhcyBkaXNhYmxlZCBkdXJpbmcgcmVzdG9yZS4NCisNCisjIFJlc3RvcmluZyBm cm9tIGNzX25hbWVzX3QuYmtwIGltYWdlLg0KK1JFU1RPUkUgRlJPTSAnY3NfbmFt ZXNfdC5ia3AnIE9WRVJXUklURTsNCitiYWNrdXBfaWQNCisjIyMNCitXYXJuaW5n czoNCisjIyMJIyMjCVRoZSBldmVudCAnZGJBLmVBJyB3YXMgZGlzYWJsZWQgZHVy aW5nIHJlc3RvcmUuDQorDQorIyBSZXN0b3JpbmcgZnJvbSBjc19uYW1lc192LmJr cCBpbWFnZS4NCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3YuYmtwJyBPVkVSV1JJ VEU7DQorYmFja3VwX2lkDQorIyMjDQorDQorIyBSZXN0b3JpbmcgZnJvbSBjc19u YW1lc19yLmJrcCBpbWFnZS4NCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3IuYmtw JyBPVkVSV1JJVEU7DQorYmFja3VwX2lkDQorIyMjDQorDQorIyBDbGVhbnVwLg0K K0RST1AgREFUQUJBU0UgSUYgRVhJU1RTIGRiQTsNCitEUk9QIERBVEFCQVNFIElG IEVYSVNUUyBkYmE7DQoNCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRl L2JhY2t1cC9yL2JhY2t1cF9jc19uYW1lc19sY3RuMS5yZXN1bHQnDQotLS0gYS9t eXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9yL2JhY2t1cF9jc19uYW1lc19sY3RuMS5y ZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMA0KKysrIGIvbXlzcWwtdGVz dC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFtZXNfbGN0bjEucmVzdWx0CTIw MDktMTItMTAgMTE6MjQ6MDcgKzAwMDANCkBAIC0wLDAgKzEsNDEgQEANCitDQUxM IG10ci5hZGRfc3VwcHJlc3Npb24oIndhcyBkaXNhYmxlZCBkdXJpbmcgcmVzdG9y ZSIpOw0KK0NBTEwgbXRyLmFkZF9zdXBwcmVzc2lvbigiUmVzdG9yZTogQmFja3Vw IGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3RzIG5hbWVkIik7DQorU0VMRUNUIEBA bG93ZXJfY2FzZV90YWJsZV9uYW1lczsNCitAQGxvd2VyX2Nhc2VfdGFibGVfbmFt ZXMNCisxDQorDQorIyBSZXN0b3JpbmcgZnJvbSBjc19uYW1lc19kLmJrcCBpbWFn ZS4NCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX2QuYmtwJyBPVkVSV1JJVEU7DQor RVJST1IgSFkwMDA6IEJhY2t1cCBpbWFnZSBjb250YWlucyB0d28gb2JqZWN0cyBu YW1lZCAnZGJhJy4gVGhlIHByb2JsZW0gbWlnaHQgYmUgdGhhdCBvYmplY3RzJyBu YW1lcyBkaWZmZXIgaW4gbGV0dGVyIGNhc2Ugb25seSBhbmQgeW91IGFyZSByZXN0 b3Jpbmcgb24gYSBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbSBvciAtLWxvd2VyLWNh c2UtdGFibGUgaXMgc2V0IHRvIDEuDQorU0hPVyBXQVJOSU5HUzsNCitMZXZlbAlD b2RlCU1lc3NhZ2UNCitFcnJvcgkjIyMJQmFja3VwIGltYWdlIGNvbnRhaW5zIHR3 byBvYmplY3RzIG5hbWVkICdkYmEnLiBUaGUgcHJvYmxlbSBtaWdodCBiZSB0aGF0 IG9iamVjdHMnIG5hbWVzIGRpZmZlciBpbiBsZXR0ZXIgY2FzZSBvbmx5IGFuZCB5 b3UgYXJlIHJlc3RvcmluZyBvbiBhIGNhc2UgaW5zZW5zaXRpdmUgc3lzdGVtIG9y IC0tbG93ZXItY2FzZS10YWJsZSBpcyBzZXQgdG8gMS4NCitXYXJuaW5nCSMjIwlP cGVyYXRpb24gYWJvcnRlZA0KKw0KKyMgUmVzdG9yaW5nIGZyb20gY3NfbmFtZXNf dC5ia3AgaW1hZ2UuDQorUkVTVE9SRSBGUk9NICdjc19uYW1lc190LmJrcCcgT1ZF UldSSVRFOw0KK0VSUk9SIEhZMDAwOiBCYWNrdXAgaW1hZ2UgY29udGFpbnMgdHdv IG9iamVjdHMgbmFtZWQgJ3RhJyBpbiBkYXRhYmFzZSAnZGJhJy4gVGhlIHByb2Js ZW0gbWlnaHQgYmUgdGhhdCBvYmplY3RzJyBuYW1lcyBkaWZmZXIgaW4gbGV0dGVy IGNhc2Ugb25seSBhbmQgeW91IGFyZSByZXN0b3Jpbmcgb24gYSBjYXNlIGluc2Vu c2l0aXZlIHN5c3RlbSBvciAtLWxvd2VyLWNhc2UtdGFibGUgaXMgc2V0IHRvIDEu DQorU0hPVyBXQVJOSU5HUzsNCitMZXZlbAlDb2RlCU1lc3NhZ2UNCitFcnJvcgkj IyMJQmFja3VwIGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3RzIG5hbWVkICd0YScg aW4gZGF0YWJhc2UgJ2RiYScuIFRoZSBwcm9ibGVtIG1pZ2h0IGJlIHRoYXQgb2Jq ZWN0cycgbmFtZXMgZGlmZmVyIGluIGxldHRlciBjYXNlIG9ubHkgYW5kIHlvdSBh cmUgcmVzdG9yaW5nIG9uIGEgY2FzZSBpbnNlbnNpdGl2ZSBzeXN0ZW0gb3IgLS1s b3dlci1jYXNlLXRhYmxlIGlzIHNldCB0byAxLg0KK1dhcm5pbmcJIyMjCU9wZXJh dGlvbiBhYm9ydGVkDQorDQorIyBSZXN0b3JpbmcgZnJvbSBjc19uYW1lc192LmJr cCBpbWFnZS4NCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3YuYmtwJyBPVkVSV1JJ VEU7DQorRVJST1IgSFkwMDA6IEJhY2t1cCBpbWFnZSBjb250YWlucyB0d28gb2Jq ZWN0cyBuYW1lZCAndkEnIGluIGRhdGFiYXNlICdkYmEnLiBUaGUgcHJvYmxlbSBt aWdodCBiZSB0aGF0IG9iamVjdHMnIG5hbWVzIGRpZmZlciBpbiBsZXR0ZXIgY2Fz ZSBvbmx5IGFuZCB5b3UgYXJlIHJlc3RvcmluZyBvbiBhIGNhc2UgaW5zZW5zaXRp dmUgc3lzdGVtIG9yIC0tbG93ZXItY2FzZS10YWJsZSBpcyBzZXQgdG8gMS4NCitT SE9XIFdBUk5JTkdTOw0KK0xldmVsCUNvZGUJTWVzc2FnZQ0KK0Vycm9yCSMjIwlC YWNrdXAgaW1hZ2UgY29udGFpbnMgdHdvIG9iamVjdHMgbmFtZWQgJ3ZBJyBpbiBk YXRhYmFzZSAnZGJhJy4gVGhlIHByb2JsZW0gbWlnaHQgYmUgdGhhdCBvYmplY3Rz JyBuYW1lcyBkaWZmZXIgaW4gbGV0dGVyIGNhc2Ugb25seSBhbmQgeW91IGFyZSBy ZXN0b3Jpbmcgb24gYSBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbSBvciAtLWxvd2Vy LWNhc2UtdGFibGUgaXMgc2V0IHRvIDEuDQorV2FybmluZwkjIyMJT3BlcmF0aW9u IGFib3J0ZWQNCisNCisjIFJlc3RvcmluZyBmcm9tIGNzX25hbWVzX3IuYmtwIGlt YWdlLg0KK1JFU1RPUkUgRlJPTSAnY3NfbmFtZXNfci5ia3AnIE9WRVJXUklURTsN CitFUlJPUiBIWTAwMDogQmFja3VwIGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3Rz IG5hbWVkICdyQScgaW4gZGF0YWJhc2UgJ2RiYScuIFRoZSBwcm9ibGVtIG1pZ2h0 IGJlIHRoYXQgb2JqZWN0cycgbmFtZXMgZGlmZmVyIGluIGxldHRlciBjYXNlIG9u bHkgYW5kIHlvdSBhcmUgcmVzdG9yaW5nIG9uIGEgY2FzZSBpbnNlbnNpdGl2ZSBz eXN0ZW0gb3IgLS1sb3dlci1jYXNlLXRhYmxlIGlzIHNldCB0byAxLg0KK1NIT1cg V0FSTklOR1M7DQorTGV2ZWwJQ29kZQlNZXNzYWdlDQorRXJyb3IJIyMjCUJhY2t1 cCBpbWFnZSBjb250YWlucyB0d28gb2JqZWN0cyBuYW1lZCAnckEnIGluIGRhdGFi YXNlICdkYmEnLiBUaGUgcHJvYmxlbSBtaWdodCBiZSB0aGF0IG9iamVjdHMnIG5h bWVzIGRpZmZlciBpbiBsZXR0ZXIgY2FzZSBvbmx5IGFuZCB5b3UgYXJlIHJlc3Rv cmluZyBvbiBhIGNhc2UgaW5zZW5zaXRpdmUgc3lzdGVtIG9yIC0tbG93ZXItY2Fz ZS10YWJsZSBpcyBzZXQgdG8gMS4NCitXYXJuaW5nCSMjIwlPcGVyYXRpb24gYWJv cnRlZA0KKw0KKyMgQ2xlYW51cC4NCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBk YkE7DQorRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgZGJhOw0KDQo9PT0gYWRkZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9iYWNrdXBfY3NfbmFtZXNf bGN0bjIucmVzdWx0Jw0KLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvci9i YWNrdXBfY3NfbmFtZXNfbGN0bjIucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAg KzAwMDANCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3IvYmFja3VwX2Nz X25hbWVzX2xjdG4yLnJlc3VsdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpA QCAtMCwwICsxLDQxIEBADQorQ0FMTCBtdHIuYWRkX3N1cHByZXNzaW9uKCJ3YXMg ZGlzYWJsZWQgZHVyaW5nIHJlc3RvcmUiKTsNCitDQUxMIG10ci5hZGRfc3VwcHJl c3Npb24oIlJlc3RvcmU6IEJhY2t1cCBpbWFnZSBjb250YWlucyB0d28gb2JqZWN0 cyBuYW1lZCIpOw0KK1NFTEVDVCBAQGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7DQor QEBsb3dlcl9jYXNlX3RhYmxlX25hbWVzDQorMg0KKw0KKyMgUmVzdG9yaW5nIGZy b20gY3NfbmFtZXNfZC5ia3AgaW1hZ2UuDQorUkVTVE9SRSBGUk9NICdjc19uYW1l c19kLmJrcCcgT1ZFUldSSVRFOw0KK0VSUk9SIEhZMDAwOiBCYWNrdXAgaW1hZ2Ug Y29udGFpbnMgdHdvIG9iamVjdHMgbmFtZWQgJ2RiQScuIFRoZSBwcm9ibGVtIG1p Z2h0IGJlIHRoYXQgb2JqZWN0cycgbmFtZXMgZGlmZmVyIGluIGxldHRlciBjYXNl IG9ubHkgYW5kIHlvdSBhcmUgcmVzdG9yaW5nIG9uIGEgY2FzZSBpbnNlbnNpdGl2 ZSBzeXN0ZW0gb3IgLS1sb3dlci1jYXNlLXRhYmxlIGlzIHNldCB0byAxLg0KK1NI T1cgV0FSTklOR1M7DQorTGV2ZWwJQ29kZQlNZXNzYWdlDQorRXJyb3IJIyMjCUJh Y2t1cCBpbWFnZSBjb250YWlucyB0d28gb2JqZWN0cyBuYW1lZCAnZGJBJy4gVGhl IHByb2JsZW0gbWlnaHQgYmUgdGhhdCBvYmplY3RzJyBuYW1lcyBkaWZmZXIgaW4g bGV0dGVyIGNhc2Ugb25seSBhbmQgeW91IGFyZSByZXN0b3Jpbmcgb24gYSBjYXNl IGluc2Vuc2l0aXZlIHN5c3RlbSBvciAtLWxvd2VyLWNhc2UtdGFibGUgaXMgc2V0 IHRvIDEuDQorV2FybmluZwkjIyMJT3BlcmF0aW9uIGFib3J0ZWQNCisNCisjIFJl c3RvcmluZyBmcm9tIGNzX25hbWVzX3QuYmtwIGltYWdlLg0KK1JFU1RPUkUgRlJP TSAnY3NfbmFtZXNfdC5ia3AnIE9WRVJXUklURTsNCitFUlJPUiBIWTAwMDogQmFj a3VwIGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3RzIG5hbWVkICd0QScgaW4gZGF0 YWJhc2UgJ2RiQScuIFRoZSBwcm9ibGVtIG1pZ2h0IGJlIHRoYXQgb2JqZWN0cycg bmFtZXMgZGlmZmVyIGluIGxldHRlciBjYXNlIG9ubHkgYW5kIHlvdSBhcmUgcmVz dG9yaW5nIG9uIGEgY2FzZSBpbnNlbnNpdGl2ZSBzeXN0ZW0gb3IgLS1sb3dlci1j YXNlLXRhYmxlIGlzIHNldCB0byAxLg0KK1NIT1cgV0FSTklOR1M7DQorTGV2ZWwJ Q29kZQlNZXNzYWdlDQorRXJyb3IJIyMjCUJhY2t1cCBpbWFnZSBjb250YWlucyB0 d28gb2JqZWN0cyBuYW1lZCAndEEnIGluIGRhdGFiYXNlICdkYkEnLiBUaGUgcHJv YmxlbSBtaWdodCBiZSB0aGF0IG9iamVjdHMnIG5hbWVzIGRpZmZlciBpbiBsZXR0 ZXIgY2FzZSBvbmx5IGFuZCB5b3UgYXJlIHJlc3RvcmluZyBvbiBhIGNhc2UgaW5z ZW5zaXRpdmUgc3lzdGVtIG9yIC0tbG93ZXItY2FzZS10YWJsZSBpcyBzZXQgdG8g MS4NCitXYXJuaW5nCSMjIwlPcGVyYXRpb24gYWJvcnRlZA0KKw0KKyMgUmVzdG9y aW5nIGZyb20gY3NfbmFtZXNfdi5ia3AgaW1hZ2UuDQorUkVTVE9SRSBGUk9NICdj c19uYW1lc192LmJrcCcgT1ZFUldSSVRFOw0KK0VSUk9SIEhZMDAwOiBCYWNrdXAg aW1hZ2UgY29udGFpbnMgdHdvIG9iamVjdHMgbmFtZWQgJ3ZBJyBpbiBkYXRhYmFz ZSAnZGJBJy4gVGhlIHByb2JsZW0gbWlnaHQgYmUgdGhhdCBvYmplY3RzJyBuYW1l cyBkaWZmZXIgaW4gbGV0dGVyIGNhc2Ugb25seSBhbmQgeW91IGFyZSByZXN0b3Jp bmcgb24gYSBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbSBvciAtLWxvd2VyLWNhc2Ut dGFibGUgaXMgc2V0IHRvIDEuDQorU0hPVyBXQVJOSU5HUzsNCitMZXZlbAlDb2Rl CU1lc3NhZ2UNCitFcnJvcgkjIyMJQmFja3VwIGltYWdlIGNvbnRhaW5zIHR3byBv YmplY3RzIG5hbWVkICd2QScgaW4gZGF0YWJhc2UgJ2RiQScuIFRoZSBwcm9ibGVt IG1pZ2h0IGJlIHRoYXQgb2JqZWN0cycgbmFtZXMgZGlmZmVyIGluIGxldHRlciBj YXNlIG9ubHkgYW5kIHlvdSBhcmUgcmVzdG9yaW5nIG9uIGEgY2FzZSBpbnNlbnNp dGl2ZSBzeXN0ZW0gb3IgLS1sb3dlci1jYXNlLXRhYmxlIGlzIHNldCB0byAxLg0K K1dhcm5pbmcJIyMjCU9wZXJhdGlvbiBhYm9ydGVkDQorDQorIyBSZXN0b3Jpbmcg ZnJvbSBjc19uYW1lc19yLmJrcCBpbWFnZS4NCitSRVNUT1JFIEZST00gJ2NzX25h bWVzX3IuYmtwJyBPVkVSV1JJVEU7DQorRVJST1IgSFkwMDA6IEJhY2t1cCBpbWFn ZSBjb250YWlucyB0d28gb2JqZWN0cyBuYW1lZCAnckEnIGluIGRhdGFiYXNlICdk YkEnLiBUaGUgcHJvYmxlbSBtaWdodCBiZSB0aGF0IG9iamVjdHMnIG5hbWVzIGRp ZmZlciBpbiBsZXR0ZXIgY2FzZSBvbmx5IGFuZCB5b3UgYXJlIHJlc3RvcmluZyBv biBhIGNhc2UgaW5zZW5zaXRpdmUgc3lzdGVtIG9yIC0tbG93ZXItY2FzZS10YWJs ZSBpcyBzZXQgdG8gMS4NCitTSE9XIFdBUk5JTkdTOw0KK0xldmVsCUNvZGUJTWVz c2FnZQ0KK0Vycm9yCSMjIwlCYWNrdXAgaW1hZ2UgY29udGFpbnMgdHdvIG9iamVj dHMgbmFtZWQgJ3JBJyBpbiBkYXRhYmFzZSAnZGJBJy4gVGhlIHByb2JsZW0gbWln aHQgYmUgdGhhdCBvYmplY3RzJyBuYW1lcyBkaWZmZXIgaW4gbGV0dGVyIGNhc2Ug b25seSBhbmQgeW91IGFyZSByZXN0b3Jpbmcgb24gYSBjYXNlIGluc2Vuc2l0aXZl IHN5c3RlbSBvciAtLWxvd2VyLWNhc2UtdGFibGUgaXMgc2V0IHRvIDEuDQorV2Fy bmluZwkjIyMJT3BlcmF0aW9uIGFib3J0ZWQNCisNCisjIENsZWFudXAuDQorRFJP UCBEQVRBQkFTRSBJRiBFWElTVFMgZGJBOw0KK0RST1AgREFUQUJBU0UgSUYgRVhJ U1RTIGRiYTsNCg0KPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFj a3VwL3N0ZF9kYXRhL2NzX25hbWVzX2QuYmtwJw0KQmluYXJ5IGZpbGVzIGEvbXlz cWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNfZC5ia3AJMTk3 MC0wMS0wMSAwMDowMDowMCArMDAwMCBhbmQgYi9teXNxbC10ZXN0L3N1aXRlL2Jh Y2t1cC9zdGRfZGF0YS9jc19uYW1lc19kLmJrcAkyMDA5LTEyLTEwIDExOjI0OjA3 ICswMDAwIGRpZmZlcg0KDQo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0 ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNfci5ia3AnDQpCaW5hcnkgZmlsZXMg YS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC9zdGRfZGF0YS9jc19uYW1lc19yLmJr cAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwIGFuZCBiL215c3FsLXRlc3Qvc3Vp dGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVzX3IuYmtwCTIwMDktMTItMTAgMTE6 MjQ6MDcgKzAwMDAgZGlmZmVyDQoNCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0 L3N1aXRlL2JhY2t1cC9zdGRfZGF0YS9jc19uYW1lc190LmJrcCcNCkJpbmFyeSBm aWxlcyBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVz X3QuYmtwCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAgYW5kIGIvbXlzcWwtdGVz dC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3NfbmFtZXNfdC5ia3AJMjAwOS0xMi0x MCAxMToyNDowNyArMDAwMCBkaWZmZXINCg0KPT09IGFkZGVkIGZpbGUgJ215c3Fs LXRlc3Qvc3VpdGUvYmFja3VwL3N0ZF9kYXRhL2NzX25hbWVzX3YuYmtwJw0KQmlu YXJ5IGZpbGVzIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvc3RkX2RhdGEvY3Nf bmFtZXNfdi5ia3AJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMCBhbmQgYi9teXNx bC10ZXN0L3N1aXRlL2JhY2t1cC9zdGRfZGF0YS9jc19uYW1lc192LmJrcAkyMDA5 LTEyLTEwIDExOjI0OjA3ICswMDAwIGRpZmZlcg0KDQo9PT0gYWRkZWQgZmlsZSAn bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXMtbWFzdGVy Lm9wdCcNCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2Nz X25hbWVzLW1hc3Rlci5vcHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMA0KKysr IGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXMtbWFz dGVyLm9wdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtMCwwICsxIEBA DQorLS1sb3dlci1jYXNlLXRhYmxlLW5hbWVzPTANCg0KPT09IGFkZGVkIGZpbGUg J215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzLnRlc3Qn DQotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC90L2JhY2t1cF9jc19uYW1l cy50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDANCisrKyBiL215c3FsLXRl c3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzLnRlc3QJMjAwOS0xMi0x MCAxMToyNDowNyArMDAwMA0KQEAgLTAsMCArMSwxMjUgQEANCisjDQorIyBDaGVj ayBob3cgUkVTVE9SRSBoYW5kbGVzIG9iamVjdHMgd2hvc2UgbmFtZXMgZGlmZmVy IGluIGNhc2Ugb25seQ0KKyMgb24gYSBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbS4N CisjDQorIyBUaGlzIHRlc3Qgc2NyaXB0IGNyZWF0ZXMgYmFja3VwIGltYWdlcyB3 aGljaCBjb250YWluIG9iamVjdHMgb2YgZGlmZmVyZW50DQorIyB0eXBlcyB3aG9z ZSBuYW1lcyBtaWdodCBjbGFzaCBvbiBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbToN CisjDQorIyAtIGNzX25hbWVzX2QuYmtwOiBjbGFzaCBpbiBkYXRhYmFzZSBuYW1l cw0KKyMgLSBjc19uYW1lc190LmJrcDogY2xhc2ggaW4gdGFibGUgbmFtZXMNCisj IC0gY3NfbmFtZXNfdi5ia3A6IGNsYXNoIGluIHZpZXcgbmFtZXMNCisjIC0gY3Nf bmFtZXNfci5ia3A6IGNsYXNoIGluIHRyaWdnZXIgbmFtZQ0KKyMNCisjIE5vdGUg dGhhdCBmb3Igb3RoZXIgdHlwZXMgb2Ygb2JqZWN0cyBzdXBwb3J0ZWQgYnkgYmFj a3VwIChzdG9yZWQgcm91dGluZXMsIA0KKyMgZXZlbnRzKSBpdCBpcyBub3QgcG9z c2libGUgdG8gY3JlYXRlIHR3byBvYmplY3RzIHdob3NlIG5hbWVzIGRpZmZlciBp bg0KKyMgY2FzZSBvbmx5LCBldmVuIG9uIGNhc2Ugc2Vuc2l0aXZlIHN5c3RlbSB3 aXRoIGxjdG49MC4NCisjDQorIyBUaGUgaW1hZ2VzIGFyZSBjb21taXR0ZWQgdG8g c3VpdGUvYmFja3VwL3N0ZF9kYXRhLyBkaXJlY3Rvcnkgd2hlcmUgb3RoZXIgdGVz dHMNCisjIGFyZSBsb29raW5nIGZvciB0aGVtLiBIb3dldmVyLCB0aGlzIHRlc3Qg c3RvcmVzIG5ld2x5IGdlbmVyYXRlZCBpbWFnZXMgaW4gDQorIyB2YXIvcnVuLyBk aXJlY3RvcnkuIFRoaXMgaXMgc28gdGhhdCBuZXcgaW1hZ2VzIGRvIG5vdCBpbW1l ZGlhdGVseSBvdmVyd3JpdGUNCisjIG9sZCBvbmVzLg0KKyMNCisjIElmIHJlcXVp cmVkIChlLmcuLCBmb3JtYXQgb2YgdGhlIGJhY2t1cCBpbWFnZSBjaGFuZ2VzKSwg dGhlbiBpbWFnZXMgZ2VuZXJhdGVkDQorIyBieSB0aGlzIHNjcmlwdCBzaG91bGQg YmUgbWFudWFsbHkgbW92ZWQgdG8gc3VpdGUvYmFja3VwL3N0ZF9kYXRhIGFuZCAN CisjIHJlLWNvbW1pdHRlZC4NCisjDQorLS1zb3VyY2UgaW5jbHVkZS9ub3RfZW1i ZWRkZWQuaW5jDQorLS1zb3VyY2UgaW5jbHVkZS9ub3Rfd2luZG93cy5pbmMNCisN CitDQUxMIG10ci5hZGRfc3VwcHJlc3Npb24oIndhcyBkaXNhYmxlZCBkdXJpbmcg cmVzdG9yZSIpOw0KKw0KKy0tZWNobyAjIFNob3VsZCBiZSAwLg0KK1NFTEVDVCBA QGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM7DQorDQorLS1kaXNhYmxlX3Jlc3VsdF9s b2cNCisNCitsZXQgJGltZ2Rpcj0gJE1ZU1FMVEVTVF9WQVJESVIvcnVuOw0KK2xl dCAkYmRpcj1gc2VsZWN0IEBAYmFja3VwZGlyYDsNCisNCistLWVjaG8gIw0KKy0t ZWNobyAjIENyZWF0ZSBkYXRhYmFzZSBhbmQgb2JqZWN0cyBvZiB2YXJpb3VzIHR5 cGVzIHdpdGhpbiBpdC4NCistLWVjaG8gIw0KK0NSRUFURSBEQVRBQkFTRSBkYkE7 DQorVVNFIGRiQTsNCitDUkVBVEUgVEFCTEUgICAgIHRBIChhIGludCkgQ09NTUVO VD0ndXBwZXIgY2FzZSBuYW1lJzsNCitDUkVBVEUgVklFVyAgICAgIHZBIEFTIFNF TEVDVCAxOw0KK0NSRUFURSBUUklHR0VSICAgckEgQUZURVIgVVBEQVRFIE9OIHRB IEZPUiBFQUNIIFJPVyBTRVQgQGZvbz0xOw0KK0NSRUFURSBFVkVOVCAgICAgZUEg T04gU0NIRURVTEUgRVZFUlkgMSBZRUFSIERPIFNFVCBAZm9vPTE7DQorQ1JFQVRF IFBST0NFRFVSRSBwQSAoYSBpbnQpIFNFVCBAZm9vPTE7DQorQ1JFQVRFIEZVTkNU SU9OICBmQSAoYSBpbnQpIFJFVFVSTlMgaW50IFJFVFVSTiBhOw0KKw0KKyMNCisj IEFkZCBvYmplY3RzIHdpdGggbGV0dGVyICfvv73vv70nIHdoaWNoIGlzIGVxdWl2 YWxlbnQgdG8gJ0EnIGFjY29yZGluZyB0byBjYXNlIA0KKyMgaW5zZW5zaXRpdmUg Y29sbGF0aW9ucy4gVGhpcyBpcyB0byBzZWUgdGhhdCBpdCB3b3VsZCBub3QgY2F1 c2UgYW55IG5hbWUgDQorIyBjbGFzaGVzLg0KKyMNCisNCitDUkVBVEUgVEFCTEUg ICAgIGB077+977+9YCAoYiBpbnQpIENPTU1FTlQ9J3VwcGVyIGNhc2UgYWNjZW50 ZWQgbmFtZSc7DQorQ1JFQVRFIFZJRVcgICAgICBgdu+/ve+/vWAgQVMgU0VMRUNU IDM7DQorQ1JFQVRFIFRSSUdHRVIgICBgcu+/ve+/vWAgQUZURVIgREVMRVRFIE9O IGB077+977+9YCBGT1IgRUFDSCBST1cgU0VUIEBiYXo9MzsNCitDUkVBVEUgRVZF TlQgICAgIGBl77+977+9YCBPTiBTQ0hFRFVMRSBFVkVSWSAxIFlFQVIgRE8gU0VU IEBiYXo9MzsNCitDUkVBVEUgUFJPQ0VEVVJFIGBw77+977+9YCAoYiBpbnQpIFNF VCBAYmF6PTM7DQorQ1JFQVRFIEZVTkNUSU9OICBgZu+/ve+/vWAgKGIgaW50KSBS RVRVUk5TIGludCBSRVRVUk4gYjsNCisNCistLWVjaG8gIw0KKy0tZWNobyAjIEJh Y2t1cCBkYXRhYmFzZSB3aXRob3V0IHBvdGVudGlhbCBuYW1lIGNsYXNoZXMuDQor LS1lY2hvICMNCitCQUNLVVAgREFUQUJBU0UgZGJBIFRPICdkYmEuYmtwJzsNCisN CistLWVjaG8gDQorLS1lY2hvICMgQ3JlYXRpbmcgY3NfbmFtZXNfZC5ia3AgaW1h Z2UuDQorLS1lcnJvciAwLDENCistLXJlbW92ZV9maWxlICRpbWdkaXIvY3NfbmFt ZXNfZC5ia3ANCitDUkVBVEUgREFUQUJBU0UgZGJhOw0KK0NSRUFURSBUQUJMRSAg ZGJhLnQxIChiIGludCkgQ09NTUVOVD0naW4gb3RoZXIgZGF0YWJhc2UnOw0KK0JB Q0tVUCBEQVRBQkFTRSBkYkEsZGJhIFRPICdjc19uYW1lc19kLmJrcCc7DQorLS1t b3ZlX2ZpbGUgJGJkaXIvY3NfbmFtZXNfZC5ia3AgJGltZ2Rpci9jc19uYW1lc19k LmJrcA0KKw0KKy0tZWNobyANCistLWVjaG8gIyBDcmVhdGluZyBjc19uYW1lc190 LmJrcCBpbWFnZS4NCistLWVycm9yIDAsMQ0KKy0tcmVtb3ZlX2ZpbGUgJGltZ2Rp ci9jc19uYW1lc190LmJrcA0KK1VTRSBkYkE7DQorQ1JFQVRFIFRBQkxFIHRhIChj IGNoYXIpIENPTU1FTlQ9J2xvd2VyIGNhc2UgbmFtZSc7DQorQkFDS1VQIERBVEFC QVNFIGRiQSBUTyAnY3NfbmFtZXNfdC5ia3AnOw0KKy0tbW92ZV9maWxlICRiZGly L2NzX25hbWVzX3QuYmtwICRpbWdkaXIvY3NfbmFtZXNfdC5ia3ANCisNCistLWVj aG8gDQorLS1lY2hvICMgQ3JlYXRpbmcgY3NfbmFtZXNfdi5ia3AgaW1hZ2UuDQor LS1lcnJvciAwLDENCistLXJlbW92ZV9maWxlICRpbWdkaXIvY3NfbmFtZXNfdi5i a3ANCisjIFJlc3RvcmUgb3JpZ2luYWwgZGF0YWJhc2Ugd2l0aG91dCBuYW1lIGNs YXNoZXMuDQorUkVTVE9SRSBGUk9NICdkYmEuYmtwJyBPVkVSV1JJVEU7DQorVVNF IGRiQTsNCitDUkVBVEUgVklFVyB2YSBBUyBTRUxFQ1QgMjsNCitCQUNLVVAgREFU QUJBU0UgZGJBIFRPICdjc19uYW1lc192LmJrcCc7DQorLS1tb3ZlX2ZpbGUgJGJk aXIvY3NfbmFtZXNfdi5ia3AgJGltZ2Rpci9jc19uYW1lc192LmJrcA0KKw0KKy0t ZWNobyANCistLWVjaG8gIyBDcmVhdGluZyBjc19uYW1lc19yLmJrcCBpbWFnZS4N CistLWVycm9yIDAsMQ0KKy0tcmVtb3ZlX2ZpbGUgJGltZ2Rpci9jc19uYW1lc19y LmJrcA0KKyMgUmVzdG9yZSBvcmlnaW5hbCBkYXRhYmFzZSB3aXRob3V0IG5hbWUg Y2xhc2hlcy4NCitSRVNUT1JFIEZST00gJ2RiYS5ia3AnIE9WRVJXUklURTsNCitV U0UgZGJBOw0KK0NSRUFURSBUUklHR0VSIHJhIEJFRk9SRSBERUxFVEUgT04gdEEg Rk9SIEVBQ0ggUk9XIFNFVCBAYmFyPTI7DQorQkFDS1VQIERBVEFCQVNFIGRiQSBU TyAnY3NfbmFtZXNfci5ia3AnOw0KKy0tbW92ZV9maWxlICRiZGlyL2NzX25hbWVz X3IuYmtwICRpbWdkaXIvY3NfbmFtZXNfci5ia3ANCisNCistLWVjaG8gDQorLS1l Y2hvICMgQ2hlY2tpbmcgc3RvcmVkIHByb2NlZHVyZXMgYW5kIGV2ZW50cy4NCist LWVuYWJsZV9yZXN1bHRfbG9nDQorVVNFIGRiQTsNCistLWVycm9yIEVSX0VWRU5U X0FMUkVBRFlfRVhJU1RTDQorQ1JFQVRFIEVWRU5UIGVhIE9OIFNDSEVEVUxFIEVW RVJZIDEgWUVBUiBETyBTRVQgQGJhcj0yOw0KKy0tZXJyb3IgRVJfU1BfQUxSRUFE WV9FWElTVFMNCitDUkVBVEUgUFJPQ0VEVVJFIHBhIChhIGludCkgU0VUIEBiYXI9 MjsNCistLWVycm9yIEVSX1NQX0FMUkVBRFlfRVhJU1RTDQorQ1JFQVRFIEZVTkNU SU9OIGZhIChhIGludCkgUkVUVVJOUyBpbnQgUkVUVVJOIDE7DQorDQorLS1lY2hv IA0KKy0tZWNobyAjIENsZWFudXAuDQorRFJPUCBEQVRBQkFTRSBkYkE7DQorRFJP UCBEQVRBQkFTRSBkYmE7DQorLS1leGl0DQorIA0KDQo9PT0gYWRkZWQgZmlsZSAn bXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXNfbGN0bjAu dGVzdCcNCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2Nz X25hbWVzX2xjdG4wLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMA0KKysr IGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXNfbGN0 bjAudGVzdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtMCwwICsxLDYz IEBADQorIw0KKyMgQ2hlY2sgdGhhdCBvbiBhIGNhc2Ugc2Vuc2l0aXZlIHN5c3Rl bSBvbmUgY2FuIGNvcnJlY3RseSByZXN0b3JlIGltYWdlIA0KKyMgY29udGFpbmlu ZyBvYmplY3RzIHdob3NlIG5hbWVzIHdvdWxkIGNsYXNoIG9uIGNhc2UgaW5zZW5z aXRpdmUgc3lzdGVtLg0KKyMNCisjIFRoaXMgdGVzdCBzY3JpcHQgdXNlcyBiYWNr dXAgaW1hZ2VzIGNyZWF0ZWQgYnkgYmFja3VwX2NzX25hbWVzIHNjcmlwdDoNCisj DQorIyAtIGNzX25hbWVzX2QuYmtwOiBjbGFzaCBpbiBkYXRhYmFzZSBuYW1lcw0K KyMgLSBjc19uYW1lc190LmJrcDogY2xhc2ggaW4gdGFibGUgbmFtZXMNCisjIC0g Y3NfbmFtZXNfdi5ia3A6IGNsYXNoIGluIHZpZXcgbmFtZXMNCisjIC0gY3NfbmFt ZXNfci5ia3A6IGNsYXNoIGluIHRyaWdnZXIgbmFtZQ0KKyMNCisjIFRoZSBpbWFn ZXMgYXJlIHN0b3JlZCBpbiBzdWl0ZS9iYWNrdXAvc3RkX2RhdGEvIGRpcmVjdG9y eS4gRm9yIHNpbXBsaWNpdHksDQorIyB3ZSBjb3B5IHRoZW0gZmlyc3QgdG8gdGhl IHN0YW5kYXJkIGJhY2t1cCBsb2NhdGlvbg0KKyMNCisjIE5vdGU6IFdoZW4gYmFj a3VwIGltYWdlIGZvcm1hdCBjaGFuZ2VzIHRoZXNlIGJhY2t1cCBpbWFnZXMgbXVz dCBiZSANCisjIHJlLWdlbmVyYXRlZCBhbmQgcmUtY29tbWl0dGVkLg0KKyMNCist LXNvdXJjZSBpbmNsdWRlL25vdF9lbWJlZGRlZC5pbmMNCisNCitDQUxMIG10ci5h ZGRfc3VwcHJlc3Npb24oIndhcyBkaXNhYmxlZCBkdXJpbmcgcmVzdG9yZSIpOw0K Kw0KKy0tZWNobyAjIFNob3VsZCBiZSAwLg0KK1NFTEVDVCBAQGxvd2VyX2Nhc2Vf dGFibGVfbmFtZXM7DQorDQorbGV0ICRpbWdkaXI9IHN1aXRlL2JhY2t1cC9zdGRf ZGF0YTsNCitsZXQgJGJkaXI9YHNlbGVjdCBAQGJhY2t1cGRpcmA7DQorDQorIw0K KyMgTm90ZTogaWYgdGhlc2Ugc3RhdGVtZW50cyBmYWlsIHRoZW4gcGVyaGFwcyBi YWNrdXAgaW1hZ2VzIGFyZSBtaXNzaW5nLiBUaGV5DQorIyBzaG91bGQgYmUgcmUt Z2VuZXJhdGVkIHVzaW5nIGJhY2t1cF9jc19uYW1lcyB0ZXN0Lg0KKyMNCistLWNv cHlfZmlsZSAkaW1nZGlyL2NzX25hbWVzX2QuYmtwICRiZGlyL2NzX25hbWVzX2Qu YmtwDQorLS1jb3B5X2ZpbGUgJGltZ2Rpci9jc19uYW1lc190LmJrcCAkYmRpci9j c19uYW1lc190LmJrcA0KKy0tY29weV9maWxlICRpbWdkaXIvY3NfbmFtZXNfdi5i a3AgJGJkaXIvY3NfbmFtZXNfdi5ia3ANCistLWNvcHlfZmlsZSAkaW1nZGlyL2Nz X25hbWVzX3IuYmtwICRiZGlyL2NzX25hbWVzX3IuYmtwDQorDQorLS1lY2hvIA0K Ky0tZWNobyAjIFJlc3RvcmluZyBmcm9tIGNzX25hbWVzX2QuYmtwIGltYWdlLg0K Ky0tcmVwbGFjZV9jb2x1bW4gMSAjIyMgMiAjIyMNCitSRVNUT1JFIEZST00gJ2Nz X25hbWVzX2QuYmtwJyBPVkVSV1JJVEU7DQorDQorLS1lY2hvIA0KKy0tZWNobyAj IFJlc3RvcmluZyBmcm9tIGNzX25hbWVzX3QuYmtwIGltYWdlLg0KKy0tcmVwbGFj ZV9jb2x1bW4gMSAjIyMgMiAjIyMNCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3Qu YmtwJyBPVkVSV1JJVEU7DQorDQorLS1lY2hvIA0KKy0tZWNobyAjIFJlc3Rvcmlu ZyBmcm9tIGNzX25hbWVzX3YuYmtwIGltYWdlLg0KKy0tcmVwbGFjZV9jb2x1bW4g MSAjIyMgMiAjIyMNCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3YuYmtwJyBPVkVS V1JJVEU7DQorDQorLS1lY2hvIA0KKy0tZWNobyAjIFJlc3RvcmluZyBmcm9tIGNz X25hbWVzX3IuYmtwIGltYWdlLg0KKy0tcmVwbGFjZV9jb2x1bW4gMSAjIyMgMiAj IyMNCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3IuYmtwJyBPVkVSV1JJVEU7DQor DQorLS1lY2hvIA0KKy0tZWNobyAjIENsZWFudXAuDQorLS1kaXNhYmxlX3dhcm5p bmdzDQorRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgZGJBOw0KK0RST1AgREFUQUJB U0UgSUYgRVhJU1RTIGRiYTsNCistLWV4aXQNCisgDQoNCj09PSBhZGRlZCBmaWxl ICdteXNxbC10ZXN0L3N1aXRlL2JhY2t1cC90L2JhY2t1cF9jc19uYW1lc19sY3Ru MS1tYXN0ZXIub3B0Jw0KLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9i YWNrdXBfY3NfbmFtZXNfbGN0bjEtbWFzdGVyLm9wdAkxOTcwLTAxLTAxIDAwOjAw OjAwICswMDAwDQorKysgYi9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC90L2JhY2t1 cF9jc19uYW1lc19sY3RuMS1tYXN0ZXIub3B0CTIwMDktMTItMTAgMTE6MjQ6MDcg KzAwMDANCkBAIC0wLDAgKzEgQEANCistLWxvd2VyLWNhc2UtdGFibGUtbmFtZXM9 MQ0KDQo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9i YWNrdXBfY3NfbmFtZXNfbGN0bjEudGVzdCcNCi0tLSBhL215c3FsLXRlc3Qvc3Vp dGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVzX2xjdG4xLnRlc3QJMTk3MC0wMS0w MSAwMDowMDowMCArMDAwMA0KKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAv dC9iYWNrdXBfY3NfbmFtZXNfbGN0bjEudGVzdAkyMDA5LTEyLTEwIDExOjI0OjA3 ICswMDAwDQpAQCAtMCwwICsxLDc0IEBADQorIw0KKyMgQ2hlY2sgaG93IFJFU1RP UkUgaGFuZGxlcyBvYmplY3RzIHdob3NlIG5hbWVzIGRpZmZlciBpbiBjYXNlIG9u bHkNCisjIG9uIGEgY2FzZSBpbnNlbnNpdGl2ZSBzeXN0ZW0uDQorIw0KKyMgVGhp cyB0ZXN0IHNjcmlwdCB1c2VzIGJhY2t1cCBpbWFnZXMgY3JlYXRlZCBieSBiYWNr dXBfY3NfbmFtZXMgc2NyaXB0Og0KKyMNCisjIC0gY3NfbmFtZXNfZC5ia3A6IGNs YXNoIGluIGRhdGFiYXNlIG5hbWVzDQorIyAtIGNzX25hbWVzX3QuYmtwOiBjbGFz aCBpbiB0YWJsZSBuYW1lcw0KKyMgLSBjc19uYW1lc192LmJrcDogY2xhc2ggaW4g dmlldyBuYW1lcw0KKyMgLSBjc19uYW1lc19yLmJrcDogY2xhc2ggaW4gdHJpZ2dl ciBuYW1lDQorIw0KKyMgSXQgcmVzdG9yZXMgZnJvbSBlYWNoIGltYWdlIGFuZCBj aGVja3MgdGhhdCBjb3JyZWN0IGVycm9yIGlzIHJlcG9ydGVkIGluIA0KKyMgZWFj aCBjYXNlLg0KKyMNCisjIFRoZSBpbWFnZXMgYXJlIHN0b3JlZCBpbiBzdWl0ZS9i YWNrdXAvc3RkX2RhdGEvIGRpcmVjdG9yeS4gRm9yIHNpbXBsaWNpdHksDQorIyB3 ZSBjb3B5IHRoZW0gZmlyc3QgdG8gdGhlIHN0YW5kYXJkIGJhY2t1cCBsb2NhdGlv bg0KKyMNCisjIE5vdGU6IFdoZW4gYmFja3VwIGltYWdlIGZvcm1hdCBjaGFuZ2Vz IHRoZXNlIGJhY2t1cCBpbWFnZXMgbXVzdCBiZSANCisjIHJlLWdlbmVyYXRlZCBh bmQgcmUtY29tbWl0dGVkLg0KKyMNCistLXNvdXJjZSBpbmNsdWRlL25vdF9lbWJl ZGRlZC5pbmMNCisNCitDQUxMIG10ci5hZGRfc3VwcHJlc3Npb24oIndhcyBkaXNh YmxlZCBkdXJpbmcgcmVzdG9yZSIpOw0KK0NBTEwgbXRyLmFkZF9zdXBwcmVzc2lv bigiUmVzdG9yZTogQmFja3VwIGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3RzIG5h bWVkIik7DQorDQorU0VMRUNUIEBAbG93ZXJfY2FzZV90YWJsZV9uYW1lczsNCisN CitsZXQgJGltZ2Rpcj0gc3VpdGUvYmFja3VwL3N0ZF9kYXRhOw0KK2xldCAkYmRp cj1gc2VsZWN0IEBAYmFja3VwZGlyYDsNCisNCisjDQorIyBOb3RlOiBpZiB0aGVz ZSBzdGF0ZW1lbnRzIGZhaWwgdGhlbiBwZXJoYXBzIGJhY2t1cCBpbWFnZXMgYXJl IG1pc3NpbmcuIFRoZXkNCisjIHNob3VsZCBiZSByZS1nZW5lcmF0ZWQgdXNpbmcg YmFja3VwX2NzX25hbWVzIHRlc3QuDQorIw0KKy0tY29weV9maWxlICRpbWdkaXIv Y3NfbmFtZXNfZC5ia3AgJGJkaXIvY3NfbmFtZXNfZC5ia3ANCistLWNvcHlfZmls ZSAkaW1nZGlyL2NzX25hbWVzX3QuYmtwICRiZGlyL2NzX25hbWVzX3QuYmtwDQor LS1jb3B5X2ZpbGUgJGltZ2Rpci9jc19uYW1lc192LmJrcCAkYmRpci9jc19uYW1l c192LmJrcA0KKy0tY29weV9maWxlICRpbWdkaXIvY3NfbmFtZXNfci5ia3AgJGJk aXIvY3NfbmFtZXNfci5ia3ANCisNCistLWVjaG8gDQorLS1lY2hvICMgUmVzdG9y aW5nIGZyb20gY3NfbmFtZXNfZC5ia3AgaW1hZ2UuDQorLS1lcnJvciBFUl9SRVNU T1JFX05PTlVOSVFfT0JKRUNUDQorUkVTVE9SRSBGUk9NICdjc19uYW1lc19kLmJr cCcgT1ZFUldSSVRFOw0KKy0tcmVwbGFjZV9jb2x1bW4gMiAjIyMNCitTSE9XIFdB Uk5JTkdTOw0KKw0KKy0tZWNobyANCistLWVjaG8gIyBSZXN0b3JpbmcgZnJvbSBj c19uYW1lc190LmJrcCBpbWFnZS4NCistLWVycm9yIEVSX1JFU1RPUkVfTk9OVU5J UV9EQk9CSkVDVA0KK1JFU1RPUkUgRlJPTSAnY3NfbmFtZXNfdC5ia3AnIE9WRVJX UklURTsNCistLXJlcGxhY2VfY29sdW1uIDIgIyMjDQorU0hPVyBXQVJOSU5HUzsN CisNCistLWVjaG8gDQorLS1lY2hvICMgUmVzdG9yaW5nIGZyb20gY3NfbmFtZXNf di5ia3AgaW1hZ2UuDQorLS1lcnJvciBFUl9SRVNUT1JFX05PTlVOSVFfREJPQkpF Q1QNCitSRVNUT1JFIEZST00gJ2NzX25hbWVzX3YuYmtwJyBPVkVSV1JJVEU7DQor LS1yZXBsYWNlX2NvbHVtbiAyICMjIw0KK1NIT1cgV0FSTklOR1M7DQorDQorLS1l Y2hvIA0KKy0tZWNobyAjIFJlc3RvcmluZyBmcm9tIGNzX25hbWVzX3IuYmtwIGlt YWdlLg0KKy0tZXJyb3IgRVJfUkVTVE9SRV9OT05VTklRX0RCT0JKRUNUDQorUkVT VE9SRSBGUk9NICdjc19uYW1lc19yLmJrcCcgT1ZFUldSSVRFOw0KKy0tcmVwbGFj ZV9jb2x1bW4gMiAjIyMNCitTSE9XIFdBUk5JTkdTOw0KKw0KKy0tZWNobyANCist LWVjaG8gIyBDbGVhbnVwLg0KKy0tZGlzYWJsZV93YXJuaW5ncw0KK0RST1AgREFU QUJBU0UgSUYgRVhJU1RTIGRiQTsNCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBk YmE7DQorLS1leGl0DQorIA0KDQo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9z dWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXNfbGN0bjItbWFzdGVyLm9wdCcN Ci0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz X2xjdG4yLW1hc3Rlci5vcHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMA0KKysr IGIvbXlzcWwtdGVzdC9zdWl0ZS9iYWNrdXAvdC9iYWNrdXBfY3NfbmFtZXNfbGN0 bjItbWFzdGVyLm9wdAkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtMCww ICsxIEBADQorLS1sb3dlci1jYXNlLXRhYmxlLW5hbWVzPTINCg0KPT09IGFkZGVk IGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz X2xjdG4yLnRlc3QnDQotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2JhY2t1cC90L2Jh Y2t1cF9jc19uYW1lc19sY3RuMi50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAw MDANCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25h bWVzX2xjdG4yLnRlc3QJMjAwOS0xMi0xMCAxMToyNDowNyArMDAwMA0KQEAgLTAs MCArMSwzIEBADQorLS1zb3VyY2UgaW5jbHVkZS9ub3RfZW1iZWRkZWQuaW5jDQor LS1zb3VyY2UgaW5jbHVkZS9oYXZlX2Nhc2VfaW5zZW5zaXRpdmVfZmlsZV9zeXN0 ZW0uaW5jDQorLS1zb3VyY2Ugc3VpdGUvYmFja3VwL3QvYmFja3VwX2NzX25hbWVz X2xjdG4xLnRlc3QNCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9iYWNrdXAvYXBp X3R5cGVzLmgnDQotLS0gYS9zcWwvYmFja3VwL2FwaV90eXBlcy5oCTIwMDktMTIt MDEgMDE6NDk6MjMgKzAwMDANCisrKyBiL3NxbC9iYWNrdXAvYXBpX3R5cGVzLmgJ MjAwOS0xMi0xMCAxMToyNDowNyArMDAwMA0KQEAgLTEwNSw2ICsxMDUsMTUgQEAg cHVibGljOg0KICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERiX3JlZiAmZGIpIGNv bnN0DQogICB7IHJldHVybiAhIHRoaXMtPm9wZXJhdG9yID09IChkYik7IH0NCiAN CisgIC8vLyBEZWZpbml0aW9uIG9mIGEgbmFtZSBidWZmZXIgZm9yIHRoZSBkYXRh YmFzZSBuYW1lLg0KKyAgdHlwZWRlZiBjaGFyIG5hbWVfYnVmW0ZOX1JFRkxFTl07 DQorDQorICAvLy8gUHJvZHVjZSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGRhdGFi YXNlIChlLmcuIGZvciBlcnJvciByZXBvcnRpbmcpLg0KKyAgY29uc3QgY2hhciog ZGVzY3JpYmUoY2hhciAqYnVmLCBzaXplX3QgbGVuKSBjb25zdDsNCisgIC8vLyBQ cm9kdWNlIHN0cmluZyBpZGVudGlmeWluZyB0aGUgZGF0YWJhc2UgKGUuZy4gZm9y IGVycm9yIHJlcG9ydGluZykuDQorICBjb25zdCBjaGFyKiBkZXNjcmliZShuYW1l X2J1ZiAmYnVmKSBjb25zdA0KKyAgeyByZXR1cm4gZGVzY3JpYmUoYnVmLCBzaXpl b2YoYnVmKSk7IH0NCisNCiBwcm90ZWN0ZWQ6DQogDQogICAvLyBDb25zdHJ1Y3Rv cnMgYXJlIG1hZGUgcHJvdGVjdGVkIGFzIGNsaWVudHMgb2YgdGhpcyBjbGFzcyBh cmUNCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9iYWNrdXAvYmFja3VwX2luZm8u Y2MnDQotLS0gYS9zcWwvYmFja3VwL2JhY2t1cF9pbmZvLmNjCTIwMDktMTItMDEg MDE6NDk6MjMgKzAwMDANCisrKyBiL3NxbC9iYWNrdXAvYmFja3VwX2luZm8uY2MJ MjAwOS0xMi0xMCAxMToyNDowNyArMDAwMA0KQEAgLTY2Nyw3ICs2NjcsNyBAQCBi YWNrdXA6OkltYWdlX2luZm86OlRzKiBCYWNrdXBfaW5mbzo6YWRkDQogDQogICB1 bG9uZyBwb3M9IHRzX2NvdW50KCk7DQogDQotICBUcyAqdHM9IEltYWdlX2luZm86 OmFkZF90cygqbmFtZSwgcG9zKTsNCisgIFRzICp0cz0gSW1hZ2VfaW5mbzo6YWRk X3RzKG9iaiwgcG9zKTsNCiANCiAgIGlmICghdHMpDQogICB7DQpAQCAtNjc1LDEw ICs2NzUsNiBAQCBiYWNrdXA6OkltYWdlX2luZm86OlRzKiBCYWNrdXBfaW5mbzo6 YWRkDQogICAgIHJldHVybiBOVUxMOw0KICAgfQ0KIA0KLSAgLy8gU3RvcmUgcG9p bnRlciB0byB0aGUgc2VydmVyIG9iamVjdCBpbnN0YW5jZS4NCi0NCi0gIHRzLT5t X29ial9wdHI9IG9iajsNCi0NCiAgIC8vIEFkZCBuZXcgZW50cnkgdG8gdHNfaGFz aC4NCiANCiAgIG4xPSBuZXcgVHNfaGFzaF9ub2RlKG4wKTsNCkBAIC03NTksNyAr NzU1LDcgQEAgYmFja3VwOjpJbWFnZV9pbmZvOjpEYiogQmFja3VwX2luZm86OmFk ZA0KICAgICByZXR1cm4gTlVMTDsNCiAgIH0NCiANCi0gIERiICpkYj0gSW1hZ2Vf aW5mbzo6YWRkX2RiKCpuYW1lLCBwb3MpOw0KKyAgRGIgKmRiPSBJbWFnZV9pbmZv OjphZGRfZGIob2JqLCBwb3MpOw0KIA0KICAgaWYgKCFkYikNCiAgIHsNCkBAIC03 NjcsOCArNzYzLDYgQEAgYmFja3VwOjpJbWFnZV9pbmZvOjpEYiogQmFja3VwX2lu Zm86OmFkZA0KICAgICByZXR1cm4gTlVMTDsNCiAgIH0NCiANCi0gIGRiLT5tX29i al9wdHI9IG9iajsNCi0NCiAgIHJldHVybiBkYjsNCiB9DQogDQpAQCAtODMxLDcg KzgyNSw3IEBAIGludCBCYWNrdXBfaW5mbzo6YWRkX2RicyhUSEQgKnRoZCwgTGlz dDwNCiAgICAgZGJfbmFtZT0gb2JqLT5nZXRfZGJfbmFtZSgpLT5wdHIoKTsNCiAN CiAgICAgLy8gRXJyb3IgaWYgdGhlIHNhbWUgZGF0YWJhc2UgaXMgcmVxdWVzdGVk IHR3aWNlIGluIHRoZSBkYXRhYmFzZSBsaXN0Lg0KLSAgICBpZiAoaGFzX2RiKGRi X25hbWUpKQ0KKyAgICBpZiAoZmluZF9kYihkYl9uYW1lKSkNCiAgICAgew0KICAg ICAgIG1fbG9nLnJlcG9ydF9lcnJvcihFUl9OT05VTklRX0RCLCBkYl9uYW1lLmNf cHRyKCkpOzsNCiAgICAgICBkZWxldGUgb2JqOw0KQEAgLTkwMSw3ICs4OTUsNyBA QCBpbnQgQmFja3VwX2luZm86OmFkZF9hbGxfZGJzKCkNCiAgIE9ial9pdGVyYXRv ciAqZGJpdD0gZ2V0X2RhdGFiYXNlcyhtX3RoZCk7DQogDQogICAvLyBFcnJvciBj b2RlIGluc2VydGlvbiBmb3IgRVJfQkFDS1VQX0xJU1RfREJTLg0KLSAgREJVR19F WEVDVVRFX0lGKCJFUl9CQUNLVVBfTElTVF9EQlMiLCBkYml0PSAwOyk7DQorICBE QlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9MSVNUX0RCUyIsIHsgZGVsZXRlIGRi aXQ7IGRiaXQ9IE5VTEw7IH07KTsNCiANCiAgIGlmICghZGJpdCkNCiAgIHsNCkBA IC05OTQsNyArOTg4LDcgQEAgaW50IEJhY2t1cF9pbmZvOjphZGRfZGJfaXRlbXMo RGIgJmRiKQ0KICAgT2JqX2l0ZXJhdG9yICppdD0gZ2V0X2RiX3RhYmxlcyhtX3Ro ZCwgJmRiLm5hbWUoKSk7DQogDQogICAvLyBFcnJvciBjb2RlIGluc2VydGlvbiBm b3IgRVJfQkFDS1VQX0xJU1RfREJfVEFCTEVTLg0KLSAgREJVR19FWEVDVVRFX0lG KCJFUl9CQUNLVVBfTElTVF9EQl9UQUJMRVMiLCBpdD0gMDspOw0KKyAgREJVR19F WEVDVVRFX0lGKCJFUl9CQUNLVVBfTElTVF9EQl9UQUJMRVMiLCB7IGRlbGV0ZSBp dDsgaXQ9IE5VTEw7IH07KTsNCiANCiAgIGlmICghaXQpDQogICB7DQpAQCAtMTA0 NSw3ICsxMDM5LDcgQEAgaW50IEJhY2t1cF9pbmZvOjphZGRfZGJfaXRlbXMoRGIg JmRiKQ0KICAgaXQ9IGdldF9kYl9zdG9yZWRfcHJvY2VkdXJlcyhtX3RoZCwgJmRi Lm5hbWUoKSk7DQogDQogICAvLyBFcnJvciBjb2RlIGluc2VydGlvbiBmb3IgRVJf QkFDS1VQX0xJU1RfREJfU1JPVVQuDQotICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JB Q0tVUF9MSVNUX0RCX1NST1VUX1AiLCBpdD0gMDspOw0KKyAgREJVR19FWEVDVVRF X0lGKCJFUl9CQUNLVVBfTElTVF9EQl9TUk9VVF9QIiwgeyBkZWxldGUgaXQ7IGl0 PSBOVUxMOyB9Oyk7DQogDQogICBpZiAoIWl0KQ0KICAgew0KQEAgLTEwNjAsNyAr MTA1NCw3IEBAIGludCBCYWNrdXBfaW5mbzo6YWRkX2RiX2l0ZW1zKERiICZkYikN CiAgIGl0PSBnZXRfZGJfc3RvcmVkX2Z1bmN0aW9ucyhtX3RoZCwgJmRiLm5hbWUo KSk7DQogDQogICAvLyBFcnJvciBjb2RlIGluc2VydGlvbiBmb3IgRVJfQkFDS1VQ X0xJU1RfREJfU1JPVVQuDQotICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9M SVNUX0RCX1NST1VUX0YiLCBpdD0gMDspOw0KKyAgREJVR19FWEVDVVRFX0lGKCJF Ul9CQUNLVVBfTElTVF9EQl9TUk9VVF9GIiwgeyBkZWxldGUgaXQ7IGl0PSBOVUxM OyB9Oyk7DQogDQogICBpZiAoIWl0KQ0KICAgew0KQEAgLTEwNzUsNyArMTA2OSw3 IEBAIGludCBCYWNrdXBfaW5mbzo6YWRkX2RiX2l0ZW1zKERiICZkYikNCiAgIGl0 PSBnZXRfZGJfdmlld3MobV90aGQsICZkYi5uYW1lKCkpOw0KIA0KICAgLy8gRXJy b3IgY29kZSBpbnNlcnRpb24gZm9yIEVSX0JBQ0tVUF9MSVNUX0RCX1ZJRVdTLg0K LSAgREJVR19FWEVDVVRFX0lGKCJFUl9CQUNLVVBfTElTVF9EQl9WSUVXUyIsIGl0 PSAwOyk7DQorICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9MSVNUX0RCX1ZJ RVdTIiwgeyBkZWxldGUgaXQ7IGl0PSBOVUxMOyB9Oyk7DQogDQogICBpZiAoIWl0 KQ0KICAgew0KQEAgLTEwOTAsNyArMTA4NCw3IEBAIGludCBCYWNrdXBfaW5mbzo6 YWRkX2RiX2l0ZW1zKERiICZkYikNCiAgIGl0PSBnZXRfZGJfZXZlbnRzKG1fdGhk LCAmZGIubmFtZSgpKTsNCiANCiAgIC8vIEVycm9yIGNvZGUgaW5zZXJ0aW9uIGZv ciBFUl9CQUNLVVBfTElTVF9EQl9FVkVOVFMuDQotICBEQlVHX0VYRUNVVEVfSUYo IkVSX0JBQ0tVUF9MSVNUX0RCX0VWRU5UUyIsIGl0PSAwOyk7DQorICBEQlVHX0VY RUNVVEVfSUYoIkVSX0JBQ0tVUF9MSVNUX0RCX0VWRU5UUyIsIHsgZGVsZXRlIGl0 OyBpdD0gTlVMTDsgfTspOw0KIA0KICAgaWYgKCFpdCkNCiAgIHsNCkBAIC0xMTA1 LDcgKzEwOTksNyBAQCBpbnQgQmFja3VwX2luZm86OmFkZF9kYl9pdGVtcyhEYiAm ZGIpDQogICBpdD0gZ2V0X2RiX3RyaWdnZXJzKG1fdGhkLCAmZGIubmFtZSgpKTsN CiANCiAgIC8vIEVycm9yIGNvZGUgaW5zZXJ0aW9uIGZvciBFUl9CQUNLVVBfTElT VF9EQl9UUklHR0VSUy4NCi0gIERCVUdfRVhFQ1VURV9JRigiRVJfQkFDS1VQX0xJ U1RfREJfVFJJR0dFUlMiLCBpdD0gMDspOw0KKyAgREJVR19FWEVDVVRFX0lGKCJF Ul9CQUNLVVBfTElTVF9EQl9UUklHR0VSUyIsIHsgZGVsZXRlIGl0OyBpdD0gTlVM TDsgfTspOw0KIA0KICAgaWYgKCFpdCkNCiAgIHsNCkBAIC0xMTIwLDcgKzExMTQs NyBAQCBpbnQgQmFja3VwX2luZm86OmFkZF9kYl9pdGVtcyhEYiAmZGIpDQogICBp dD0gZ2V0X2FsbF9kYl9ncmFudHMobV90aGQsICZkYi5uYW1lKCkpOw0KIA0KICAg Ly8gRXJyb3IgY29kZSBpbnNlcnRpb24gZm9yIEVSX0JBQ0tVUF9MSVNUX0RCX1BS SVYuDQotICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9MSVNUX0RCX1BSSVYi LCBpdD0gMDspOw0KKyAgREJVR19FWEVDVVRFX0lGKCJFUl9CQUNLVVBfTElTVF9E Ql9QUklWIiwgeyBkZWxldGUgaXQ7IGl0PSBOVUxMOyB9Oyk7DQogDQogICBpZiAo IWl0KQ0KICAgew0KQEAgLTEyMDEsMTAgKzExOTUsNyBAQCBiYWNrdXA6OkltYWdl X2luZm86OlRhYmxlKiBCYWNrdXBfaW5mbzo6DQogDQogICB1bG9uZyBwb3M9IHNu YXAtPnRhYmxlX2NvdW50KCk7DQogDQotICB0Ymw9IEltYWdlX2luZm86OmFkZF90 YWJsZShkYmksIHQubmFtZSgpLCAqc25hcCwgcG9zKTsNCi0NCi0gIC8vIEVycm9y IGNvZGUgaW5zZXJ0aW9uIGZvciBFUl9CQUNLVVBfQ0FUQUxPR19BRERfVEFCTEUu DQotICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9UQUJM RSIsIHRibD0gMDspOw0KKyAgdGJsPSBJbWFnZV9pbmZvOjphZGRfdGFibGUoZGJp LCBvYmosICpzbmFwLCBwb3MpOw0KIA0KICAgaWYgKCF0YmwpDQogICB7DQpAQCAt MTIxMyw4ICsxMjA0LDYgQEAgYmFja3VwOjpJbWFnZV9pbmZvOjpUYWJsZSogQmFj a3VwX2luZm86Og0KICAgICByZXR1cm4gTlVMTDsNCiAgIH0NCiANCi0gIHRibC0+ bV9vYmpfcHRyPSBvYmo7DQotDQogICBEQlVHX1BSSU5UKCJiYWNrdXAiLCgiIHRh YmxlICVzIGJhY2tlZC11cCB3aXRoICVzIGVuZ2luZSAoc25hcHNob3QgJWQpIiwN CiAgICAgICAgICAgICAgICAgICAgICAgdC5uYW1lKCkucHRyKCksIHNuYXAtPm5h bWUoKSwgc25hcC0+bV9udW0pKTsNCiAgIHJldHVybiB0Ymw7DQpAQCAtMTM1Niw2 ICsxMzQ1LDggQEAgQmFja3VwX2luZm86OmFkZF9kYl9vYmplY3QoRGIgJmRiLCBj b25zdA0KIHsNCiAgIGludCBlcnJvcj0gMDsNCiAgIHVsb25nIHBvcz0gZGIub2Jq X2NvdW50KCk7DQorICAvLy8gUG9pbnRzIGF0IHRyaWdnZXIncyB0YWJsZSwgaWYg d2UgaW5zZXJ0IGEgdHJpZ2dlci4NCisgIFRhYmxlICp0cmdfdGFibGU9IE5VTEw7 DQogDQogICBEQlVHX0FTU0VSVChvYmopOw0KICAgREJVR19BU1NFUlQob2JqLT5n ZXRfbmFtZSgpKTsNCkBAIC0xMzc5LDYgKzEzNzAsNDUgQEAgQmFja3VwX2luZm86 OmFkZF9kYl9vYmplY3QoRGIgJmRiLCBjb25zdA0KICAgfQ0KIA0KICAgLyoNCisg ICAgSWYgdGhpcyBpcyBhIHRyaWdnZXIsIGdldCB0aGUgdGFibGUgZm9yIHRoZSB0 cmlnZ2VyLiBJZiB3ZSBmYWlsIGhlcmUsDQorICAgIHdlIGFib3J0IG9wZXJhdGlv biB3aXRob3V0IGluc2VydGluZyB0aGUgb2JqZWN0IGludG8gdGhlIGNhdGFsb2cu DQorICAqLw0KKyAgaWYgKHR5cGUgPT0gQlNUUkVBTV9JVF9UUklHR0VSKQ0KKyAg ew0KKyAgICBUSEQgKnRoZD0gOjpjdXJyZW50X3RoZDsNCisgICAgb2JzOjpPYmog KnRibF9vYmo9IG9iczo6ZmluZF90YWJsZV9mb3JfdHJpZ2dlcih0aGQsICZkYi5u YW1lKCksIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2JqLT5nZXRfbmFtZSgpKTsNCisgICAgREJVR19F WEVDVVRFX0lGKCJFUl9CQUNLVVBfQ0FUQUxPR19BRERfVFJJR0dFUl8xIiwgDQor ICAgICAgICAgICAgICAgICAgICB7IGRlbGV0ZSB0Ymxfb2JqOyB0Ymxfb2JqPSBO VUxMOyB9Oyk7DQorICAgIGlmICghdGJsX29iaikNCisgICAgew0KKyAgICAgIC8v IFRPRE86IENvbnNpZGVyIG1vcmUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZS4NCisg ICAgICBtX2xvZy5yZXBvcnRfZXJyb3IoZXJyb3IsIGRiLm5hbWUoKS5wdHIoKSwg b2JqLT5nZXRfbmFtZSgpLT5wdHIoKSk7DQorICAgICAgcmV0dXJuIE5VTEw7DQor ICAgIH0NCisgICAgDQorICAgIERiICpkYl9mb3VuZD0gZmluZF9kYihkYi5uYW1l KCkpOw0KKw0KKyAgICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9DQVRBTE9H X0FERF9UUklHR0VSXzIiLCBkYl9mb3VuZD0gTlVMTDspOw0KKyAgICBpZiAoIWRi X2ZvdW5kKQ0KKyAgICB7DQorICAgICAgLy8gVE9ETzogQ29uc2lkZXIgbW9yZSBz cGVjaWZpYyBlcnJvciBtZXNzYWdlLg0KKyAgICAgIG1fbG9nLnJlcG9ydF9lcnJv cihlcnJvciwgZGIubmFtZSgpLnB0cigpLCBvYmotPmdldF9uYW1lKCktPnB0cigp KTsNCisgICAgICByZXR1cm4gTlVMTDsNCisgICAgfQ0KKyAgICANCisgICAgdHJn X3RhYmxlPSBkYl9mb3VuZC0+ZmluZF90YWJsZSgqdGJsX29iai0+Z2V0X25hbWUo KSk7DQorICAgIA0KKyAgICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9DQVRB TE9HX0FERF9UUklHR0VSXzMiLCB0cmdfdGFibGU9IE5VTEw7KTsNCisgICAgaWYg KCF0cmdfdGFibGUpDQorICAgIHsNCisgICAgICAvLyBUT0RPOiBDb25zaWRlciBt b3JlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UuDQorICAgICAgbV9sb2cucmVwb3J0 X2Vycm9yKGVycm9yLCBkYi5uYW1lKCkucHRyKCksIG9iai0+Z2V0X25hbWUoKS0+ cHRyKCkpOw0KKyAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9DQorICB9DQorDQor ICAvKg0KICAgICBBZGQgbmV3IG9iamVjdCB0byB0aGUgZGVwZW5kZW5jeSBsaXN0 LiBJZiBpdCBpcyBhIHZpZXcsIGFkZCBpdHMNCiAgICAgZGVwZW5kZW5jaWVzIGZp cnN0Lg0KICAgKi8NCkBAIC0xNDAxLDIxICsxNDMxLDIwIEBAIEJhY2t1cF9pbmZv OjphZGRfZGJfb2JqZWN0KERiICZkYiwgY29uc3QNCiANCiAgICAgTm90ZTogRVJf QkFDS1VQX0NBVEFMT0dfQUREX1RBQkxFIGlzIGRldGVjdGVkIGVsc2V3aGVyZS4N CiAgICovDQotICA6OlN0cmluZyBzdHI7DQorICBjb25zdCBjaGFyICplcnI7DQog ICBzd2l0Y2ggKHR5cGUpIHsNCi0gIGNhc2UgQlNUUkVBTV9JVF9EQjogICAgICAg IHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9EQiIpOyBicmVhazsN Ci0gIGNhc2UgQlNUUkVBTV9JVF9WSUVXOiAgICAgIHN0ci5hcHBlbmQoIkVSX0JB Q0tVUF9DQVRBTE9HX0FERF9WSUVXIik7IGJyZWFrOw0KLSAgY2FzZSBCU1RSRUFN X0lUX1NQUk9DOiAgICAgc3RyLmFwcGVuZCgiRVJfQkFDS1VQX0NBVEFMT0dfQURE X1NST1VUX1AiKTsgYnJlYWs7DQotICBjYXNlIEJTVFJFQU1fSVRfU0ZVTkM6ICAg ICBzdHIuYXBwZW5kKCJFUl9CQUNLVVBfQ0FUQUxPR19BRERfU1JPVVRfRiIpOyBi cmVhazsNCi0gIGNhc2UgQlNUUkVBTV9JVF9FVkVOVDogICAgIHN0ci5hcHBlbmQo IkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9FVkVOVCIpOyBicmVhazsNCi0gIGNhc2Ug QlNUUkVBTV9JVF9UUklHR0VSOiAgIHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9DQVRB TE9HX0FERF9UUklHR0VSIik7IGJyZWFrOw0KLSAgY2FzZSBCU1RSRUFNX0lUX1BS SVZJTEVHRTogc3RyLmFwcGVuZCgiRVJfQkFDS1VQX0NBVEFMT0dfQUREX1BSSVYi KTsgYnJlYWs7DQorICBjYXNlIEJTVFJFQU1fSVRfREI6ICAgICAgICBlcnI9ICJF Ul9CQUNLVVBfQ0FUQUxPR19BRERfREIiOyAgICAgIGJyZWFrOw0KKyAgY2FzZSBC U1RSRUFNX0lUX1ZJRVc6ICAgICAgZXJyPSAiRVJfQkFDS1VQX0NBVEFMT0dfQURE X1ZJRVciOyAgICBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9TUFJPQzogICAg IGVycj0gIkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9TUk9VVF9QIjsgYnJlYWs7DQor ICBjYXNlIEJTVFJFQU1fSVRfU0ZVTkM6ICAgICBlcnI9ICJFUl9CQUNLVVBfQ0FU QUxPR19BRERfU1JPVVRfRiI7IGJyZWFrOw0KKyAgY2FzZSBCU1RSRUFNX0lUX0VW RU5UOiAgICAgZXJyPSAiRVJfQkFDS1VQX0NBVEFMT0dfQUREX0VWRU5UIjsgICBi cmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9UUklHR0VSOiAgIGVycj0gIkVSX0JB Q0tVUF9DQVRBTE9HX0FERF9UUklHR0VSIjsgYnJlYWs7DQorICBjYXNlIEJTVFJF QU1fSVRfUFJJVklMRUdFOiBlcnI9ICJFUl9CQUNLVVBfQ0FUQUxPR19BRERfUFJJ ViI7ICAgIGJyZWFrOw0KICAgZGVmYXVsdDogYnJlYWs7DQogICB9DQotICBpZiAo c3RyLnB0cigpKQ0KLSAgew0KLSAgICBEQlVHX0VYRUNVVEVfSUYoc3RyLnB0cigp LCByZXM9IGdldF9kZXBfbm9kZV9yZXM6OkVSUk9SOyk7DQotICB9DQorICBpZiAo ZXJyKQ0KKyAgICBEQlVHX0VYRUNVVEVfSUYoZXJyLCByZXM9IGdldF9kZXBfbm9k ZV9yZXM6OkVSUk9SOyk7DQorDQogICAvLyBUYWJsZXNwYWNlIGlzIGEgc3BlY2lh bCBjYXNlIHNpbmNlIEZhbGNvbiBpcyBkaXNhYmxlZC4NCiAgIERCVUdfRVhFQ1VU RV9JRigiRVJfQkFDS1VQX0NBVEFMT0dfQUREX1RTIiwNCiAgICAgbV9sb2cucmVw b3J0X2Vycm9yKEVSX0JBQ0tVUF9DQVRBTE9HX0FERF9UUywNCkBAIC0xNDU4LDcg KzE0ODcsNyBAQCBCYWNrdXBfaW5mbzo6YWRkX2RiX29iamVjdChEYiAmZGIsIGNv bnN0DQogICAgIG9iamVjdHMuDQogICAqLw0KIA0KLSAgRGJvYmogKm89IEltYWdl X2luZm86OmFkZF9kYl9vYmplY3QoZGIsIHR5cGUsICpvYmotPmdldF9uYW1lKCks IHBvcyk7DQorICBEYm9iaiAqbz0gSW1hZ2VfaW5mbzo6YWRkX2RiX29iamVjdChk YiwgdHlwZSwgb2JqLCBwb3MpOw0KIA0KICAgaWYgKCFvKQ0KICAgew0KQEAgLTE0 NjYsNyArMTQ5NSwxMiBAQCBCYWNrdXBfaW5mbzo6YWRkX2RiX29iamVjdChEYiAm ZGIsIGNvbnN0DQogICAgIHJldHVybiBOVUxMOw0KICAgfQ0KIA0KLSAgby0+bV9v YmpfcHRyPSBvYmo7DQorICAvLyBJZiB3ZSBhcmUgaW5zZXJ0aW5nIGEgdHJpZ2dl ciwgc2F2ZSB0cmlnZ2VyJ3MgdGFibGUgY29vcmRpbmF0ZXMuDQorICBpZiAodHJn X3RhYmxlKQ0KKyAgew0KKyAgICBvLT5zbmFwX251bT0gdHJnX3RhYmxlLT5zbmFw X251bTsNCisgICAgby0+cG9zPSAgICAgIHRyZ190YWJsZS0+YmFzZS5iYXNlLnBv czsNCisgIH0NCiANCiAgIC8qDQogICAgIFN0b3JlIGEgcG9pbnRlciB0byB0aGUg Y2F0YWxvZ3VlIGl0ZW0gaW4gdGhlIGRlcC4gbGlzdCBub2RlLiBJZiB0aGlzIG5v ZGUNCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9iYWNrdXAvaW1hZ2VfaW5mby5j YycNCi0tLSBhL3NxbC9iYWNrdXAvaW1hZ2VfaW5mby5jYwkyMDA5LTExLTA0IDE0 OjE4OjIxICswMDAwDQorKysgYi9zcWwvYmFja3VwL2ltYWdlX2luZm8uY2MJMjAw OS0xMi0xMCAxMToyNDowNyArMDAwMA0KQEAgLTExMSw5ICsxMTEsOSBAQCBJbWFn ZV9pbmZvOjp+SW1hZ2VfaW5mbygpDQogKi8NCiANCiBJbWFnZV9pbmZvOjpEYioN Ci1JbWFnZV9pbmZvOjphZGRfZGIoY29uc3QgU3RyaW5nICZkYl9uYW1lLCB1aW50 IHBvcykNCitJbWFnZV9pbmZvOjphZGRfZGIob2JzOjpPYmogKmRiX29iaiwgdWlu dCBwb3MpDQogew0KLSAgRGIgKmRiPSBuZXcgKCZtZW1fcm9vdCkgRGIoZGJfbmFt ZSk7DQorICBEYiAqZGI9IG5ldyAoJm1lbV9yb290KSBEYihkYl9vYmopOw0KIA0K ICAgaWYgKCFkYikNCiAgICAgcmV0dXJuIE5VTEw7DQpAQCAtMTIzLDcgKzEyMywx OCBAQCBJbWFnZV9pbmZvOjphZGRfZGIoY29uc3QgU3RyaW5nICZkYl9uYW1lDQog ICAgIG1fZGJzW3Bvc10tPn5EYigpOw0KIA0KICAgaWYgKG1fZGJzLmluc2VydChw b3MsIGRiKSkNCisgIHsNCisgICAgLyoNCisgICAgICBXZSBkaWQgbm90IG1hbmFn ZSB0byBzdWNjZXNzZnVsbHkgYWRkIGRiIHRvIHRoZSBjYXRhbG9nLiBUaHVzIHdl IG5lZWQgDQorICAgICAgdG8gZGVzdHJveSBpdCBidXQgZmlyc3Qgd2Ugc2V0IG1f b2JqX3B0ciB0byBOVUxMIHNvIHRoYXQgaXQgaXMgbm90IA0KKyAgICAgIGRlbGV0 ZWQgaW4gdGhlIGRlc3RydWN0b3IuIFdlIGFzc3VtZSBvd25lcnNoaXAgb2YgdGhl IG9iczo6T2JqIA0KKyAgICAgIGluc3RhbmNlIG9ubHkgaWYgdGhlIG9iamVjdCBo YXMgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlIA0KKyAgICAgIGNhdGFs b2cuDQorICAgICovIA0KKyAgICBkYi0+bV9vYmpfcHRyPSBOVUxMOw0KKyAgICBk Yi0+fkRiKCk7DQogICAgIHJldHVybiBOVUxMOw0KKyAgfQ0KIA0KICAgZGItPmJh c2UucG9zPSBwb3M7DQogDQpAQCAtMTQ0LDkgKzE1NSw5IEBAIEltYWdlX2luZm86 OmFkZF9kYihjb25zdCBTdHJpbmcgJmRiX25hbWUNCiAqLw0KIA0KIEltYWdlX2lu Zm86OlRzKg0KLUltYWdlX2luZm86OmFkZF90cyhjb25zdCBTdHJpbmcgJnRzX25h bWUsIHVpbnQgcG9zKQ0KK0ltYWdlX2luZm86OmFkZF90cyhvYnM6Ok9iaiAqdHNf b2JqLCB1aW50IHBvcykNCiB7DQotICBUcyAqdHM9IG5ldyAoJm1lbV9yb290KSBU cyh0c19uYW1lKTsNCisgIFRzICp0cz0gbmV3ICgmbWVtX3Jvb3QpIFRzKHRzX29i aik7DQogDQogICBpZiAoIXRzKQ0KICAgICByZXR1cm4gTlVMTDsNCkBAIC0xNTYs NyArMTY3LDE4IEBAIEltYWdlX2luZm86OmFkZF90cyhjb25zdCBTdHJpbmcgJnRz X25hbWUNCiAgICAgbV90c19tYXBbcG9zXS0+flRzKCk7DQogDQogICBpZiAobV90 c19tYXAuaW5zZXJ0KHBvcywgdHMpKQ0KKyAgew0KKyAgICAvKg0KKyAgICAgIFdl IGRpZCBub3QgbWFuYWdlIHRvIHN1Y2Nlc3NmdWxseSBhZGQgdHMgdG8gdGhlIGNh dGFsb2cuIFRodXMgd2UgbmVlZCANCisgICAgICB0byBkZXN0cm95IGl0IGJ1dCBm aXJzdCB3ZSBzZXQgbV9vYmpfcHRyIHRvIE5VTEwgc28gdGhhdCBpdCBpcyBub3Qg DQorICAgICAgZGVsZXRlZCBpbiB0aGUgZGVzdHJ1Y3Rvci4gV2UgYXNzdW1lIG93 bmVyc2hpcCBvZiB0aGUgb2JzOjpPYmogDQorICAgICAgaW5zdGFuY2Ugb25seSBp ZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byB0aGUg DQorICAgICAgY2F0YWxvZy4NCisgICAgKi8gDQorICAgIHRzLT5tX29ial9wdHI9 IE5VTEw7DQorICAgIHRzLT5+VHMoKTsNCiAgICAgcmV0dXJuIE5VTEw7DQorICB9 DQogDQogICB0cy0+YmFzZS5wb3M9IHBvczsNCiANCkBAIC0yMTUsMTUgKzIzNyw0 NSBAQCBpbnQgSW1hZ2VfaW5mbzo6YWRkX3NuYXBzaG90KFNuYXBzaG90X2luDQog fQ0KIA0KIA0KLS8vLyAgQ2hlY2sgaWYgY2F0YWxvZ3VlIGNvbnRhaW5zIGdpdmVu IGRhdGFiYXNlLg0KKy8qKg0KKyAgRmluZCBpbiB0aGUgY2F0YWxvZyBhIGRhdGFi YXNlIHdpdGggdGhlIGdpdmVuIG5hbWUuDQorDQorICBAcGFyYW1baW5dICAgIG5h bWUgb2YgdGhlIGRhdGFiYXNlDQorDQorICBAcmV0dXJuIFBvaW50ZXIgdG8gdGhl IGNhdGFsb2cgZW50cnkgZm9yIHRoZSBkYXRhYmFzZSBpZiBmb3VuZCwgDQorICBO VUxMIG90aGVyd2lzZS4NCiANCi1ib29sIEltYWdlX2luZm86Omhhc19kYihjb25z dCBTdHJpbmcgJmRiX25hbWUpIGNvbnN0DQorICBAdG9kbyBNb3JlIGVmZmljaWVu dCBpbXBsZW1lbnRhdGlvbiwgZS5nLiB1c2luZyBoYXNoLg0KKyovDQorDQorSW1h Z2VfaW5mbzo6RGIqIEltYWdlX2luZm86OmZpbmRfZGIoY29uc3QgU3RyaW5nICZk Yl9uYW1lKSBjb25zdA0KIHsNCiAgIGZvciAodWludCBuPTA7IG4gPCBtX2Ricy5j b3VudCgpIDsgKytuKQ0KLSAgICBpZiAobV9kYnNbbl0gJiYgbV9kYnNbbl0tPm5h bWUoKSA9PSBkYl9uYW1lKQ0KLSAgICAgIHJldHVybiBUUlVFOw0KKyAgICBpZiAo bV9kYnNbbl0gJiYgbV9kYnNbbl0tPm1fb2JqX3B0ci0+aXNfbXlfbmFtZSgmZGJf bmFtZSkpDQorICAgICAgcmV0dXJuIG1fZGJzW25dOw0KIA0KLSAgcmV0dXJuIEZB TFNFOw0KKyAgcmV0dXJuIE5VTEw7DQorfQ0KKw0KKw0KKy8qKg0KKyAgRmluZCBp biB0aGUgY2F0YWxvZyBhIHRhYmxlc3BhY2Ugd2l0aCB0aGUgZ2l2ZW4gbmFtZS4N CisNCisgIEBwYXJhbVtpbl0gICAgbmFtZSBvZiB0aGUgdGFibGVzcGFjZQ0KKw0K KyAgQHJldHVybiBQb2ludGVyIHRvIHRoZSBjYXRhbG9nIGVudHJ5IGZvciB0aGUg dGFibGVzcGFjZSBpZiBmb3VuZCwgDQorICBOVUxMIG90aGVyd2lzZS4NCisNCisg IEB0b2RvIE1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLCBlLmcuIHVzaW5n IGhhc2guDQorKi8NCisNCitJbWFnZV9pbmZvOjpUcyogSW1hZ2VfaW5mbzo6Zmlu ZF90cyhjb25zdCBTdHJpbmcgJnRzX25hbWUpIGNvbnN0DQorew0KKyAgZm9yICh1 aW50IG49MDsgbiA8IG1fdHNfbWFwLmNvdW50KCkgOyArK24pDQorICAgIGlmICht X3RzX21hcFtuXSAmJiBtX3RzX21hcFtuXS0+bV9vYmpfcHRyLT5pc19teV9uYW1l KCZ0c19uYW1lKSkNCisgICAgICByZXR1cm4gbV90c19tYXBbbl07DQorDQorICBy ZXR1cm4gTlVMTDsNCiB9DQogDQogDQpAQCAtMjQ2LDUzICsyOTgsMzEgQEAgYm9v bCBJbWFnZV9pbmZvOjpoYXNfZGIoY29uc3QgU3RyaW5nICZkYg0KICovDQogDQog SW1hZ2VfaW5mbzo6RGJvYmoqIEltYWdlX2luZm86OmFkZF9kYl9vYmplY3QoRGIg JmRiLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGVudW1fYnN0cmVhbV9pdGVtX3R5cGUgdHlwZSwNCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCA6OlN0 cmluZyAmbmFtZSwgdWxvbmcgcG9zKQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9ial90eXBlIHR5cGUsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzOjpP YmogKm9ial9wdHIsIHVsb25nIHBvcykNCiB7DQotICBEYm9iaiAqb2JqPSBuZXcg KCZtZW1fcm9vdCkgRGJvYmooZGIsIHR5cGUsIG5hbWUpOw0KKyAgRGJvYmogKm9i aj0gbmV3ICgmbWVtX3Jvb3QpIERib2JqKGRiLCB0eXBlLCBvYmpfcHRyKTsNCiAN CiAgIGlmICghb2JqKQ0KICAgICByZXR1cm4gTlVMTDsNCiANCiAgIGlmIChkYi5h ZGRfb2JqKCpvYmosIHBvcykpDQorICB7DQorICAgIC8qDQorICAgICAgV2UgZGlk IG5vdCBtYW5hZ2UgdG8gc3VjY2Vzc2Z1bGx5IGFkZCBvYmogdG8gdGhlIGNhdGFs b2cuIFRodXMgd2UgbmVlZCANCisgICAgICB0byBkZXN0cm95IGl0IGJ1dCBmaXJz dCB3ZSBzZXQgbV9vYmpfcHRyIHRvIE5VTEwgc28gdGhhdCBpdCBpcyBub3QgDQor ICAgICAgZGVsZXRlZCBpbiB0aGUgZGVzdHJ1Y3Rvci4gV2UgYXNzdW1lIG93bmVy c2hpcCBvZiB0aGUgb2JzOjpPYmogDQorICAgICAgaW5zdGFuY2Ugb25seSBpZiB0 aGUgb2JqZWN0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byB0aGUgDQor ICAgICAgY2F0YWxvZy4NCisgICAgKi8gDQorICAgIG9iai0+bV9vYmpfcHRyPSBO VUxMOw0KKyAgICBvYmotPn5EYm9iaigpOw0KICAgICByZXR1cm4gTlVMTDsNCisg IH0NCiANCiAgIG9iai0+YmFzZS5wb3M9IHBvczsNCiAgIGNvdW50X29iamVjdCh0 eXBlKTsNCiANCi0gIC8qDQotICAgIElmIHRoaXMgaXMgYSB0cmlnZ2VyLCBnZXQg dGhlIHRhYmxlIGZvciB0aGUgdHJpZ2dlci4NCi0gICAgRG8gdGhpcyBvbmx5IGZv ciBiYWNrdXAuDQotICAqLw0KLSAgVEhEICp0aGQ9IDo6Y3VycmVudF90aGQ7DQot ICBpZiAoKHR5cGUgPT0gQlNUUkVBTV9JVF9UUklHR0VSKSAmJiANCi0gICAgICAo dGhkLT5iYWNrdXBfaW5fcHJvZ3Jlc3MgPT0gU1FMQ09NX0JBQ0tVUCkpDQotICB7 DQotICAgIG9iczo6T2JqICp0Ymxfb2JqPSBvYnM6OmZpbmRfdGFibGVfZm9yX3Ry aWdnZXIodGhkLCAmZGIubmFtZSgpLCAmbmFtZSk7DQotICAgIERCVUdfRVhFQ1VU RV9JRigiRVJfQkFDS1VQX0NBVEFMT0dfQUREX1RSSUdHRVJfMSIsIHJldHVybiBO VUxMOyk7DQotICAgIGlmICghdGJsX29iaikNCi0gICAgICByZXR1cm4gTlVMTDsN Ci0gICAgDQotICAgIFRhYmxlICp0YmxfZm91bmQ7DQotICAgIERiICpkYl9mb3Vu ZD0gZmluZF9kYihkYi5uYW1lKCkpOw0KLQ0KLSAgICBEQlVHX0VYRUNVVEVfSUYo IkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9UUklHR0VSXzIiLCByZXR1cm4gTlVMTDsp Ow0KLSAgICBpZiAoIWRiX2ZvdW5kKQ0KLSAgICAgIHJldHVybiBOVUxMOw0KLSAg ICANCi0gICAgdGJsX2ZvdW5kPSBkYl9mb3VuZC0+ZmluZF90YWJsZSgqdGJsX29i ai0+Z2V0X25hbWUoKSk7DQotICAgIA0KLSAgICBEQlVHX0VYRUNVVEVfSUYoIkVS X0JBQ0tVUF9DQVRBTE9HX0FERF9UUklHR0VSXzMiLCByZXR1cm4gTlVMTDspOw0K LSAgICBpZiAoIXRibF9mb3VuZCkNCi0gICAgICByZXR1cm4gTlVMTDsNCi0gICAg DQotICAgIC8qIA0KLSAgICAgIFNhdmUgdGFibGUncyBzbmFwIGFuZCBwb3NpdGlv biB2YWx1ZXMuIA0KLSAgICAqLw0KLSAgICBvYmotPnNuYXBfbnVtPSB0YmxfZm91 bmQtPnNuYXBfbnVtOw0KLSAgICBvYmotPnBvcz0gdGJsX2ZvdW5kLT5iYXNlLmJh c2UucG9zOw0KLSAgfQ0KLSAgDQogICByZXR1cm4gb2JqOw0KIH0NCiANCkBAIC0z MzgsMjUgKzM2OCwzOSBAQCBJbWFnZV9pbmZvOjpEYm9iaiogSW1hZ2VfaW5mbzo6 Z2V0X2RiX29iDQogKi8NCiANCiBJbWFnZV9pbmZvOjpUYWJsZSoNCi1JbWFnZV9p bmZvOjphZGRfdGFibGUoRGIgJmRiLCBjb25zdCA6OlN0cmluZyAmdGFibGVfbmFt ZSwNCitJbWFnZV9pbmZvOjphZGRfdGFibGUoRGIgJmRiLCBvYnM6Ok9iaiAqdGFi bGVfb2JqLA0KICAgICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdF9pbmZvICZz bmFwLCB1bG9uZyBwb3MpDQogew0KLSAgVGFibGUgKnRibD0gbmV3ICgmbWVtX3Jv b3QpIFRhYmxlKGRiLCB0YWJsZV9uYW1lKTsNCisgIC8vIEVycm9yIGNvZGUgaW5z ZXJ0aW9uIGZvciBFUl9CQUNLVVBfQ0FUQUxPR19BRERfVEFCTEUuDQorICBEQlVH X0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9DQVRBTE9HX0FERF9UQUJMRSIsIHJldHVy biBOVUxMOyk7DQorDQorICBpZiAoIXNuYXAubV9udW0pDQorICAgIHNuYXAubV9u dW09IGFkZF9zbmFwc2hvdChzbmFwKTsgLy8gUmVwb3J0cyBlcnJvcnMuDQorDQor ICBpZiAoIXNuYXAubV9udW0pDQorICAgcmV0dXJuIE5VTEw7DQorDQorICBUYWJs ZSAqdGJsPSBuZXcgKCZtZW1fcm9vdCkgVGFibGUoZGIsIHRhYmxlX29iaik7DQog DQogICBpZiAoIXRibCkNCiAgICAgcmV0dXJuIE5VTEw7DQogDQogICBpZiAoc25h cC5hZGRfdGFibGUoKnRibCwgcG9zKSkgICAgLy8gUmVwb3J0cyBlcnJvcnMuDQor ICB7DQorICAgIC8qDQorICAgICAgV2UgZGlkIG5vdCBtYW5hZ2UgdG8gc3VjY2Vz c2Z1bGx5IGFkZCB0YmwgdG8gdGhlIGNhdGFsb2cuIFRodXMgd2UgbmVlZCANCisg ICAgICB0byBkZXN0cm95IGl0IGJ1dCBmaXJzdCB3ZSBzZXQgbV9vYmpfcHRyIHRv IE5VTEwgc28gdGhhdCBpdCBpcyBub3QgDQorICAgICAgZGVsZXRlZCBpbiB0aGUg ZGVzdHJ1Y3Rvci4gV2UgYXNzdW1lIG93bmVyc2hpcCBvZiB0aGUgb2JzOjpPYmog DQorICAgICAgaW5zdGFuY2Ugb25seSBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHN1 Y2Nlc3NmdWxseSBhZGRlZCB0byB0aGUgDQorICAgICAgY2F0YWxvZy4NCisgICAg Ki8gDQorICAgIHRibC0+bV9vYmpfcHRyPSBOVUxMOw0KKyAgICB0YmwtPn5UYWJs ZSgpOw0KICAgICByZXR1cm4gTlVMTDsNCisgIH0NCiANCiAgIGRiLmFkZF90YWJs ZSgqdGJsKTsgICAgICAgICAgICAgICAvLyBOZXZlciBlcnJvcnMuDQogDQotICBp ZiAoIXNuYXAubV9udW0pDQotICAgIHNuYXAubV9udW09IGFkZF9zbmFwc2hvdChz bmFwKTsgLy8gUmVwb3J0cyBlcnJvcnMuDQotDQotICBpZiAoIXNuYXAubV9udW0p DQotICAgcmV0dXJuIE5VTEw7DQotDQogICAvLyBSZWNvcmQgdGhlIHRhYmxlIGNv dW50IGZvciB0aGUgc3RyZWFtIGhlYWRlci4NCiAgIHN0X2JzdHJlYW1fc25hcHNo b3RfaW5mbyAmaW5mbz0gc25hcHNob3Rbc25hcC5tX251bS0xXTsNCiAgIGluZm8u dGFibGVfY291bnQ9IHNuYXAudGFibGVfY291bnQoKTsNCkBAIC0zOTQsMjcgKzQz OCw2IEBAIEltYWdlX2luZm86OmdldF90YWJsZSh1c2hvcnQgc25hcF9udW0sIHUN CiAgIHJldHVybiB0Ymw7DQogfQ0KICAgDQotLyoqDQotICBSZXR1cm4gZGF0YWJh c2Ugc3RvcmVkIGluIHRoZSBjYXRhbG9ndWUuDQotIA0KLSAgQHBhcmFtW2luXSBk Yl9uYW1lICBUaGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UuDQotIA0KLSAgQHJldHVy bnMgUG9pbnRlciB0byBAYyBJbWFnZV9pbmZvOjpEYiBpbnN0YW5jZSBzdG9yaW5n IGluZm9ybWF0aW9uDQotICBhYm91dCB0aGUgZGF0YWJhc2Ugb3IgTlVMTCBpZiB0 aGUgZGF0YWJhc2UgaXMgbm90IGZvdW5kLg0KLSovDQotDQotSW1hZ2VfaW5mbzo6 RGIqDQotSW1hZ2VfaW5mbzo6ZmluZF9kYihjb25zdCBTdHJpbmcgJmRiX25hbWUp DQotew0KLSAgZm9yICh1aW50IG49MDsgbiA8IGRiX2NvdW50KCk7ICsrbikNCi0g IHsNCi0gICAgSW1hZ2VfaW5mbzo6RGIgKmRiPSBnZXRfZGIobik7DQotICAgIA0K LSAgICBpZiAoZGIgJiYgKGRiLT5uYW1lKCkgPT0gZGJfbmFtZSkpDQotICAgICAg cmV0dXJuIGRiOw0KLSAgfQ0KLSAgcmV0dXJuIE5VTEw7DQotfQ0KIA0KIC8qKg0K ICAgRmluZCBvYmplY3QgaW4gdGhlIGNhdGFsb2d1ZS4NCg0KPT09IG1vZGlmaWVk IGZpbGUgJ3NxbC9iYWNrdXAvaW1hZ2VfaW5mby5oJw0KLS0tIGEvc3FsL2JhY2t1 cC9pbWFnZV9pbmZvLmgJMjAwOS0xMS0wNCAxNDoxODoyMSArMDAwMA0KKysrIGIv c3FsL2JhY2t1cC9pbWFnZV9pbmZvLmgJMjAwOS0xMi0xMCAxMToyNDowNyArMDAw MA0KQEAgLTEwNSw3ICsxMDUsOCBAQCBwdWJsaWM6IC8vIFB1YmxpYyBpbnRlcmZh Y2UuDQogDQogICAvLyBFeGFtaW5lIGNvbnRlbnRzIG9mIHRoZSBjYXRhbG9ndWUu DQogDQotICBib29sIGhhc19kYihjb25zdCBTdHJpbmcmKSBjb25zdDsNCisgIERi KiBmaW5kX2RiKGNvbnN0IFN0cmluZyYpIGNvbnN0Ow0KKyAgVHMqIGZpbmRfdHMo Y29uc3QgU3RyaW5nJikgY29uc3Q7DQogDQogICAvLyBSZXRyaWV2ZSBvYmplY3Rz IHVzaW5nIHRoZWlyIGNvb3JkaW5hdGVzLg0KIA0KQEAgLTExMyw3ICsxMTQsNiBA QCBwdWJsaWM6IC8vIFB1YmxpYyBpbnRlcmZhY2UuDQogICBUcyogICAgZ2V0X3Rz KHVpbnQgcG9zKSBjb25zdDsNCiAgIERib2JqKiBnZXRfZGJfb2JqZWN0KHVpbnQg ZGJfbnVtLCB1bG9uZyBwb3MpIGNvbnN0Ow0KICAgVGFibGUqIGdldF90YWJsZSh1 c2hvcnQgc25hcF9udW0sIHVsb25nIHBvcykgY29uc3Q7DQotICBEYiogICAgZmlu ZF9kYihjb25zdCBTdHJpbmcgJmRiX25hbWUpOw0KIA0KICAgLy8gSXRlcmF0b3Jz IGZvciBlbnVtZXJhdGluZyB0aGUgY29udGVudHMgb2YgdGhlIGFyY2hpdmUuDQog DQpAQCAtMTQ2LDEyICsxNDYsMTAgQEAgcHJvdGVjdGVkOiAvLyBJbnRlcm5hbCBp bnRlcmZhY2UuDQogICAvLyBQb3B1bGF0ZSB0aGUgY2F0YWxvZ3VlLg0KIA0KICAg aW50ICAgIGFkZF9zbmFwc2hvdChTbmFwc2hvdF9pbmZvJik7DQotICBEYiogICAg YWRkX2RiKGNvbnN0IFN0cmluZyAmZGJfbmFtZSwgdWludCBwb3MpOw0KLSAgVHMq ICAgIGFkZF90cyhjb25zdCBTdHJpbmcgJmRiX25hbWUsIHVpbnQgcG9zKTsNCi0g IERib2JqKiBhZGRfZGJfb2JqZWN0KERiICZkYiwgY29uc3Qgb2JqX3R5cGUgdHlw ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IDo6U3RyaW5nICZuYW1l LCB1bG9uZyBwb3MpOw0KLSAgVGFibGUqIGFkZF90YWJsZShEYiAmZGIsIGNvbnN0 IDo6U3RyaW5nICZ0YWJsZV9uYW1lLA0KLSAgICAgICAgICAgICAgICAgICBTbmFw c2hvdF9pbmZvICZzbmFwLCB1bG9uZyBwb3MpOw0KKyAgRGIqICAgIGFkZF9kYihv YnM6Ok9iaiAqZGIsIHVpbnQgcG9zKTsNCisgIFRzKiAgICBhZGRfdHMob2JzOjpP YmogKnRzLCB1aW50IHBvcyk7DQorICBEYm9iaiogYWRkX2RiX29iamVjdChEYiAm ZGIsIGNvbnN0IG9ial90eXBlIHR5cGUsIG9iczo6T2JqICpvYmosIHVsb25nIHBv cyk7DQorICBUYWJsZSogYWRkX3RhYmxlKERiICZkYiwgb2JzOjpPYmogKnRibCwg U25hcHNob3RfaW5mbyAmc25hcCwgdWxvbmcgcG9zKTsNCiANCiAgIC8vIElNUExF TUVOVEFUSU9ODQogDQpAQCAtMzgzLDkgKzM4MSw2IEBAIHB1YmxpYzoNCiAgIC8v LyBQb2ludGVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIEBjIG9iczo6T2JqIGluc3Rh bmNlLCBpZiBpdCBpcyBrbm93bi4NCiAgIG9iczo6T2JqICAqbV9vYmpfcHRyOw0K IA0KLSAgLy8vIENyZWF0ZSBjb3JyZXNwb25kaW5nIEBjIG9iczo6T2JqIGluc3Rh bmNlIGZyb20gYSBzZXJpYWxpemF0aW9uIHN0cmluZy4NCi0gIHZpcnR1YWwgb2Jz OjpPYmogKm1hdGVyaWFsaXplKHVpbnQgdmVyLCBjb25zdCA6OlN0cmluZyYpID0w Ow0KLQ0KICAgLy8vIERlZmluaXRpb24gZm9yIGEgdGFibGUgbmFtZSBpbiBhIFRh YmxlX3JlZiBvYmplY3QuDQogICB0eXBlZGVmIFRhYmxlX3JlZjo6bmFtZV9idWYg ZGVzY3JpYmVfYnVmOw0KIA0KQEAgLTM5NCwxOCArMzg5LDE1IEBAIHB1YmxpYzoN CiANCiBwcm90ZWN0ZWQ6DQogDQotICBTdHJpbmcgbV9uYW1lOyAgLy8vPCBGb3Ig c3RvcmluZyBvYmplY3QncyBuYW1lLg0KLQ0KLSAgdm9pZCBzdG9yZV9uYW1lKGNv bnN0IFN0cmluZyYpOw0KLQ0KLSAgT2JqKCk7DQorICBPYmoob2JzOjpPYmogKm9i al9wdHIpOw0KKyAgdm9pZCBzdG9yZV9pbmZvKGNvbnN0IG9ial90eXBlIHR5cGUp Ow0KIA0KICAgZnJpZW5kIGNsYXNzIEltYWdlX2luZm87DQogfTsNCiANCiANCiBp bmxpbmUNCi1JbWFnZV9pbmZvOjpPYmo6Ok9iaigpIDptX29ial9wdHIoTlVMTCkN CitJbWFnZV9pbmZvOjpPYmo6Ok9iaihvYnM6Ok9iaiAqb2JqX3B0cikgOm1fb2Jq X3B0cihvYmpfcHRyKQ0KIHt9DQogDQogDQpAQCAtNDIxLDEyICs0MTMsMTMgQEAg SW1hZ2VfaW5mbzo6T2JqOjp+T2JqKCkNCiANCiBjbGFzcyBJbWFnZV9pbmZvOjpU cw0KICA6IHB1YmxpYyBzdF9ic3RyZWFtX3RzX2luZm8sDQotICAgcHVibGljIElt YWdlX2luZm86Ok9iag0KKyAgIHB1YmxpYyBJbWFnZV9pbmZvOjpPYmosDQorICAg cHVibGljIERiX3JlZg0KIHsNCiBwdWJsaWM6DQogDQogICAvLy8gQ29uc3RydWN0 b3IuDQotICBUcyhjb25zdCA6OlN0cmluZyYpOw0KKyAgVHMob2JzOjpPYmogKm9i al9wdHIpOw0KIA0KICAgLy8vIFRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1h Z2UuDQogICBjb25zdCBzdF9ic3RyZWFtX2l0ZW1faW5mbyogaW5mbygpIGNvbnN0 Ow0KQEAgLTQzOSwxMSArNDMyLDEwIEBAIHB1YmxpYzoNCiANCiANCiBpbmxpbmUN Ci1JbWFnZV9pbmZvOjpUczo6VHMoY29uc3QgOjpTdHJpbmcgJm5hbWUpDQorSW1h Z2VfaW5mbzo6VHM6OlRzKG9iczo6T2JqICpvYmpfcHRyKQ0KKyAgOiBPYmoob2Jq X3B0ciksIERiX3JlZigqb2JqX3B0ci0+Z2V0X25hbWUoKSkNCiB7DQotICBiemVy bygmYmFzZSwgc2l6ZW9mKGJhc2UpKTsNCi0gIGJhc2UudHlwZT0gQlNUUkVBTV9J VF9UQUJMRVNQQUNFOw0KLSAgc3RvcmVfbmFtZShuYW1lKTsNCisgIHN0b3JlX2lu Zm8oQlNUUkVBTV9JVF9UQUJMRVNQQUNFKTsNCiB9DQogDQogDQpAQCAtNDU5LDcg KzQ1MSw3IEBAIGNsYXNzIEltYWdlX2luZm86OkRiDQogcHVibGljOg0KIA0KICAg Ly8vIENvbnN0dWN0b3IuDQotICBEYihjb25zdCA6OlN0cmluZyYpOw0KKyAgRGIo b2JzOjpPYmogKm9ial9wdHIpOw0KIA0KICAgY29uc3Qgc3RfYnN0cmVhbV9pdGVt X2luZm8qIGluZm8oKSBjb25zdDsNCiAgIC8vLyBUaGUgZGF0YWJhc2UgaW5mb3Jt YXRpb24gaW4gdGhlIHN0cmVhbS4NCkBAIC00NzIsNyArNDY0LDggQEAgcHVibGlj Og0KICAgLy8vIERlc2NyaXB0aW9uIG9mIG9iamVjdC4NCiAgIGNvbnN0IGNoYXIq IGRlc2NyaWJlKGRlc2NyaWJlX2J1ZiYpIGNvbnN0Ow0KICAgLy8vIFNlYXJjaCBm b3IgdGFibGUgaW4gZGF0YWJhc2UgdGFibGUgbGlzdC4NCi0gIFRhYmxlKiBmaW5k X3RhYmxlKGNvbnN0IFN0cmluZyAmdGFibGVfbmFtZSk7DQorICBUYWJsZSogZmlu ZF90YWJsZShjb25zdCBTdHJpbmcgJnRhYmxlX25hbWUpIGNvbnN0Ow0KKyAgRGJv YmoqIGZpbmRfb2JqZWN0KGNvbnN0IG9ial90eXBlIHR5cGUsIGNvbnN0IFN0cmlu ZyAmbmFtZSkgY29uc3Q7DQogDQogcHJpdmF0ZToNCiANCkBAIC00OTEsMTMgKzQ4 NCwxMSBAQCBwcml2YXRlOg0KIA0KIA0KIGlubGluZQ0KLUltYWdlX2luZm86OkRi OjpEYihjb25zdCA6OlN0cmluZyAmbmFtZSkNCi0gOkRiX3JlZihJbWFnZV9pbmZv OjpPYmo6Om1fbmFtZSksDQotICBtX29ial9jb3VudCgwKSwgZmlyc3RfdGFibGUo TlVMTCksIGxhc3RfdGFibGUoTlVMTCksIG1fb2JqcygxMjgpDQotew0KLSAgYnpl cm8oJmJhc2UsIHNpemVvZihiYXNlKSk7DQotICBiYXNlLnR5cGU9IEJTVFJFQU1f SVRfREI7DQotICBzdG9yZV9uYW1lKG5hbWUpOw0KK0ltYWdlX2luZm86OkRiOjpE YihvYnM6Ok9iaiAqb2JqX3B0cikNCisgOiBPYmoob2JqX3B0ciksIERiX3JlZigq b2JqX3B0ci0+Z2V0X25hbWUoKSksDQorICAgbV9vYmpfY291bnQoMCksIGZpcnN0 X3RhYmxlKE5VTEwpLCBsYXN0X3RhYmxlKE5VTEwpLCBtX29ianMoMTI4KQ0KK3sN CisgIHN0b3JlX2luZm8oQlNUUkVBTV9JVF9EQik7DQogfQ0KIA0KIA0KQEAgLTUx OCw3ICs1MDksNyBAQCBjbGFzcyBJbWFnZV9pbmZvOjpEYm9iag0KIHB1YmxpYzoN CiANCiAgIC8vLyBDb25zdHJ1Y3Rvci4NCi0gIERib2JqKGNvbnN0IERiICZkYiwg Y29uc3Qgb2JqX3R5cGUgdHlwZSwgY29uc3QgOjpTdHJpbmcgJm5hbWUpOw0KKyAg RGJvYmooY29uc3QgRGIgJmRiLCBjb25zdCBvYmpfdHlwZSB0eXBlLCBvYnM6Ok9i aiAqb2JqX3B0cik7DQogDQogICBjb25zdCBzdF9ic3RyZWFtX2l0ZW1faW5mbyog aW5mbygpIGNvbnN0Ow0KICAgb2JzOjpPYmoqIG1hdGVyaWFsaXplKHVpbnQgdmVy LCBjb25zdCA6OlN0cmluZyAmc2RhdGEpOw0KQEAgLTUzMSwxNCArNTIyLDExIEBA IHB1YmxpYzoNCiANCiANCiBpbmxpbmUNCi1JbWFnZV9pbmZvOjpEYm9iajo6RGJv YmooY29uc3QgRGIgJmRiLCBjb25zdCBvYmpfdHlwZSB0eXBlLA0KLSAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCA6OlN0cmluZyAmbmFtZSkNCi0gIDpUYWJs ZV9yZWYoZGIubmFtZSgpLCBJbWFnZV9pbmZvOjpPYmo6Om1fbmFtZSksIG1fZGIo ZGIpDQorSW1hZ2VfaW5mbzo6RGJvYmo6OkRib2JqKGNvbnN0IERiICZkYiwgY29u c3Qgb2JqX3R5cGUgdHlwZSwgb2JzOjpPYmogKm9ial9wdHIpDQorICA6IE9iaihv YmpfcHRyKSwgVGFibGVfcmVmKGRiLm5hbWUoKSwgKm9ial9wdHItPmdldF9uYW1l KCkpLCBtX2RiKGRiKQ0KIHsNCi0gIGJ6ZXJvKCZiYXNlLCBzaXplb2YoYmFzZSkp Ow0KLSAgYmFzZS50eXBlPSB0eXBlOw0KKyAgc3RvcmVfaW5mbyh0eXBlKTsNCiAg IHN0X2JzdHJlYW1fZGJpdGVtX2luZm86OmRiPSBjb25zdF9jYXN0PHN0X2JzdHJl YW1fZGJfaW5mbyo+KG1fZGIuZGJfaW5mbygpKTsNCi0gIHN0b3JlX25hbWUobmFt ZSk7DQogfQ0KIA0KIA0KQEAgLTU1Niw3ICs1NDQsNyBAQCBjbGFzcyBJbWFnZV9p bmZvOjpUYWJsZQ0KIHB1YmxpYzoNCiANCiAgIC8vLyBDb25zdHJ1Y3Rvci4NCi0g IFRhYmxlKGNvbnN0IERiICZkYiwgY29uc3QgOjpTdHJpbmcgJm5hbWUpOw0KKyAg VGFibGUoY29uc3QgRGIgJmRiLCBvYnM6Ok9iaiAqb2JqX3B0cik7DQogDQogICBj b25zdCBzdF9ic3RyZWFtX2l0ZW1faW5mbyogaW5mbygpIGNvbnN0Ow0KICAgb2Jz OjpPYmoqIG1hdGVyaWFsaXplKHVpbnQgdmVyLCBjb25zdCA6OlN0cmluZyAmc2Rh dGEpOw0KQEAgLTU3MSwxNSArNTU5LDEzIEBAIHB1YmxpYzoNCiANCiANCiBpbmxp bmUNCi1JbWFnZV9pbmZvOjpUYWJsZTo6VGFibGUoY29uc3QgRGIgJmRiLCBjb25z dCA6OlN0cmluZyAmbmFtZSkNCi0gIDpUYWJsZV9yZWYoZGIubmFtZSgpLCBJbWFn ZV9pbmZvOjpPYmo6Om1fbmFtZSksIG1fZGIoZGIpLCBuZXh0X3RhYmxlKE5VTEwp LA0KLSAgIG1fdGFibGUoTlVMTCkNCi17DQotICBiemVybygmYmFzZSwgc2l6ZW9m KGJhc2UpKTsNCi0gIGJhc2UuYmFzZS50eXBlPSBCU1RSRUFNX0lUX1RBQkxFOw0K LSAgYmFzZS5kYj0gY29uc3RfY2FzdDxzdF9ic3RyZWFtX2RiX2luZm8qPihkYi5k Yl9pbmZvKCkpOw0KK0ltYWdlX2luZm86OlRhYmxlOjpUYWJsZShjb25zdCBEYiAm ZGIsIG9iczo6T2JqICpvYmpfcHRyKQ0KKyAgOiBPYmoob2JqX3B0ciksIFRhYmxl X3JlZihkYi5uYW1lKCksICpvYmpfcHRyLT5nZXRfbmFtZSgpKSwgDQorICAgIG1f ZGIoZGIpLCBuZXh0X3RhYmxlKE5VTEwpLCBtX3RhYmxlKE5VTEwpDQorew0KKyAg c3RvcmVfaW5mbyhCU1RSRUFNX0lUX1RBQkxFKTsNCisgIGJhc2UuZGI9IGNvbnN0 X2Nhc3Q8c3RfYnN0cmVhbV9kYl9pbmZvKj4obV9kYi5kYl9pbmZvKCkpOw0KICAg c25hcF9udW09IDA7DQotICBzdG9yZV9uYW1lKG5hbWUpOw0KIH0NCiANCiANCkBA IC0xMDkxLDEyICsxMDc3LDE1IEBAIFRhYmxlX3JlZiBJbWFnZV9pbmZvOjpUYWJs ZXM6Om9wZXJhdG9yW10NCiAgKi8NCiANCiBpbmxpbmUNCi12b2lkIEltYWdlX2lu Zm86Ok9iajo6c3RvcmVfbmFtZShjb25zdCBTdHJpbmcgJm5hbWUpDQordm9pZCBJ bWFnZV9pbmZvOjpPYmo6OnN0b3JlX2luZm8oY29uc3Qgb2JqX3R5cGUgdHlwZSkN CiB7DQotICBtX25hbWUuY29weShuYW1lKTsNCisgIGNvbnN0IDo6U3RyaW5nICpu YW1lPSBtX29ial9wdHItPmdldF9uYW1lKCk7DQogICBzdF9ic3RyZWFtX2l0ZW1f aW5mbyAqaW5mbz0gY29uc3RfY2FzdDxzdF9ic3RyZWFtX2l0ZW1faW5mbyo+KHRo aXMtPmluZm8oKSk7DQotICBpbmZvLT5uYW1lLmJlZ2luPSAoYnl0ZSopbmFtZS5w dHIoKTsNCi0gIGluZm8tPm5hbWUuZW5kPSBpbmZvLT5uYW1lLmJlZ2luICsgbmFt ZS5sZW5ndGgoKTsNCisgIGJ6ZXJvKGluZm8sIHNpemVvZihzdF9ic3RyZWFtX2l0 ZW1faW5mbykpOw0KKyAgaW5mby0+dHlwZT0gdHlwZTsNCisgIERCVUdfQVNTRVJU KG5hbWUpOw0KKyAgaW5mby0+bmFtZS5iZWdpbj0gKGJ5dGUqKW5hbWUtPnB0cigp Ow0KKyAgaW5mby0+bmFtZS5lbmQ9IGluZm8tPm5hbWUuYmVnaW4gKyBuYW1lLT5s ZW5ndGgoKTsNCiB9DQogDQogDQpAQCAtMTE2OCw4ICsxMTU3LDcgQEAgY29uc3Qg c3RfYnN0cmVhbV9pdGVtX2luZm8qIEltYWdlX2luZm86Og0KIGlubGluZQ0KIGNv bnN0IGNoYXIqIEltYWdlX2luZm86OlRzOjpkZXNjcmliZShkZXNjcmliZV9idWYg JmJ1ZikgY29uc3QNCiB7DQotICBteV9zbnByaW50ZihidWYsIHNpemVvZihidWYp LCAiYCVzYCIsIE9iajo6bV9uYW1lLnB0cigpKTsNCi0gIHJldHVybiBidWY7DQor ICByZXR1cm4gRGJfcmVmOjpkZXNjcmliZShidWYpOw0KIH0NCiANCiANCkBAIC0x MTc4LDEwICsxMTY2LDEwIEBAIGNvbnN0IGNoYXIqIEltYWdlX2luZm86OlRzOjpk ZXNjcmliZShkZXMNCiBpbmxpbmUNCiBjb25zdCBjaGFyKiBJbWFnZV9pbmZvOjpE Yjo6ZGVzY3JpYmUoZGVzY3JpYmVfYnVmICZidWYpIGNvbnN0DQogew0KLSAgbXlf c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImAlc2AiLCBPYmo6Om1fbmFtZS5w dHIoKSk7DQotICByZXR1cm4gYnVmOw0KKyAgcmV0dXJuIERiX3JlZjo6ZGVzY3Jp YmUoYnVmKTsNCiB9DQogDQorDQogLyoqDQogICBTZWFyY2ggZm9yIGEgdGFibGUg aW4gdGhlIGRhdGFiYXNlIGNhdGFsb2cgYnkgbmFtZS4NCiAgDQpAQCAtMTE4OSwx MDQgKzExNzcsNjQgQEAgY29uc3QgY2hhciogSW1hZ2VfaW5mbzo6RGI6OmRlc2Ny aWJlKGRlcw0KICANCiAgIEByZXR1cm5zIFBvaW50ZXIgdG8gQGMgSW1hZ2VfaW5m bzo6VGFibGUgaW5zdGFuY2Ugc3RvcmluZyBpbmZvcm1hdGlvbg0KICAgYWJvdXQg dGhlIHRhYmxlIG9yIE5VTEwgaWYgdGhlIHRhYmxlIGlzIG5vdCBmb3VuZC4NCisN CisgIEB0b2RvIE1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uLCBlLmcuIHVz aW5nIGhhc2guDQogKi8NCiBpbmxpbmUNCi1JbWFnZV9pbmZvOjpUYWJsZSogSW1h Z2VfaW5mbzo6RGI6OmZpbmRfdGFibGUoY29uc3QgU3RyaW5nICZ0YWJsZV9uYW1l KQ0KK0ltYWdlX2luZm86OlRhYmxlKiANCitJbWFnZV9pbmZvOjpEYjo6ZmluZF90 YWJsZShjb25zdCBTdHJpbmcgJm5hbWUpIGNvbnN0DQogew0KICAgZm9yIChUYWJs ZSAqdGJsPWZpcnN0X3RhYmxlOyB0YmwgOyB0Ymw9IHRibC0+bmV4dF90YWJsZSkN CiAgIHsNCi0gICAgaWYgKHRibC0+bmFtZSgpID09IHRhYmxlX25hbWUpDQorICAg IERCVUdfQVNTRVJUKHRibC0+bV9vYmpfcHRyKTsNCisgICAgaWYgKHRibC0+bV9v YmpfcHRyLT5pc19teV9uYW1lKCZuYW1lKSkNCiAgICAgICByZXR1cm4gdGJsOw0K ICAgfQ0KICAgcmV0dXJuIE5VTEw7DQogfQ0KIA0KLS8vLyBJbXBsZW1lbnRhdGlv biBvZiBAYyBJbWFnZV9pbmZvOjpPYmogdmlydHVhbCBtZXRob2QuDQogDQotaW5s aW5lDQotY29uc3QgY2hhciogSW1hZ2VfaW5mbzo6VGFibGU6OmRlc2NyaWJlKE9i ajo6ZGVzY3JpYmVfYnVmICZidWYpIGNvbnN0DQotew0KLSAgcmV0dXJuIFRhYmxl X3JlZjo6ZGVzY3JpYmUoYnVmKTsNCi19DQotDQotDQotLy8vIEltcGxlbWVudGF0 aW9uIG9mIEBjIEltYWdlX2luZm86Ok9iaiB2aXJ0dWFsIG1ldGhvZC4NCi0NCi1p bmxpbmUNCi1jb25zdCBjaGFyKiBJbWFnZV9pbmZvOjpEYm9iajo6ZGVzY3JpYmUo T2JqOjpkZXNjcmliZV9idWYgJmJ1ZikgY29uc3QNCi17DQotICByZXR1cm4gVGFi bGVfcmVmOjpkZXNjcmliZShidWYpOw0KLX0NCi0NCi0NCi0vLy8gSW1wbGVtZW50 YXRpb24gb2YgQGMgSW1hZ2VfaW5mbzo6T2JqIHZpcnR1YWwgbWV0aG9kLg0KKy8q Kg0KKyAgU2VhcmNoIGZvciBhbiBvYmplY3Qgb2YgYSBnaXZlbiB0eXBlIGJ5IGl0 cyBuYW1lLg0KKyANCisgIEBwYXJhbVtpbl0gb2JqX3R5cGUgICAgVHlwZSBvZiB0 aGUgb2JqZWN0Lg0KKyAgQHBhcmFtW2luXSB0YWJsZV9uYW1lICBUaGUgbmFtZSBv ZiB0aGUgb2JqZWN0Lg0KKyANCisgIEByZXR1cm5zIFBvaW50ZXIgdG8gQGMgSW1h Z2VfaW5mbzo6RGJvYmogaW5zdGFuY2Ugc3RvcmluZyBpbmZvcm1hdGlvbg0KKyAg YWJvdXQgdGhlIG9iamVjdCBvciBOVUxMIGlmIHRoZSBvYmplY3QgaXMgbm90IGZv dW5kLg0KIA0KKyAgQHRvZG8gTW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24s IGUuZy4gdXNpbmcgaGFzaC4NCisqLw0KIGlubGluZQ0KLW9iczo6T2JqKiBJbWFn ZV9pbmZvOjpUczo6bWF0ZXJpYWxpemUodWludCB2ZXIsIGNvbnN0IDo6U3RyaW5n ICZzZGF0YSkNCitJbWFnZV9pbmZvOjpEYm9iaiogDQorSW1hZ2VfaW5mbzo6RGI6 OmZpbmRfb2JqZWN0KGNvbnN0IG9ial90eXBlIHR5cGUsIGNvbnN0IFN0cmluZyAm bmFtZSkgY29uc3QNCiB7DQotICBkZWxldGUgbV9vYmpfcHRyOw0KLSAgcmV0dXJu IG1fb2JqX3B0cj0gb2JzOjpnZXRfdGFibGVzcGFjZSgmbV9uYW1lLCB2ZXIsICZz ZGF0YSk7DQorICBmb3IgKHVpbnQgcG9zPTA7IHBvcyA8IG9ial9jb3VudCgpOyAr K3BvcykNCisgIHsNCisgICAgRGJvYmogKm9iaj0gZ2V0X29iaihwb3MpOw0KKyAg ICBEQlVHX0FTU0VSVCghb2JqIHx8IG9iai0+bV9vYmpfcHRyKTsNCisgICAgaWYg KG9iaiAmJiBvYmotPnR5cGUoKSA9PSB0eXBlICYmIG9iai0+bV9vYmpfcHRyLT5p c19teV9uYW1lKCZuYW1lKSkNCisgICAgICByZXR1cm4gb2JqOw0KKyAgfQ0KKyAg cmV0dXJuIE5VTEw7DQogfQ0KIA0KIA0KIC8vLyBJbXBsZW1lbnRhdGlvbiBvZiBA YyBJbWFnZV9pbmZvOjpPYmogdmlydHVhbCBtZXRob2QuDQogDQogaW5saW5lDQot b2JzOjpPYmoqIEltYWdlX2luZm86OkRiOjptYXRlcmlhbGl6ZSh1aW50IHZlciwg Y29uc3QgOjpTdHJpbmcgJnNkYXRhKQ0KK2NvbnN0IGNoYXIqIEltYWdlX2luZm86 OlRhYmxlOjpkZXNjcmliZShPYmo6OmRlc2NyaWJlX2J1ZiAmYnVmKSBjb25zdA0K IHsNCi0gIGRlbGV0ZSBtX29ial9wdHI7DQotICByZXR1cm4gbV9vYmpfcHRyPSBv YnM6OmdldF9kYXRhYmFzZSgmbmFtZSgpLCB2ZXIsICZzZGF0YSk7DQorICByZXR1 cm4gVGFibGVfcmVmOjpkZXNjcmliZShidWYpOw0KIH0NCiANCiANCiAvLy8gSW1w bGVtZW50YXRpb24gb2YgQGMgSW1hZ2VfaW5mbzo6T2JqIHZpcnR1YWwgbWV0aG9k Lg0KIA0KIGlubGluZQ0KLW9iczo6T2JqKiBJbWFnZV9pbmZvOjpUYWJsZTo6bWF0 ZXJpYWxpemUodWludCB2ZXIsIGNvbnN0IDo6U3RyaW5nICZzZGF0YSkNCi17DQot ICBkZWxldGUgbV9vYmpfcHRyOw0KLSAgcmV0dXJuIG1fb2JqX3B0cj0gb2JzOjpn ZXRfdGFibGUoJmRiKCkubmFtZSgpLCAmbmFtZSgpLCB2ZXIsICZzZGF0YSk7DQot fQ0KLQ0KLQ0KLWlubGluZQ0KLW9iczo6T2JqKiBJbWFnZV9pbmZvOjpEYm9iajo6 bWF0ZXJpYWxpemUodWludCB2ZXIsIGNvbnN0IDo6U3RyaW5nICZzZGF0YSkNCitj b25zdCBjaGFyKiBJbWFnZV9pbmZvOjpEYm9iajo6ZGVzY3JpYmUoT2JqOjpkZXNj cmliZV9idWYgJmJ1ZikgY29uc3QNCiB7DQotICBjb25zdCA6OlN0cmluZyAqZGJf bmFtZT0gJlRhYmxlX3JlZjo6ZGIoKS5uYW1lKCk7DQotICBjb25zdCA6OlN0cmlu ZyAqbmFtZT0gJlRhYmxlX3JlZjo6bmFtZSgpOw0KLQ0KLSAgZGVsZXRlIG1fb2Jq X3B0cjsNCi0NCi0gIHN3aXRjaCAoYmFzZS50eXBlKSB7DQotDQotICBjYXNlIEJT VFJFQU1fSVRfVklFVzoNCi0gICAgbV9vYmpfcHRyPSBvYnM6OmdldF92aWV3KGRi X25hbWUsIG5hbWUsIHZlciwgJnNkYXRhKTsNCi0gICAgYnJlYWs7DQotDQotICBj YXNlIEJTVFJFQU1fSVRfU1BST0M6DQotICAgIG1fb2JqX3B0cj0gb2JzOjpnZXRf c3RvcmVkX3Byb2NlZHVyZShkYl9uYW1lLCBuYW1lLCB2ZXIsICZzZGF0YSk7DQot ICAgIGJyZWFrOw0KLQ0KLSAgY2FzZSBCU1RSRUFNX0lUX1NGVU5DOg0KLSAgICBt X29ial9wdHI9IG9iczo6Z2V0X3N0b3JlZF9mdW5jdGlvbihkYl9uYW1lLCBuYW1l LCB2ZXIsICZzZGF0YSk7DQotICAgIGJyZWFrOw0KLQ0KLSAgY2FzZSBCU1RSRUFN X0lUX0VWRU5UOg0KLSAgICBtX29ial9wdHI9IG9iczo6Z2V0X2V2ZW50KGRiX25h bWUsIG5hbWUsIHZlciwgJnNkYXRhKTsNCi0gICAgYnJlYWs7DQotDQotICBjYXNl IEJTVFJFQU1fSVRfVFJJR0dFUjoNCi0gICAgbV9vYmpfcHRyPSBvYnM6OmdldF90 cmlnZ2VyKGRiX25hbWUsIG5hbWUsIHZlciwgJnNkYXRhKTsNCi0gICAgYnJlYWs7 DQotDQotICBjYXNlIEJTVFJFQU1fSVRfUFJJVklMRUdFOg0KLSAgICBtX29ial9w dHI9IG9iczo6Z2V0X2RiX2dyYW50KGRiX25hbWUsIG5hbWUsIHZlciwgJnNkYXRh KTsNCi0gICAgYnJlYWs7DQotDQotICBkZWZhdWx0OiBtX29ial9wdHI9IE5VTEw7 DQotICB9DQotDQotICByZXR1cm4gbV9vYmpfcHRyOw0KKyAgcmV0dXJuIFRhYmxl X3JlZjo6ZGVzY3JpYmUoYnVmKTsNCiB9DQogDQogDQoNCj09PSBtb2RpZmllZCBm aWxlICdzcWwvYmFja3VwL2tlcm5lbC5jYycNCi0tLSBhL3NxbC9iYWNrdXAva2Vy bmVsLmNjCTIwMDktMTItMDIgMDg6MDE6NDMgKzAwMDANCisrKyBiL3NxbC9iYWNr dXAva2VybmVsLmNjCTIwMDktMTItMTAgMTE6MjQ6MDcgKzAwMDANCkBAIC0xNDgy LDcgKzE0ODIsNiBAQCBpbnQgQmFja3VwX3Jlc3RvcmVfY3R4OjpyZXN0b3JlX3Ry aWdnZXJzDQogICAgICAgc3dpdGNoIChvYmotPnR5cGUoKSkgew0KIA0KICAgICAg IGNhc2UgQlNUUkVBTV9JVF9FVkVOVDoNCi0gICAgICAgIERCVUdfQVNTRVJUKG9i ai0+bV9vYmpfcHRyKTsNCiAgICAgICAgIGlmIChldmVudHMucHVzaF9iYWNrKG9i aikpDQogICAgICAgICB7DQogICAgICAgICAgIC8qIEVycm9yIGhhcyBiZWVuIHJl cG9ydGVkLCBidXQgbm90IGxvZ2dlZCB0byBiYWNrdXAgbG9ncy4gKi8NCkBAIC0x NDkzLDcgKzE0OTIsNiBAQCBpbnQgQmFja3VwX3Jlc3RvcmVfY3R4OjpyZXN0b3Jl X3RyaWdnZXJzDQogDQogICAgICAgY2FzZSBCU1RSRUFNX0lUX1RSSUdHRVI6DQog ICAgICAgew0KLSAgICAgICAgREJVR19BU1NFUlQob2JqLT5tX29ial9wdHIpOw0K ICAgICAgICAgaW50IHJldD0gb2JqLT5tX29ial9wdHItPmNyZWF0ZShtX3RoZCk7 DQogICAgICAgICAvKiBNaW1pYyBlcnJvciBpbiByZXN0b3JlIG9mIHRyaWdnZXIu ICovDQogICAgICAgICBEQlVHX0VYRUNVVEVfSUYoInJlc3RvcmVfdHJpZ2dlciIs IHJldD0gVFJVRTspOw0KQEAgLTIwNTYsMTcgKzIwNTQsMzAgQEAgaW50IGJjYXRf YWRkX2l0ZW0oc3RfYnN0cmVhbV9pbWFnZV9oZWFkZQ0KIA0KICAgY2FzZSBCU1RS RUFNX0lUX1RBQkxFU1BBQ0U6DQogICB7DQotICAgIEltYWdlX2luZm86OlRzICp0 cz0gaW5mby0+YWRkX3RzKG5hbWVfc3RyLCBpdGVtLT5wb3MpOyAvLyBSZXBvcnRz IGVycm9ycy4NCisgICAgb2JzOjpPYmogKnRzX29iaj0gb2JzOjpnZXRfdGFibGVz cGFjZSgmbmFtZV9zdHIpOw0KKw0KKyAgICBpZiAoIXRzX29iaikNCisgICAgew0K KyAgICAgIGxvZy5yZXBvcnRfZXJyb3IoRVJfQkFDS1VQX0NBVEFMT0dfQUREX1RT LCBuYW1lX3N0ci5wdHIoKSk7DQorICAgICAgcmV0dXJuIEJTVFJFQU1fRVJST1I7 DQorICAgIH0NCisNCisgICAgSW1hZ2VfaW5mbzo6VHMgKnRzPSBpbmZvLT5hZGRf dHModHNfb2JqLCBpdGVtLT5wb3MpOyAvLyBSZXBvcnRzIGVycm9ycy4NCiANCiAg ICAgcmV0dXJuIHRzID8gQlNUUkVBTV9PSyA6IEJTVFJFQU1fRVJST1I7DQogICB9 DQogDQogICBjYXNlIEJTVFJFQU1fSVRfREI6DQogICB7DQorICAgIG9iczo6T2Jq ICpkYl9vYmo9IG9iczo6Z2V0X2RhdGFiYXNlKCZuYW1lX3N0cik7DQogDQotICAg IGlmIChsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEpDQotICAgICAgbXlfY2Fz ZWRuX3N0cihzeXN0ZW1fY2hhcnNldF9pbmZvLCBuYW1lX3N0ci5jX3B0cigpKTsN Ci0gICAgSW1hZ2VfaW5mbzo6RGIgKmRiPSBpbmZvLT5hZGRfZGIobmFtZV9zdHIs IGl0ZW0tPnBvcyk7IC8vIFJlcG9ydHMgZXJyb3JzLg0KKyAgICBpZiAoIWRiX29i aikNCisgICAgew0KKyAgICAgIGxvZy5yZXBvcnRfZXJyb3IoRVJfQkFDS1VQX0NB VEFMT0dfQUREX0RCLCBuYW1lX3N0ci5wdHIoKSk7DQorICAgICAgcmV0dXJuIEJT VFJFQU1fRVJST1I7DQorICAgIH0NCisNCisgICAgSW1hZ2VfaW5mbzo6RGIgKmRi PSBpbmZvLT5hZGRfZGIoZGJfb2JqLCBpdGVtLT5wb3MpOyAvLyBSZXBvcnRzIGVy cm9ycy4NCiANCiAgICAgcmV0dXJuIGRiID8gQlNUUkVBTV9PSyA6IEJTVFJFQU1f RVJST1I7DQogICB9DQpAQCAtMjEwMSw5ICsyMTEyLDE2IEBAIGludCBiY2F0X2Fk ZF9pdGVtKHN0X2JzdHJlYW1faW1hZ2VfaGVhZGUNCiANCiAgICAgREJVR19QUklO VCgicmVzdG9yZSIsKCIgdGFibGUncyBkYXRhYmFzZSBpcyAlcyIsIGRiLT5uYW1l KCkucHRyKCkpKTsNCiANCi0gICAgaWYgKGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMg PT0gMSkNCi0gICAgICBteV9jYXNlZG5fc3RyKHN5c3RlbV9jaGFyc2V0X2luZm8s IG5hbWVfc3RyLmNfcHRyKCkpOw0KLSAgICBJbWFnZV9pbmZvOjpUYWJsZSAqdGJs PSBpbmZvLT5hZGRfdGFibGUoKmRiLCBuYW1lX3N0ciwgKnNuYXAsIGl0ZW0tPnBv cyk7DQorICAgIG9iczo6T2JqICp0Ymxfb2JqPSBvYnM6OmdldF90YWJsZSgmZGIt Pm5hbWUoKSwgJm5hbWVfc3RyKTsNCisNCisgICAgaWYgKCF0Ymxfb2JqKQ0KKyAg ICB7DQorICAgICAgbG9nLnJlcG9ydF9lcnJvcihFUl9CQUNLVVBfQ0FUQUxPR19B RERfVEFCTEUsIGRiLT5uYW1lKCkucHRyKCksIA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX3N0ci5wdHIo KSk7DQorICAgICAgcmV0dXJuIEJTVFJFQU1fRVJST1I7DQorICAgIH0NCisNCisg ICAgSW1hZ2VfaW5mbzo6VGFibGUgKnRibD0gaW5mby0+YWRkX3RhYmxlKCpkYiwg dGJsX29iaiwgKnNuYXAsIGl0ZW0tPnBvcyk7DQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJl cG9ydHMgZXJyb3JzLg0KIA0KICAgICByZXR1cm4gdGJsID8gQlNUUkVBTV9PSyA6 IEJTVFJFQU1fRVJST1I7DQpAQCAtMjEyMiwxMCArMjE0MCw1MCBAQCBpbnQgYmNh dF9hZGRfaXRlbShzdF9ic3RyZWFtX2ltYWdlX2hlYWRlDQogDQogICAgIEltYWdl X2luZm86OkRiICpkYj0gKEltYWdlX2luZm86OkRiKikgaW5mby0+Z2V0X2RiKGl0 LT5kYi0+YmFzZS5wb3MpOw0KIA0KLSAgICBEQlVHX0FTU0VSVChkYik7DQorICAg IGlmICghZGIpDQorICAgICAgcmV0dXJuIEJTVFJFQU1fRVJST1I7DQorDQorICAg IG9iczo6T2JqICpvYmo7DQorICAgIGludCAgICAgIGVycm9yOw0KIA0KLSAgICBJ bWFnZV9pbmZvOjpEYm9iaiAqaXQxPSBpbmZvLT5hZGRfZGJfb2JqZWN0KCpkYiwg aXRlbS0+dHlwZSwgbmFtZV9zdHIsDQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cG9zKTsNCisgICAgc3dpdGNo IChpdGVtLT50eXBlKQ0KKyAgICB7DQorICAgICAgY2FzZSBCU1RSRUFNX0lUX1ZJ RVc6DQorICAgICAgICAgZXJyb3I9IEVSX0JBQ0tVUF9DQVRBTE9HX0FERF9WSUVX Ow0KKyAgICAgICAgIG9iaj0gb2JzOjpnZXRfdmlldygmZGItPm5hbWUoKSwgJm5h bWVfc3RyKTsgDQorICAgICAgICAgYnJlYWs7DQorICAgICAgY2FzZSBCU1RSRUFN X0lUX1NQUk9DOg0KKyAgICAgICAgIGVycm9yPSBFUl9CQUNLVVBfQ0FUQUxPR19B RERfU1JPVVQ7DQorICAgICAgICAgb2JqPSBvYnM6OmdldF9zdG9yZWRfcHJvY2Vk dXJlKCZkYi0+bmFtZSgpLCAmbmFtZV9zdHIpOw0KKyAgICAgICAgIGJyZWFrOw0K KyAgICAgIGNhc2UgQlNUUkVBTV9JVF9TRlVOQzoNCisgICAgICAgICBlcnJvcj0g RVJfQkFDS1VQX0NBVEFMT0dfQUREX1NST1VUOw0KKyAgICAgICAgb2JqPSBvYnM6 OmdldF9zdG9yZWRfZnVuY3Rpb24oJmRiLT5uYW1lKCksICZuYW1lX3N0cik7DQor ICAgICAgICBicmVhazsNCisgICAgICBjYXNlIEJTVFJFQU1fSVRfRVZFTlQ6DQor ICAgICAgICBlcnJvcj0gRVJfQkFDS1VQX0NBVEFMT0dfQUREX0VWRU5UOw0KKyAg ICAgICAgb2JqPSBvYnM6OmdldF9ldmVudCgmZGItPm5hbWUoKSwgJm5hbWVfc3Ry KTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgIGNhc2UgQlNUUkVBTV9JVF9UUklH R0VSOg0KKyAgICAgICAgZXJyb3I9IEVSX0JBQ0tVUF9DQVRBTE9HX0FERF9UUklH R0VSOw0KKyAgICAgICAgb2JqPSBvYnM6OmdldF90cmlnZ2VyKCZkYi0+bmFtZSgp LCAmbmFtZV9zdHIpOw0KKyAgICAgICAgYnJlYWs7DQorICAgICAgY2FzZSBCU1RS RUFNX0lUX1BSSVZJTEVHRToNCisgICAgICAgIGVycm9yPSBFUl9CQUNLVVBfQ0FU QUxPR19BRERfUFJJVjsNCisgICAgICAgIG9iaj0gb2JzOjpnZXRfZGJfZ3JhbnQo JmRiLT5uYW1lKCksICZuYW1lX3N0cik7DQorICAgICAgICBicmVhazsNCisgICAg ICBkZWZhdWx0OiBEQlVHX0FTU0VSVChGQUxTRSk7ICAgIA0KKyAgICB9DQorDQor ICAgIGlmICghb2JqKQ0KKyAgICB7DQorICAgICAgbG9nLnJlcG9ydF9lcnJvcihl cnJvciwgZGItPm5hbWUoKS5wdHIoKSwgbmFtZV9zdHIucHRyKCkpOw0KKyAgICAg IHJldHVybiBCU1RSRUFNX0VSUk9SOw0KKyAgICB9DQorDQorICAgIC8vIFJlcG9y dHMgZXJyb3JzLg0KKyAgICBJbWFnZV9pbmZvOjpEYm9iaiAqaXQxPSANCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGluZm8tPmFkZF9kYl9vYmplY3QoKmRiLCBp dGVtLT50eXBlLCBvYmosIGl0ZW0tPnBvcyk7DQogICAgIGlmICghaXQxKQ0KICAg ICAgIHJldHVybiBCU1RSRUFNX0VSUk9SOw0KIA0KQEAgLTIzNzQsNiArMjQzMiw3 IEBAIGludCBiY2F0X2NyZWF0ZV9pdGVtKHN0X2JzdHJlYW1faW1hZ2VfaGUNCiAg IExvZ2dlciAgICAgICAmbG9nPSAgaW5mby0+bV9sb2c7DQogICBUSEQgICAgICAg ICAgKnRoZD0gIGluZm8tPm1fdGhkOw0KICAgaW50ICAgICAgICAgIGNyZWF0ZV9l cnI9IDA7DQorICBpbnQgICAgICAgICAgcmV0PSAwOw0KIA0KICAgLyoNCiAgICAg Q2hlY2sgZm9yIGludGVycnVwdGlvbiBiZWZvcmUgY3JlYXRpbmcgKGFuZCB0aHVz IGZpcnN0IGRlc3Ryb3lpbmcpDQpAQCAtMjQxNywxOSArMjQ3NiwxNiBAQCBpbnQg YmNhdF9jcmVhdGVfaXRlbShzdF9ic3RyZWFtX2ltYWdlX2hlDQogICAgIHJldHVy biBCU1RSRUFNX0VSUk9SOw0KICAgfQ0KIA0KLSAgYmFja3VwOjpTdHJpbmcgc2Rh dGEoY3JlYXRlX3N0bXQuYmVnaW4sIGNyZWF0ZV9zdG10LmVuZCk7DQotDQotICBE QlVHX1BSSU5UKCJyZXN0b3JlIiwoIkNyZWF0aW5nIGl0ZW0gb2YgdHlwZSAlZCBw b3MgJWxkOiAlcyIsDQotICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnR5 cGUsIGl0ZW0tPnBvcywgc2RhdGEucHRyKCkpKTsNCi0gIC8qDQotICAgIE5vdGU6 IFRoZSBpbnN0YW5jZSBjcmVhdGVkIGJ5IEltYWdlX2luZm86Ok9iajo6bWF0ZXJp YWxpemUoKSBpcyBkZWxldGVkDQotICAgIHdoZW4gKmluZm8gaXMgZGVzdHJveWVk Lg0KLSAgKi8NCi0gIG9iczo6T2JqICpzb2JqPSBvYmotPm1hdGVyaWFsaXplKDAs IHNkYXRhKTsNCisgIERCVUdfQVNTRVJUKG9iai0+bV9vYmpfcHRyKTsNCiANCisg IGNvbnN0IDo6U3RyaW5nICpuYW1lPSBvYmotPm1fb2JqX3B0ci0+Z2V0X25hbWUo KTsgDQogICBJbWFnZV9pbmZvOjpPYmo6OmRlc2NyaWJlX2J1ZiBidWY7DQogICBj b25zdCBjaGFyICpkZXNjPSBvYmotPmRlc2NyaWJlKGJ1Zik7DQogDQorICBiYWNr dXA6OlN0cmluZyBzZGF0YShjcmVhdGVfc3RtdC5iZWdpbiwgY3JlYXRlX3N0bXQu ZW5kKTsNCisNCisgIHJldD0gb2JqLT5tX29ial9wdHItPmluaXRfZnJvbV9pbWFn ZSgwLCAmc2RhdGEpOw0KKw0KICNpZiAhZGVmaW5lZChEQlVHX09GRikNCiANCiAg IC8qDQpAQCAtMjQzOSw0MiArMjQ5NSwzMCBAQCBpbnQgYmNhdF9jcmVhdGVfaXRl bShzdF9ic3RyZWFtX2ltYWdlX2hlDQogICAgIE5vdGU6IEVycm9yIGNvZGUgaW5z ZXJ0aW9uIHdvbid0IHdvcmsgaGVyZSBhcyB3ZSBuZWVkIHRvIGdlbmVyYXRlDQog ICAgICAgICAgIHRoZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIGZvciBlYWNoIHRl c3QgY2FzZS4NCiAgICovDQotICA6OlN0cmluZyBzdHI7DQorICBjb25zdCBjaGFy ICplcnI9IE5VTEw7DQogICBzd2l0Y2ggKGl0ZW0tPnR5cGUpIHsNCi0gIGNhc2Ug QlNUUkVBTV9JVF9EQjogICAgICBzdHIuYXBwZW5kKCJFUl9CQUNLVVBfQ0FOVF9S RVNUT1JFX0RCIik7IGJyZWFrOw0KLSAgY2FzZSBCU1RSRUFNX0lUX1RBQkxFOiAg IHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9DQU5UX1JFU1RPUkVfVEFCTEUiKTsgYnJl YWs7DQotICBjYXNlIEJTVFJFQU1fSVRfVklFVzogICAgc3RyLmFwcGVuZCgiRVJf QkFDS1VQX0NBTlRfUkVTVE9SRV9WSUVXIik7IGJyZWFrOw0KLSAgY2FzZSBCU1RS RUFNX0lUX1NQUk9DOiAgIHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9DQU5UX1JFU1RP UkVfU1JPVVRfUCIpOyBicmVhazsNCi0gIGNhc2UgQlNUUkVBTV9JVF9TRlVOQzog ICBzdHIuYXBwZW5kKCJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX1NST1VUX0YiKTsg YnJlYWs7DQotICBjYXNlIEJTVFJFQU1fSVRfRVZFTlQ6ICAgc3RyLmFwcGVuZCgi RVJfQkFDS1VQX0NBTlRfUkVTVE9SRV9FVkVOVF8yIik7IGJyZWFrOw0KLSAgY2Fz ZSBCU1RSRUFNX0lUX1RSSUdHRVI6IHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9DQU5U X1JFU1RPUkVfVFJJR0dFUiIpOyBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9E QjogICAgICBlcnI9ICJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX0RCIjsgICAgICBi cmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9UQUJMRTogICBlcnI9ICJFUl9CQUNL VVBfQ0FOVF9SRVNUT1JFX1RBQkxFIjsgICBicmVhazsNCisgIGNhc2UgQlNUUkVB TV9JVF9WSUVXOiAgICBlcnI9ICJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX1ZJRVci OyAgICBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9TUFJPQzogICBlcnI9ICJF Ul9CQUNLVVBfQ0FOVF9SRVNUT1JFX1NST1VUX1AiOyBicmVhazsNCisgIGNhc2Ug QlNUUkVBTV9JVF9TRlVOQzogICBlcnI9ICJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JF X1NST1VUX0YiOyBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9FVkVOVDogICBl cnI9ICJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX0VWRU5UXzIiOyBicmVhazsNCisg IGNhc2UgQlNUUkVBTV9JVF9UUklHR0VSOiBlcnI9ICJFUl9CQUNLVVBfQ0FOVF9S RVNUT1JFX1RSSUdHRVIiOyBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9QUklW SUxFR0U6ICBlcnI9ICJFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX1BSSVYiOyBicmVh azsNCiAgIGRlZmF1bHQ6IGJyZWFrOw0KICAgfQ0KLSAgaWYgKHN0ci5wdHIoKSkN Ci0gIHsNCi0gICAgREJVR19FWEVDVVRFX0lGKHN0ci5wdHIoKSwNCi0gICAgICBs b2cucmVwb3J0X2Vycm9yKGNyZWF0ZV9lcnIsIGRlc2MpOw0KLSAgICAgIHJldHVy biBCU1RSRUFNX0VSUk9SOyk7DQotICB9DQorICBpZiAoZXJyKQ0KKyAgICBEQlVH X0VYRUNVVEVfSUYoZXJyLCByZXQ9IEVSUk9SOyk7DQorDQogICAvKiBUYWJsZXNw YWNlIGlzIGEgc3BlY2lhbCBjYXNlIHNpbmNlIEZhbGNvbiBpcyBkaXNhYmxlZC4g Ki8NCiAgIERCVUdfRVhFQ1VURV9JRigiRVJfQkFDS1VQX0NBTlRfUkVTVE9SRV9U UyIsDQogICAgIGxvZy5yZXBvcnRfZXJyb3IoRVJfQkFDS1VQX0NBTlRfUkVTVE9S RV9UUywNCiAgICAgICAiRGVidWcgaW5zZXJ0aW9uIHRlc3QiKTsNCiAgICAgcmV0 dXJuIEJTVFJFQU1fRVJST1I7KTsNCiANCi0gIC8qDQotICAgICBHcmFudHMgYXJl IGEgc3BlY2lhbCBjYXNlIGJlY2F1c2Ugb2YgdGhlIHdheSB0aGUgbWVzc2FnZSBp cyBnZW5lcmF0ZWQgLS0NCi0gICAgIGl0IHByb2R1Y2VzIGEgbm9uLWRldGVybWlu aXN0aWMgZXJyb3Igc3RyaW5nLiBOb3RlIHRoYXQgYSByZWFsIGVycm9yDQotICAg ICB3b3VsZCBiZSBkZXRlcm1pbmlzdGljLg0KLSAgKi8NCi0gIERCVUdfRVhFQ1VU RV9JRigiRVJfQkFDS1VQX0NBTlRfUkVTVE9SRV9QUklWIiwNCi0gICAgbG9nLnJl cG9ydF9lcnJvcihFUl9CQUNLVVBfQ0FOVF9SRVNUT1JFX1BSSVYsDQotICAgICAg IkRlYnVnIGluc2VydGlvbiB0ZXN0Iik7DQotICAgIHJldHVybiBCU1RSRUFNX0VS Uk9SOyk7DQotDQogI2VuZGlmDQogDQotICBpZiAoIXNvYmopDQorICBpZiAocmV0 KQ0KICAgew0KICAgICBsb2cucmVwb3J0X2Vycm9yKGNyZWF0ZV9lcnIsIGRlc2Mp Ow0KICAgICByZXR1cm4gQlNUUkVBTV9FUlJPUjsNCkBAIC0yNDk2LDExICsyNTQw LDE0IEBAIGludCBiY2F0X2NyZWF0ZV9pdGVtKHN0X2JzdHJlYW1faW1hZ2VfaGUN CiANCiAgIH0NCiANCisgIERCVUdfUFJJTlQoInJlc3RvcmUiLCgiQ3JlYXRpbmcg aXRlbSAlcyBvZiB0eXBlICVkIHBvcyAlbGQ6ICVzIiwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgZGVzYywgaXRlbS0+dHlwZSwgaXRlbS0+cG9zLCBzZGF0YS5w dHIoKSkpOw0KKw0KICAgLyogSWYgd2UgYXJlIHRvIGNyZWF0ZSBhIHRhYmxlc3Bh Y2UsIGZpcnN0IGNoZWNrIGlmIGl0IGFscmVhZHkgZXhpc3RzLiAqLw0KIA0KICAg aWYgKGl0ZW0tPnR5cGUgPT0gQlNUUkVBTV9JVF9UQUJMRVNQQUNFKQ0KICAgew0K LSAgICBpZiAob2JzOjpmaW5kX3RhYmxlc3BhY2UodGhkLCBzb2JqLT5nZXRfbmFt ZSgpKSkNCisgICAgaWYgKG9iczo6ZmluZF90YWJsZXNwYWNlKHRoZCwgbmFtZSkp DQogICAgIHsNCiAgICAgICAvLyBBIHRhYmxlc3BhY2Ugd2l0aCB0aGUgc2FtZSBu YW1lIGV4aXN0cy4gTm90aGluZyBtb3JlIHRvIGRvLg0KICAgICAgIERCVUdfUFJJ TlQoInJlc3RvcmUiLCgiIHNraXBwaW5nIHRhYmxlc3BhY2Ugd2hpY2ggZXhpc3Rz IikpOw0KQEAgLTI1MjMsMTkgKzI1NzAsMjIgQEAgaW50IGJjYXRfY3JlYXRlX2l0 ZW0oc3RfYnN0cmVhbV9pbWFnZV9oZQ0KICAgICAgICAgICAgIGVycm9yIGhhbmRs aW5nIHdvcmsgaW4gV0wjNDM4NCB3aXRoIHBvc3NpYmxlIGltcGxlbWVudGF0aW9u DQogICAgICAgICAgICAgdmlhIGEgcmVsYXRlZCBidWcgcmVwb3J0Lg0KICAgICAq Lw0KLSAgICBpZiAoIW9iczo6Y2hlY2tfdXNlcl9leGlzdGVuY2UodGhkLCBzb2Jq KSkNCisgICAgaWYgKCFvYnM6OmNoZWNrX3VzZXJfZXhpc3RlbmNlKHRoZCwgb2Jq LT5tX29ial9wdHIpKQ0KICAgICB7DQotICAgICAgbG9nLnJlcG9ydF9lcnJvcihs b2dfbGV2ZWw6OldBUk5JTkcsDQotICAgICAgICAgICAgICAgICAgICAgICBFUl9C QUNLVVBfR1JBTlRfU0tJUFBFRCwNCi0gICAgICAgICAgICAgICAgICAgICAgIG9i czo6Z3JhbnRfZ2V0X2dyYW50X2luZm8oc29iaiktPnB0cigpLA0KLSAgICAgICAg ICAgICAgICAgICAgICAgb2JzOjpncmFudF9nZXRfdXNlcl9uYW1lKHNvYmopLT5w dHIoKSk7DQorICAgICAgY29uc3QgOjpTdHJpbmcgKmluZm89IG9iczo6Z3JhbnRf Z2V0X2dyYW50X2luZm8ob2JqLT5tX29ial9wdHIpOw0KKyAgICAgIGNvbnN0IDo6 U3RyaW5nICp1c2VyPSBvYnM6OmdyYW50X2dldF91c2VyX25hbWUob2JqLT5tX29i al9wdHIpOw0KKw0KKyAgICAgIGxvZy5yZXBvcnRfZXJyb3IobG9nX2xldmVsOjpX QVJOSU5HLCBFUl9CQUNLVVBfR1JBTlRfU0tJUFBFRCwgDQorICAgICAgICAgICAg ICAgICAgICAgICBpbmZvLT5wdHIoKSwgdXNlci0+cHRyKCkpOw0KKw0KICAgICAg IHJldHVybiBCU1RSRUFNX09LOw0KICAgICB9DQogICB9DQogDQogICAvKiBNYXJr IHRoYXQgZGF0YSBpcyBiZWluZyBjaGFuZ2VkLiAqLw0KICAgaW5mby0+bV9kYXRh X2NoYW5nZWQ9IFRSVUU7DQotICBpZiAoc29iai0+Y3JlYXRlKHRoZCkpDQorICBy ZXQ9IG9iai0+bV9vYmpfcHRyLT5jcmVhdGUodGhkKTsNCisgIGlmIChyZXQpDQog ICB7DQogICAgIGxvZy5yZXBvcnRfZXJyb3IoY3JlYXRlX2VyciwgZGVzYyk7DQog ICAgIHJldHVybiBCU1RSRUFNX0VSUk9SOw0KQEAgLTI1NzEsNiArMjYyMSw3IEBA IGludCBiY2F0X2dldF9pdGVtX2NyZWF0ZV9xdWVyeShzdF9ic3RyZWENCiAgIEJh Y2t1cF9pbmZvICppbmZvPSBzdGF0aWNfY2FzdDxCYWNrdXBfaW5mbyo+KGNhdGFs b2d1ZSk7DQogICBMb2dnZXIgJmxvZz0gaW5mby0+bV9sb2c7DQogICBpbnQgbWV0 YV9lcnI9IDA7DQorICBpbnQgcmV0PSAwOw0KIA0KICAgLyogQ2hlY2sgZm9yIGlu dGVycnVwdGlvbiBiZWZvcmUgcHJvY2VlZGluZy4gKi8NCiAgIGlmIChsb2cucmVw b3J0X2tpbGxlZCgpKQ0KQEAgLTI2MTIsNiArMjY2Myw4IEBAIGludCBiY2F0X2dl dF9pdGVtX2NyZWF0ZV9xdWVyeShzdF9ic3RyZWENCiAgIDo6U3RyaW5nICpidWY9 ICYoaW5mby0+c2VyaWFsaXphdGlvbl9idWYpOw0KICAgYnVmLT5sZW5ndGgoMCk7 DQogDQorICByZXQ9IG9iai0+bV9vYmpfcHRyLT5zZXJpYWxpemUoaW5mby0+bV90 aGQsIGJ1Zik7DQorDQogI2lmICFkZWZpbmVkKERCVUdfT0ZGKQ0KIA0KICAgLyoN CkBAIC0yNjIxLDQzICsyNjc0LDMwIEBAIGludCBiY2F0X2dldF9pdGVtX2NyZWF0 ZV9xdWVyeShzdF9ic3RyZWENCiAgICAgTm90ZTogRXJyb3IgY29kZSBpbnNlcnRp b24gd29uJ3Qgd29yayBoZXJlIGFzIHdlIG5lZWQgdG8gZ2VuZXJhdGUNCiAgICAg ICAgICAgdGhlIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggdGVzdCBj YXNlLg0KICAgKi8NCi0gIDo6U3RyaW5nIHN0cjsNCisgIGNvbnN0IGNoYXIgKmVy cj0gTlVMTDsNCiAgIHN3aXRjaCAoaXRlbS0+dHlwZSkgew0KLSAgY2FzZSBCU1RS RUFNX0lUX0RCOiAgICAgIHN0ci5hcHBlbmQoIkVSX0JBQ0tVUF9HRVRfTUVUQV9E QiIpOyBicmVhazsNCi0gIGNhc2UgQlNUUkVBTV9JVF9UQUJMRTogICBzdHIuYXBw ZW5kKCJFUl9CQUNLVVBfR0VUX01FVEFfVEFCTEUiKTsgYnJlYWs7DQotICBjYXNl IEJTVFJFQU1fSVRfVklFVzogICAgc3RyLmFwcGVuZCgiRVJfQkFDS1VQX0dFVF9N RVRBX1ZJRVciKTsgYnJlYWs7DQotICBjYXNlIEJTVFJFQU1fSVRfU1BST0M6ICAg c3RyLmFwcGVuZCgiRVJfQkFDS1VQX0dFVF9NRVRBX1NST1VUX1AiKTsgYnJlYWs7 DQotICBjYXNlIEJTVFJFQU1fSVRfU0ZVTkM6ICAgc3RyLmFwcGVuZCgiRVJfQkFD S1VQX0dFVF9NRVRBX1NST1VUX0YiKTsgYnJlYWs7DQotICBjYXNlIEJTVFJFQU1f SVRfRVZFTlQ6ICAgc3RyLmFwcGVuZCgiRVJfQkFDS1VQX0dFVF9NRVRBX0VWRU5U Iik7IGJyZWFrOw0KLSAgY2FzZSBCU1RSRUFNX0lUX1RSSUdHRVI6IHN0ci5hcHBl bmQoIkVSX0JBQ0tVUF9HRVRfTUVUQV9UUklHR0VSIik7IGJyZWFrOw0KKyAgY2Fz ZSBCU1RSRUFNX0lUX0RCOiAgICAgIGVycj0gIkVSX0JBQ0tVUF9HRVRfTUVUQV9E QiI7ICAgICAgYnJlYWs7DQorICBjYXNlIEJTVFJFQU1fSVRfVEFCTEU6ICAgZXJy PSAiRVJfQkFDS1VQX0dFVF9NRVRBX1RBQkxFIjsgICBicmVhazsNCisgIGNhc2Ug QlNUUkVBTV9JVF9WSUVXOiAgICBlcnI9ICJFUl9CQUNLVVBfR0VUX01FVEFfVklF VyI7ICAgIGJyZWFrOw0KKyAgY2FzZSBCU1RSRUFNX0lUX1NQUk9DOiAgIGVycj0g IkVSX0JBQ0tVUF9HRVRfTUVUQV9TUk9VVF9QIjsgYnJlYWs7DQorICBjYXNlIEJT VFJFQU1fSVRfU0ZVTkM6ICAgZXJyPSAiRVJfQkFDS1VQX0dFVF9NRVRBX1NST1VU X0YiOyBicmVhazsNCisgIGNhc2UgQlNUUkVBTV9JVF9FVkVOVDogICBlcnI9ICJF Ul9CQUNLVVBfR0VUX01FVEFfRVZFTlQiOyAgIGJyZWFrOw0KKyAgY2FzZSBCU1RS RUFNX0lUX1RSSUdHRVI6IGVycj0gIkVSX0JBQ0tVUF9HRVRfTUVUQV9UUklHR0VS IjsgYnJlYWs7DQorICBjYXNlIEJTVFJFQU1fSVRfUFJJVklMRUdFOiAgZXJyPSAi RVJfQkFDS1VQX0dFVF9NRVRBX1BSSVYiOyBicmVhazsNCiAgIGRlZmF1bHQ6IGJy ZWFrOw0KICAgfQ0KLSAgaWYgKHN0ci5wdHIoKSkNCi0gIHsNCi0gICAgREJVR19F WEVDVVRFX0lGKHN0ci5wdHIoKSwNCi0gICAgICBJbWFnZV9pbmZvOjpPYmo6OmRl c2NyaWJlX2J1ZiBkYnVmOw0KLSAgICAgIGxvZy5yZXBvcnRfZXJyb3IobWV0YV9l cnIsIG9iai0+ZGVzY3JpYmUoZGJ1ZikpOw0KLSAgICAgIHJldHVybiBCU1RSRUFN X0VSUk9SOyk7DQotICB9DQorICBpZiAoZXJyKQ0KKyAgICBEQlVHX0VYRUNVVEVf SUYoZXJyLCByZXQ9IEVSUk9SOyk7DQorDQogICAvKiBUYWJsZXNwYWNlIGlzIGEg c3BlY2lhbCBjYXNlIHNpbmNlIEZhbGNvbiBpcyBkaXNhYmxlZC4gKi8NCiAgIERC VUdfRVhFQ1VURV9JRigiRVJfQkFDS1VQX0dFVF9NRVRBX1RTIiwNCiAgICAgbG9n LnJlcG9ydF9lcnJvcihFUl9CQUNLVVBfR0VUX01FVEFfVFMsDQogICAgICAgIkRl YnVnIGluc2VydGlvbiB0ZXN0Iik7DQogICAgIHJldHVybiBCU1RSRUFNX0VSUk9S Oyk7DQogDQotICAvKg0KLSAgICAgR3JhbnRzIGFyZSBhIHNwZWNpYWwgY2FzZSBi ZWNhdXNlIG9mIHRoZSB3YXkgdGhlIG1lc3NhZ2UgaXMgZ2VuZXJhdGVkIC0tDQot ICAgICBpdCBwcm9kdWNlcyBhIG5vbi1kZXRlcm1pbmlzdGljIGVycm9yIHN0cmlu Zy4gTm90ZSB0aGF0IGEgcmVhbCBlcnJvcg0KLSAgICAgd291bGQgYmUgZGV0ZXJt aW5pc3RpYy4NCi0gICovDQotICBEQlVHX0VYRUNVVEVfSUYoIkVSX0JBQ0tVUF9H RVRfTUVUQV9QUklWIiwNCi0gICAgbG9nLnJlcG9ydF9lcnJvcihFUl9CQUNLVVBf R0VUX01FVEFfUFJJViwNCi0gICAgICAiRGVidWcgaW5zZXJ0aW9uIHRlc3QiKTsN Ci0gICAgcmV0dXJuIEJTVFJFQU1fRVJST1I7KTsNCi0NCiAjZW5kaWYNCiANCi0g IGlmIChvYmotPm1fb2JqX3B0ci0+c2VyaWFsaXplKGluZm8tPm1fdGhkLCBidWYp KQ0KKyAgaWYgKHJldCkNCiAgIHsNCiAgICAgSW1hZ2VfaW5mbzo6T2JqOjpkZXNj cmliZV9idWYgZGJ1ZjsNCiANCkBAIC0yNzAwLDYgKzI3NDAsMTEgQEAgbmFtZXNw YWNlIGJhY2t1cCB7DQogLyoqDQogICBQcm9kdWNlIHN0cmluZyBpZGVudGlmeWlu ZyB0aGUgdGFibGUgaW4gaW50ZXJuYWwgZm9ybWF0IChhcyB1c2VkIGJ5DQogICBz dG9yYWdlIGVuZ2luZXMpLg0KKw0KKyAgQHBhcmFtW2luXSAgIGJ1ZiAgICAgIGJ1 ZmZlciB3aGVyZSB0aGUgbmFtZSB3aWxsIGJlIGNyZWF0ZWQNCisgIEBwYXJhbVtp bl0gICBsZW4gICAgICBzaXplIG9mIHRoZSBidWZmZXINCisNCisgIEByZXR1cm4g UG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgc3RyaW5nIHdpdGggdGFi bGUgbmFtZS4NCiAqLw0KIA0KIGNvbnN0IGNoYXIqIFRhYmxlX3JlZjo6aW50ZXJu YWxfbmFtZShjaGFyICpidWYsIHNpemVfdCBsZW4pIGNvbnN0DQpAQCAtMjcxNCw4 ICsyNzU5LDI5IEBAIGNvbnN0IGNoYXIqIFRhYmxlX3JlZjo6aW50ZXJuYWxfbmFt ZShjaGENCiANCiANCiAvKioNCisgIFByb2R1Y2UgaHVtYW4gcmVhZGFibGUgc3Ry aW5nIGlkZW50aWZ5aW5nIHRoZSBkYXRhYmFzZQ0KKyAgKGUuZy4gZm9yIGVycm9y IHJlcG9ydGluZykuDQorDQorICBAcGFyYW1baW5dICAgYnVmICAgICAgYnVmZmVy IHdoZXJlIHRoZSBuYW1lIHdpbGwgYmUgY3JlYXRlZA0KKyAgQHBhcmFtW2luXSAg IGxlbiAgICAgIHNpemUgb2YgdGhlIGJ1ZmZlcg0KKw0KKyAgQHJldHVybiBQb2lu dGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyBzdHJpbmcgd2l0aCBkYXRhYmFz ZSBuYW1lLg0KKyovDQorDQorY29uc3QgY2hhciogRGJfcmVmOjpkZXNjcmliZShj aGFyICpidWYsIHNpemVfdCBsZW4pIGNvbnN0DQorew0KKyAgbXlfc25wcmludGYo YnVmLCBsZW4sICJgJXNgIiwgbmFtZSgpLnB0cigpKTsNCisgIHJldHVybiBidWY7 DQorfQ0KKw0KKy8qKg0KICAgUHJvZHVjZSBodW1hbiByZWFkYWJsZSBzdHJpbmcg aWRlbnRpZnlpbmcgdGhlIHRhYmxlDQogICAoZS5nLiBmb3IgZXJyb3IgcmVwb3J0 aW5nKS4NCisNCisgIEBwYXJhbVtpbl0gICBidWYgICAgICBidWZmZXIgd2hlcmUg dGhlIG5hbWUgd2lsbCBiZSBjcmVhdGVkDQorICBAcGFyYW1baW5dICAgbGVuICAg ICAgc2l6ZSBvZiB0aGUgYnVmZmVyDQorDQorICBAcmV0dXJuIFBvaW50ZXIgdG8g dGhlIGJ1ZmZlciBjb250YWluaW5nIHN0cmluZyB3aXRoIHRhYmxlIG5hbWUuDQog Ki8NCiANCiBjb25zdCBjaGFyKiBUYWJsZV9yZWY6OmRlc2NyaWJlKGNoYXIgKmJ1 Ziwgc2l6ZV90IGxlbikgY29uc3QNCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9i YWNrdXAvcmVzdG9yZV9pbmZvLmgnDQotLS0gYS9zcWwvYmFja3VwL3Jlc3RvcmVf aW5mby5oCTIwMDktMTItMDEgMDE6NDk6MjMgKzAwMDANCisrKyBiL3NxbC9iYWNr dXAvcmVzdG9yZV9pbmZvLmgJMjAwOS0xMi0xMCAxMToyNDowNyArMDAwMA0KQEAg LTQxLDEwICs0MSwxMiBAQCBwdWJsaWM6DQogICAvLy8gRGV0ZXJtaW5lIG9mIGlu Zm9ybWF0aW9uIGNsYXNzIGlzIHZhbGlkLg0KICAgYm9vbCBpc192YWxpZCgpOw0K IA0KLSAgSW1hZ2VfaW5mbzo6VHMqIGFkZF90cyhjb25zdCA6OlN0cmluZyYsIHVp bnQpOw0KLSAgSW1hZ2VfaW5mbzo6RGIqIGFkZF9kYihjb25zdCA6OlN0cmluZyYs IHVpbnQpOw0KLSAgSW1hZ2VfaW5mbzo6VGFibGUqIGFkZF90YWJsZShJbWFnZV9p bmZvOjpEYiYsIGNvbnN0IDo6U3RyaW5nJiwNCisgIEltYWdlX2luZm86OlRzKiAg ICBhZGRfdHMob2JzOjpPYmoqLCB1aW50KTsNCisgIEltYWdlX2luZm86OkRiKiAg ICBhZGRfZGIob2JzOjpPYmoqLCB1aW50KTsNCisgIEltYWdlX2luZm86OlRhYmxl KiBhZGRfdGFibGUoSW1hZ2VfaW5mbzo6RGImLCBvYnM6Ok9iaiosDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cDo6U25hcHNob3RfaW5mbyYs IHVsb25nKTsNCisgIEltYWdlX2luZm86OkRib2JqKiBhZGRfZGJfb2JqZWN0KElt YWdlX2luZm86OkRiICZkYiwgY29uc3Qgb2JqX3R5cGUgdHlwZSwgDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnM6Ok9iaiosIHVsb25nIHBv cyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgYm9vbCBj aGVja19yZXN0b3JlX3ByaXZpbGVnZXMoc3RydWN0IHN0X2JzdHJlYW1faXRlbV9p bmZvICppdGVtKTsNCiAgIA0KQEAgLTExNSwxMiArMTE3LDIwIEBAIGJvb2wgUmVz dG9yZV9pbmZvOjppc192YWxpZCgpDQogDQogaW5saW5lDQogYmFja3VwOjpJbWFn ZV9pbmZvOjpUcyoNCi1SZXN0b3JlX2luZm86OmFkZF90cyhjb25zdCA6OlN0cmlu ZyAmbmFtZSwgdWludCBwb3MpDQorUmVzdG9yZV9pbmZvOjphZGRfdHMob2JzOjpP YmogKnRzX29iaiwgdWludCBwb3MpDQogew0KLSAgVHMgKnRzPSBJbWFnZV9pbmZv OjphZGRfdHMobmFtZSwgcG9zKTsNCisgIGNvbnN0IFN0cmluZyAqbmFtZT0gdHNf b2JqLT5nZXRfbmFtZSgpOw0KKw0KKyAgaWYgKFRzICpvdGhlcj0gZmluZF90cygq bmFtZSkpDQorICB7DQorICAgIG1fbG9nLnJlcG9ydF9lcnJvcihFUl9SRVNUT1JF X05PTlVOSVFVRV9PQkpFQ1QsIG90aGVyLT5uYW1lKCkucHRyKCkpOw0KKyAgICBy ZXR1cm4gTlVMTDsNCisgIH0NCisNCisgIFRzICp0cz0gSW1hZ2VfaW5mbzo6YWRk X3RzKHRzX29iaiwgcG9zKTsNCiANCiAgIGlmICghdHMpDQotICAgIG1fbG9nLnJl cG9ydF9lcnJvcihFUl9CQUNLVVBfQ0FUQUxPR19BRERfVFMsIG5hbWUucHRyKCkp Ow0KKyAgICBtX2xvZy5yZXBvcnRfZXJyb3IoRVJfQkFDS1VQX0NBVEFMT0dfQURE X1RTLCBuYW1lLT5wdHIoKSk7DQogDQogICByZXR1cm4gdHM7DQogfQ0KQEAgLTEz MCwxMiArMTQwLDIwIEBAIFJlc3RvcmVfaW5mbzo6YWRkX3RzKGNvbnN0IDo6U3Ry aW5nICZuYW0NCiANCiBpbmxpbmUNCiBiYWNrdXA6OkltYWdlX2luZm86OkRiKg0K LVJlc3RvcmVfaW5mbzo6YWRkX2RiKGNvbnN0IDo6U3RyaW5nICZuYW1lLCB1aW50 IHBvcykNCitSZXN0b3JlX2luZm86OmFkZF9kYihvYnM6Ok9iaiAqZGJfb2JqLCB1 aW50IHBvcykNCiB7DQotICBEYiAqZGI9IEltYWdlX2luZm86OmFkZF9kYihuYW1l LCBwb3MpOw0KKyAgY29uc3QgU3RyaW5nICpuYW1lPSBkYl9vYmotPmdldF9uYW1l KCk7DQorDQorICBpZiAoRGIgKm90aGVyPSBmaW5kX2RiKCpuYW1lKSkNCisgIHsN CisgICAgbV9sb2cucmVwb3J0X2Vycm9yKEVSX1JFU1RPUkVfTk9OVU5JUVVFX09C SkVDVCwgb3RoZXItPm5hbWUoKS5wdHIoKSk7DQorICAgIHJldHVybiBOVUxMOw0K KyAgfQ0KKw0KKyAgRGIgKmRiPSBJbWFnZV9pbmZvOjphZGRfZGIoZGJfb2JqLCBw b3MpOw0KIA0KICAgaWYgKCFkYikNCi0gICAgbV9sb2cucmVwb3J0X2Vycm9yKEVS X0JBQ0tVUF9DQVRBTE9HX0FERF9EQiwgbmFtZS5wdHIoKSk7DQorICAgIG1fbG9n LnJlcG9ydF9lcnJvcihFUl9CQUNLVVBfQ0FUQUxPR19BRERfREIsIG5hbWUtPnB0 cigpKTsNCiANCiAgIHJldHVybiBkYjsNCiB9DQpAQCAtMTQ1LDE2ICsxNjMsNDMg QEAgUmVzdG9yZV9pbmZvOjphZGRfZGIoY29uc3QgOjpTdHJpbmcgJm5hbQ0KIA0K IGlubGluZQ0KIGJhY2t1cDo6SW1hZ2VfaW5mbzo6VGFibGUqDQotUmVzdG9yZV9p bmZvOjphZGRfdGFibGUoSW1hZ2VfaW5mbzo6RGIgJmRiLCBjb25zdCA6OlN0cmlu ZyAmbmFtZSwNCitSZXN0b3JlX2luZm86OmFkZF90YWJsZShJbWFnZV9pbmZvOjpE YiAmZGIsIG9iczo6T2JqICp0YWJsZV9vYmosDQogICAgICAgICAgICAgICAgICAg ICAgICAgYmFja3VwOjpTbmFwc2hvdF9pbmZvICZzbmFwLCB1bG9uZyBwb3MpDQog ew0KLSAgVGFibGUgKnQ9IEltYWdlX2luZm86OmFkZF90YWJsZShkYiwgbmFtZSwg c25hcCwgcG9zKTsNCisgIGNvbnN0IFN0cmluZyAqbmFtZT0gdGFibGVfb2JqLT5n ZXRfbmFtZSgpOw0KKw0KKyAgaWYgKFRhYmxlICpvdGhlcj0gZGIuZmluZF90YWJs ZSgqbmFtZSkpDQorICB7DQorICAgIG1fbG9nLnJlcG9ydF9lcnJvcihFUl9SRVNU T1JFX05PTlVOSVFVRV9EQk9CSkVDVCwgb3RoZXItPm5hbWUoKS5wdHIoKSwgDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGIubmFtZSgpLnB0cigpKTsNCisgICAgcmV0dXJuIE5VTEw7DQorICB9 DQorDQorICBUYWJsZSAqdD0gSW1hZ2VfaW5mbzo6YWRkX3RhYmxlKGRiLCB0YWJs ZV9vYmosIHNuYXAsIHBvcyk7DQogDQogICBpZiAoIXQpDQogICAgIG1fbG9nLnJl cG9ydF9lcnJvcihFUl9CQUNLVVBfQ0FUQUxPR19BRERfVEFCTEUsIGRiLm5hbWUo KS5wdHIoKSwgDQotICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnB0cigpKTsN CisgICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPnB0cigpKTsNCiANCiAgIHJl dHVybiB0Ow0KIH0NCiANCisNCitpbmxpbmUNCitiYWNrdXA6OkltYWdlX2luZm86 OkRib2JqKg0KK1Jlc3RvcmVfaW5mbzo6YWRkX2RiX29iamVjdChJbWFnZV9pbmZv OjpEYiAmZGIsIGNvbnN0IG9ial90eXBlIHR5cGUsIA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvYnM6Ok9iaiAqb2JqLCB1bG9uZyBwb3MpDQorew0KKyAg aWYgKERib2JqICpvdGhlcj0gZGIuZmluZF9vYmplY3QodHlwZSwgKm9iai0+Z2V0 X25hbWUoKSkpDQorICB7DQorICAgIG1fbG9nLnJlcG9ydF9lcnJvcihFUl9SRVNU T1JFX05PTlVOSVFVRV9EQk9CSkVDVCwgb3RoZXItPm5hbWUoKS5wdHIoKSwgDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGIubmFtZSgpLnB0cigpKTsNCisgICAgcmV0dXJuIE5VTEw7DQorICB9 DQorDQorICBEYm9iaiAqb2I9IEltYWdlX2luZm86OmFkZF9kYl9vYmplY3QoZGIs IHR5cGUsIG9iaiwgcG9zKTsNCisNCisgIHJldHVybiBvYjsNCit9DQorDQogI2Vu ZGlmIC8qUkVTVE9SRV9JTkZPX0hfKi8NCg0KPT09IG1vZGlmaWVkIGZpbGUgJ3Nx bC9zaGFyZS9lcnJtc2ctdXRmOC50eHQnDQotLS0gYS9zcWwvc2hhcmUvZXJybXNn LXV0ZjgudHh0CTIwMDktMTItMDEgMDE6NDk6MjMgKzAwMDANCisrKyBiL3NxbC9z aGFyZS9lcnJtc2ctdXRmOC50eHQJMjAwOS0xMi0xMCAxMToyNDowNyArMDAwMA0K QEAgLTY1NzIsNCArNjU3Miw3IEBAIEVSX1JFU1RPUkVfQUNDRVNTX0RFRklORVIN CiAgIGVuZyAiSW5zdWZmaWNpZW50IHByaXZpbGVnZXMuIFlvdSBtdXN0IGhhdmUg dGhlIFNVUEVSIHByaXZpbGVnZSB0byByZXN0b3JlIHRoZSBvYmplY3QgJyVzJy4n JXMnLiINCiBFUl9SRVNUT1JFX0RCX0VSUk9SDQogICBlbmcgIlRoZSBkYXRhYmFz ZSBmb3Igb2JqZWN0ICclcycgd2FzIG5vdCBmb3VuZCBpbiB0aGUgY2F0YWxvZy4i DQotDQorRVJfUkVTVE9SRV9OT05VTklRVUVfT0JKRUNUDQorICBlbmcgIkJhY2t1 cCBpbWFnZSBjb250YWlucyB0d28gb2JqZWN0cyBuYW1lZCAnJS42NHMnLiBUaGUg cHJvYmxlbSBtaWdodCBiZSB0aGF0IG9iamVjdHMnIG5hbWVzIGRpZmZlciBpbiBs ZXR0ZXIgY2FzZSBvbmx5IGFuZCB5b3UgYXJlIHJlc3RvcmluZyBvbiBhIGNhc2Ug aW5zZW5zaXRpdmUgc3lzdGVtIG9yIC0tbG93ZXItY2FzZS10YWJsZSBpcyBzZXQg dG8gMS4iDQorRVJfUkVTVE9SRV9OT05VTklRVUVfREJPQkpFQ1QNCisgIGVuZyAi QmFja3VwIGltYWdlIGNvbnRhaW5zIHR3byBvYmplY3RzIG5hbWVkICclLjY0cycg aW4gZGF0YWJhc2UgJyUuNjRzJy4gVGhlIHByb2JsZW0gbWlnaHQgYmUgdGhhdCBv YmplY3RzJyBuYW1lcyBkaWZmZXIgaW4gbGV0dGVyIGNhc2Ugb25seSBhbmQgeW91 IGFyZSByZXN0b3Jpbmcgb24gYSBjYXNlIGluc2Vuc2l0aXZlIHN5c3RlbSBvciAt LWxvd2VyLWNhc2UtdGFibGUgaXMgc2V0IHRvIDEuIg0KDQo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NpX29iamVjdHMuY2MnDQotLS0gYS9zcWwvc2lfb2JqZWN0cy5j YwkyMDA5LTEyLTAxIDAxOjQ5OjIzICswMDAwDQorKysgYi9zcWwvc2lfb2JqZWN0 cy5jYwkyMDA5LTEyLTEwIDExOjI0OjA3ICswMDAwDQpAQCAtNTc3LDEzICs1Nzcs MTAgQEAgbmFtZXNwYWNlIG9icyB7DQogY2xhc3MgQWJzdHJhY3Rfb2JqIDogcHVi bGljIE9iag0KIHsNCiBwdWJsaWM6DQotICBzdGF0aWMgT2JqICppbml0X29ial9m cm9tX2ltYWdlKEFic3RyYWN0X29iaiAqb2JqLA0KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50IGltYWdlX3ZlcnNpb24sDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpOw0K LQ0KLXB1YmxpYzoNCiAgIHZpcnR1YWwgaW5saW5lIGNvbnN0IFN0cmluZyAqZ2V0 X25hbWUoKSBjb25zdCAgICB7IHJldHVybiAmbV9pZDsgfQ0KICAgdmlydHVhbCBp bmxpbmUgY29uc3QgU3RyaW5nICpnZXRfZGJfbmFtZSgpIGNvbnN0IHsgcmV0dXJu IE5VTEw7IH0NCisgIHZpcnR1YWwgaW5saW5lIGJvb2wgaXNfbXlfbmFtZShjb25z dCBTdHJpbmcgKm5hbWUpIGNvbnN0IA0KKyAgeyByZXR1cm4gKm5hbWUgPT0gbV9p ZDsgfQ0KIA0KIHB1YmxpYzoNCiAgIC8qKg0KQEAgLTY1Myw3ICs2NTAsOCBAQCBw cm90ZWN0ZWQ6DQogICBTdHJpbmcgbV9pZDsgLy88IGlkZW50aWZ5IG9iamVjdA0K IA0KIHByb3RlY3RlZDoNCi0gIGlubGluZSBBYnN0cmFjdF9vYmooTEVYX1NUUklO RyBpZCk7DQorICBpbmxpbmUgQWJzdHJhY3Rfb2JqKExFWF9TVFJJTkcgaWQsIGJv b2wgbGNfbmFtZT0gRkFMU0UpOw0KKyAgaW5saW5lIGJvb2wgaXNfbXlfbmFtZV9s Y3RuKGNvbnN0IFN0cmluZyAqbmFtZSkgY29uc3Q7IA0KIA0KICAgdmlydHVhbCBp bmxpbmUgfkFic3RyYWN0X29iaigpOw0KIA0KQEAgLTY2NCwzMCArNjYyLDIyIEBA IHByaXZhdGU6DQogDQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogDQot T2JqICpBYnN0cmFjdF9vYmo6OmluaXRfb2JqX2Zyb21faW1hZ2UoQWJzdHJhY3Rf b2JqICpvYmosDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludCBpbWFnZV92ZXJzaW9uLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpDQotew0KLSAgaWYg KCFvYmopDQotICAgIHJldHVybiBOVUxMOw0KLQ0KLSAgaWYgKG9iai0+aW5pdF9m cm9tX2ltYWdlKGltYWdlX3ZlcnNpb24sIGltYWdlKSkNCi0gIHsNCi0gICAgZGVs ZXRlIG9iajsNCi0gICAgcmV0dXJuIE5VTEw7DQotICB9DQotDQotICByZXR1cm4g b2JqOw0KLX0NCi0NCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCisvKioN CisgIENyZWF0ZSBpbnN0YW5jZSBvZiBhbiBvYmplY3Qgd2l0aCBnaXZlbiBuYW1l Lg0KIA0KLWlubGluZSBBYnN0cmFjdF9vYmo6OkFic3RyYWN0X29iaihMRVhfU1RS SU5HIGlkKQ0KKyAgQHBhcmFtW2luXSAgaWQgICAgICAgTmFtZSBvZiB0aGUgb2Jq ZWN0Lg0KKyAgQHBhcmFtW2luXSAgbGNfbmFtZSAgU2hvdWxkIGlkIGJlIGNvbnZl cnRlZCB0byBsb3dlciBjYXNlLg0KKyovIA0KK2lubGluZSBBYnN0cmFjdF9vYmo6 OkFic3RyYWN0X29iaihMRVhfU1RSSU5HIGlkLCBib29sIGxjX25hbWUpDQogew0K ICAgaW5pdF9zcWxfYWxsb2MoJm1fbWVtX3Jvb3QsIEFMTE9DX1JPT1RfTUlOX0JM T0NLX1NJWkUsIDApOw0KIA0KICAgaWYgKGlkLnN0ciAmJiBpZC5sZW5ndGgpDQor ICB7DQogICAgIG1faWQuY29weShpZC5zdHIsIGlkLmxlbmd0aCwgc3lzdGVtX2No YXJzZXRfaW5mbyk7DQorICAgIGlmIChsY19uYW1lKQ0KKyAgICAgIG15X2Nhc2Vk bl9zdHIoc3lzdGVtX2NoYXJzZXRfaW5mbywgbV9pZC5jX3B0cigpKTsgICAgICAN CisgIH0NCiAgIGVsc2UNCiAgICAgbV9pZC5sZW5ndGgoMCk7DQogICBtX2Vycm5v PSAwOw0KQEAgLTg3Myw2ICs4NjMsMjEgQEAgYm9vbCBBYnN0cmFjdF9vYmo6OmRv X2luaXRfZnJvbV9pbWFnZShJbg0KIH0NCiANCiAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8NCisNCisvKiogDQorICBBbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlv biBvZiBAYyBpc19teV9uYW1lKCkgd2hpY2ggdGFrZXMgaW50byBhY2NvdW50IHRo ZQ0KKyAgLS1sb3dlci1jYXNlLXRhYmxlLW5hbWVzIHNldHRpbmcuIElmIG9wdGlv biBpcyBzZXQsIGl0IGNvbnNpZGVycyBhbGwgbmFtZXMNCisgIHdoaWNoIGRpZmZl ciBmcm9tIGlkIGluIGNhc2Ugb25seSBhcyByZWZlcnJpbmcgdG8gdGhpcyBvYmpl Y3QuDQorKi8NCitib29sIEFic3RyYWN0X29iajo6aXNfbXlfbmFtZV9sY3RuKGNv bnN0IFN0cmluZyAqbmFtZSkgY29uc3QNCit7DQorICBpZiAobG93ZXJfY2FzZV90 YWJsZV9uYW1lcykNCisgICAgcmV0dXJuIDAgPT0gbXlfc3RyY2FzZWNtcChzeXN0 ZW1fY2hhcnNldF9pbmZvLCBuYW1lLT5wdHIoKSwgbV9pZC5wdHIoKSk7DQorICBl bHNlDQorICAgIHJldHVybiBtX2lkID09ICpuYW1lOw0KK30NCisNCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8NCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8NCiANCiAvKioNCkBAIC04OTAsMTMgKzg5NSwxNSBAQCBwdWJsaWM6DQogICB7 IH0NCiANCiAgIGlubGluZSBEYXRhYmFzZV9vYmooTEVYX1NUUklORyBkYl9uYW1l KQ0KLSAgICA6IEFic3RyYWN0X29iaihkYl9uYW1lKQ0KKyAgICA6IEFic3RyYWN0 X29iaihkYl9uYW1lLCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEpDQogICB7 IH0NCiANCiBwdWJsaWM6DQogICB2aXJ0dWFsIGlubGluZSBjb25zdCBTdHJpbmcg KmdldF9kYl9uYW1lKCkgY29uc3QgeyByZXR1cm4gZ2V0X25hbWUoKTsgfQ0KICAg dmlydHVhbCBib29sIGRyb3AoVEhEICp0aGQpOw0KLQ0KKyAgdmlydHVhbCBpbmxp bmUgYm9vbCBpc19teV9uYW1lKGNvbnN0IFN0cmluZyAqbmFtZSkgY29uc3QgDQor ICB7IHJldHVybiBpc19teV9uYW1lX2xjdG4obmFtZSk7IH0NCisgIA0KIHByaXZh dGU6DQogICB2aXJ0dWFsIGJvb2wgZG9fc2VyaWFsaXplKFRIRCAqdGhkLCBPdXRf c3RyZWFtICZvdXRfc3RyZWFtKTsNCiAgIHZpcnR1YWwgdm9pZCBidWlsZF9kcm9w X3N0YXRlbWVudChTdHJpbmdfc3RyZWFtICZzX3N0cmVhbSkgY29uc3Q7DQpAQCAt OTE1LDExICs5MjIsMTYgQEAgcHJpdmF0ZToNCiBjbGFzcyBEYXRhYmFzZV9pdGVt X29iaiA6IHB1YmxpYyBBYnN0cmFjdF9vYmoNCiB7DQogcHVibGljOg0KLSAgaW5s aW5lIERhdGFiYXNlX2l0ZW1fb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NU UklORyBvYmplY3RfbmFtZSkNCi0gICAgOiBBYnN0cmFjdF9vYmoob2JqZWN0X25h bWUpDQorICBpbmxpbmUgRGF0YWJhc2VfaXRlbV9vYmooTEVYX1NUUklORyBkYl9u YW1lLCBMRVhfU1RSSU5HIG9iamVjdF9uYW1lLCANCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBib29sIGxjX25hbWU9IEZBTFNFKQ0KKyAgICA6IEFic3RyYWN0 X29iaihvYmplY3RfbmFtZSwgbGNfbmFtZSkNCiAgIHsNCiAgICAgaWYgKGRiX25h bWUuc3RyICYmIGRiX25hbWUubGVuZ3RoKQ0KKyAgICB7DQogICAgICAgbV9kYl9u YW1lLmNvcHkoZGJfbmFtZS5zdHIsIGRiX25hbWUubGVuZ3RoLCBzeXN0ZW1fY2hh cnNldF9pbmZvKTsNCisgICAgICBpZiAobGNfbmFtZSkNCisgICAgICAgIG15X2Nh c2Vkbl9zdHIoc3lzdGVtX2NoYXJzZXRfaW5mbywgbV9kYl9uYW1lLmNfcHRyKCkp Ow0KKyAgICB9DQogICAgIGVsc2UNCiAgICAgICBtX2RiX25hbWUubGVuZ3RoKDAp Ow0KICAgfQ0KQEAgLTk2Niw5ICs5NzgsMTIgQEAgcHVibGljOg0KICAgeyB9DQog DQogICBpbmxpbmUgVGFibGVfb2JqKExFWF9TVFJJTkcgZGJfbmFtZSwgTEVYX1NU UklORyB0YWJsZV9uYW1lKQ0KLSAgICA6IERhdGFiYXNlX2l0ZW1fb2JqKGRiX25h bWUsIHRhYmxlX25hbWUpDQorICAgIDogRGF0YWJhc2VfaXRlbV9vYmooZGJfbmFt ZSwgdGFibGVfbmFtZSwgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9PSAxKQ0KICAg eyB9DQogDQorICB2aXJ0dWFsIGlubGluZSBib29sIGlzX215X25hbWUoY29uc3Qg U3RyaW5nICpuYW1lKSBjb25zdCANCisgIHsgcmV0dXJuIGlzX215X25hbWVfbGN0 bihuYW1lKTsgfQ0KKw0KIHByaXZhdGU6DQogICB2aXJ0dWFsIGJvb2wgZG9fc2Vy aWFsaXplKFRIRCAqdGhkLCBPdXRfc3RyZWFtICZvdXRfc3RyZWFtKTsNCiANCkBA IC0xMDA1LDExICsxMDIwLDE1IEBAIHB1YmxpYzoNCiAgICAgOiBEYXRhYmFzZV9p dGVtX29iaihkYl9uYW1lLCB2aWV3X25hbWUpDQogICB7IH0NCiANCisgIHZpcnR1 YWwgaW5saW5lIGJvb2wgaXNfbXlfbmFtZShjb25zdCBTdHJpbmcgKm5hbWUpIGNv bnN0IA0KKyAgeyByZXR1cm4gaXNfbXlfbmFtZV9sY3RuKG5hbWUpOyB9DQorDQog cHJpdmF0ZToNCiAgIHZpcnR1YWwgYm9vbCBkb19zZXJpYWxpemUoVEhEICp0aGQs IE91dF9zdHJlYW0gJm91dF9zdHJlYW0pOw0KIA0KICAgdmlydHVhbCBpbmxpbmUg Y29uc3QgTEVYX1NUUklORyAqZ2V0X3R5cGVfbmFtZSgpIGNvbnN0DQogICB7IHJl dHVybiAmVmlld19vYmo6OlRZUEVfTkFNRTsgfQ0KKw0KIH07DQogDQogLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQpAQCAtMTA4Nyw2ICsxMTA2LDkgQEAgcHVi bGljOg0KICAgICA6IFN0b3JlZF9yb3V0aW5lX29iaihkYl9uYW1lLCB0cmlnZ2Vy X25hbWUpDQogICB7IH0NCiANCisgIHZpcnR1YWwgaW5saW5lIGJvb2wgaXNfbXlf bmFtZShjb25zdCBTdHJpbmcgKm5hbWUpIGNvbnN0IA0KKyAgeyByZXR1cm4gaXNf bXlfbmFtZV9sY3RuKG5hbWUpOyB9DQorDQogcHJpdmF0ZToNCiAgIHZpcnR1YWwg aW5saW5lIGNvbnN0IExFWF9TVFJJTkcgKmdldF90eXBlX25hbWUoKSBjb25zdA0K ICAgeyByZXR1cm4gJlRyaWdnZXJfb2JqOjpUWVBFX05BTUU7IH0NCkBAIC0yODYw LDExMCArMjg4Miw2OSBAQCBPYmpfaXRlcmF0b3IqIGdldF92aWV3X2Jhc2Vfdmll d3MoVEhEICp0DQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vDQogDQotT2JqICpnZXRfZGF0YWJhc2UoY29u c3QgU3RyaW5nICpkYl9uYW1lLA0KLSAgICAgICAgICAgICAgICAgIHVpbnQgaW1h Z2VfdmVyc2lvbiwNCi0gICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgKmlt YWdlKQ0KK09iaiAqZ2V0X2RhdGFiYXNlKGNvbnN0IFN0cmluZyAqZGJfbmFtZSkN CiB7DQotICByZXR1cm4gQWJzdHJhY3Rfb2JqOjppbml0X29ial9mcm9tX2ltYWdl KA0KLSAgICBuZXcgRGF0YWJhc2Vfb2JqKGRiX25hbWUtPmxleF9zdHJpbmcoKSks DQotICAgIGltYWdlX3ZlcnNpb24sIGltYWdlKTsNCisgIHJldHVybiBuZXcgRGF0 YWJhc2Vfb2JqKGRiX25hbWUtPmxleF9zdHJpbmcoKSk7DQogfQ0KIA0KIC8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KIA0KLU9iaiAqZ2V0X3RhYmxlKGNvbnN0 IFN0cmluZyAqZGJfbmFtZSwNCi0gICAgICAgICAgICAgICBjb25zdCBTdHJpbmcg KnRhYmxlX25hbWUsDQotICAgICAgICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9u LA0KLSAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpDQorT2JqICpn ZXRfdGFibGUoY29uc3QgU3RyaW5nICpkYl9uYW1lLCBjb25zdCBTdHJpbmcgKnRh YmxlX25hbWUpDQogew0KLSAgcmV0dXJuIEFic3RyYWN0X29iajo6aW5pdF9vYmpf ZnJvbV9pbWFnZSgNCi0gICAgbmV3IFRhYmxlX29iaihkYl9uYW1lLT5sZXhfc3Ry aW5nKCksIHRhYmxlX25hbWUtPmxleF9zdHJpbmcoKSksDQotICAgIGltYWdlX3Zl cnNpb24sIGltYWdlKTsNCisgIHJldHVybiBuZXcgVGFibGVfb2JqKGRiX25hbWUt PmxleF9zdHJpbmcoKSwgdGFibGVfbmFtZS0+bGV4X3N0cmluZygpKTsNCiB9DQog DQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogDQotT2JqICpnZXRfdmll dyhjb25zdCBTdHJpbmcgKmRiX25hbWUsDQotICAgICAgICAgICAgICBjb25zdCBT dHJpbmcgKnZpZXdfbmFtZSwNCi0gICAgICAgICAgICAgIHVpbnQgaW1hZ2VfdmVy c2lvbiwNCi0gICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpDQorT2Jq ICpnZXRfdmlldyhjb25zdCBTdHJpbmcgKmRiX25hbWUsIGNvbnN0IFN0cmluZyAq dmlld19uYW1lKQ0KIHsNCi0gIHJldHVybiBBYnN0cmFjdF9vYmo6OmluaXRfb2Jq X2Zyb21faW1hZ2UoDQotICAgIG5ldyBWaWV3X29iaihkYl9uYW1lLT5sZXhfc3Ry aW5nKCksIHZpZXdfbmFtZS0+bGV4X3N0cmluZygpKSwNCi0gICAgaW1hZ2VfdmVy c2lvbiwgaW1hZ2UpOw0KKyAgcmV0dXJuIG5ldyBWaWV3X29iaihkYl9uYW1lLT5s ZXhfc3RyaW5nKCksIHZpZXdfbmFtZS0+bGV4X3N0cmluZygpKTsNCiB9DQogDQog Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogDQotT2JqICpnZXRfdHJpZ2dl cihjb25zdCBTdHJpbmcgKmRiX25hbWUsDQotICAgICAgICAgICAgICAgICBjb25z dCBTdHJpbmcgKnRyaWdnZXJfbmFtZSwNCi0gICAgICAgICAgICAgICAgIHVpbnQg aW1hZ2VfdmVyc2lvbiwNCi0gICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAq aW1hZ2UpDQorT2JqICpnZXRfdHJpZ2dlcihjb25zdCBTdHJpbmcgKmRiX25hbWUs IGNvbnN0IFN0cmluZyAqdHJpZ2dlcl9uYW1lKQ0KIHsNCi0gIHJldHVybiBBYnN0 cmFjdF9vYmo6OmluaXRfb2JqX2Zyb21faW1hZ2UoDQotICAgIG5ldyBUcmlnZ2Vy X29iaihkYl9uYW1lLT5sZXhfc3RyaW5nKCksIHRyaWdnZXJfbmFtZS0+bGV4X3N0 cmluZygpKSwNCi0gICAgaW1hZ2VfdmVyc2lvbiwgaW1hZ2UpOw0KKyAgcmV0dXJu IG5ldyBUcmlnZ2VyX29iaihkYl9uYW1lLT5sZXhfc3RyaW5nKCksIHRyaWdnZXJf bmFtZS0+bGV4X3N0cmluZygpKTsNCiB9DQogDQogLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vDQogDQotT2JqICpnZXRfc3RvcmVkX3Byb2NlZHVyZShjb25zdCBT dHJpbmcgKmRiX25hbWUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBTdHJpbmcgKnNwX25hbWUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50IGltYWdlX3ZlcnNpb24sDQotICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBTdHJpbmcgKmltYWdlKQ0KK09iaiAqZ2V0X3N0b3JlZF9wcm9jZWR1cmUo Y29uc3QgU3RyaW5nICpkYl9uYW1lLCBjb25zdCBTdHJpbmcgKnNwX25hbWUpDQog ew0KLSAgcmV0dXJuIEFic3RyYWN0X29iajo6aW5pdF9vYmpfZnJvbV9pbWFnZSgN Ci0gICAgbmV3IFN0b3JlZF9wcm9jX29iaihkYl9uYW1lLT5sZXhfc3RyaW5nKCks IHNwX25hbWUtPmxleF9zdHJpbmcoKSksDQotICAgIGltYWdlX3ZlcnNpb24sIGlt YWdlKTsNCisgIHJldHVybiBuZXcgU3RvcmVkX3Byb2Nfb2JqKGRiX25hbWUtPmxl eF9zdHJpbmcoKSwgc3BfbmFtZS0+bGV4X3N0cmluZygpKTsNCiB9DQogDQogLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogDQotT2JqICpnZXRfc3RvcmVkX2Z1 bmN0aW9uKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwNCi0gICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgU3RyaW5nICpzZl9uYW1lLA0KLSAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50IGltYWdlX3ZlcnNpb24sDQotICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpDQorT2JqICpnZXRfc3RvcmVk X2Z1bmN0aW9uKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwgY29uc3QgU3RyaW5nICpz Zl9uYW1lKQ0KIHsNCi0gIHJldHVybiBBYnN0cmFjdF9vYmo6OmluaXRfb2JqX2Zy b21faW1hZ2UoDQotICAgIG5ldyBTdG9yZWRfZnVuY19vYmooZGJfbmFtZS0+bGV4 X3N0cmluZygpLCBzZl9uYW1lLT5sZXhfc3RyaW5nKCkpLA0KLSAgICBpbWFnZV92 ZXJzaW9uLCBpbWFnZSk7DQorICByZXR1cm4gbmV3IFN0b3JlZF9mdW5jX29iaihk Yl9uYW1lLT5sZXhfc3RyaW5nKCksIHNmX25hbWUtPmxleF9zdHJpbmcoKSk7DQog fQ0KIA0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KIA0KICNpZmRlZiBI QVZFX0VWRU5UX1NDSEVEVUxFUg0KIA0KLU9iaiAqZ2V0X2V2ZW50KGNvbnN0IFN0 cmluZyAqZGJfbmFtZSwNCi0gICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgKmV2 ZW50X25hbWUsDQotICAgICAgICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9uLA0K LSAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpDQotew0KLSAgcmV0 dXJuIEFic3RyYWN0X29iajo6aW5pdF9vYmpfZnJvbV9pbWFnZSgNCi0gICAgbmV3 IEV2ZW50X29iaihkYl9uYW1lLT5sZXhfc3RyaW5nKCksIGV2ZW50X25hbWUtPmxl eF9zdHJpbmcoKSksDQotICAgIGltYWdlX3ZlcnNpb24sIGltYWdlKTsNCitPYmog KmdldF9ldmVudChjb25zdCBTdHJpbmcgKmRiX25hbWUsIGNvbnN0IFN0cmluZyAq ZXZlbnRfbmFtZSkNCit7DQorICByZXR1cm4gbmV3IEV2ZW50X29iaihkYl9uYW1l LT5sZXhfc3RyaW5nKCksIGV2ZW50X25hbWUtPmxleF9zdHJpbmcoKSk7DQogfQ0K IA0KICNlbmRpZg0KIA0KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KIA0K LU9iaiAqZ2V0X3RhYmxlc3BhY2UoY29uc3QgU3RyaW5nICp0c19uYW1lLA0KLSAg ICAgICAgICAgICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9uLA0KLSAgICAgICAg ICAgICAgICAgICAgY29uc3QgU3RyaW5nICppbWFnZSkNCitPYmogKmdldF90YWJs ZXNwYWNlKGNvbnN0IFN0cmluZyAqdHNfbmFtZSkNCiB7DQotICByZXR1cm4gQWJz dHJhY3Rfb2JqOjppbml0X29ial9mcm9tX2ltYWdlKA0KLSAgICBuZXcgVGFibGVz cGFjZV9vYmoodHNfbmFtZS0+bGV4X3N0cmluZygpKSwgaW1hZ2VfdmVyc2lvbiwg aW1hZ2UpOw0KKyAgcmV0dXJuIG5ldyBUYWJsZXNwYWNlX29iaih0c19uYW1lLT5s ZXhfc3RyaW5nKCkpOw0KIH0NCiANCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8NCiANCi1PYmogKmdldF9kYl9ncmFudChjb25zdCBTdHJpbmcgKmRiX25hbWUs DQotICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICpuYW1lLA0KLSAgICAg ICAgICAgICAgICAgIHVpbnQgaW1hZ2VfdmVyc2lvbiwNCi0gICAgICAgICAgICAg ICAgICBjb25zdCBTdHJpbmcgKmltYWdlKQ0KK09iaiAqZ2V0X2RiX2dyYW50KGNv bnN0IFN0cmluZyAqZGJfbmFtZSwgY29uc3QgU3RyaW5nICpuYW1lKQ0KIHsNCi0g IHJldHVybiBBYnN0cmFjdF9vYmo6OmluaXRfb2JqX2Zyb21faW1hZ2UoDQotICAg IG5ldyBHcmFudF9vYmoobmFtZS0+bGV4X3N0cmluZygpKSwgaW1hZ2VfdmVyc2lv biwgaW1hZ2UpOw0KKyAgcmV0dXJuIG5ldyBHcmFudF9vYmoobmFtZS0+bGV4X3N0 cmluZygpKTsNCiB9DQogDQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoN Cj09PSBtb2RpZmllZCBmaWxlICdzcWwvc2lfb2JqZWN0cy5oJw0KLS0tIGEvc3Fs L3NpX29iamVjdHMuaAkyMDA5LTExLTI2IDA5OjUyOjQ4ICswMDAwDQorKysgYi9z cWwvc2lfb2JqZWN0cy5oCTIwMDktMTItMTAgMTE6MjQ6MDcgKzAwMDANCkBAIC02 Myw2ICs2Myw5IEBAIHB1YmxpYzoNCiAgICovDQogICB2aXJ0dWFsIGNvbnN0IFN0 cmluZyAqZ2V0X2RiX25hbWUoKSBjb25zdCA9IDA7DQogDQorICAvLy8gRGV0ZXJt aW5lIGlmIGdpdmVuIG5hbWUgcmVmZXJzIHRvIHRoaXMgb2JqZWN0Lg0KKyAgdmly dHVhbCBib29sIGlzX215X25hbWUoY29uc3QgU3RyaW5nICpuYW1lKSBjb25zdCA9 IDA7DQorDQogcHVibGljOg0KICAgLyoqDQogICAgIFNlcmlhbGl6ZSBhbiBvYmpl Y3QgdG8gYW4gaW1hZ2UuIFRoZSBzZXJpYWxpemF0aW9uIGltYWdlIGlzIG9wYXF1 ZQ0KQEAgLTc2LDYgKzc5LDE3IEBAIHB1YmxpYzoNCiAgICovDQogICB2aXJ0dWFs IGJvb2wgc2VyaWFsaXplKFRIRCAqdGhkLCBTdHJpbmcgKmltYWdlKSA9IDA7DQog DQorICAvKiogDQorICAgIEluaXQgdGhpcyBvYmplY3QgaW5zdGFuY2Ugd2l0aCBz ZXJpYWxpemF0aW9uIGltYWdlIHNvIHRoYXQgaXQgaXMgcmVhZHkNCisgICAgZm9y IGNyZWF0aW9uLg0KKw0KKyAgICBAcGFyYW1baW5dIGltYWdlX3ZlcnNpb24gIFNl cmlhbGl6YXRpb24gaW1hZ2UgdmVyc2lvbiBudW1iZXIuDQorICAgIEBwYXJhbVtp bl0gaW1hZ2UgICAgICAgICAgU2VyaWFsaXphdGlvbiBpbWFnZS4NCisNCisgICAg QHJldHVybiBUUlVFIHVwb24gZXJyb3IsIEZBTFNFIG90aGVyd2lzZS4NCisgICov DQorICB2aXJ0dWFsIGJvb2wgaW5pdF9mcm9tX2ltYWdlKHVpbnQgaW1hZ2VfdmVy c2lvbiwgY29uc3QgU3RyaW5nICppbWFnZSkgPSAwOw0KKw0KICAgLyoqDQogICAg IENyZWF0ZSBhbiBvYmplY3QgcGVyc2lzdGVudGx5IGluIHRoZSBkYXRhYmFzZS4N CiANCkBAIC0zMTMsNDggKzMyNywxNSBAQCBPYmpfaXRlcmF0b3IqIGdldF92aWV3 X2Jhc2Vfdmlld3MoVEhEICp0DQogDQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vDQogDQotT2JqICpnZXRfZGF0YWJhc2UoY29uc3QgU3RyaW5nICpkYl9uYW1l LA0KLSAgICAgICAgICAgICAgICAgIHVpbnQgaW1hZ2VfdmVyc2lvbiwNCi0gICAg ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgKmltYWdlKTsNCi0NCi1PYmogKmdl dF90YWJsZShjb25zdCBTdHJpbmcgKmRiX25hbWUsDQotICAgICAgICAgICAgICAg Y29uc3QgU3RyaW5nICp0YWJsZV9uYW1lLA0KLSAgICAgICAgICAgICAgIHVpbnQg aW1hZ2VfdmVyc2lvbiwNCi0gICAgICAgICAgICAgICBjb25zdCBTdHJpbmcgKmlt YWdlKTsNCi0NCi1PYmogKmdldF92aWV3KGNvbnN0IFN0cmluZyAqZGJfbmFtZSwN Ci0gICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqdmlld19uYW1lLA0KLSAgICAg ICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9uLA0KLSAgICAgICAgICAgICAgY29u c3QgU3RyaW5nICppbWFnZSk7DQotDQotT2JqICpnZXRfdHJpZ2dlcihjb25zdCBT dHJpbmcgKmRiX25hbWUsDQotICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcg KnRyaWdnZXJfbmFtZSwNCi0gICAgICAgICAgICAgICAgIHVpbnQgaW1hZ2VfdmVy c2lvbiwNCi0gICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpOw0K LQ0KLU9iaiAqZ2V0X3N0b3JlZF9wcm9jZWR1cmUoY29uc3QgU3RyaW5nICpkYl9u YW1lLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICpz dG9yZWRfcHJvY19uYW1lLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dCBpbWFnZV92ZXJzaW9uLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgU3RyaW5nICppbWFnZSk7DQotDQotT2JqICpnZXRfc3RvcmVkX2Z1bmN0aW9u KGNvbnN0IFN0cmluZyAqZGJfbmFtZSwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgU3RyaW5nICpzdG9yZWRfZnVuY19uYW1lLA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50IGltYWdlX3ZlcnNpb24sDQotICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1hZ2UpOw0KLQ0KLU9iaiAqZ2V0 X2V2ZW50KGNvbnN0IFN0cmluZyAqZGJfbmFtZSwNCi0gICAgICAgICAgICAgICBj b25zdCBTdHJpbmcgKmV2ZW50X25hbWUsDQotICAgICAgICAgICAgICAgdWludCBp bWFnZV92ZXJzaW9uLA0KLSAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqaW1h Z2UpOw0KLQ0KLU9iaiAqZ2V0X3RhYmxlc3BhY2UoY29uc3QgU3RyaW5nICp0c19u YW1lLA0KLSAgICAgICAgICAgICAgICAgICAgdWludCBpbWFnZV92ZXJzaW9uLA0K LSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nICppbWFnZSk7DQotDQot T2JqICpnZXRfZGJfZ3JhbnQoY29uc3QgU3RyaW5nICpkYl9uYW1lLA0KLSAgICAg ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyAqbmFtZSwNCi0gICAgICAgICAgICAg ICAgICB1aW50IGltYWdlX3ZlcnNpb24sDQotICAgICAgICAgICAgICAgICAgY29u c3QgU3RyaW5nICppbWFnZSk7DQorT2JqICpnZXRfZGF0YWJhc2UoY29uc3QgU3Ry aW5nICpkYl9uYW1lKTsNCitPYmogKmdldF90YWJsZShjb25zdCBTdHJpbmcgKmRi X25hbWUsIGNvbnN0IFN0cmluZyAqdGFibGVfbmFtZSk7DQorT2JqICpnZXRfdmll dyhjb25zdCBTdHJpbmcgKmRiX25hbWUsIGNvbnN0IFN0cmluZyAqdmlld19uYW1l KTsNCitPYmogKmdldF90cmlnZ2VyKGNvbnN0IFN0cmluZyAqZGJfbmFtZSwgY29u c3QgU3RyaW5nICp0cmlnZ2VyX25hbWUpOw0KK09iaiAqZ2V0X3N0b3JlZF9wcm9j ZWR1cmUoY29uc3QgU3RyaW5nICpkYl9uYW1lLCBjb25zdCBTdHJpbmcgKnNwcm9j X25hbWUpOw0KK09iaiAqZ2V0X3N0b3JlZF9mdW5jdGlvbihjb25zdCBTdHJpbmcg KmRiX25hbWUsIGNvbnN0IFN0cmluZyAqc2Z1bmNfbmFtZSk7DQorT2JqICpnZXRf ZXZlbnQoY29uc3QgU3RyaW5nICpkYl9uYW1lLCBjb25zdCBTdHJpbmcgKmV2ZW50 X25hbWUpOw0KK09iaiAqZ2V0X3RhYmxlc3BhY2UoY29uc3QgU3RyaW5nICp0c19u YW1lKTsNCitPYmogKmdldF9kYl9ncmFudChjb25zdCBTdHJpbmcgKmRiX25hbWUs IGNvbnN0IFN0cmluZyAqbmFtZSk7DQogDQogLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vDQogDQoNCg== --Boundary_(ID_LtOivzj+fcO5AXAOZxBQYw) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/rafal.somla@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/rafal.somla@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: rafal.somla@stripped # target_branch: file:///ext/mysql/bzr/backup/bug43596/ # testament_sha1: fbce50d7567661357fedde926c55df57d5529db2 # timestamp: 2009-12-10 12:24:20 +0100 # source_branch: bug43596.bundle # base_revision_id: thavamuni.alagu@stripped\ # 108sqz05zrijyp8g # # Begin bundle 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 --Boundary_(ID_LtOivzj+fcO5AXAOZxBQYw)--