From mboxrd@z Thu Jan 1 00:00:00 1970 From: "linkai" Subject: Re: netfilter-devel Digest, Vol 1, Issue 1257 Date: Thu, 26 Aug 2004 10:09:08 +0800 Sender: netfilter-devel-bounces@lists.netfilter.org Message-ID: <006101c48b11$ae57efc0$3a00000a@mycomputer> References: <20040825203232.01BE515F240@mta9.x263.net> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Return-path: To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: netfilter-devel-bounces@lists.netfilter.org List-Id: netfilter-devel.vger.kernel.org SGkgYWxsOg0KDQpIb3cgY2FuIEkgZGVsZXRlIGFuIGNvbm5lY3Rpb24gdHJhY2sgZW50cnkgaW4g dXNlciBzcGFjZT8NCg0KSXMgdGhlcmUgYW55IGludGVyZmFjZSA/DQoNCg0KLS0tLS0gT3JpZ2lu YWwgTWVzc2FnZSAtLS0tLSANCkZyb206IDxuZXRmaWx0ZXItZGV2ZWwtcmVxdWVzdEBsaXN0cy5u ZXRmaWx0ZXIub3JnPg0KVG86IDxuZXRmaWx0ZXItZGV2ZWxAbGlzdHMubmV0ZmlsdGVyLm9yZz4N ClNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgMjYsIDIwMDQgNDozMiBBTQ0KU3ViamVjdDogbmV0Zmls dGVyLWRldmVsIERpZ2VzdCwgVm9sIDEsIElzc3VlIDEyNTcNCg0KDQo+IFNlbmQgbmV0ZmlsdGVy LWRldmVsIG1haWxpbmcgbGlzdCBzdWJtaXNzaW9ucyB0bw0KPiBuZXRmaWx0ZXItZGV2ZWxAbGlz dHMubmV0ZmlsdGVyLm9yZw0KPiANCj4gVG8gc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlIHZpYSB0 aGUgV29ybGQgV2lkZSBXZWIsIHZpc2l0DQo+IGh0dHBzOi8vbGlzdHMubmV0ZmlsdGVyLm9yZy9t YWlsbWFuL2xpc3RpbmZvL25ldGZpbHRlci1kZXZlbA0KPiBvciwgdmlhIGVtYWlsLCBzZW5kIGEg bWVzc2FnZSB3aXRoIHN1YmplY3Qgb3IgYm9keSAnaGVscCcgdG8NCj4gbmV0ZmlsdGVyLWRldmVs LXJlcXVlc3RAbGlzdHMubmV0ZmlsdGVyLm9yZw0KPiANCj4gWW91IGNhbiByZWFjaCB0aGUgcGVy c29uIG1hbmFnaW5nIHRoZSBsaXN0IGF0DQo+IG5ldGZpbHRlci1kZXZlbC1vd25lckBsaXN0cy5u ZXRmaWx0ZXIub3JnDQo+IA0KPiBXaGVuIHJlcGx5aW5nLCBwbGVhc2UgZWRpdCB5b3VyIFN1Ympl Y3QgbGluZSBzbyBpdCBpcyBtb3JlIHNwZWNpZmljDQo+IHRoYW4gIlJlOiBDb250ZW50cyBvZiBu ZXRmaWx0ZXItZGV2ZWwgZGlnZXN0Li4uIg0KPiANCj4gDQo+IFRvZGF5J3MgVG9waWNzOg0KPiAN Cj4gICAgMS4gUmU6IFtSRkNdIGN0X3N5bmMgMC4xNSAoY29ycmVjdGVkKSAoamFtYWwpDQo+ICAg IDIuIFJlOiBCaWxsaW5nIDM6IFdBUyhSZTogW1BBVENIIDIvNF0gZGVmZXJyZWQgZHJvcCwgX19w YXJlbnQNCj4gICAgICAgd29ya2Fyb3VuZCwgcmVzaGFwZV9mYWlsICwgbmV0ZGV2QG9zcy5zZ2ku Y29tICwgKGphbWFsKQ0KPiAgICAzLiBSZTogW1BBVENIIDIvNF0gZGVmZXJyZWQgZHJvcCwgX19w YXJlbnQgd29ya2Fyb3VuZCwNCj4gICAgICAgcmVzaGFwZV9mYWlsIChqYW1hbCkNCj4gICAgNC4g QWN0aXZlIFNJUCBjb25udHJhY2svTkFUIGRldmVsb3BtZW50PyAoS2V2aW4gUC4gRmxlbWluZykN Cj4gICAgNS4gSXB0YWJsZXMgZXh0ZW5zaW9uIGxvYWRpbmcgZXJyb3IgKEpvaG4pDQo+ICAgIDYu IFJlOiBMaW51eCAyLjYuOS1yYzEgKEhhcmFsZCBXZWx0ZSkNCj4gDQo+IA0KPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+IA0KPiBNZXNzYWdlOiAxDQo+IERhdGU6IDI1IEF1ZyAyMDA0IDA3OjQxOjQxIC0wNDAw DQo+IFgtVmlydXM6IDENCj4gRnJvbTogamFtYWwgPGhhZGlAY3liZXJ1cy5jYT4NCj4gU3ViamVj dDogUmU6IFtSRkNdIGN0X3N5bmMgMC4xNSAoY29ycmVjdGVkKQ0KPiBUbzogSGFyYWxkIFdlbHRl IDxsYWZvcmdlQG5ldGZpbHRlci5vcmc+DQo+IENjOiBuZXRmaWx0ZXItZGV2ZWwgPG5ldGZpbHRl ci1kZXZlbEBsaXN0cy5uZXRmaWx0ZXIub3JnPiwNCj4gTmV0ZmlsdGVyLWZhaWxvdmVyIGxpc3Qg PG5ldGZpbHRlci1mYWlsb3ZlckBsaXN0cy5uZXRmaWx0ZXIub3JnPiwNCj4gS09WQUNTIEtyaXN6 dGlhbiA8aGlkZGVuQGJhbGFiaXQuaHU+DQo+IE1lc3NhZ2UtSUQ6IDwxMDkzNDM0MTAxLjEwNDEu MTYzLmNhbWVsQGp6bnkubG9jYWxkb21haW4+DQo+IENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0K PiANCj4gDQo+IEFzIEhhcmFsZCBzYXlzIGl0cyBhIGxpdHRsZSBoZWF2eXdlaWdodCBmb3Igd2hh dCB5b3UgZ3V5cyBuZWVkIHRvIGRvLg0KPiBBbmQgaXQgZG9lc250IHJ1biBvbiBJUCBwcm9wZXIu DQo+IFdlIGFyZSBnb2luZyB0byBleHBsb3JlIGFuZCBwcm9iYWJseSB1c2UgVElQQyBmb3IgRm9y Q0VTIGFzIG9uZSBvZiB0aGUNCj4gb3B0aW9ucyBmb3IgdHJhbnNwb3J0IGluIHRoZSBjYXNlIG9m IG5vbi1JUC4NCj4gRm9yIElQIHdlIGFyZSB0aGlua2luZyBhIGR1YWwgdHJhbnNwb3J0IGFwcHJv YWNoLiBUd28gc29ja2V0cywgb25lDQo+IFVEUC9tdWx0aWNhc3Qgd2hpbGUgb3RoZXIgaXMgVENQ fFNDVFAvdW5pY2FzdCByZWxpYWJsZS4gDQo+IFNlbmQgYWx3YXlzIG9uIFVEUCBtdWx0aWNhc3Q7 IHJlc3BvbmQgYWx3YXlzIG9uIG11bHRpY2FzdC4gUmVhcCB0aGUNCj4gYmVuZWZpdHMgb2YgbXVs dGljYXN0LiBEbyBOT1QgcmV0cmFuc21pdCBvbiBtdWx0aWNhc3QsIHJldHJhbnNtaXRzIG9mDQo+ IGVpdGhlciBxdWVyaWVzL3VwZGF0ZXMgZXRjIGFyZSBkb25lIG92ZXIgdW5pY2FzdC4NCj4gVGhp cyBzaW1wbGUgdGVjaG5pcXVlIGlzIGJvcnJvd2VkIGZyb20gT1NQRi4NCj4gDQo+IElmIHlvdSBh cmUgaW50ZXJlc3RlZCB3ZSBjYW4gZGlzY3VzcyB0aGlzIG1vcmUuDQo+IA0KPiBjaGVlcnMsDQo+ IGphbWFsDQo+IA0KPiBPbiBUdWUsIDIwMDQtMDgtMjQgYXQgMTQ6MzcsIEhhcmFsZCBXZWx0ZSB3 cm90ZToNCj4gPiBPbiBTdW4sIEF1ZyAyMiwgMjAwNCBhdCAxMDo0MzoyNlBNICswMjAwLCBLT1ZB Q1MgS3Jpc3p0aWFuIHdyb3RlOg0KPiA+ID4gDQo+ID4gPiAgIEhpLA0KPiA+ID4gDQo+ID4gPiBP biBUaHUsIEF1ZyAxOSwgMjAwNCBhdCAwMTowNjo0NlBNICswMjAwLCBIYXJhbGQgV2VsdGUgd3Jv dGU6DQo+ID4gPiA+ID4gICAgICAgICBTbywgZG8gYW55b25lIGtub3cgb2YgYW55dGhpbmcgd2hp Y2ggY291bGQgYmUgdXNlZCBieSBjdF9zeW5jPw0KPiA+ID4gPiA+ICAgICAgICAgKEl0IGhhcyB0 byBiZSBhIHNlbWktcmVsaWFibGUsIGNvbm5lY3Rpb25sZXNzIG11bHRpY2FzdCBwcm90b2NvbA0K PiA+ID4gPiA+ICAgICAgICAgd2l0aCBhIF92ZXJ5XyBsb3cgb3ZlcmhlYWQuKQ0KPiA+ID4gPiAN Cj4gPiA+ID4gZXZlcnl0aGluZyBJJ3ZlIHNlZW4gc28gZmFyIGFib3V0IHJlbGlhYmxlIG11bHRp Y2FzdCBpcyBpbmhlcmVudGx5DQo+ID4gPiA+IGNvbXBsZXguDQo+ID4gPiANCj4gPiA+ICAgT29w cywgSSd2ZSBqdXN0IGZvdW5kIFRJUEMuIERvZXMgYW55b25lIGtub3cgZW5vdWdoIGRldGFpbHMg b2YgVElQQyB0bw0KPiA+ID4ganVkZ2UgaWYgaXRzIHJlbGlhYmxlIG11bHRpY2FzdCBzZXJ2aWNl IHdvdWxkIGJlIHVzZWZ1bCBmb3IgdXM/IEkndmUganVzdA0KPiA+ID4gZG93bmxvYWRlZCB0aGUg SUVURiBkcmFmdCwgYW5kIGl0IHNlZW1zIHRvIG1lIHRoYXQgdGhlIHJlbGlhYmxlIG11bHRpY2Fz dA0KPiA+ID4gc2VydmljZSBwcm92aWRlZCBieSBUSVBDIG1heSBiZSB1c2VmdWwgKHNlY3Rpb24g Mi45IG9mIHRoZSBkcmFmdCkuIEFueQ0KPiA+ID4gaWRlYXM/DQo+ID4gDQo+ID4gVW5mb3J0dW5h dGVseSBJIGRpZCBvbmx5IGxlYXJuIGFib3V0IFRJUEMgcmVjZW50bHkuICBCdXQgbG9va2luZyBh dCB0aGUNCj4gPiBJRVRGIGRyYWZ0IGFuZCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgSSB0 aGluayBpdCBpcyBwcm9iYWJseSB0b28NCj4gPiBleHBlbnNpdmUuICBBbm90aGVyIGFyZ3VtZW50 IGlzIHRvIG5vdCBiYXNlIGN0X3N5bmMgb24gc29tZXRoaW5nIGJpZw0KPiA+IG91dHNpZGUgb2Yg dGhlIG9mZmljaWFsIGtlcm5lbCB0cmVlIHRoYXQgaXMgbm90IHVuZGVyIG91ciBjb250cm9sLi4N Cj4gDQo+IA0KPiANCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4g TWVzc2FnZTogMg0KPiBEYXRlOiAyNSBBdWcgMjAwNCAwNzo1MDo1MSAtMDQwMA0KPiBYLVZpcnVz OiAxDQo+IEZyb206IGphbWFsIDxoYWRpQGN5YmVydXMuY2E+DQo+IFN1YmplY3Q6IFJlOiBCaWxs aW5nIDM6IFdBUyhSZTogW1BBVENIIDIvNF0gZGVmZXJyZWQgZHJvcCwgX19wYXJlbnQNCj4gd29y a2Fyb3VuZCwgcmVzaGFwZV9mYWlsICwgbmV0ZGV2QG9zcy5zZ2kuY29tICwNCj4gVG86IEhhcmFs ZCBXZWx0ZSA8bGFmb3JnZUBuZXRmaWx0ZXIub3JnPg0KPiBDYzogc2FuZHI4IDxzYW5kcjhfTk9T UEFNX0Bjcm9jZXR0YS5vcmc+LCBkZXZpa0BjZGkuY3osDQo+IG5ldGZpbHRlci1kZXZlbEBsaXN0 cy5uZXRmaWx0ZXIub3JnLCBuZXRkZXZAb3NzLnNnaS5jb20NCj4gTWVzc2FnZS1JRDogPDEwOTM0 MzQ2NTEuMTAzOS4xODIuY2FtZWxAanpueS5sb2NhbGRvbWFpbj4NCj4gQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluDQo+IA0KPiBPbiBUdWUsIDIwMDQtMDgtMjQgYXQgMTQ6NDYsIEhhcmFsZCBXZWx0 ZSB3cm90ZToNCj4gPiBPbiBTdW4sIEF1ZyAyMiwgMjAwNCBhdCAxMjoxMjowNFBNIC0wNDAwLCBq YW1hbCB3cm90ZToNCj4gDQo+ID4gPiBTdWNoIHBhY2tldHMgYXJlIGNsb25lZCBvciBjb3BpZWQu IEkgYW0gZ29pbmcgdG8gYXNzdW1lIHRoZSBjb250cmFjaw0KPiA+ID4gZGF0YSByZW1haW5zIGlu dGFjdCBpbiBib3RoIGNhc2VzLiBMYUZvcmdlPw0KPiA+IA0KPiA+IFllcy4gQnV0IHN0aWxsIGl0 IGlzIGEgcXVlc3Rpb24gb2Ygdmlld3BvaW50IHdoYXQga2luZCBvZiBiZWhhdmlvdXIgaXMNCj4g PiBjb3JyZWN0LiAgTGV0J3Mgc2F5IGEgc2luZ2xlIHBhY2tldCBpcyBhY2NvdW50ZWQgaW4gY3Rf YWNjdCwgYW5kIHRoZW4NCj4gPiBzZW50IHRvIG11bHRpcGxlIGludGVyZmFjZXMsIHdoZXJlIG9u IG1vcmUgdGhhbiBvbmUgb2YgdGhlbSBpdCBnZXRzDQo+ID4gdW5iaWxsZWQuICBTbyB3ZSBhZGQg b25jZSwgYnV0ICd1bmJpbGwnIChpIHByZWZlciB0aGUgdGVybSBzdWJ0cmFjdCkNCj4gPiBtb3Jl IHRoYW4gb25jZS4gICBJbiB0aGUgZW5kIHRoZSBjdF9hY2N0IGNvdW50ZXIgd2lsbCBiZSBsZXNz IHRoYW4gd2hlbg0KPiA+IGl0IGZpcnN0IGVuY291bnRlcmVkIHRoZSBwYWNrZXQuDQo+ID4gDQo+ IA0KPiBUaGVzZSBhcmUgc29tZSBvZiB0aGUgY2hhbGxlbmdlcyBpIHBvc2VkIHRvIEFsbGVzYW5k cm8gYXMgd2VsbC4NCj4gDQo+ID4gPiBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBtYWtlIGFjY291 bnRpbmcgYSBmZWF0dXJlIHRoYXQgY291bGQgYmUgdHVybmVkDQo+ID4gPiBvbiBkZXNwaXRlIGNv bnRyYWNraW5nIGFuZCBza2JzIHNob3VsZCBjYXJyeSBhbiBhY2NvdW50aW5nIG1ldGFkYXRhIHdp dGgNCj4gPiA+IHRoZW0uIA0KPiA+IA0KPiA+IEkgZG9uJ3QgcmVhbGx5IHVuZGVyc3RhbmQgd2hh dCB5b3Ugd2FudCB0byBzYXkuICBZb3Ugd2FudCBhY2NvdW50aW5nDQo+ID4gdGhhdCBpcyBub3Qg Y29ubnRyYWNrLWJhc2VkPyAgd2VsbCwgdGhlbiB5b3Ugc2hvdWxkIG1heWJlIGxvb2sgYXQNCj4g PiBvbmUgb2YgdGhlIG1hbnkgbWV0aG9kcywgcmFuZ2luZyBmcm9tIGlwdGFibGVzIHJ1bGUgY291 bnRlcnMgdG8gdGhlIA0KPiA+IGlwdF9hY2N0IG1hdGNoL3RhcmdldCwgbmFjY3RkLCBwY2FwLW1t YXAsIFBGX1JJTkcsIFVMT0ctYmFzZWQsIC4uLg0KPiA+IA0KPiANCj4gVGhlIGRpc2N1c3Npb24g d2l0aCBmYWlybmVzcyBsZWFkIHRvIG15IGFzc2VydGlvbiBhYm92ZS4NCj4gTm9uZSBvZiB0aGUg YWJvdmUgdGFrZSBjYXJlIG9mIGZhaXJuZXNzIGZhY3RvciB0aGF0IEFsZXNzYW5kcm8gaXMgdHJ5 aW5nDQo+IHRvIGFjaGlldmUuIFNvIG15IHRoaW5raW5nIGlzIGlmIHdlIHdhbm5hIGZpeCB0aGUg dW5iaWxsIHByb2JsZW0sIHdoeQ0KPiBub3QgYWRkcmVzcyB0aGUgd2hvbGUgaXNzdWUgYW5kIGdl dCBhY2NvdW50aW5nIHRvIGJlIGFuIGVtYmVkZGVkIHBpZWNlLg0KPiANCj4gPiBidHcsIHRoZXkg YWxsIGFjY291bnQgdGhlIGFtb3VudCBvZiBSWCBwYWNrZXQgb24gaW5ib3VuZCBpbnRlcmZhY2Ug YW5kDQo+ID4gZG8gbm90ICd1bmJpbGwnIDspDQo+IA0KPiBJIHN1c3BlY3QgaW4gc3VjaCBhIGNh c2UgeW91IGhhdmUgYSBwYXNzaXZlIGJveCB3aGljaCBqdXN0IGdldHMgYSBjb3B5DQo+IG9mIHRo ZSBwYWNrZXQgZnJvbSB0aGUgd2lyZSA7LT4gU29tZW9uZSBlbHNlIGluIHRoZSByZWFsIGJveCB3 aGVyZSB0aGUNCj4gcGFja2V0IGdldHMgZm9yd2FyZGVkIHdpbGwgZHJvcCB0aGUgcGFja2V0IGFu ZCBpdCB3aWxsIHN0aWxsIGJlIHBhaWQgDQo+IGZvciA7LT4NCj4gSW4gdGhlIGNhc2Ugb2Ygd2hh dCB5b3UgaGF2ZSBpbnRyb2R1Y2VkIHRob3VnaCwgeW91IGFyZSBiaWxsaW5nIGZvcg0KPiBsb2Nh bHkgZ2VuZXJhdGVkIHBhY2tldHMgYXMgd2VsbCAoaWYgaSBhbSBub3QgbWlzdGFrZW4gdGhpcyBp cyB3aGVyZSB0aGUNCj4gaXNzdWVzIGFyZSkuDQo+IA0KPiBJbiBnZW5lcmFsIGkgZG9udCB0aGlu ayB3ZSBuZWVkIHRvIGJlIDEwMCUgYWNjdXJhdGUuIFBTQU1QIGZvciBleGFtcGxlDQo+IG9wZXJh dGVzIGJ5IG1lcmVseSBzYW1wbGluZyBpLmUgbm90IHRha2luZyBhIHByZWNpc2UgbWVhc3VyZW1l bnQuIFBlb3BsZQ0KPiBoYXZlIHdyaXR0ZW4gdG9ucyBvZiBwYXBlcnMgdG8gcHJvdmUgaXQgd2Fz IGdvb2QgZW51Zi4NCj4gDQo+IGNoZWVycywNCj4gamFtYWwNCj4gDQo+IA0KPiANCj4gDQo+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gTWVzc2FnZTogMw0KPiBEYXRlOiAy NSBBdWcgMjAwNCAwODoxMjowNSAtMDQwMA0KPiBYLVZpcnVzOiAxDQo+IEZyb206IGphbWFsIDxo YWRpQGN5YmVydXMuY2E+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMi80XSBkZWZlcnJlZCBkcm9w LCBfX3BhcmVudCB3b3JrYXJvdW5kLA0KPiByZXNoYXBlX2ZhaWwNCj4gVG86IEhhcmFsZCBXZWx0 ZSA8bGFmb3JnZUBuZXRmaWx0ZXIub3JnPg0KPiBDYzogc2FuZHI4QGNyb2NldHRhLm9yZywgZGV2 aWtAY2RpLmN6LA0KPiBuZXRmaWx0ZXItZGV2ZWxAbGlzdHMubmV0ZmlsdGVyLm9yZywgbmV0ZGV2 QG9zcy5zZ2kuY29tDQo+IE1lc3NhZ2UtSUQ6IDwxMDkzNDM1OTI1LjEwMzkuMjIxLmNhbWVsQGp6 bnkubG9jYWxkb21haW4+DQo+IENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0KPiANCj4gT24gVHVl LCAyMDA0LTA4LTI0IGF0IDE0OjU3LCBIYXJhbGQgV2VsdGUgd3JvdGU6DQo+ID4gT24gTW9uLCBB dWcgMTYsIDIwMDQgYXQgMDk6Mjk6NTlBTSAtMDQwMCwgamFtYWwgd3JvdGU6DQo+IA0KPiA+IFll cywgSSBhbSB3b3JraW5nIG9uIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgdWxvZ2QgKHVsb2dkLTIp LiAgSXQgd2lsbA0KPiA+IGFsbG93IHlvdSB0byBzdGFjayBtdWx0aXBsZSBwbHVnaW5zIG9uIHRv cCBvZiBlYWNoIG90aGVyLCBzdWNoIGFzOg0KPiA+IA0KPiA+IGN0bmV0bGluayAtPiBpcGZpeA0K PiA+IA0KPiA+IG9yIA0KPiA+IA0KPiA+IHVsb2cgLT4gcGFja2V0IHBhcnNlciAtPiBmbG93X2Fn Z3JnYXRpb24gLT4gaXBmaXggDQo+ID4gDQo+ID4gb3IgZXZlbiBleHBvcnRpbmcgcGVyLXBhY2tl dCBkYXRhIGluIGlwZml4IA0KPiA+IA0KPiA+IHVsb2cgLT4gcGFja2V0IHBhcnNlciAtPiBpcGZp eA0KPiA+IA0KPiA+IEl0J3MgZmFyIGZyb20gY29tcGxldGUsIGJ1dCBJJ20gYWxtb3N0IGZpbmlz aGVkIHdpdGggdGhlIGNvcmUgYW5kIGNhbg0KPiA+IHN0YXJ0IHRvIHdyaXRlIHRoZSBwbHVnaW5z Og0KPiA+IGh0dHA6Ly9zdm4uZ251bW9ua3Mub3JnL2JyYW5jaGVzL3Vsb2cvdWxvZ2QyLw0KPiAN Cj4gY29vbC4gTG9va3MgbmljZS4NCj4gDQo+ID4gPiBMZXQgbWUgdGhpbmsgYWJvdXQgaXQuDQo+ ID4gPiBDbGVhcmx5IHRoZSBiZXN0IHBsYWNlIHRvIGFjY291bnQgZm9yIHRoaW5ncyBpcyBvbiB0 aGUgd2lyZSBvbmNlIHRoZQ0KPiA+ID4gcGFja2V0IGhhcyBsZWZ0IHRoZSBib3ggOy0+IA0KPiA+ IA0KPiA+IFRoaXMgaXMgYXJndWFibGUuICBXaHkgbm90IG9uY2UgdGhlIHBhY2tldCB3YXMgcmVj ZWlldmVkIG9uIHRoZSBpbmNvbWluZw0KPiA+IHdpcmU/ICBJZiB5b3UgYXJlIEluZ3Jlc3Mgcm91 dGVyIG9mIHlvdXIgbmV0d29yaywgeW91ciBJU1AgYmlsbHMgeW91IGZvcg0KPiA+IHRoZSBhbW91 dCBvZiB0cmFmZmljIGl0IHNlbmRzIHRvIHlvdXIgaW5ncmVzcyByb3V0ZXIuDQo+ID4gDQo+ID4g T1RPVEgsIGZvciBlZ3Jlc3MgdHJhZmZpYyBJIGFncmVlLg0KPiANCj4gSSB0aGluayBtYXliZSB0 aGUgaXNzdWUgaXMgdG8gZGVmaW5lIHdoYXQgdGhlIGVuZCBnb2FsIGlzLg0KPiBGb3IgYSBwYXNz aXZlIGJveCBnZXR0aW5nIGNvcGllcyBvZiB0aGUgcGFja2V0cyBvbiB0aGUgd2lyZSwgaW5ncmVz cyANCj4gd291bGQgYmUgZmluZS4gVW5mYWlybmVzcyB3b3VsZCBzdGlsbCBiZSB0aGVyZSBpbmNh c2UgdGhlIGZvcndhcmRpbmcNCj4gYm94IChub3QgdGhlIGFjY291bnRpbmcgYm94KSBhY3R1YWxs eSBpbW1lZGlhdGVseSBkcm9wcyB0aGUgcGFja2V0DQo+IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBh Y2NvdW50ZWQgZm9yLg0KPiBPVE9ILCBpbiB3aGF0IHlvdSBoYXZlIGludHJvZHVjZWQgeW91IGFy ZSBhbHNvIGFjY291bnRpbmcgZm9yDQo+IGxvY2FseSBnZW5lcmF0ZWQgcGFja2V0cyBpbiBhIGJv eCB0aGF0IGlzIG5vdCBkZWRpY2F0ZWRmb3IganVzdA0KPiBhY2NvdW50aW5nLg0KPiBJbiBzdWNo IGEgY2FzZSwgd2UgY2FuIChpZiB0aGUgY29zdCBvZiBtYWtpbmcgdGhlIGNoYW5nZSBpcyBhY2Nl cHRhYmxlKQ0KPiBtYWtlIG1vcmUgaW50ZWxsaWdlbnQgZGVjaXNpb25zLg0KPiANCj4gPiA+IEhv dyBvcGVuIGFyZSB5b3UgdG8gbW92ZSBhY2NvdW50aW5nIGZ1cnRoZXIgZG93bj8gTXkgdGhvdWdo dHMNCj4gPiA+IGFyZSBhbG9uZyB0aGUgbGluZXMgb2YgaW5jcmVtZW50aW5nIHRoZSBjb250cmFj ayBjb3VudGVycyBhdCB0aGUgcWRpc2MNCj4gPiA+IGxldmVsLiBTaW5jZSB5b3UgdHJhbnNwb3J0 IGFmdGVyIHRoZSBzdHJ1Y3R1cmUgaGFzIGJlZW4gZGVsZXRlZCwgaXQNCj4gPiA+IHNob3VsZCB3 b3JrIG91dCBmaW5lIGFuZCBmYWlyIGJpbGxpbmcgd2lsbCBiZSB0YWtlbiBjYXJlIG9mLg0KPiA+ IA0KPiA+IFN1cmUsIGl0IGNhbiBiZSBkb25lLi4uIGJ1dCB5b3UgbmVlZCB0byBncmFiIGlwX2Nv bm50cmFja19sb2NrIGluIG9yZGVyDQo+ID4gdG8gZG8gc28uDQo+IA0KPiBTdWdnZXN0aW9uIGlz IHlvdSBqdXN0IGRvIHRoZSBtYXJraW5nLCBsZXQgdGhlIHFkaXNjIGRvIHRoZSBhY2NvdW50aW5n DQo+IG9uIHBvc3NpYmx5IGluZGVwZW5kZW50IGFjY291bnRpbmcgdGFibGUgd2l0aCBtdWNoIG1v cmUgZmluZSBncmFpbmVkDQo+IGxvY2tzLg0KPiANCj4gPiA+IEhhcyBzb21lb25lIGRvbmUgZXhw ZXJpbWVudGVkIGFuZCBmaWd1cmVkIGhvdyBleHBlbnNpdmUgaXQgd291bGQgYmUgdG8NCj4gPiA+ IGRvIGl0IGF0IHRoZSBxZGlzYyBsZXZlbD8gTm90ZSwgeW91IGNhbiBwcm9iYWJseSBoYXZlIGEg bG93IGxldmVsDQo+ID4gPiBncmFpbmVkIGxvY2sganVzdCBmb3Igc3RhdHMuDQo+ID4gDQo+ID4g SXQgZG9lc24ndCBoZWxwLiAgQ3VycmVudGx5IHdlIHN0aWxsIGhhdmUgb25lIGdsb2JhbCByd2xv Y2sgZm9yIGFsbA0KPiA+IGNvbm50cmFjaydzLiAgVGhlcmUgYXJlIHBhdGNoZXMgZm9yIHBlci1i dWNrZXQgbG9ja2luZy4gIA0KPiA+IA0KPiA+IEJ1dCB3ZWxsLCBhcyBsb25nIGFzIHRoZSB1c2Fn ZSBjb3VudCBvZiBpcF9jb25udHJhY2sgZG9lc24ndCBkcm9wIHRvDQo+ID4gemVybyAod2hpY2gg d2UncmUgZ3VhcmFudGVlZCBzaW5jZSBvdXIgc2tiIHN0aWxsIHJlZmVyZW5jZXMgaXQpLCBhbmQg d2UNCj4gPiBkb24ndCBuZWVkIHRvIHdhbGsgdGhlIGhhc2ggdGFibGUsIHdlIGRvbid0IGFjdHVh bGx5IG5lZWQgdG8gZ3JhYg0KPiA+IGlwX2Nvbm50cmFja19sb2NrLiAgIEEgc2VwZXJhdGUgYWNj b3VudGluZyBsb2NrIHdvdWxkIGJlIHBvc3NpYmxlLg0KPiA+IA0KPiA+IFNvbWVib2R5IG5lZWRz IHRvIGltcGxlbWVudCB0aGlzIGFuZCBydW4gcHJvZmlsZXMuLi4NCj4gPiANCj4gDQo+IFdlIHNo b3VsZCBwcm9iYWJseSBhdm9pZCB0aGlzIGFwcHJvYWNoIHRvdGFseSBpZiB3ZSBhcmUgZ29pbmcg dG8gZG8gYWxsDQo+IHRoYXQgd29yay4NCj4gDQo+ID4gPiBJTkNfU1RBVFMgaXMgZ2VuZXJpYyAo Z29lcyBpbiB0aGUgZ2VuZXJpYyBzdGF0cyBjb2RlIGluIGF0dGFjaGVkIHBhdGNoKQ0KPiA+ID4g YW5kIHdpbGwgaGF2ZSBhbiBpZmRlZiBmb3IgY29udHJhY2sgYmlsbGluZyAod2hpY2ggaW5jbHVk ZXMgdW5iaWxsaW5nDQo+ID4gPiBkZXBlbmRpbmcgb24gcmVhc29uIGNvZGUpLiBSZWFzb24gY29k ZSBjb3VsZCBiZSByZXN1bHRzIHRoYXQgYXJlIG5vdw0KPiA+ID4gcmV0dXJuZWQuDQo+ID4gPiBB cyBhbiBleGFtcGxlIE5FVF9YTUlUX0RST1AgaXMgZGVmaW5ldGVseSB1bmJpbGxpbmcgd2hpbGUN Cj4gPiA+IE5FVF9YTUlUX1NVQ0NFU1MgaW1wbGllcyBiaWxsLiANCj4gPiANCj4gPiBzb3VuZHMg ZmluZSB0byBtZS4gIEJ1dCB0aGlzIGJhc2ljYWxseSBtZWFucyB0aGF0IHdlIHdvdWxkIGhpZGUN Cj4gPiBjb25udHJhY2sgY291bnRlcnMgYmVoaW5kIGdlbmVyaWMgQVBJIC0gdGhlIGNvdW50ZXJz IHRoZW1zZWx2ZXMgYXJlDQo+ID4gc3RvcmVkIGluIG91ciBvd24gZGF0YSBzdHJ1Y3R1cmUuDQo+ ID4gDQo+IA0KPiB5ZXMsIHRoYXQgd291bGQgYWxzbyBiZSBhIGdvb2Qgc3RhcnRpbmcgY29tcHJv bWlzZS4gDQo+IEkgYW0gYmVnaW5pbmcgdG8gcXVlc3Rpb24gdGhlIHdpc2RvbSBvZiAiZml4aW5n IiB0aGlzLiBUaGUgY2xlYXINCj4gc29sdXRpb24gaXMgdG8gaGF2ZSB0aGUgY29udHJhY2tpbmcg Y29kZSBkbyBub3RoaW5nIG90aGVyDQo+IHRoYW4gbWFyayB0aGUgcGFja2V0cy4gVGhpcyBpcyB0 aGUgbW9zdCB2YWx1YWJsZSB0aGluZyB3ZSBjYW4NCj4gZ2V0IG91dCBvZiBjb250cmFja2luZy4g TGV0IHRoZSB0YyBiaXRzIGRvIHRoZSBhY2NvdW50aW5nLiBZb3UgY2FuIHN0aWxsDQo+IHRyYW5z cG9ydCB0aGlzIG92ZXIgY3RuZXRsaW5rLiBUaGVyZSB3aWxsIHNvbWVob3cgbmVlZCB0byBiZSBz aWduYWxpbmcNCj4gYXMgd2VsbCBmcm9tIGNvbnRyYWNrIHRvIGluZGljYXRlIGFkZGl0aW9uIG9y IGRlbGV0aW9uIG9mIG1hcmtzIChvdGhlcg0KPiBhbHRlcm5hdGl2ZSBpcyB0byBoYXZlIGFkbWlu IHNlbGVjdCBtYXJrcykuDQo+IA0KPiBPZiBjb3Vyc2UgYWxsIHRoaXMgaXMgYSBiaWcgYmFpdCBz byB3ZSBjYW4gaGF2ZSB0aGUgZW5lcmdldGljIEFsZXNzYW5kcm8NCj4gZG8gYWxsIHRoZSB3b3Jr IDstPiA8d2luaywgd2luaz4NCj4gDQo+IGNoZWVycywNCj4gamFtYWwNCj4gDQo+ICANCj4gDQo+ IA0KPiANCj4gDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IE1l c3NhZ2U6IDQNCj4gRGF0ZTogV2VkLCAyNSBBdWcgMjAwNCAwODowMTozOCAtMDcwMA0KPiBYLVZp cnVzOiAxDQo+IEZyb206ICJLZXZpbiBQLiBGbGVtaW5nIiA8a3BmbGVtaW5nQHN0YXJuZXR3b3Jr cy51cz4NCj4gU3ViamVjdDogQWN0aXZlIFNJUCBjb25udHJhY2svTkFUIGRldmVsb3BtZW50Pw0K PiBUbzogbmV0ZmlsdGVyLWRldmVsQGxpc3RzLm5ldGZpbHRlci5vcmcNCj4gTWVzc2FnZS1JRDog PDQxMkNBOUQyLjQwMzA1MDZAc3Rhcm5ldHdvcmtzLnVzPg0KPiBDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7IGZvcm1hdD1mbG93ZWQNCj4gDQo+IEFmdGVyIHBlcnVz aW5nIHRoZSBsaXN0IGFyY2hpdmVzLCBJIHNlZSB0aGF0IHR3byBvciB0aHJlZSBwZW9wbGUgaW4g dGhlIA0KPiBwYXN0IHllYXIgb3Igc28gaGF2ZSBzdGFydGVkIHdvcmtpbmcgb24gU0lQL1NEUC9S VFAgY29ubnRyYWNrL05BVCANCj4gaGVscGVycywgYnV0IG5vbmUgb2YgdGhlbSBoYXZlIGFwcGFy ZW50bHkgZ290dGVuIHRvIGEgdXNhYmxlIHN0YXRlLg0KPiANCj4gSSB3YW50IHRvIGdldCB0aGlz IGRvbmUsIEkgbmVlZCB0byBiZSBhYmxlIHRvIHVzZSBpdCBzb29uIDotKSBJIGFtIA0KPiB3aWxs aW5nIHRvIHB1dCB0aGUgdGltZSBpbiB0byBtYWtlIHRoaXMgd29yaywgYW5kIEkgYmVsaWV2ZSBJ IGhhdmUgDQo+IGVub3VnaCBza2lsbHMgdG8gZ2V0IGl0IGRvbmUuDQo+IA0KPiBJZiB0aGVyZSBh cmUgYW55IHN0YXJ0aW5nIHBvaW50cyBvdXQgdGhlcmUgKG90aGVyIHRoYW4gdGhlIGNvZGUgdGhh dCANCj4gRG9taW5payBwb3N0ZWQgYSB5ZWFyIGFnbykgSSdkIGFwcHJlY2lhdGUgcG9pbnRlcnMg dG8gdGhlbSwgb3RoZXJ3aXNlIA0KPiBJJ2xsIGp1c3QgdGFrZSB0aGUgZXhpc3RpbmcgRlRQL0gu MzIzIGV4YW1wbGVzIGFuZCBnbyBmcm9tIHRoZXJlLiBBbHNvLCANCj4gaWYgdGhlcmUgYXJlIGFu eSBhdmFpbGFibGUgZG9jcyBvbiBtYWtpbmcgaGVscGVycyB0aGF0IHdpbGwgd29yayB3aXRoIA0K PiBib3RoIDIuNCBhbmQgMi42IGtlcm5lbHMgdGhhdCB3b3VsZCBiZSBhcHByZWNpYXRlZCBhcyB3 ZWxsLg0KPiANCj4gDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+ IE1lc3NhZ2U6IDUNCj4gRGF0ZTogV2VkLCAyNSBBdWcgMjAwNCAxMzoxMjowNiArMDAwMA0KPiBY LVZpcnVzOiAxDQo+IEZyb206IEpvaG4gPGpmYXN0YWJlQHVwLmVkdT4NCj4gU3ViamVjdDogSXB0 YWJsZXMgZXh0ZW5zaW9uIGxvYWRpbmcgZXJyb3INCj4gVG86IG5ldGZpbHRlci1kZXZlbEBsaXN0 cy5uZXRmaWx0ZXIub3JnDQo+IE1lc3NhZ2UtSUQ6IDw0MTJDOTAyNi42MDUwNzAzQHVwLmVkdT4N Cj4gQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE7IGZvcm1hdD1m bG93ZWQNCj4gDQo+IEkgYW0gaGF2aW5nIHRyb3VibGUgZ2V0dGluZyBhbiBpcHRhYmxlcyBleHRl bnNpb24gdG8gd29yay4gSSBjb21waWxlIHRoZSANCj4gc2hhcmVkIGxpYnJhcnkgd2l0aCB0aGUg Y29tbWFuZHMsDQo+IA0KPiAkIGdjYyAtMDIgLVdhbGwgLVd1bnVzZWQgLUkgL3Jvb3QvaXB0YWJs ZXMvaW5jbHVkZS8gLWZQSUMgLW8gDQo+IGxpYmlwdF9DSEFOR0VJUC5vIC1jICAgICAgICAgICAg ICAgICAgIGxpYmlwdF9DSEFOR0VJUC5jDQo+IA0KPiAkIGxkIC1zaGFyZWQgLW8gbGliaXB0X0NI QU5HRUlQLnNvIGxpYmlwdF9DSEFOR0VJUC5vDQo+IA0KPiBUaGUgYWJvdmUgY29tbWFuZHMgZ2l2 ZSBubyBlcnJvcnMsIGJ1dCB3aGVuIEkgdHJ5IHRvIHJ1biBpcHRhYmxlcyB3aXRoIA0KPiBteSBu ZXcgdGFyZ2V0IGV4dGVuc2lvbiBpIGdldCB0aGUgZm9sbG93aW5nIGVycm9yLg0KPiANCj4gJCBp cHRhYmxlcyBpcHRhYmxlcyAtSSBJTlBVVCAtaiBDSEFOR0VJUA0KPiBpcHRhYmxlcyB2MS4yLjk6 IENvdWxkbid0IGxvYWQgdGFyZ2V0IGBDSEFOR0VJUCcNCj4gDQo+IEkga25vdyB0aGUgbW9kdWxl IGlzIGxvYWRlZCBjb3JyZWN0bHkgYmVjYXVzZSB3aGVuIEkgcmVtb3ZlIHRoZSBtb2R1bGUgSSAN Cj4gZ2V0IGEgZGlmZmVyZW50IGVycm9yIGFuZCB0aGUgc2hhcmVkIGxpYnJhcnkgaXMgYWxzbyBp biB0aGUgY29ycmVjdCANCj4gZGlyZWN0b3J5IGJlY2F1c2Ugd2hlbiBpIG1vdmUgaXQgaSBnZXQg YSBkaWZmZXJlbnQgZXJyb3IgdGhlbiB0aGlzLiAgSSANCj4gYW0gYXQgYSBsb3NzIGZvciB3aGF0 IEkgc2hvdWxkIHN0YXJ0IHRvIGRvIHRvIGxvb2sgZm9yIHRoaXMgZXJyb3IuICANCj4gQmVsb3cg aXMgdGhlIGNvZGUgdG8gbXkgc2hhcmVkIGxpYnJhcnkgYW5kIG1vZHVsZS4gIElmIGFueW9uZSBj b3VsZCBnaXZlIA0KPiBtZSBhZHZpY2Ugb24gd2hlcmUgdG8gc3RhcnQgbG9va2luZyB0byBmaXgg dGhpcyBwcm9ibGVtIHRoYXQgd291bGQgYmUgDQo+IGdyZWF0bHkgYXBwcmVjaWF0ZWQuICBUaGUg c3lzdGVtIEkgYW0gdXNpbmcgaXMsDQo+IA0KPiBMaW51eCBuaXRiaXQgMi40LjIyLWdlbnRvby1y NSAjNCBTTVAgVHVlIEphbiAyMCAwMTozMzozMSBVVEMgMjAwNCBpNjg2IA0KPiBJbnRlbChSKSBD ZWxlcm9uKFIpIENQVSAyLjMwR0h6IEdlbnVpbmVJbnRlbCBHTlUvTGludXgNCj4gDQo+IElmIG1v cmUgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGhlbHAgcGxlYXNlIGxldCBtZSBrbm93IHRoYW5r IHlvdSBmb3IgDQo+IHlvdXIgdGltZSwNCj4gam9obg0KPiANCj4gLyogU2hhcmVkIGxpYnJhcnkg YWRkLW9uIHRvIGlwdGFibGVzIHRvIGFkZCBDSEFOR0VJUCB0YXJnZXQgc3VwcG9ydC4NCj4gICov DQo+ICNpbmNsdWRlIDxzdGRpby5oPg0KPiAjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICNpbmNsdWRl IDxzdGRsaWIuaD4NCj4gI2luY2x1ZGUgPGdldG9wdC5oPg0KPiAjaW5jbHVkZSA8bmV0aW5ldC9p bi5oPg0KPiAjaW5jbHVkZSA8aXB0YWJsZXMuaD4NCj4gI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRl cl9pcHY0L2lwX3RhYmxlcy5oPg0KPiAjaW5jbHVkZSAiaXB0X0NIQU5HRUlQLmgiDQo+IA0KPiAj ZGVmaW5lIE5PQ0xPQkJFUiAwDQo+ICNkZWZpbmUgQ0xPQkJFUiAgIDENCj4gDQo+IC8qIEZ1bmN0 aW9uIHRoYXQgcHJpbnRzIG91dCB1c2FnZSBtZXNzYWdlICovDQo+IHN0YXRpYyB2b2lkDQo+IGhl bHAodm9pZCkNCj4gew0KPiAgICAgcHJpbnRmKA0KPiAgICAgICJDaGFuZ2VJUCB0YXJnZXQgdiBc biINCj4gICAgICAiICAgICAtLWRpcCAgICAgXHRpcCBcdFx0IENoYW5nZSBkZXN0aW5hdGlvbiBJ UFxuIg0KPiAgICAgICIgICAgIC0tc2lwICAgICBcdGlwIFx0XHQgQ2hhbmdlIHNvdXJjZSBJUFxu Ig0KPiAgICAgICIgICAgIC0tY29udGludWVcdCAgIFx0XHQgTGV0IHBhY2tldCBjb250aW51ZSB0 cmF2ZXJzYWxcbiINCj4gICAgICAiXG4iKTsNCj4gfQ0KPiANCj4gc3RhdGljIHN0cnVjdCBvcHRp b24gb3B0c1tdID0gew0KPiAgICAgeyJkaXAiLCAxLCAwLCAnMScgfSwNCj4gICAgIHsic2lwIiwg MSwgMCwgJzInIH0sDQo+ICAgICB7ImNsb2JiZXIiLDAsMCwnMyd9LA0KPiAgICAgeyAwIH0NCj4g fTsNCj4gDQo+IHN0YXRpYyB2b2lkIGluaXQNCj4gKHN0cnVjdCBpcHRfZW50cnlfdGFyZ2V0ICp0 ICwgdW5zaWduZWQgaW50ICpuZmNhY2hlICl7DQo+ICAgICBzdHJ1Y3QgaXB0X2NoYW5nZWlwX3Rh cmdldF9pbmZvICppcGluZm8gPQ0KPiAgICAgICAgICAgICAgICAoc3RydWN0IGlwdF9jaGFuZ2Vp cF90YXJnZXRfaW5mbyopdC0+ZGF0YTsNCj4gICAgIHByaW50ZigiaGlcbiIpOw0KPiAgICAgaXBp bmZvLT5jbG9iYmVyID0gTk9DTE9CQkVSOw0KPiAgICAgaXBpbmZvLT5kaXAgPSBOVUxMOw0KPiAg ICAgaXBpbmZvLT5zaXAgPSBOVUxMOw0KPiANCj4gIH0NCj4gDQo+IA0KPiANCj4gc3RhdGljIGlu dCBwYXJzZShpbnQgYywgY2hhciAqKmFyZ3YsIGludCBpbnZlcnQsDQo+ICAgICAgICAgIHVuc2ln bmVkIGludCAqZmxhZ3MsDQo+ICAgICAgICAgIGNvbnN0IHN0cnVjdCBpcHRfZW50cnkgKmVudHJ5 LA0KPiAgICAgICAgICBzdHJ1Y3QgaXB0X2VudHJ5X3RhcmdldCAqKnRhcmdldCkNCj4geyAgICAg ICAgICBwcmludGYoImhlbGxvXG4iKTsNCj4gICAgIHN0cnVjdCBpcHRfY2hhbmdlaXBfdGFyZ2V0 X2luZm8gKmlwaW5mbyA9DQo+ICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgaXB0X2NoYW5n ZWlwX3RhcmdldF9pbmZvICopKCp0YXJnZXQpLT5kYXRhOw0KPiANCj4gICAgIC8vaWYoZW50cnkt PmlwLnByb3RvICE9IElQVF9JUCkNCj4gICAgIC8vICAgIGV4aXRfZXJyb3IoUEFSQU1FVEVSX1BS T0JMRU0sICJOZWVkcyB0byBiZSBhbiBpcCBwYWNrZXQiKTsNCj4gICAgIHN3aXRjaCAoYyl7DQo+ ICAgICBjYXNlICcxJzoNCj4gICAgICAgICBpZigqZmxhZ3MpIGV4aXRfZXJyb3IoUEFSQU1FVEVS X1BST0JMRU0sDQo+ICAgICAgICAgICAgICJPbmx5IG9uZSBkZXN0aW5hdGlvbiBpcCBhbGxvd2Vk Iik7DQo+ICAgICAgICAgaXBpbmZvLT5kaXAgPSBvcHRhcmc7DQo+ICAgICAgICAgICAgICAgICAv L2luZXRfYXRvbihvcHRhcmcsIGlwaW5mby0+ZGlwLnNfYWRkciApOw0KPiAgICAgICAgICpmbGFn cyA9MTsNCj4gICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgDQo+ICAgICBjYXNlICcy JzoNCj4gICAgICAgICBpZigqZmxhZ3MpIGV4aXRfZXJyb3IoUEFSQU1FVEVSX1BST0JMRU0sDQo+ ICAgICAgICAgICAgICAgIk9ubHkgb25lIHNyYyBpcCBhbGxvd2VkIik7DQo+ICAgICAgICAgaXBp bmZvLT5zaXAgPSBvcHRhcmc7DQo+ICAgICAgICAgICAgICAgICAvL2luZXRfYXRvbihvcHRhcmcs IGlwaW5mby0+c2lwLnNfYWRkcik7DQo+ICAgICAgICAgKmZsYWdzID0gMTsNCj4gICAgICAgICBi cmVhazsNCj4gICAgIGNhc2UgJzMnOg0KPiAgICAgICAgICBpZigqZmxhZ3MpIGV4aXRfZXJyb3Io UEFSQU1FVEVSX1BST0JMRU0sDQo+ICAgICAgICAgICAgICJTeW50YXggbWVzc2VkIHVwIik7DQo+ ICAgICAgICAgaXBpbmZvLT5jbG9iYmVyID0gMTsNCj4gICAgICAgICBicmVhazsNCj4gDQo+ICAg ICBkZWZhdWx0OiByZXR1cm4gMDsNCj4gICAgIH0NCj4gDQo+ICAgICByZXR1cm4gMTsNCj4gfQ0K PiANCj4gc3RhdGljIHZvaWQgZmluYWxfY2hlY2sodW5zaWduZWQgaW50IGZsYWdzKXsNCj4gICAg IGlmKCFmbGFncykNCj4gICAgICAgICBleGl0X2Vycm9yKFBBUkFNRVRFUl9QUk9CTEVNLA0KPiAg ICAgICAgICAgICAiTXVzdCBoYXZlIGVpdGhlciBzb3VyY2Ugb3IgZGVzdGluYXRpb24gaXAgdG8g Y2hhbmdlIik7DQo+ICAgIA0KPiB9DQo+IA0KPiANCj4gc3RhdGljIHZvaWQgcHJpbnQgKGNvbnN0 IHN0cnVjdCBpcHRfaXAgKmlwLA0KPiAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpcHRfZW50cnlf dGFyZ2V0ICp0YXJnZXQsDQo+ICAgICAgICAgICAgaW50IG51bWVyaWMpDQo+IHsNCj4gICAgICAg ICBwcmludGYoImhlbGxvXG4iKTsNCj4gICAgIGNvbnN0IHN0cnVjdCBpcHRfY2hhbmdlaXBfdGFy Z2V0X2luZm8gKmlwaW5mbw0KPiAgICAgICAgICAgICAgPSAoY29uc3Qgc3RydWN0IGlwdF9jaGFu Z2VpcF90YXJnZXRfaW5mbyAqKXRhcmdldC0+ZGF0YTsNCj4gICAgIHByaW50ZigiQ2hhbmdpbmcg SVAiKTsgICAgICAgICAgDQo+IH0NCj4gDQo+IHN0YXRpYyB2b2lkIHNhdmUoY29uc3Qgc3RydWN0 IGlwdF9pcCAqaXAsIGNvbnN0IHN0cnVjdCBpcHRfZW50cnlfdGFyZ2V0IA0KPiAqdGFyZ2V0KQ0K PiB7DQo+IA0KPiB9DQo+IA0KPiBzdGF0aWMgc3RydWN0IGlwdGFibGVzX3RhcmdldCBjaGFuZ2Vp cCA9IHsgTlVMTCwNCj4gICAgICJDSEFOR0VJUCIsDQo+ICAgICAiMS4yLjkiLA0KPiAgICAgSVBU X0FMSUdOKHNpemVvZihzdHJ1Y3QgaXB0X2NoYW5nZWlwX3RhcmdldF9pbmZvKSApLA0KPiAgICAg SVBUX0FMSUdOKHNpemVvZihzdHJ1Y3QgaXB0X2NoYW5nZWlwX3RhcmdldF9pbmZvKSApLA0KPiAg ICAgJmhlbHAsDQo+ICAgICAmaW5pdCwNCj4gICAgICZwYXJzZSwNCj4gICAgICZmaW5hbF9jaGVj aywNCj4gICAgICZwcmludCwNCj4gICAgICZzYXZlLA0KPiAgICAgb3B0cw0KPiB9Ow0KPiANCj4g dm9pZCBfaW5pdCh2b2lkKQ0KPiB7DQo+ICAgICAgICAgcHJpbnRmKCJoZWxsb1xuIik7DQo+ICAg ICByZWdpc3Rlcl90YXJnZXQoJmNoYW5nZWlwKTsNCj4gfQ0KPiANCj4gDQo+IA0KPiANCj4gDQo+ IC8vYW5kIGZpbmFsbHkgdGhlIG1vZHVsZSBjb2RlDQo+ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu aD4NCj4gI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPg0KPiAjaW5jbHVkZSAiaXB0X0NIQU5HRUlQ LmgiDQo+ICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC9pcF90YWJsZXMuaD4NCj4gICAg ICAgICANCj4gICAgICAgICAgICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gICAgICAgICAg ICNpbmNsdWRlIDxsaW51eC9pcC5oPiAgICAgICAgICAgICAgICAgIC8qIEZvciBJUCBoZWFkZXIg Ki8NCj4gICAgICAgICAgICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXIuaD4NCj4gICAgICAgICAg ICNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXJfaXB2NC5oPg0KPiANCj4gTU9EVUxFX0FVVEhPUigi Sm9obiBGYXN0YWJlbmQiKTsNCj4gTU9EVUxFX0RFU0NSSVBUSU9OKCJDaGFuZ2VzIGlwIGFkZHJl c3NlcyIpOw0KPiBNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+IA0KPiANCj4gc3RhdGljIHVuc2ln bmVkIGludA0KPiBpcHRfY2hhbmdlaXBfdGFyZ2V0KHN0cnVjdCBza19idWZmICoqcHNrYiwNCj4g ICAgICAgICAgICAgdW5zaWduZWQgaW50IGhvb2tudW0sDQo+ICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBuZXRfZGV2aWNlICppbiwNCj4gICAgICAgICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZp Y2UgKm91dCwNCj4gICAgICAgICAgICAgY29uc3Qgdm9pZCAqdGFyZ2luZm8sDQo+ICAgICAgICAg ICAgIHZvaWQgKnVzZXJpbmZvKQ0KPiB7DQo+ICAgICBjb25zdCBzdHJ1Y3QgaXB0X2NoYW5nZWlw X3RhcmdldF9pbmZvICppcGluZm8gPSB0YXJnaW5mbzsNCj4gICAgICAgICBzdHJ1Y3Qgc2tfYnVm ZiAqc2IgPSAqcHNrYjsNCj4gDQo+ICAgICBpZihza2JfY2xvbmVkKCpwc2tiKSAmJiAhKCpwc2ti KS0+c2spew0KPiAgICAgICAgIHN0cnVjdCBza19idWZmICpuc2tiIA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPSBza2JfY29weSgqcHNrYiwgR0ZQX0FUT01JQyk7DQo+ICAgICAgICAg aWYoIXBza2IpIHJldHVybiBORl9EUk9QOw0KPiAgICAgICAgIGtmcmVlX3NrYigqcHNrYik7DQo+ ICAgICAgICAgKnBza2IgPSBuc2tiOw0KPiAgICAgICAgIHNiLT5uaC5pcGggPSAoKnBza2IpLT5u aC5pcGg7DQo+ICAgICB9DQo+ICAgIA0KPiAgICAgaWYoIGlwaW5mby0+Y2xvYmJlciA9PSAwIC8q Tk9DTE9CQkVSKi8gKXsNCj4gICAgICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKm9yaWdza2INCj4g ICAgICAgICAgICAgICAgICAgICAgPSBza2JfY29weSgqcHNrYiwgR0ZQX0FUT01JQyk7DQo+ICAg ICAgICAgc2tiX2luc2VydChvcmlnc2tiLCpwc2tiKTsNCj4gICAgIH0NCj4gICAgDQo+IA0KPiAg ICAgICAgIHNiLT5uaC5pcGgtPmRhZGRyID0gaXBpbmZvLT5kaXA7DQo+ICAgIA0KPiAgICAgICAg DQo+ICAgICBzYi0+bmguaXBoLT5zYWRkciA9IGlwaW5mby0+c2lwOw0KPiANCj4gDQo+ICAgICBy ZXR1cm4gSVBUX0NPTlRJTlVFOw0KPiB9DQo+IA0KPiBzdGF0aWMgaW50IGlwdF9jaGFuZ2VpcF9j aGVja2VudHJ5KCBjb25zdCBjaGFyICp0YWJsZW5hbWUsDQo+ICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGlwdF9lbnRyeSAqZSwNCj4gICAgICAgICAgICAgICAgICAgICB2b2lkICp0 YXJnaW5mbywNCj4gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdGFyZ2luZm9zaXpl LA0KPiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBob29rX21hc2spDQo+IHsNCj4g cmV0dXJuIDE7DQo+IH0NCj4gDQo+IHN0YXRpYyBzdHJ1Y3QgaXB0X3RhcmdldCBpcHRfY2hhbmdl aXBfcmVnID0gIHsge05VTEwsIE5VTEx9LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAiQ0hB TkdFSVAiLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBpcHRfY2hhbmdlaXBfdGFyZ2V0LA0K PiAgICAgICAgICAgICAgICAgICAgICAgICBpcHRfY2hhbmdlaXBfY2hlY2tlbnRyeSwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgVEhJ U19NT0RVTEUgfTsNCj4gDQo+IHN0YXRpYyBpbnQgIF9faW5pdCBpbml0KHZvaWQpew0KPiAgICAg cmV0dXJuIGlwdF9yZWdpc3Rlcl90YXJnZXQoJmlwdF9jaGFuZ2VpcF9yZWcpOw0KPiB9DQo+IA0K PiBzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKXsNCj4gICAgIHJldHVybiBpcHRfdW5yZWdp c3Rlcl90YXJnZXQoJmlwdF9jaGFuZ2VpcF9yZWcpOw0KPiB9DQo+IA0KPiBtb2R1bGVfaW5pdChp bml0KTsNCj4gbW9kdWxlX2V4aXQoZmluaSk7DQo+IA0KPiANCj4gDQo+IA0KPiBQUy4gc29ycnkg aWYgdGhpcyBlbWFpbCBpcyB0b28gbG9uZyBJIGRpZG50IGhhdmUgYW55d2hlcmUgdG8gcG9zdCB0 aGUgDQo+IGNvZGUgb25saW5lLg0KPiANCj4gDQo+IA0KPiANCj4gDQo+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gTWVzc2FnZTogNg0KPiBEYXRlOiBXZWQsIDI1IEF1ZyAy MDA0IDIyOjMyOjA2ICswMjAwDQo+IFgtVmlydXM6IDENCj4gRnJvbTogSGFyYWxkIFdlbHRlIDxs YWZvcmdlQG5ldGZpbHRlci5vcmc+DQo+IFN1YmplY3Q6IFJlOiBMaW51eCAyLjYuOS1yYzENCj4g VG86IEpvc2h1YSBLd2FuIDxqb3Noa0B0cmlwbGVoZWxpeC5vcmc+DQo+IENjOiBEYXZpZCBNaWxs ZXIgPGRhdmVtQHJlZGhhdC5jb20+LCBOZXRmaWx0ZXIgRGV2ZWxvcG1lbnQgTWFpbGluZ2xpc3QN Cj4gPG5ldGZpbHRlci1kZXZlbEBsaXN0cy5uZXRmaWx0ZXIub3JnPiwgbGludXgta2VybmVsQHZn ZXIua2VybmVsLm9yZw0KPiBNZXNzYWdlLUlEOiA8MjAwNDA4MjUyMDMyMDYuR1M1ODI0QHN1bmJl YW0uZGUuZ251bW9ua3Mub3JnPg0KPiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 InVzLWFzY2lpIg0KPiANCj4gT24gV2VkLCBBdWcgMjUsIDIwMDQgYXQgMTE6NTI6MzBBTSAtMDcw MCwgSm9zaHVhIEt3YW4gd3JvdGU6DQo+ID4gTGludXMgVG9ydmFsZHMgd3JvdGU6DQo+ID4gPkhh cmFsZCBXZWx0ZToNCj4gPiAuLi4NCj4gPiA+ICBvIFtORVRGSUxURVJdOiBNYWtlICdoZWxwZXIn IGxpc3Qgb2YgaXBfbmF0X2NvcmUgc3RhdGljDQo+ID4gLi4uDQo+ID4gDQo+ID4gSSBzdXNwZWN0 IHRoYXQgdGhpcyBjaGFuZ2VzZXRbMV0gc29tZWhvdyBjYXVzZWQgdGhpcyB0byBoYXBwZW4gKG1h bnkgDQo+ID4gdGltZXMpIGluIGRtZXNnOg0KPiA+IA0KPiA+IEFTU0VSVCBuZXQvaXB2NC9uZXRm aWx0ZXIvaXBfbmF0X2hlbHBlci5jOjQyOCAmaXBfbmF0X2xvY2sgd3JpdGVsb2NrZWQNCj4gDQo+ IHllcywgaW5kZWVkLg0KPiANCj4gPiBJdCBzZWVtcyB0byBiZSB3b3JraW5nIHByb3Blcmx5IChO QVR0aW5nIHR3byBtYWNoaW5lcyBiZWhpbmQgYSBsb2NhbCANCj4gPiBuZXR3b3JrIHRvIHRoZSBJ bnRlcm5ldC4pDQo+IA0KPiBUaGUgJ3Byb2JsZW0nIGlzIHRoYXQgd2UgdHJ5IHRvIGdldCBhIHJl YWRsb2NrIHdoaWxlIHdlJ3JlIGFscmVhZHkNCj4gcHJvdGVjdGVkIHVuZGVyIGEgd3JpdGUgbG9j ay4NCj4gDQo+IFBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyBbcXVpdGUgdHJpdmlhbCwgYnV0IHll dCB1bnRlc3RlZF0gcGF0Y2g6DQo+IA0KPiAtLS0gbGludXgtMi42LjktcmMxL25ldC9pcHY0L25l dGZpbHRlci9pcF9uYXRfY29yZS5jIDIwMDQtMDgtMjUgMjI6MjI6MzYuNDUwMzQwNTA0ICswMjAw DQo+ICsrKyBsaW51eC0yLjYuOS1yYzEtZmluZF9oZWxwZXIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lw X25hdF9jb3JlLmMgMjAwNC0wOC0yNSAyMjoyODozNy42NjgyNzMyNzEgKzAyMDANCj4gQEAgLTYz NSw3ICs2MzUsNyBAQA0KPiAgDQo+ICAgLyogSWYgdGhlcmUncyBhIGhlbHBlciwgYXNzaWduIGl0 OyBiYXNlZCBvbiBuZXcgdHVwbGUuICovDQo+ICAgaWYgKCFjb25udHJhY2stPm1hc3RlcikNCj4g LSBpbmZvLT5oZWxwZXIgPSBpcF9uYXRfZmluZF9oZWxwZXIoJnJlcGx5KTsNCj4gKyBpbmZvLT5o ZWxwZXIgPSBfX2lwX25hdF9maW5kX2hlbHBlcigmcmVwbHkpOw0KPiAgDQo+ICAgLyogSXQncyBk b25lLiAqLw0KPiAgIGluZm8tPmluaXRpYWxpemVkIHw9ICgxIDw8IEhPT0syTUFOSVAoaG9va251 bSkpOw0KPiAtLS0gbGludXgtMi42LjktcmMxL25ldC9pcHY0L25ldGZpbHRlci9pcF9uYXRfaGVs cGVyLmMgMjAwNC0wOC0yNSAyMjoyMjozNi40NTMzNDAzNzYgKzAyMDANCj4gKysrIGxpbnV4LTIu Ni45LXJjMS1maW5kX2hlbHBlci9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfbmF0X2hlbHBlci5jIDIw MDQtMDgtMjUgMjI6Mjc6NDcuODgwMzM1MTEyICswMjAwDQo+IEBAIC00MjEsMTIgKzQyMSwxOCBA QA0KPiAgfQ0KPiAgDQo+ICBzdHJ1Y3QgaXBfbmF0X2hlbHBlciAqDQo+ICtfX2lwX25hdF9maW5k X2hlbHBlcihjb25zdCBzdHJ1Y3QgaXBfY29ubnRyYWNrX3R1cGxlICp0dXBsZSkNCj4gK3sNCj4g KyByZXR1cm4gTElTVF9GSU5EKCZoZWxwZXJzLCBoZWxwZXJfY21wLCBzdHJ1Y3QgaXBfbmF0X2hl bHBlciAqLCB0dXBsZSk7DQo+ICt9DQo+ICsNCj4gK3N0cnVjdCBpcF9uYXRfaGVscGVyICoNCj4g IGlwX25hdF9maW5kX2hlbHBlcihjb25zdCBzdHJ1Y3QgaXBfY29ubnRyYWNrX3R1cGxlICp0dXBs ZSkNCj4gIHsNCj4gICBzdHJ1Y3QgaXBfbmF0X2hlbHBlciAqaDsNCj4gIA0KPiAgIFJFQURfTE9D SygmaXBfbmF0X2xvY2spOw0KPiAtIGggPSBMSVNUX0ZJTkQoJmhlbHBlcnMsIGhlbHBlcl9jbXAs IHN0cnVjdCBpcF9uYXRfaGVscGVyICosIHR1cGxlKTsNCj4gKyBoID0gX19pcF9uYXRfZmluZF9o ZWxwZXIodHVwbGUpOw0KPiAgIFJFQURfVU5MT0NLKCZpcF9uYXRfbG9jayk7DQo+ICANCj4gICBy ZXR1cm4gaDsNCj4gLS0tIGxpbnV4LTIuNi45LXJjMS9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfbmF0 X3N0YW5kYWxvbmUuYyAyMDA0LTA4LTI1IDIyOjIyOjM2LjQ2MTM0MDAzNSArMDIwMA0KPiArKysg bGludXgtMi42LjktcmMxLWZpbmRfaGVscGVyL25ldC9pcHY0L25ldGZpbHRlci9pcF9uYXRfc3Rh bmRhbG9uZS5jIDIwMDQtMDgtMjUgMjI6Mjk6MzAuMDQ3MTAyNTg5ICswMjAwDQo+IEBAIC0zOTQs NCArMzk0LDUgQEANCj4gIEVYUE9SVF9TWU1CT0woaXBfbmF0X21hbmdsZV90Y3BfcGFja2V0KTsN Cj4gIEVYUE9SVF9TWU1CT0woaXBfbmF0X21hbmdsZV91ZHBfcGFja2V0KTsNCj4gIEVYUE9SVF9T WU1CT0woaXBfbmF0X3VzZWRfdHVwbGUpOw0KPiArRVhQT1JUX1NZTUJPTChpcF9uYXRfZmluZF9o ZWxwZXIpOw0KPiAgTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiANCj4gLS0gDQo+IC0gSGFyYWxk IFdlbHRlIDxsYWZvcmdlQG5ldGZpbHRlci5vcmc+ICAgICAgICAgICAgIGh0dHA6Ly93d3cubmV0 ZmlsdGVyLm9yZy8NCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAgICJGcmFnbWVudGF0aW9uIGlz IGxpa2UgY2xhc3NmdWwgYWRkcmVzc2luZyAtLSBhbiBpbnRlcmVzdGluZyBlYXJseQ0KPiAgICBh cmNoaXRlY3R1cmFsIGVycm9yIHRoYXQgc2hvd3MgaG93IG11Y2ggZXhwZXJpbWVudGF0aW9uIHdh cyBnb2luZw0KPiAgICBvbiB3aGlsZSBJUCB3YXMgYmVpbmcgZGVzaWduZWQuIiAgICAgICAgICAg ICAgICAgICAgLS0gUGF1bCBWaXhpZQ0KPiAtLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0t LS0tLS0tLS0NCj4gQSBub24tdGV4dCBhdHRhY2htZW50IHdhcyBzY3J1YmJlZC4uLg0KPiBOYW1l OiBub3QgYXZhaWxhYmxlDQo+IFR5cGU6IGFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmUNCj4gU2l6 ZTogMTg5IGJ5dGVzDQo+IERlc2M6IERpZ2l0YWwgc2lnbmF0dXJlDQo+IFVybCA6IC9waXBlcm1h aWwvbmV0ZmlsdGVyLWRldmVsL2F0dGFjaG1lbnRzLzIwMDQwODI1L2MzM2FiZGE2L2F0dGFjaG1l bnQuYmluDQo+IA0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IG5ldGZpbHRlci1k ZXZlbCBtYWlsaW5nIGxpc3QNCj4gbmV0ZmlsdGVyLWRldmVsQGxpc3RzLm5ldGZpbHRlci5vcmcN Cj4gaHR0cHM6Ly9saXN0cy5uZXRmaWx0ZXIub3JnL21haWxtYW4vbGlzdGluZm8vbmV0ZmlsdGVy LWRldmVsDQo+IA0KPiANCj4gRW5kIG9mIG5ldGZpbHRlci1kZXZlbCBEaWdlc3QsIFZvbCAxLCBJ c3N1ZSAxMjU3DQo+ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KPiA=