From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Horman Subject: Re: [PATCH net-next v11 5/6] openvswitch: add layer 3 flow/port support Date: Thu, 25 Aug 2016 12:08:34 +0200 Message-ID: <20160825100833.GA31926@penelope.isobedori.kobe.vergenet.net> References: <20160720000243.GA4688@penelope.isobedori.kobe.vergenet.net> <20160808151716.GA8477@penelope.isobedori.kobe.vergenet.net> <20160810102043.GE5451@penelope.isobedori.kobe.vergenet.net> <20160822110444.GA29971@penelope.isobedori.kobe.vergenet.net> <20160823085144.GA22304@penelope.isobedori.kobe.vergenet.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: ovs dev , Linux Kernel Network Developers , Jiri Benc To: Joe Stringer Return-path: Content-Disposition: inline In-Reply-To: <20160823085144.GA22304-ucRxlxcrRFEsysjaEhV7d2ey4e3TpSOZIxS8c3vjKQDk1uMJSBkQmQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-yBygre7rU0TnMu66kgdUjQ@public.gmane.org Sender: "dev" List-Id: netdev.vger.kernel.org T24gVHVlLCBBdWcgMjMsIDIwMTYgYXQgMTA6NTE6NDdBTSArMDIwMCwgU2ltb24gSG9ybWFuIHdy b3RlOgo+IE9uIE1vbiwgQXVnIDIyLCAyMDE2IGF0IDAyOjQ3OjQyUE0gLTA3MDAsIEpvZSBTdHJp bmdlciB3cm90ZToKPiA+IE9uIDIyIEF1Z3VzdCAyMDE2IGF0IDA0OjA0LCBTaW1vbiBIb3JtYW4g PHNpbW9uLmhvcm1hbkBuZXRyb25vbWUuY29tPiB3cm90ZToKPiA+ID4gT24gV2VkLCBBdWcgMTAs IDIwMTYgYXQgMTA6MTc6MzBBTSAtMDcwMCwgSm9lIFN0cmluZ2VyIHdyb3RlOgo+ID4gPj4gT24g MTAgQXVndXN0IDIwMTYgYXQgMDM6MjAsIFNpbW9uIEhvcm1hbiA8c2ltb24uaG9ybWFuQG5ldHJv bm9tZS5jb20+IHdyb3RlOgo+ID4gPj4gPiBPbiBUdWUsIEF1ZyAwOSwgMjAxNiBhdCAwODo0Nzo0 MEFNIC0wNzAwLCBwcmF2aW4gc2hlbGFyIHdyb3RlOgo+ID4gPj4gPj4gT24gTW9uLCBBdWcgOCwg MjAxNiBhdCA4OjE3IEFNLCBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBuZXRyb25vbWUuY29t PiB3cm90ZToKPiA+ID4+ID4+ID4gTGlnaHQgdGVzdGluZyBzZWVtcyB0byBpbmRpY2F0ZSB0aGF0 IGl0IHdvcmtzIGZvciBHU08gc2ticwo+ID4gPj4gPj4gPiByZWNlaXZlZCBvdmVyIGJvdGggTDMg YW5kIEwyIEdSRSB0dW5uZWxzIGJ5IE92UyB3aXRoIGJvdGgKPiA+ID4+ID4+ID4gSVAtaW4tTVBM UyBhbmQgSVAgKHdpdGhvdXQgTVBMUykgcGF5bG9hZHMuCj4gPiA+PiA+PiA+Cj4gPiA+PiA+Pgo+ ID4gPj4gPj4gVGhhbmtzIGZvciB0ZXN0aW5nIGl0LiBDYW4geW91IGFsc28gYWRkIHRob3NlIHRl c3RzIHRvIE9WUyBrbW9kIHRlc3Qgc3VpdGU/Cj4gPiA+PiA+PiAuLgo+ID4gPj4gPgo+ID4gPj4g PiBTdXJlLCBJIHdpbGwgbG9vayBpbnRvIGRvaW5nIHRoYXQuCj4gPiA+PiA+IEFtIEkgY29ycmVj dCBpbiB0aGlua2luZyBKb2UgU3RyaW5nZXIgaXMgdGhlIGJlc3QgcGVyc29uIHRvIGNvbnRhY3Qg aWYKPiA+ID4+ID4gSSBydW4gaW50byB0cm91YmxlIHRoZXJlPwo+ID4gPj4KPiA+ID4+IFN1cmUu IFRoZSBiYXNpY3Mgb2YgcnVubmluZyB0aGUgdGVzdHMgaXMgZG9jdW1lbnRlZCBoZXJlOgo+ID4g Pj4gaHR0cHM6Ly9naXRodWIuY29tL29wZW52c3dpdGNoL292cy9ibG9iL21hc3Rlci9JTlNUQUxM Lm1kI2RhdGFwYXRoLXRlc3RpbmcKPiA+ID4+Cj4gPiA+PiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8g Z2V0IGEgZ29vZCBmZWVsIGZvciBob3cgdG8gYWRkIHRlc3RzIGJ5IHBlcnVzaW5nCj4gPiA+PiB0 aGUgY29tbWl0cyB0byB0ZXN0cy9zeXN0ZW0te3RyYWZmaWMsa21vZC1tYWNyb3N9LmF0IGluIHRo ZSBPVlMgc291cmNlCj4gPiA+PiB0cmVlLgo+ID4gPgo+ID4gPiBUaGFua3MgSm9lLAo+ID4gPgo+ ID4gPiBpdCB0b29rIG1lIGEgd2hpbGUgYnV0IEkgdGhpbmsgdGhhdCBJIGhhdmUgc29tZXRoaW5n IHdvcmtpbmcKPiA+ID4gYWdhaW5zdCB0aGUgaGVhZCBicmFuY2ggb2YgdGhlIE9WUyB0cmVlLiBJ J2QgdmFsdWUgb3BpbmlvbnMKPiA+ID4gb24gdGhlIGRpcmVjdGlvbiBJIGhhdmUgdGFrZW4uCj4g PiA+Cj4gPiA+IFN1YmplY3Q6IFtQQVRDSF0gc3lzdGVtLXRyYWZmaWM6IEV4ZXJjaXNlIEdTTwo+ ID4gPgo+ID4gPiBFeGVyY2lzZSBHU08gZm9yOiB1bmVuY2Fwc3VsYXRlZDsgTVBMUzsgR1JFOyBh bmQgTVBMUyBpbiBHUkUuCj4gPiA+Cj4gPiA+IFRoZXJlIGlzIHNjb3BlIHRvIGV4dGVuZCB0aGlz IHRlc3RpbmcgdG8gb3RoZXIgZW5jYXBzdWxhdGlvbiBmb3JtYXRzCj4gPiA+IGlmIGRlc2lyZWQu Cj4gPiA+Cj4gPiA+IFRoaXMgaXMgbW90aXZhdGVkIGJ5IGEgZGVzaXJlIHRvIHRlc3QgR1JFIGFu ZCBNUExTIGVuY2Fwc3VsYXRpb24gaW4KPiA+ID4gdGhlIGNvbnRleHQgb2YgTDMvVlBOIChNUExT IG92ZXIgbm9uLVRFQiBHUkUgd29yaykuIFRoYXQgaXMgbm90Cj4gPiA+IHRlc3RlZCBoZXJlIGJ1 dCB0ZXN0cyBmb3IgdGhvc2UgY2FzZXMgd291bGQgaWRlYWxseSBiZSBiYXNlZCBvbiB0aG9zZSBp bgo+ID4gPiB0aGlzIHBhdGNoLgo+ID4gCj4gPiBUaGlzIG1ha2VzIHNlbnNlIHRvIG1lLiBUaGVy ZSdzIGEgZmV3IGNvcm5lcnMgdGhhdCBjb3VsZCBiZSBpbXByb3ZlZCwKPiA+IHByaW1hcmlseSBm b3IgcmVwcm9kdWNpbmcgc2FuZSByZXN1bHRzIG9uIGEgdmFyaWV0eSBvZiBzeXN0ZW1zLCB0aGVu IGEKPiA+IGNvdXBsZSBvZiBzdHlsZSBjb21tZW50cy4gUGxlYXNlIGRvIHJ1biB0aGUgdGVzdHMg dmlhIGJvdGggIm1ha2UKPiA+IGNoZWNrLWtlcm5lbCIgYW5kICJtYWtlIGNoZWNrLXN5c3RlbS11 c2Vyc3BhY2UiIGJlZm9yZSBzdWJtaXR0aW5nLAo+ID4gaWRlYWxseSB3aXRoIGF0IGxlYXN0IHR3 byB2YXJpZXRpZXMgb2Yga2VybmVsOiBPbmUgd2hlcmUgeW91IHdvdWxkCj4gPiBleHBlY3QgdGhl IHRlc3QgdG8gcGFzcywgYW5kIG9uZSB3aGVyZSB5b3Ugd291bGQgZXhwZWN0IHRoZSB0ZXN0cyB0 bwo+ID4gYmUgc2tpcHBlZC4KCkJvdGggbWFrZSBjaGVjay1rZXJuZWwgYW5kIG1ha2UgY2hlY2st c3lzdGVtLXVzZXJzcGFjZSBhcmUgbm93IHdvcmtpbmcuCkkgaGF2ZSB0ZXN0ZWQgYWdhaW5zdCBu ZXQtbmV4dCBhbmQgdGhlIDMuMTYga2VybmVsIHRoYXQgc2hpcHMgd2l0aApEZWJpYW4gc3RhYmxl LgoKPiBUaGFua3MuIEknbSBnbGFkIEkgcmFuIHRoaXMgYnkgeW91IGJlZm9yZSBleHBhbmRpbmcg dGhlIG51bWJlciBvZiB0ZXN0cy4KPiAKPiA+ICogQ0hFQ0tfTVBMUyBpcyBkZWZpbmVkIGluIHN5 c3RlbS1rbW9kLW1hY3Jvcy5hdCwgc28gYSBjb3JyZXNwb25kaW5nCj4gPiB2ZXJzaW9uIHNob3Vs ZCBiZSBwcm92aWRlZCBpbiBzeXN0ZW0tdXNlcnNwYWNlLW1hY3Jvcy5hdC4gSWYgdGhlCj4gPiBj cml0ZXJpYSBmb3IgcnVubmluZyB0aGUgdGVzdChzKSB3aXRoIGJvdGggdXNlcnNwYWNlIGFuZCBr ZXJuZWwKPiA+IGRhdGFwYXRocyBpcyB0aGUgc2FtZSwgdGhlbiB0aGlzIGNvdWxkIGluc3RlYWQg YmUgbW92ZWQgaW50bwo+ID4gc3lzdGVtLWNvbW1vbi1tYWNyb3MuYXQuCj4gCj4gVW5kZXJzdG9v ZC4KPgo+ID4gKiAiZGF0YXBhdGggLSBwaW5nIG92ZXIgZ3JlIHR1bm5lbCIgYWRkcyBhIGNvbW1h bmQgdG8gZXhlY3V0ZSBpbgo+ID4gYXRfbnMxLCBidXQgdGhhdCBuYW1lc3BhY2UgZG9lc24ndCBl eGlzdC4KPiAKPiBPb3BzLgoKSSBoYXZlIHJlbW92ZWQgdGhlIGNodW5rIGluIHF1ZXN0aW9uLCBp dCBzZWVtcyB0byBiZSBhbiBhcnRpZmFjdApvZiBteSBkZXZlbG9wbWVudCBvZiB0aGUgdGVzdHMu Cgo+ID4gKiAiZGF0YXBhdGggLSBodHRwIG92ZXIgZ3JlIHR1bm5lbCIgaXMgbWlzc2luZyBNUExT X0NIRUNLLgo+IAo+IFRoYW5rcywgSSdsbCBmaXggdGhhdC4KCk9uIGZ1cnRoZXIgaW5zcGVjdGlv biBpdCBzZWVtcyB0b21lIHRoYXQgdGhpcyBjaGVjayBkb2VzIG5vdCB1c2UgTVBMUywKcmF0aGVy IGl0IGlzIHRlc3RpbmcgR1NPIGZvciBHUkUgKHdpdGhvdXQgTVBMUykuCgo+ID4gKiBJcyB0aGVy ZSBhIHdheSB0byBjbGVhciB0aGUgbmV0c3RhdCBzdGF0aXN0aWNzIGJlZm9yZSBydW5uaW5nIHRo ZQo+ID4gdGVzdHMgd2hpY2ggcmVseSBvbiBpdD8gSSdtIGdldHRpbmcgYSBmYWlsdXJlIG9uIG9u ZSBvZiBteSBzeXN0ZW1zCj4gPiAodWJ1bnR1IHRydXN0eSB3aXRoIGEgNC43IGtlcm5lbCksIGJ1 dCBJJ20gbm90IHN1cmUgaWYgdGhlIGNvdW50ZXIgd2FzCj4gPiBhbHJlYWR5IGhpZ2ggYmVmb3Jl IEkgcmFuIHRoZSB0ZXN0Lgo+IAo+IEknbGwgbG9vayBpbnRvIHRoYXQuIElmIG5vdCB0aGV5IGNv dWxkIGJlIHJlY29yZGVkIHRvIGFsbG93IGEgY2hlY2sKPiBmb3IgYSBub24temVybyBkZWx0YS4K PiAKPiBQb3NzaWJseSBhbiBlbnRpcmVseSBkaWZmZXJlbnQgbWVjaGFuaXNtIGlzIG5lZWRlZCB0 byBjaGVjayBmb3IgR1NPCj4gZnVuY3Rpb25pbmcuIEJ1dCBJJ20gbm90IHN1cmUgd2hhdCBpdCB3 b3VsZCBiZSBhdCB0aGlzIHBvaW50Lgo+Cj4gPiAqICJkYXRhcGF0aCAtIGh0dHAgb3ZlciBtcGxz IGJldHdlZW4gdHdvIHBvcnRzIiAgKG1heWJlIG90aGVycyB0b28/KQo+ID4gc2hvdWxkIHNoaWZ0 IGFsbCBvcGVuZmxvdyBydWxlcyBpbnRvIGEgc2luZ2xlIHNlY3Rpb24gdXNpbmcgQVRfREFUQSwK PiA+IHNpbWlsYXIgdG8gdGhlIG90aGVyIHRlc3RzLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBy ZWFzb24gYWJvdXQgdGhlCj4gPiBmbG93IHRhYmxlIGFuZCB1bmRlcnN0YW5kIHdoYXQncyBnb2lu ZyBvbiBiZWZvcmUgcmVhZGluZyB0aHJvdWdoIHRoZQo+ID4gcmVzdCBvZiB0aGUgdGVzdC4KPiAK PiBTdXJlLCB3aWxsIGRvLgo+IAo+ID4gKiBJZiB0aGVyZSBpcyBhIGNvbW1vbiBzZXQgb2YgY29u ZmlndXJhdGlvbiB5b3UgZG8gZm9yIGxvY2FsIHN0YWNrCj4gPiB3aXRoaW4gYSBuYW1lc3BhY2Ug dG8gcm91dGUgTVBMUyB0cmFmZmljLCB5b3UgY291bGQgY29uc2lkZXIgYWRkaW5nCj4gPiBhbm90 aGVyIG1hY3JvIGludG8gc3lzdGVtLWNvbW1vbi1tYWNyb3MuYXQuCj4gCj4gT2ssIHBvc3NpYmx5 IHRoZXJlIGlzIGlmIHNvbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgcGFyYW1ldHJpc2VkOgo+ IGUuZy4gb3ZlciB0aGUgbmFtZXNwYWNlL25ldGRldiB0byBzZW5kL3JlY2VpdmUgTVBMUyB1c2lu ZyBuYXRpdmUgTGludXggTVBMUwo+IHJvdXRpbmcuCj4gCj4gPiBJIGFsc28gc2VlIHRoaXMgZXJy b3Igb24gImh0dHAgb3ZlciBtcGxzIG92ZXIgZ3JlIHR1bm5lbCI6Cj4gPiArc2g6IDE6IGNhbm5v dCBjcmVhdGUgL3Byb2Mvc3lzL25ldC9tcGxzL2NvbmYvbnNfZ3JlMC9pbnB1dDogRGlyZWN0b3J5 Cj4gPiBub25leGlzdGVudAo+ID4gCj4gPiBNYXliZSBNUExTICsgR1JFIG5lZWRzIGEgc2VwYXJh dGUgY2hlY2s/Cj4gCj4gWWVzLCB0aGF0IGlzIHByb2JhYmx5IHRoZSBjYXNlLgo+IAo+IEkgYmVs aWV2ZSBzb21lIHZlcnNpb25zIG9mIHRoZSBrZXJuZWwgc3VwcG9ydCBNUExTIHJvdXRpbmcgZm9y Cj4gc29tZSBpbnRlcmZhY2VzIGJ1dCBub3QgR1JFIGludGVyZmFjZXMuCgpQbGVhc2UgZmluZCBt eSB3b3JraW5nIHBhdGNoIGJlbG93LgoKRnJvbTogU2ltb24gSG9ybWFuIDxob3Jtc0B2ZXJnZS5u ZXQuYXU+ClN1YmplY3Q6IFtQQVRDSF0gc3lzdGVtLXRyYWZmaWM6IEV4ZXJjaXNlIEdTTwoKRXhl cmNpc2UgR1NPIGZvcjogdW5lbmNhcHN1bGF0ZWQ7IE1QTFM7IEdSRTsgYW5kIE1QTFMgaW4gR1JF LgoKVGhlcmUgaXMgc2NvcGUgdG8gZXh0ZW5kIHRoaXMgdGVzdGluZyB0byBvdGhlciBlbmNhcHN1 bGF0aW9uIGZvcm1hdHMKaWYgZGVzaXJlZC4KClRoaXMgaXMgbW90aXZhdGVkIGJ5IGEgZGVzaXJl IHRvIHRlc3QgR1JFIGFuZCBNUExTIGVuY2Fwc3VsYXRpb24gaW4KdGhlIGNvbnRleHQgb2YgTDMv VlBOIChNUExTIG92ZXIgbm9uLVRFQiBHUkUgd29yaykuIFRoYXQgaXMgbm90CnRlc3RlZCBoZXJl IGJ1dCB0ZXN0cyBmb3IgdGhvc2UgY2FzZXMgd291bGQgaWRlYWx5IGJlIGJhc2VkIG9uIHRob3Nl IGluCnRoaXMgcGF0Y2guCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBIb3JtYW4gPGhvcm1zQHZlcmdl Lm5ldC5hdT4KLS0tCnYyCiogQXMgc3VnZ2VzdGVkIGJ5IEpvZSBTdHJpbmdlcgogIC0gIERvIG5v dCBhZGQgc3B1cmlvdXMgbnMxIC8gaHR0cCBjb21tYW5kcyB0byAiZGF0YXBhdGggLSBwaW5nIG92 ZXIgZ3JlIHR1bm5lbCIKICAtIEFkZCBPVlNfQ0hFQ0tfTVBMU19HUkUKICAtIFVzZSBBVF9TS0lQ X0lGCiAgLSBVc2UgQVRfREFUQQogIC0gQ2hlY2sgZm9yIHplcm8gZGVsdGEgb2YgcmV0cmFuc21p dHMgcmF0aGVyIHRoYW4gYWJzb2xvdXRlIHplcm8KICAtIENvbnNvbGlkYXRlIE1QTFMgY29uZmln dXJhdGlvbiBpbnRvIE5TX0FERF9NUExTX1JPVVRFIG1hY3JvCiAgLSBNb3ZlIG1hY3JvcyBmcm9t IHN5c3RlbS1rbW9kLW1hY3Jvcy5hdCB0byBzeXN0ZW0tY29tbW9uLW1hcmNvcy5hdAogICAgdG8g YWxsb3cgdGVzdHMgdG8gd29yayBmb3IgbWFrZSBjaGVjay1zeXN0ZW0tdXNlcnNwYWNlIHRvIHdv cmsKICAgIGFzIHdlbGwgYXMgbWFrZSBjaGVjay1rZXJuZWwKLS0tCiB0ZXN0cy9zeXN0ZW0tY29t bW9uLW1hY3Jvcy5hdCB8ICA5NCArKysrKysrKysrKysrKysrKysrLS0KIHRlc3RzL3N5c3RlbS10 cmFmZmljLmF0ICAgICAgIHwgMTkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAyNzYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS90ZXN0cy9zeXN0ZW0tY29tbW9uLW1hY3Jvcy5hdCBiL3Rlc3RzL3N5 c3RlbS1jb21tb24tbWFjcm9zLmF0CmluZGV4IDRmZmMzODIuLjQxMDQwYTggMTAwNjQ0Ci0tLSBh L3Rlc3RzL3N5c3RlbS1jb21tb24tbWFjcm9zLmF0CisrKyBiL3Rlc3RzL3N5c3RlbS1jb21tb24t bWFjcm9zLmF0CkBAIC01Niw3ICs1Niw3IEBAIG00X2RlZmluZShbQUREX0lOVF0sCiAgICAgXQog KQogCi0jIEFERF9WRVRIKFtwb3J0XSwgW25hbWVzcGFjZV0sIFtvdnMtYnJdLCBbaXBfYWRkcl0g W21hY19hZGRyIFtnYXRld2F5XV0pCisjIEFERF9WRVRIKFtwb3J0XSwgW25hbWVzcGFjZV0sIFtv dnMtYnJdLCBbaXBfYWRkcl0gW21hY19hZGRyIFtnYXRld2F5IFtvZnBvcnRdXV0pCiAjCiAjIEFk ZCBhIHBhaXIgb2YgdmV0aCBwb3J0cy4gJ3BvcnQnIHdpbGwgYmUgYWRkZWQgdG8gbmFtZSBzcGFj ZSAnbmFtZXNwYWNlJywKICMgYW5kICJvdnMtJ3BvcnQnIiB3aWxsIGJlIGFkZGVkIHRvIG92cyBi cmlkZ2UgJ292cy1icicuCkBAIC02NCw4ICs2NCw4IEBAIG00X2RlZmluZShbQUREX0lOVF0sCiAj IFRoZSAncG9ydCcgaW4gJ25hbWVzcGFjZScgd2lsbCBiZSBicm91Z2h0IHVwIHdpdGggc3RhdGlj IElQIGFkZHJlc3MKICMgd2l0aCAnaXBfYWRkcicgaW4gQ0lEUiBub3RhdGlvbi4KICMKLSMgT3B0 aW9uYWxseSwgb25lIGNhbiBzcGVjaWZ5IHRoZSAnbWFjX2FkZHInIGZvciAncG9ydCcgYW5kIHRo ZSBkZWZhdWx0Ci0jICdnYXRld2F5Jy4KKyMgT3B0aW9uYWxseSwgb25lIGNhbiBzcGVjaWZ5IHRo ZSAnbWFjX2FkZHInIGZvciAncG9ydCcsIHRoZSBkZWZhdWx0CisjICdnYXRld2F5JyBhbmQgdGhl ICdvZnBvcnQnIG51bWJlci4KICMKICMgVGhlIGV4aXN0aW5nICdwb3J0JyBvciAnb3ZzLXBvcnQn IHdpbGwgYmUgcmVtb3ZlZCBiZWZvcmUgbmV3IG9uZXMgYXJlIGFkZGVkLgogIwpAQCAtNzQsOCAr NzQsMTQgQEAgbTRfZGVmaW5lKFtBRERfVkVUSF0sCiAgICAgICBDT05GSUdVUkVfVkVUSF9PRkZM T0FEUyhbJDFdKQogICAgICAgQVRfQ0hFQ0soW2lwIGxpbmsgc2V0ICQxIG5ldG5zICQyXSkKICAg ICAgIEFUX0NIRUNLKFtpcCBsaW5rIHNldCBkZXYgb3ZzLSQxIHVwXSkKLSAgICAgIEFUX0NIRUNL KFtvdnMtdnNjdGwgYWRkLXBvcnQgJDMgb3ZzLSQxIC0tIFwKLSAgICAgICAgICAgICAgICBzZXQg aW50ZXJmYWNlIG92cy0kMSBleHRlcm5hbC1pZHM6aWZhY2UtaWQ9IiQxIl0pCisgICAgICBpZiB0 ZXN0IC1uICIkNyI7IHRoZW4KKyAgICAgICAgQVRfQ0hFQ0soW292cy12c2N0bCBhZGQtcG9ydCAk MyBvdnMtJDEgLS0gXAorICAgICAgICAgICAgICAgICAgc2V0IGludGVyZmFjZSBvdnMtJDEgZXh0 ZXJuYWwtaWRzOmlmYWNlLWlkPSIkMSIgXAorICAgICAgICAgICAgICAgICAgb2Zwb3J0X3JlcXVl c3Q9JDddKQorICAgICAgZWxzZQorICAgICAgICBBVF9DSEVDSyhbb3ZzLXZzY3RsIGFkZC1wb3J0 ICQzIG92cy0kMSAtLSBcCisgICAgICAgICAgICAgICAgICBzZXQgaW50ZXJmYWNlIG92cy0kMSBl eHRlcm5hbC1pZHM6aWZhY2UtaWQ9IiQxIl0pCisgICAgICBmaQogICAgICAgTlNfQ0hFQ0tfRVhF QyhbJDJdLCBbaXAgYWRkciBhZGQgJDQgZGV2ICQxXSkKICAgICAgIE5TX0NIRUNLX0VYRUMoWyQy XSwgW2lwIGxpbmsgc2V0IGRldiAkMSB1cF0pCiAgICAgICBpZiB0ZXN0IC1uICIkNSI7IHRoZW4K QEAgLTk5LDcgKzEwNSw3IEBAIG00X2RlZmluZShbQUREX1ZMQU5dLAogICAgIF0KICkKIAotIyBB RERfT1ZTX1RVTk5FTChbdHlwZV0sIFticmlkZ2VdLCBbcG9ydF0sIFtyZW1vdGUtYWRkcl0sIFtv dmVybGF5LWFkZHJdKQorIyBBRERfT1ZTX1RVTk5FTChbdHlwZV0sIFticmlkZ2VdLCBbcG9ydF0s IFtyZW1vdGUtYWRkcl0sIFtvdmVybGF5LWFkZHIgW29mcG9ydF1dKQogIwogIyBBZGQgYW4gb3Zz LWJhc2VkIHR1bm5lbCBkZXZpY2UgaW4gdGhlIHJvb3QgbmFtZXNwYWNlLCB3aXRoIG5hbWUgJ3Bv cnQnIGFuZAogIyB0eXBlICd0eXBlJy4gVGhlIHR1bm5lbCBkZXZpY2Ugd2lsbCBiZSBjb25maWd1 cmVkIGFzIHBvaW50LXRvLXBvaW50IHdpdGggdGhlCkBAIC0xMDcsOSArMTEzLDE3IEBAIG00X2Rl ZmluZShbQUREX1ZMQU5dLAogIwogIyAncG9ydCB3aWxsIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUg YWRkcmVzcyAnb3ZlcmxheS1hZGRyJy4KICMKKyMgT3B0aW9uYWxseSBvbmUgY2FuIHNwZWNpZnkg dGhlICdvZnBvcnQnIG51bWJlcgorIwogbTRfZGVmaW5lKFtBRERfT1ZTX1RVTk5FTF0sCi0gICBb QVRfQ0hFQ0soW292cy12c2N0bCBhZGQtcG9ydCAkMiAkMyAtLSBcCi0gICAgICAgICAgICAgIHNl dCBpbnQgJDMgdHlwZT0kMSBvcHRpb25zOnJlbW90ZV9pcD0kNF0pCisgICBbaWYgdGVzdCAtbiAi JDYiOyB0aGVuCisgICAgICBBVF9DSEVDSyhbb3ZzLXZzY3RsIGFkZC1wb3J0ICQyICQzIC0tIFwK KyAgICAgICAgICAgICAgICBzZXQgaW50ICQzIHR5cGU9JDEgb3B0aW9uczpyZW1vdGVfaXA9JDQg XAorCQlvZnBvcnRfcmVxdWVzdD0kNl0pCisgICAgZWxzZQorICAgICAgQVRfQ0hFQ0soW292cy12 c2N0bCBhZGQtcG9ydCAkMiAkMyAtLSBcCisgICAgICAgICAgICAgICAgc2V0IGludCAkMyB0eXBl PSQxIG9wdGlvbnM6cmVtb3RlX2lwPSQ0XSkKKyAgICBmaQogICAgIEFUX0NIRUNLKFtpcCBhZGRy IGFkZCBkZXYgJDIgJDVdKQogICAgIEFUX0NIRUNLKFtpcCBsaW5rIHNldCBkZXYgJDIgdXBdKQog ICAgIEFUX0NIRUNLKFtpcCBsaW5rIHNldCBkZXYgJDIgbXR1IDE0NTBdKQpAQCAtMTQzLDYgKzE1 NywxMiBAQCBtNF9kZWZpbmUoW0FERF9OQVRJVkVfVFVOTkVMXSwKICMKIG00X2RlZmluZShbRk9S TUFUX1BJTkddLCBbZ3JlcCAidHJhbnNtaXR0ZWQiIHwgc2VkICdzL3RpbWUuKm1zJC90aW1lIDBt cy8nXSkKIAorIyBGT1JNQVRfREQoW10pCisjCisjIFN0cmlwIHZhcmlhbnQgcGllY2VzIGZyb20g ZGQgb3V0cHV0IHNvIHRoZSBvdXRwdXQgY2FuIGJlIHJlbGlhYmx5IGNvbXBhcmVkLgorIworbTRf ZGVmaW5lKFtGT1JNQVRfRERdLCBbc2VkICdzL2NvcGllZCwuKiQvY29waWVkLCAuLi4vJ10pCisK ICMgRk9STUFUX0NUKFtpcC1hZGRyXSkKICMKICMgU3RyaXAgY29udGVudCBmcm9tIHRoZSBwaXBl ZCBpbnB1dCB3aGljaCB3b3VsZCBkaWZmZXIgZnJvbSB0ZXN0IHRvIHRlc3QKQEAgLTE2OCwxMCAr MTg4LDY4IEBAIG00X2RlZmluZShbTkVUTlNfREFFTU9OSVpFXSwKIG00X2RlZmluZShbT1ZTX0NI RUNLX1ZYTEFOXSwKICAgICBbQVRfU0tJUF9JRihbISBpcCBsaW5rIGFkZCBmb28gdHlwZSB2eGxh biBoZWxwIDI+JjEgfCBncmVwIGRzdHBvcnQgPi9kZXYvbnVsbF0pXSkKIAorIyBPVlNfQ0hFQ0tf TVBMUygpCisjCisjIFBlcmZvcm0gcmVxdWlyZW1lbnRzIGNoZWNrcyBmb3IgcnVubmluZyBNUExT IHRlc3RzLgorIworbTRfZGVmaW5lKFtPVlNfQ0hFQ0tfTVBMU10sCisgICAgW200X2ZvcmVhY2go W21vZF0sIFtbbXBsc19yb3V0ZXJdXSwKKyAgICAgICAgICAgICAgICBbbW9kcHJvYmUgbW9kIHx8 IGVjaG8gIk1vZHVsZSBtb2Qgbm90IGxvYWRlZC4iCisgICAgICAgICAgICAgICAgIG9uX2V4aXQg J21vZHByb2JlIC1yIG1vZCcKKyAgICAgICAgICAgICAgICBdKQorICAgICBkbmwgUmVxdWlyZXMg TGludXggdjQuNysgYW5kIGlwIHJvdXRlIHY0LjcrCisgICAgIGRubCAgUHJlcGFyZQorICAgICBB VF9TS0lQX0lGKFshIGVjaG8gMTAxID4gL3Byb2Mvc3lzL25ldC9tcGxzL3BsYXRmb3JtX2xhYmVs c10pCisgICAgIFtpcCAtZiBtcGxzIHJvdXRlIGRlbCAxMDBdCisgICAgIGRubCAgVGVzdAorICAg ICBBVF9TS0lQX0lGKFshIGlwIC1mIG1wbHMgcm91dGUgYWRkIDEwMCBkZXYgbG9dKQorICAgICBk bmwgIENsZWFudXAKKyAgICAgQVRfU0tJUF9JRihbISBpcCAtZiBtcGxzIHJvdXRlIGRlbCAxMDBd KQorICAgICBBVF9TS0lQX0lGKFshIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvbXBscy9wbGF0Zm9y bV9sYWJlbHNdKQorICAgIF0KKykKKwogIyBPVlNfQ0hFQ0tfR1JFKCkKIG00X2RlZmluZShbT1ZT X0NIRUNLX0dSRV0sCiAgICAgW0FUX1NLSVBfSUYoWyEgaXAgbGluayBhZGQgZm9vIHR5cGUgZ3Jl dGFwIGhlbHAgMj4mMSB8IGdyZXAgZ3JlID4vZGV2L251bGxdKV0pCiAKKyMgT1ZTX0NIRUNLX01Q TFNfR1JFKCkKKyMKKyMgUGVyZm9ybSByZXF1aXJlbWVudHMgY2hlY2tzIGZvciBydW5uaW5nIE1Q TFMgb3ZlciBHUkUgdGVzdHMuCisjCittNF9kZWZpbmUoW09WU19DSEVDS19NUExTX0dSRV0sCisg ICAgW09WU19DSEVDS19NUExTKCkKKyAgICAgT1ZTX0NIRUNLX0dSRSgpCisgICAgIG00X2ZvcmVh Y2goW21vZF0sIFtbaXBfZ3JlXV0sCisgICAgICAgICAgICAgICAgW21vZHByb2JlIG1vZCB8fCBl Y2hvICJNb2R1bGUgbW9kIG5vdCBsb2FkZWQuIgorICAgICAgICAgICAgICAgICBvbl9leGl0ICdt b2Rwcm9iZSAtciBtb2QnCisgICAgICAgICAgICAgICAgXSkKKyAgICAgZG5sIFJlcXVpcmVzIExp bnV4IHY0LjgKKyAgICAgQVRfU0tJUF9JRihbISB0ZXN0IC1lIC9wcm9jL3N5cy9uZXQvbXBscy9j b25mL2dyZXRhcDAvaW5wdXRdKQorICAgIF0KKykKKwogIyBPVlNfQ0hFQ0tfR0VORVZFKCkKIG00 X2RlZmluZShbT1ZTX0NIRUNLX0dFTkVWRV0sCiAgICAgW0FUX1NLSVBfSUYoWyEgaXAgbGluayBh ZGQgZm9vIHR5cGUgZ2VuZXZlIGhlbHAgMj4mMSB8IGdyZXAgZ2VuZXZlID4vZGV2L251bGxdKV0p CisKKyMgTlNfQUREX01QTFNfUk9VVEUoW25zXSwgW3BvcnRdLCBbcHJlZml4XSwgW2dhdGV3YXld KQorIworIyBSb3V0ZSBJUCBwYWNrZXRzIHRvIHByZWZpeCB2aWEgZ2F0ZXdheSBvbiBwb3J0IHVz aW5nIE1QTFMgbGFiZWwgMTAwIGFuZAorIyByZWNpZXZlIE1QTFMgcGFja2V0cyB3aXRoIGxhYmVs IDEwMSBvbiBwb3J0IGxvY2FsbHkgYXMgSVAgcGFja2V0cworbTRfZGVmaW5lKFtOU19BRERfTVBM U19ST1VURV0sCisgICAgW2RubCBBbGxvdyBNUExTIGZvcndhcmRpbmcgb2YgcGFja2V0cyByZWNl aXZlZCBvbiAkMQorICAgICBOU19DSEVDS19FWEVDKFskMV0sIFtlY2hvIDEgPiAvcHJvYy9zeXMv bmV0L21wbHMvY29uZi8kMi9pbnB1dF0pCisKKyAgICAgZG5sIExhcmdlciB0aGFuIE1QTFMgbGFi ZWwgdG8gYmUgcm91dGVkICgxMDEpCisgICAgIE5TX0NIRUNLX0VYRUMoWyQxXSwgW2VjaG8gMTAy ID4gL3Byb2Mvc3lzL25ldC9tcGxzL3BsYXRmb3JtX2xhYmVsc10pCisKKyAgICAgZG5sIFNldCB1 cCByb3V0ZSB0byBlbmNhcHN1bGF0ZSBwYWNrZXRzIHRvICQyIGluIE1QTFMKKyAgICAgTlNfQ0hF Q0tfRVhFQyhbJDFdLCBbaXAgcm91dGUgYWRkICQzIGVuY2FwIG1wbHMgMTAwIHZpYSBpbmV0ICQ0 IGRldiAkMl0pCisKKyAgICAgZG5sIFNldCB1cCByb3V0ZSB0byBkZWNhcHN1bGF0ZSBNUExTIGxh YmVsIDEwMSBhbmQgZGVsaXZlciBsb2NhbGx5CisgICAgIE5TX0NIRUNLX0VYRUMoWyQxXSwgW2lw IC1mIG1wbHMgcm91dGUgYWRkIDEwMSBkZXYgbG9dKQorCisgICAgIGRubCBTZXQgbG9vcGJhY2sg aW50ZXJmYWNlIHVwIGZvciBsb2NhbCBkZWxpdmVyeQorICAgICBOU19DSEVDS19FWEVDKFskMV0s IFtpcCBsaW5rIHNldCB1cCBkZXYgbG9dKQorICAgIF0pCmRpZmYgLS1naXQgYS90ZXN0cy9zeXN0 ZW0tdHJhZmZpYy5hdCBiL3Rlc3RzL3N5c3RlbS10cmFmZmljLmF0CmluZGV4IDJmNDJlZmEuLjNm OWRiNTEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3N5c3RlbS10cmFmZmljLmF0CisrKyBiL3Rlc3RzL3N5 c3RlbS10cmFmZmljLmF0CkBAIC0zMywxMiArMzMsMjcgQEAgQUREX05BTUVTUEFDRVMoYXRfbnMw LCBhdF9uczEpCiBBRERfVkVUSChwMCwgYXRfbnMwLCBicjAsICIxMC4xLjEuMS8yNCIpCiBBRERf VkVUSChwMSwgYXRfbnMxLCBicjAsICIxMC4xLjEuMi8yNCIpCiAKK2RubCBEaXNhYmxlIFRTTyBh cyB0byBleGVyY2lzZSBzb2Z0d2FyZSBzZWdtZW50YXRpb24KK2RubCB3aGVuIG91dHB1dHRpbmcg R1NPIHNrYnMgb3ZlciBHUkUgZnJvbSBPdlMKK0FUX0NIRUNLKFtldGh0b29sIC1LIG92cy1wMCB0 c28gb2ZmXSkKKwogTlNfQ0hFQ0tfRVhFQyhbYXRfbnMwXSwgW3BpbmcgLXEgLWMgMyAtaSAwLjMg LXcgMiAxMC4xLjEuMiB8IEZPUk1BVF9QSU5HXSwgWzBdLCBbZG5sCiAzIHBhY2tldHMgdHJhbnNt aXR0ZWQsIDMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcwogXSkKIAorQVRfQ0hF Q0soW3llcyB8IGRkIGJzPTFrIGNvdW50PTMyIG9mPTMyay50eHRdLCBbMF0sIFtdLCBzdGRlcnIp CitBVF9DSEVDSyhbY2F0IHN0ZGVyciB8IEZPUk1BVF9ERF0sIFswXSwgW2RubAorMzIrMCByZWNv cmRzIGluCiszMiswIHJlY29yZHMgb3V0CiszMjc2OCBieXRlcyAoMzMga0IpIGNvcGllZCwgLi4u CitdKQogTkVUTlNfREFFTU9OSVpFKFthdF9uczFdLCBbWyRQWVRIT04gJHNyY2Rpci90ZXN0LWw3 LnB5XV0sIFtodHRwMC5waWRdKQotTlNfQ0hFQ0tfRVhFQyhbYXRfbnMwXSwgW3dnZXQgMTAuMS4x LjIgLXQgMyAtVCAxIC0tcmV0cnktY29ubnJlZnVzZWQgLXYgLW8gd2dldDAubG9nXSkKK05TX0NI RUNLX0VYRUMoW2F0X25zMV0sIFtuZXRzdGF0IC1zIHwgZ3JlcCByZXRyYW5zbWl0ZWQgPiByZXRy YW5zbWl0X2JlZm9yZV0pCitOU19DSEVDS19FWEVDKFthdF9uczBdLCBbd2dldCAxMC4xLjEuMi8z MmsudHh0IC10IDMgLVQgMSAtLXJldHJ5LWNvbm5yZWZ1c2VkIC12IC1vIHdnZXQwLmxvZ10pCitO U19DSEVDS19FWEVDKFthdF9uczFdLCBbbmV0c3RhdCAtcyB8IGdyZXAgcmV0cmFuc21pdGVkID4g cmV0cmFuc21pdF9hZnRlcl0pCisKK2RubCBVc2UgdGhlIGFic2VuY2Ugb2YgcmV0cmFuc21pdHRl ZCBzZWdtZW50cyBhcyBhIHByb3h5IGZvciBmdW5jdGlvbmluZyBUU08KK0FUX0NIRUNLKFtkaWZm IC11IHJldHJhbnNtaXRfYmVmb3JlIHJldHJhbnNtaXRfYWZ0ZXJdLCBbMF0pCiAKIE9WU19UUkFG RklDX1ZTV0lUQ0hEX1NUT1AKIEFUX0NMRUFOVVAKQEAgLTY5LDYgKzg0LDU4IEBAIE5TX0NIRUNL X0VYRUMoW2F0X25zMF0sIFtwaW5nIC1zIDMyMDAgLXEgLWMgMyAtaSAwLjMgLXcgMiAxMC4yLjIu MiB8IEZPUk1BVF9QSU5HCiBPVlNfVFJBRkZJQ19WU1dJVENIRF9TVE9QCiBBVF9DTEVBTlVQCiAK K0FUX1NFVFVQKFtkYXRhcGF0aCAtIGh0dHAgb3ZlciBtcGxzIGJldHdlZW4gdHdvIHBvcnRzXSkK K09WU19DSEVDS19NUExTKCkKK09WU19UUkFGRklDX1ZTV0lUQ0hEX1NUQVJUKCkKKworQUREX05B TUVTUEFDRVMoYXRfbnMwLCBhdF9uczEpCisKK2RubCBTZXQgdXAgdW5kZXJsYXkKK0FERF9WRVRI KHAwLCBhdF9uczAsIGJyMCwgIjE3Mi4zMS4xLjEvMjQiLCBbXSwgW10sIDIpCitBRERfVkVUSChw MSwgYXRfbnMxLCBicjAsICIxNzIuMzEuMS4yLzI0IiwgW10sIFtdLCAzKQorCitkbmwgU2V0IHVw IE1QTFMgb3ZlcmxheQorZG5sIElQIGlzIGVuY2Fwc3VsYXRlZCBpbiBNUExTIHdoZW4gc2VudCBm cm9tIGFuZCByZWNpZXZlZCBmcm9tIG5zMAorZG5sIE92Uywgc2l0dGluZyBiZXR3ZWVuIG5zMCBh bmQgbnMxIHB1c2hlcyBNUExTIG9udG8gSVAgcmVjaWV2ZWQgZnJvbSBuczEKK2RubCBiZWZvciBz ZW5kaW5nIHRvIG5zMCwgYW5kIHBvcHMgTVBMUyByZWNpZXZlZCBmcm9tIG5zMCBhbmQgc2VuZHMg dGhlCitkbmwgcmVzdWx0aW5nIElQIHBhY2tldHMgdG8gbnMxCitOU19DSEVDS19FWEVDKFthdF9u czFdLCBbaXAgYWRkciBhZGQgMTAuMS4xLjIvMjQgZGV2IHAxXSkKKworQVRfREFUQShbZmxvd3Mu dHh0XSwgW2RubAoraW5fcG9ydD0zLGlwLG53X3NyYz0xMC4xLjEuMixhY3Rpb25zPXB1c2hfbXBs czoweDg4NDcsc2V0X2ZpZWxkOjEwMS0+bXBsc19sYWJlbCxvdXRwdXQ6MgoraW5fcG9ydD0yLGRs X3R5cGU9MHg4ODQ3LG1wbHNfbGFiZWw9MTAwLGFjdGlvbnM9cG9wX21wbHM6MHgwODAwLG91dHB1 dDozCithY3Rpb25zPW5vcm1hbAorXSkKK0FUX0NIRUNLKFtvdnMtb2ZjdGwgYWRkLWZsb3dzIGJy MCBmbG93cy50eHRdKQorCitOU19BRERfTVBMU19ST1VURShbYXRfbnMwXSwgW3AwXSwgWzEwLjEu MS4wLzI0XSwgWzE3Mi4zMS4xLjJdKQorCitkbmwgQWxsb3cgZm9yIG92ZXJoZWFkIG9mIE1QTFMg TFNFCitOU19DSEVDS19FWEVDKFthdF9uczFdLCBbaXAgbGluayBzZXQgbXR1IDE0OTYgZGV2IHAx XSkKKworZG5sIFRlc3QgcGluZworTlNfQ0hFQ0tfRVhFQyhbYXRfbnMwXSwgW3BpbmcgLXEgLWMg MyAtaSAwLjMgLXcgMiAxMC4xLjEuMiB8IEZPUk1BVF9QSU5HXSwgWzBdLCBbZG5sCiszIHBhY2tl dHMgdHJhbnNtaXR0ZWQsIDMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcworXSkK KworZG5sIFRlc3QgaHR0cAorQVRfQ0hFQ0soW3llcyB8IGRkIGJzPTFrIGNvdW50PTMyIG9mPTMy ay50eHRdLCBbMF0sIFtdLCBzdGRlcnIpCitBVF9DSEVDSyhbY2F0IHN0ZGVyciB8IEZPUk1BVF9E RF0sIFswXSwgW2RubAorMzIrMCByZWNvcmRzIGluCiszMiswIHJlY29yZHMgb3V0CiszMjc2OCBi eXRlcyAoMzMga0IpIGNvcGllZCwgLi4uCitdKQorTkVUTlNfREFFTU9OSVpFKFthdF9uczFdLCBb WyRQWVRIT04gJHNyY2Rpci90ZXN0LWw3LnB5XV0sIFtodHRwMC5waWRdKQorTlNfQ0hFQ0tfRVhF QyhbYXRfbnMxXSwgW25ldHN0YXQgLXMgfCBncmVwIHJldHJhbnNtaXRlZCA+IHJldHJhbnNtaXRf YmVmb3JlXSkKK05TX0NIRUNLX0VYRUMoW2F0X25zMF0sIFt3Z2V0IDEwLjEuMS4yLzMyay50eHQg LXQgMyAtVCAxIC0tcmV0cnktY29ubnJlZnVzZWQgLXYgLW8gd2dldDAubG9nXSkKK05TX0NIRUNL X0VYRUMoW2F0X25zMV0sIFtuZXRzdGF0IC1zIHwgZ3JlcCByZXRyYW5zbWl0ZWQgPiByZXRyYW5z bWl0X2FmdGVyXSkKKworZG5sIFVzZSB0aGUgYWJzZW5jZSBvZiByZXRyYW5zbWl0dGVkIHNlZ21l bnRzIGFzIGEgcHJveHkgZm9yIGZ1bmN0aW9uaW5nIEdTTworQVRfQ0hFQ0soW2RpZmYgLXUgcmV0 cmFuc21pdF9iZWZvcmUgcmV0cmFuc21pdF9hZnRlcl0sIFswXSkKKworT1ZTX1RSQUZGSUNfVlNX SVRDSERfU1RPUAorQVRfQ0xFQU5VUAorCiBBVF9TRVRVUChbZGF0YXBhdGggLSBwaW5nNiBiZXR3 ZWVuIHR3byBwb3J0c10pCiBPVlNfVFJBRkZJQ19WU1dJVENIRF9TVEFSVCgpCiAKQEAgLTIwOSw2 ICsyNzYsMTI4IEBAIE5TX0NIRUNLX0VYRUMoW2F0X25zMF0sIFtwaW5nIC1zIDMyMDAgLXEgLWMg MyAtaSAwLjMgLXcgMiAxMC4xLjEuMTAwIHwgRk9STUFUX1BJCiBPVlNfVFJBRkZJQ19WU1dJVENI RF9TVE9QCiBBVF9DTEVBTlVQCiAKK0FUX1NFVFVQKFtkYXRhcGF0aCAtIGh0dHAgb3ZlciBncmUg dHVubmVsXSkKK09WU19DSEVDS19HUkUoKQorCitPVlNfVFJBRkZJQ19WU1dJVENIRF9TVEFSVCgp CitBRERfQlIoW2JyLXVuZGVybGF5XSkKKworQVRfQ0hFQ0soW292cy1vZmN0bCBhZGQtZmxvdyBi cjAgImFjdGlvbnM9bm9ybWFsIl0pCitBVF9DSEVDSyhbb3ZzLW9mY3RsIGFkZC1mbG93IGJyLXVu ZGVybGF5ICJhY3Rpb25zPW5vcm1hbCJdKQorCitBRERfTkFNRVNQQUNFUyhhdF9uczAsIGF0X25z MSkKKworZG5sIFNldCB1cCB1bmRlcmxheSBsaW5rIGZyb20gaG9zdCBpbnRvIHRoZSBhdF9uczAg bmFtZXNwYWNlIHVzaW5nIHZldGggcGFpci4KK0FERF9WRVRIKHAwLCBhdF9uczAsIGJyLXVuZGVy bGF5LCAiMTcyLjMxLjEuMS8yNCIpCitBVF9DSEVDSyhbaXAgYWRkciBhZGQgZGV2IGJyLXVuZGVy bGF5ICIxNzIuMzEuMS4xMDAvMjQiXSkKK0FUX0NIRUNLKFtpcCBsaW5rIHNldCBkZXYgYnItdW5k ZXJsYXkgdXBdKQorCitkbmwgU2V0IHVwIHR1bm5lbCBlbmRwb2ludHMgb24gT1ZTIG91dHNpZGUg dGhlIGF0X25zMCBuYW1lc3BhY2UgYW5kCitkbmwgd2l0aCBhIG5hdGl2ZSBsaW51eCBkZXZpY2Ug aW5zaWRlIHRoZSBuYW1lc3BhY2UuCitBRERfT1ZTX1RVTk5FTChbZ3JlXSwgW2JyMF0sIFthdF9n cmUwXSwgWzE3Mi4zMS4xLjFdLCBbMTAuMS4xLjEwMC8yNF0pCitBRERfTkFUSVZFX1RVTk5FTChb Z3JldGFwXSwgW25zX2dyZTBdLCBbYXRfbnMwXSwgWzE3Mi4zMS4xLjEwMF0sIFsxMC4xLjEuMS8y NF0pCisKK2RubCBBZGQgdmV0aCBwYWlyIGNvbm5lY3RlZCB0byB0byBicjAgYW5kIGF0X25zMSBu YW1lc3BhY2UKK0FERF9WRVRIKHAxLCBhdF9uczEsIGJyMCwgIjEwLjEuMS4yLzI0IikKKworZG5s IERpc2FibGUgVFNPIGFzIHRvIGV4ZXJjaXNlIHNvZnR3YXJlIHNlZ21lbnRhdGlvbgorZG5sIHdo ZW4gb3V0cHV0dGluZyBHU08gc2ticyBvdmVyIEdSRSBmcm9tIE92UworQVRfQ0hFQ0soW2V0aHRv b2wgLUsgb3ZzLXAwIHRzbyBvZmZdKQorCitkbmwgRmlyc3QgY2hlY2sgdGhlIHVuZGVybGF5CitO U19DSEVDS19FWEVDKFthdF9uczBdLCBbcGluZyAtcSAtYyAzIC1pIDAuMyAtdyAyIDE3Mi4zMS4x LjEwMCB8IEZPUk1BVF9QSU5HXSwgWzBdLCBbZG5sCiszIHBhY2tldHMgdHJhbnNtaXR0ZWQsIDMg cmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcworXSkKKworZG5sIE5leHQgY2hlY2sg dGhlIG92ZXJsYXkKK05TX0NIRUNLX0VYRUMoW2F0X25zMF0sIFtwaW5nIC1xIC1jIDMgLWkgMC4z IC13IDIgMTAuMS4xLjIgIHwgRk9STUFUX1BJTkddLCBbMF0sIFtkbmwKKzMgcGFja2V0cyB0cmFu c21pdHRlZCwgMyByZWNlaXZlZCwgMCUgcGFja2V0IGxvc3MsIHRpbWUgMG1zCitdKQorCitkbmwg Tm93IGNoZWNrIEhUVFAgdHJhbnNmZXIKK0FUX0NIRUNLKFt5ZXMgfCBkZCBicz0xayBjb3VudD0z MiBvZj0zMmsudHh0XSwgWzBdLCBbXSwgc3RkZXJyKQorQVRfQ0hFQ0soW2NhdCBzdGRlcnIgfCBG T1JNQVRfRERdLCBbMF0sIFtkbmwKKzMyKzAgcmVjb3JkcyBpbgorMzIrMCByZWNvcmRzIG91dAor MzI3NjggYnl0ZXMgKDMzIGtCKSBjb3BpZWQsIC4uLgorXSkKK05FVE5TX0RBRU1PTklaRShbYXRf bnMxXSwgW1skUFlUSE9OICRzcmNkaXIvdGVzdC1sNy5weV1dLCBbaHR0cDAucGlkXSkKK05TX0NI RUNLX0VYRUMoW2F0X25zMV0sIFtuZXRzdGF0IC1zIHwgZ3JlcCByZXRyYW5zbWl0ZWQgPiByZXRy YW5zbWl0X2JlZm9yZV0pCitOU19DSEVDS19FWEVDKFthdF9uczBdLCBbd2dldCAxMC4xLjEuMi8z MmsudHh0IC10IDMgLVQgMSAtLXJldHJ5LWNvbm5yZWZ1c2VkIC12IC1vIHdnZXQwLmxvZ10pCitO U19DSEVDS19FWEVDKFthdF9uczFdLCBbbmV0c3RhdCAtcyB8IGdyZXAgcmV0cmFuc21pdGVkID4g cmV0cmFuc21pdF9hZnRlcl0pCisKK2RubCBVc2UgdGhlIGFic2VuY2Ugb2YgcmV0cmFuc21pdHRl ZCBzZWdtZW50cyBhcyBhIHByb3h5IGZvciBmdW5jdGlvbmluZyBUU08KK0FUX0NIRUNLKFtkaWZm IC11IHJldHJhbnNtaXRfYmVmb3JlIHJldHJhbnNtaXRfYWZ0ZXJdLCBbMF0pCisKK09WU19UUkFG RklDX1ZTV0lUQ0hEX1NUT1AKK0FUX0NMRUFOVVAKKworQVRfU0VUVVAoW2RhdGFwYXRoIC0gaHR0 cCBvdmVyIG1wbHMgb3ZlciBncmUgdHVubmVsXSkKK09WU19DSEVDS19NUExTX0dSRSgpCisKK09W U19UUkFGRklDX1ZTV0lUQ0hEX1NUQVJUKCkKK0FERF9CUihbYnItdW5kZXJsYXldKQorCitBRERf TkFNRVNQQUNFUyhhdF9uczAsIGF0X25zMSkKKworZG5sIFNldCB1cCB1bmRlcmxheSBsaW5rIGZy b20gaG9zdCBpbnRvIHRoZSBhdF9uczAgbmFtZXNwYWNlIHVzaW5nIHZldGggcGFpci4KK0FERF9W RVRIKHAwLCBhdF9uczAsIGJyLXVuZGVybGF5LCAiMTcyLjMxLjEuMS8yNCIpCitBVF9DSEVDSyhb aXAgYWRkciBhZGQgZGV2IGJyLXVuZGVybGF5ICIxNzIuMzEuMS4xMDAvMjQiXSkKK0FUX0NIRUNL KFtpcCBsaW5rIHNldCBkZXYgYnItdW5kZXJsYXkgdXBdKQorCitkbmwgU2V0IHVwIHR1bm5lbCBl bmRwb2ludHMgb24gT1ZTIG91dHNpZGUgdGhlIGF0X25zMCBuYW1lc3BhY2UgYW5kCitkbmwgd2l0 aCBhIG5hdGl2ZSBsaW51eCBkZXZpY2UgaW5zaWRlIHRoZSBuYW1lc3BhY2UuCitBRERfT1ZTX1RV Tk5FTChbZ3JlXSwgW2JyMF0sIFthdF9ncmUwXSwgWzE3Mi4zMS4xLjFdLCBbMTAuMS4xLjEwMC8y NF0sIDIpCitBRERfTkFUSVZFX1RVTk5FTChbZ3JldGFwXSwgW25zX2dyZTBdLCBbYXRfbnMwXSwg WzE3Mi4zMS4xLjEwMF0sIFsxMC4xLjEuMS8yNF0pCisKK2RubCBBZGQgdmV0aCBwYWlyIGNvbm5l Y3RlZCB0byB0byBicjAgYW5kIGF0X25zMSBuYW1lc3BhY2UKK0FERF9WRVRIKHAxLCBhdF9uczEs IGJyMCwgIjEwLjEuMS4yLzI0IiwgW10sIFtdLCAzKQorCitkbmwgU2V0IHVwIE1QTFMgb3Zlcmxh eQorZG5sIElQIGlzIGVuY2Fwc3VsYXRlZCBpbiBNUExTIHdoZW4gc2VudCBmcm9tIGFuZCByZWNp ZXZlZCBmcm9tIG5zMAorZG5sIE92Uywgc2l0dGluZyBiZXR3ZWVuIG5zMCBhbmQgbnMxIHB1c2hl cyBNUExTIG9udG8gSVAgcmVjaWV2ZWQgZnJvbSBuczEKK2RubCBiZWZvciBzZW5kaW5nIHRvIG5z MCwgYW5kIHBvcHMgTVBMUyByZWNpZXZlZCBmcm9tIG5zMCBhbmQgc2VuZHMgdGhlCitkbmwgcmVz dWx0aW5nIElQIHBhY2tldHMgdG8gbnMxCitOU19DSEVDS19FWEVDKFthdF9uczFdLCBbaXAgYWRk ciBhZGQgMTAuMS4yLjIvMjQgZGV2IHAxXSkKKworQVRfREFUQShbZmxvd3MudHh0XSwgW2RubAor aW5fcG9ydD0zLGlwLG53X3NyYz0xMC4xLjIuMixhY3Rpb25zPXB1c2hfbXBsczoweDg4NDcsc2V0 X2ZpZWxkOjEwMS0+bXBsc19sYWJlbCxvdXRwdXQ6MgoraW5fcG9ydD0yLGRsX3R5cGU9MHg4ODQ3 LG1wbHNfbGFiZWw9MTAwLGFjdGlvbnM9cG9wX21wbHM6MHgwODAwLG91dHB1dDozCithY3Rpb25z PW5vcm1hbAorXSkKK0FUX0NIRUNLKFtvdnMtb2ZjdGwgYWRkLWZsb3dzIGJyMCBmbG93cy50eHRd KQorQVRfQ0hFQ0soW292cy1vZmN0bCBhZGQtZmxvdyBici11bmRlcmxheSAiYWN0aW9ucz1ub3Jt YWwiXSkKKworTlNfQUREX01QTFNfUk9VVEUoW2F0X25zMF0sIFtuc19ncmUwXSwgWzEwLjEuMi4w LzI0XSwgWzEwLjEuMS4yXSkKKworZG5sIEZpcnN0IGNoZWNrIHRoZSB1bmRlcmxheQorTlNfQ0hF Q0tfRVhFQyhbYXRfbnMwXSwgW3BpbmcgLXEgLWMgMyAtaSAwLjMgLXcgMiAxNzIuMzEuMS4xMDAg fCBGT1JNQVRfUElOR10sIFswXSwgW2RubAorMyBwYWNrZXRzIHRyYW5zbWl0dGVkLCAzIHJlY2Vp dmVkLCAwJSBwYWNrZXQgbG9zcywgdGltZSAwbXMKK10pCisKK2RubCBOZXh0IGNoZWNrIHRoZSBv dmVybGF5CitOU19DSEVDS19FWEVDKFthdF9uczBdLCBbcGluZyAtcSAtYyAzIC1pIDAuMyAtdyAy IDEwLjEuMi4yICB8IEZPUk1BVF9QSU5HXSwgWzBdLCBbZG5sCiszIHBhY2tldHMgdHJhbnNtaXR0 ZWQsIDMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzLCB0aW1lIDBtcworXSkKKworZG5sIE5vdyBj aGVjayBIVFRQIHRyYW5zZmVyCitBVF9DSEVDSyhbeWVzIHwgZGQgYnM9MWsgY291bnQ9MzIgb2Y9 MzJrLnR4dF0sIFswXSwgW10sIHN0ZGVycikKK0FUX0NIRUNLKFtjYXQgc3RkZXJyIHwgRk9STUFU X0REXSwgWzBdLCBbZG5sCiszMiswIHJlY29yZHMgaW4KKzMyKzAgcmVjb3JkcyBvdXQKKzMyNzY4 IGJ5dGVzICgzMyBrQikgY29waWVkLCAuLi4KK10pCitORVROU19EQUVNT05JWkUoW2F0X25zMV0s IFtbJFBZVEhPTiAkc3JjZGlyL3Rlc3QtbDcucHldXSwgW2h0dHAwLnBpZF0pCitOU19DSEVDS19F WEVDKFthdF9uczFdLCBbbmV0c3RhdCAtcyB8IGdyZXAgcmV0cmFuc21pdGVkID4gcmV0cmFuc21p dF9iZWZvcmVdKQorTlNfQ0hFQ0tfRVhFQyhbYXRfbnMwXSwgW3dnZXQgMTAuMS4yLjIvMzJrLnR4 dCAtdCAzIC1UIDEgLS1yZXRyeS1jb25ucmVmdXNlZCAtdiAtbyB3Z2V0MC5sb2ddKQorTlNfQ0hF Q0tfRVhFQyhbYXRfbnMxXSwgW25ldHN0YXQgLXMgfCBncmVwIHJldHJhbnNtaXRlZCA+IHJldHJh bnNtaXRfYWZ0ZXJdKQorCitkbmwgVXNlIHRoZSBhYnNlbmNlIG9mIHJldHJhbnNtaXR0ZWQgc2Vn bWVudHMgYXMgYSBwcm94eSBmb3IgZnVuY3Rpb25pbmcgR1NPCitBVF9DSEVDSyhbZGlmZiAtdSBy ZXRyYW5zbWl0X2JlZm9yZSByZXRyYW5zbWl0X2FmdGVyXSwgWzBdKQorCitPVlNfVFJBRkZJQ19W U1dJVENIRF9TVE9QCitBVF9DTEVBTlVQCisKIEFUX1NFVFVQKFtkYXRhcGF0aCAtIHBpbmcgb3Zl ciBnZW5ldmUgdHVubmVsXSkKIE9WU19DSEVDS19HRU5FVkUoKQogCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldiBtYWlsaW5nIGxp c3QKZGV2QG9wZW52c3dpdGNoLm9yZwpodHRwOi8vb3BlbnZzd2l0Y2gub3JnL21haWxtYW4vbGlz dGluZm8vZGV2Cg==