Re: dependency hell OR it should not be this hard

guy keren <[email protected]> Mon, 12 Aug 2019 09:54:50 +0300
Newsgroups gmane.linux.region.israel
Message-ID <[email protected]>
CnRoaXMgaXMgc29mdHdhcmUuIHNvZnR3YXJlIGhhcyBidWdzLgoKc29mdHdhcmUgcGFja2FnaW5n
IG9ubHkgc2VlbXMgc2ltcGxlIC0gYnV0IGluIGZhY3QgaXMgcmVhbGx5IG5vdCwgCmJlY2F1c2Ug
b2YgdGhlIGV4cG9uZW50aWFsIGFtb3VudCBvZiBjb21iaW5hdGlvbnMgdGhhdCBzaW1wbHkgY2Fu
J3QgYmUgCmV4aGF1c3RpdmVseSB0ZXN0ZWQsIGFuZCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gY29k
ZSB3cml0dGVuIGJ5IHRob3VzYW5kcyAKb2YgdW5yZWxhdGVkIGRldmVsb3BlcnMsIHRoYXQgd29y
ayBvbiB0aGVpciBvd24gc29mdHdhcmUsIG5vdCBvbiB0aGUgCiJsaW51eCBkaXNyaWJ1dGlvbiIu
CgpzbyBvY2Nhc2lvbmFsbHkgeW91IHdpbGwgaGF2ZSBwcm9ibGVtcyB0aGF0IHlvdSdsbCBuZWVk
IHRvIGZpeC4gaG93IApvZnRlbj8gaXQncyByZWFsbHkgYSBtYXR0ZXIgb2YgbHVjaywgZmFjdG9y
ZWQgYnkgdGhlIGFtb3VudCBvZiAKY29uZmlndXJhdGlvbiBjaGFuZ2VzIHlvdSBkbyBvbiB5b3Vy
IHN5c3RlbS4KCi0tZ3V5CgoKT24gMTIvMDgvMjAxOSA5OjQ1IEFNLCBKZXJlbXkgSG95bGFuZCB3
cm90ZToKPiBKdXN0IHRvIGNvbW1lbnQgb24geW91ciBvcmlnaW5hbCBwb3N0Lgo+IERvbid0IHRo
aW5rIGZvciBvbmUgbW9tZW50IHRoYXQgdGhpbmdzIGFyZSBhbnkgYmV0dGVyIGluIFdpbmRvd3Mu
Cj4gVGhlIGRpZmZlcmVuY2Ugd2l0aCBBUFQgaXNzdWVzIGlzIHRoYXQgdGhlcmUgL2lzL8Kgc29t
ZXRoaW5nIHlvdSBjYW4gZG8gCj4gYWJvdXQgaXQsIGFuZCB1bHRpbWF0ZWx5LCB0aGUgcHJvYmxl
bSBpcyByZXNvbHZhYmxlIGJ5IHlvdS4KPiBJbiBXaW5kb3dzIHRoaW5ncyBsb29rIGEgbG90IHBy
ZXR0aWVyLCBidXQgSSBoYXZlIG9mdGVuIGhhZCBhbiBpbnN0YWxsZXIgCj4gZmFpbCB3aXRoIG5v
IHJlYXNvbiBnaXZlbiBhbmQgdGhlbiBhdXRvbWF0aWNhbGx5IHJvbGwtYmFjayB3aXRoIG5vIHJl
Y291cnNlLgo+IFRoZSBzb2x1dGlvbnMgdGhlcmUgb2Z0ZW4gcmVxdWlyZWQgbWFudWFsIGVkaXRp
bmcgb2YgdGhlIHJlZ2lzdHJ5Lgo+IEkgcHJlZmVyIEFQVCBhbnkgZGF5Lgo+IAo+IE9uIE1vbiwg
MTIgQXVnIDIwMTkgYXQgMDg6MTgsIFNobG9tbyBTb2xvbW9uIDxzaGxvbW8uc29sb21vbkBnbWFp
bC5jb20gCj4gPG1haWx0bzpzaGxvbW8uc29sb21vbkBnbWFpbC5jb20+PiB3cm90ZToKPiAKPiAg
ICAgVGhhbmtzIGZvciB5b3VyIFZFUlkgZGV0YWlsZWQgcmVwbHkuIFNvbWUgb2YgaXQgd2FzICJv
dmVyIG15IGhlYWQiLCBidXQKPiAgICAgcmVsZXZhbnQgYW5kIHRydWUgLSBhbHRob3VnaCBJIHBl
cnNvbmFsbHkgbGlrZSBhbmQgdXNlIEtERSBkZXNwaXRlIGl0Cj4gICAgIGJlaW5nIHF1aXRlIGJs
b2F0ZWQgZm9yIG1hbnkgeWVhcnMgbm93Lgo+IAo+ICAgICBBcyBhbiBhc2lkZSAtIEkgZ290IHJp
ZCBvZiBLTWFpbCwgQWtvbmFkaSBhbmQgYWxsIHRoZWlyICJmcmllbmRzIiB5ZWFycwo+ICAgICBh
Z28uIEl0J3MgaGFyZCB0byBiZWxpZXZlIHRoYXQgYW4gZW1haWwgcHJvZ3JhbSBoYXMgYWJvdXQg
ODAKPiAgICAgZGVwZW5kZW5jaWVzIGFuZCAic3VnZ2VzdHMiIGFub3RoZXIgMjAgcGFja2FnZXMh
ISEKPiAKPiAgICAgQXMgSSB3cm90ZSwgSSBpbnRlbnRpb25hbGx5IGRpZCBub3QgaW5jbHVkZSB0
b28gbWFueSBkZXRhaWxzIGFib3V0IHRoZQo+ICAgICBwcm9ibGVtIHNpbmNlIEkgd2FzIG5vdCBy
ZWFsbHkgbG9va2luZyBmb3IgYSBzb2x1dGlvbi4KPiAKPiAgICAgVGhlIHNob3J0IHZlcnNpb24g
LSB0aGlzIHNlZW1lZCB0byBiZSBjYXVzZWQgYnkgYSBicm9rZW4gZGVwZW5kZW5jeSBhbmQKPiAg
ICAgbmVpdGhlciBhcHQtZ2V0IG9yIGRwa2cgd2VyZSBhYmxlIHRvIHNvbHZlIHRoaXMgdW50aWwg
SSBtYW51YWxseQo+ICAgICBkZWxldGVkIGEgZmV3IHBvc3QtaW5zdGFsbCBzY3JpcHRzLiBTbyB0
aGUgImJsYW1lIiBzaG91bGQgcHJvYmFibHkgZmFsbAo+ICAgICBvbiB0aGUgd2F5IGFwdC1nZXQg
YW5kIGRwa2cgaGFuZGxlIGRlcGVuZGVuY2llcyBhbmQvb3Igc3VjaCBzY3JpcHRzLAo+ICAgICBh
bmQgbm90IHNvIG11Y2ggb24gdGhlIEt1YnVudHUgbWFpbnRhaW5lcnMuCj4gCj4gICAgIEFsdGhv
dWdoIEkgZGlkIHNhdmUgdGhlIHJlbGV2YW50IGFwdCBhbmQgZHBrZyBsb2dzLCBJIGRvbid0IHRo
aW5rCj4gICAgIHRoYXQgY29udGFjdGluZyB0aGUgS3VidW50dSBtYWludGFpbmVycyB3aWxsIGhl
bHAgYmVjYXVzZSB0aGV5IHdpbGwKPiAgICAgcHJvYmFibHkgImJsYW1lIiB0aGUgc29mdHdhcmUg
ZGV2ZWxvcGVycyB3aG8gcGFja2FnZWQgdGhlIG1vbm9kZXZlbG9wCj4gICAgIElERSAoYW5kIHBy
b3ZpZGVkIHRoZXJlIG93biBQUEEpIC0gd2hpY2ggbmV2ZXIgd29ya2VkIGZvciBtZSBpbiB0aGUK
PiAgICAgZmlyc3QgcGxhY2Ugc28gSSBwcm9iYWJseSBzaG91bGQgaGF2ZSB1bmluc3RhbGxlZCBp
dCBtb250aHMgYWdvIDotKS4KPiAKPiAKPiAKPiAgICAgT24gU3VuLCAxMSBBdWcgMjAxOSAyMTox
NzozOSAtMDQwMAo+ICAgICBTdGV2ZSBMaXR0IDxzbGl0dEB0cm91Ymxlc2hvb3RlcnMuY29tCj4g
ICAgIDxtYWlsdG86c2xpdHRAdHJvdWJsZXNob290ZXJzLmNvbT4+IHdyb3RlOgo+IAo+ICAgICAg
PiBPbiBTdW4sIDExIEF1ZyAyMDE5IDA5OjA1OjI0ICswMzAwCj4gICAgICA+IFNobG9tbyBTb2xv
bW9uIDxzaGxvbW8uc29sb21vbkBnbWFpbC5jb20KPiAgICAgPG1haWx0bzpzaGxvbW8uc29sb21v
bkBnbWFpbC5jb20+PiB3cm90ZToKPiAgICAgID4KPiAgICAgID4gPiBMZXQgbWUgc3RhcnQgYnkg
c2F5aW5nIHRoYXQgSSdtIG5vdCBsb29raW5nIGZvciBhIHNvbHV0aW9uIC0gSQo+ICAgICAgPiA+
IHNvbHZlZCBteSBwcm9ibGVtLiBJJ20ganVzdCBhbmdyeSBhbmQgbGV0dGluZyBvZmYgc29tZSBz
dGVhbS4KPiAgICAgID4KPiAgICAgID4gW3NuaXAgc3VjY2Vzc2Z1bCBhdHRlbXB0cyB1c2luZyBh
IH4xMCBzdGVwIGFwdC9kcGtnIHdpdGNoJ3MgYnJld10KPiAgICAgID4KPiAgICAgID4gSSBmZWVs
IHlvdXIgcGFpbi4gUHJvYmFibHkgd2UgYWxsIGRvLgo+ICAgICAgPgo+ICAgICAgPiBBbmQgaXQn
cyBsaWtlbHkgdGhlIGJldHRlciBwZW9wbGUgdG8gbGV0IG9mZiBzdGVhbSBhdCB3b3VsZCBiZToK
PiAgICAgID4KPiAgICAgID4gMSkgVGhlIG1haW50YWluZXJzIG9mIHlvdXIgZGlzdHJvCj4gICAg
ICA+Cj4gICAgICA+IDIpIFRoZSBtYWludGFpbmVycyBvZiB5b3VyICJEZXNrdG9wIEVudmlyb25t
ZW50IiwgaWYgYW55Cj4gICAgICA+Cj4gICAgICA+IDMpIFRoZSBhdXRob3JzIG9mIHRoZSBzb2Z0
d2FyZSBjb25jZXJuZWQKPiAgICAgID4KPiAgICAgID4KPiAgICAgID4gRElTVFJPOgo+ICAgICAg
Pgo+ICAgICAgPiBZb3VyIGNvbXBsYWludCBpc24ndCB2ZXJ5IGRldGFpbGVkLCBidXQgdGhlIGZh
Y3QgdGhhdCB5b3UgbmVlZGVkIGFwdAo+ICAgICAgPiB0byBmaXggaXQgc3VnZ2VzdHMgeW91J3Jl
IHVzaW5nIGEgRGViaWFuIGRlcml2ZWQgZGlzdHJvLiBNb3N0IERlYmlhbgo+ICAgICAgPiBleHRl
bnNpb24gZGlzdHJvcywgc3VjaCBhcyBVYnVudHUsIE1pbnQgYW5kIEtub3BwaXgsIGFkZAo+ICAg
ICAgPiBoeXBlcmNvbXBsZXhpdHkgaW4gb3JkZXIgdG8gbWFrZSB0aGVtIG1vcmUgbWFnaWNhbGx5
ICJ3ZSBkbyBpdCBhbGwKPiAgICAgID4gZm9yIHlvdSIgYW5kICJ1c2VyIGZyaWVuZGx5Iiwgb3Ig
anVzdCB0byBtYWtlIHRoaW5ncyBsb29rIHByZXR0eS4KPiAgICAgID4KPiAgICAgID4gRGViaWFu
IGl0c2VsZiwgb25jZSBhIHNpbXBsaXN0aWMgZGlzdHJvLCBoYXMgYmVlbiBzbG93bHkKPiAgICAg
Y29tcGxleGlmeWluZwo+ICAgICAgPiBpdHNlbGYsIGZpcnN0IGJ5IGRlZmF1bHRpbmcgdG8gc2Vs
ZWN0aW5nIG9mIHRoYXQgYmFsbCBvZgo+ICAgICAgPiBjb25mdXNpb24gR25vbWUzLCB3aGljaCBp
dHNlbGYgaGFzIGJlZW4gY29tcGxleGlmeWluZyBhdCBhIHJlbWFya2FibGUKPiAgICAgID4gcmF0
ZSwgYW5kIHRoZW4gYnkgcGxlZGdpbmcgYWxsZWdpYW5jZSB0byBzeXN0ZW1kOiBUaGUgdWx0aW1h
dGUKPiAgICAgYmFsbCBvZgo+ICAgICAgPiBjb25mdXNpb24uCj4gICAgICA+Cj4gICAgICA+IEFi
b3V0IHRoZSBvbmx5IGFwdCBwYWNrYWdlZCBkaXN0cm8gSSBjb3VsZCByZWNvbW1lbmQgdG9kYXks
IGZyb20gYQo+ICAgICAgPiBkZXBlbmRlbmN5LXNhbml0eSBwb2ludCBvZiB2aWV3LCB3b3VsZCBi
ZSBEZXZ1YW4sIHdoaWNoIHJlamVjdGVkCj4gICAgICA+IGJvdGggR25vbWUzIGFuZCBzeXN0ZW1k
Lgo+ICAgICAgPgo+ICAgICAgPiBJIGZpbmQgaXQgYW11c2luZyB0aGF0IERlYmlhbidzIHNvbHV0
aW9uIHRvIHN1YnN0aXR1dGluZyBhCj4gICAgIG5vbi1zeXN0ZW1kCj4gICAgICA+IGluaXQgc3lz
dGVtIGludm9sdmVzIGEgbWFueS1zdGVwIHJhaW5kYW5jZSB3aGVyZSB5b3UgcGluIHRoaXMgcGFj
a2FnZQo+ICAgICAgPiBhbmQgaG9sZCBiYWNrIHRoYXQgcGFja2FnZS4KPiAgICAgID4KPiAgICAg
ID4gT2YgY291cnNlLCBSZWRoYXQgYW5kIFJlZGhhdC1kZXJpdmVkIGRpc3Ryb3MgYXJlIHdvcnNl
Lgo+ICAgICAgPgo+ICAgICAgPiBUZWxsIHlvdXIgZGlzdHJvIG1haW50YWluZXJzIHRvIHF1aXQg
bWFraW5nIHBhY2thZ2UgcmVjb21tZW5kcyBpbnRvCj4gICAgICA+IGhhcmQgcmVxdWlyZW1lbnRz
LCBhbmQgdG8gZmluZCBiZXR0ZXIgc29sdXRpb25zIHRoYW4gc2VjcmV0IGFwdAo+ICAgICAgPiBt
ZWV0aW5ncyB3aXRoIHNlY3JldCBkcGtnIGhhbmRzaGFrZXMsIG9yIGVsc2UgY29uc2lkZXIgbm90
IHBhY2thZ2luZwo+ICAgICAgPiBpdCBhdCBhbGwuIFRoZXJlIGFyZSB1c3VhbGx5IHN1YnN0aXR1
dGVzIGFuZCBlcXVpdmFsZW50cy4KPiAgICAgID4KPiAgICAgID4KPiAgICAgID4gREVTS1RPUCBF
TlZJUk9OTUVOVFM6Cj4gICAgICA+Cj4gICAgICA+IERlc2t0b3AgZW52aXJvbm1lbnRzLCB3aGlj
aCBiaW5kIGEgd2luZG93IG1hbmFnZXIgYW5kIGEgYnVuY2ggb2YKPiAgICAgID4gYXBwbGljYXRp
b25zIHRvZ2V0aGVyLCBpbmNsdWRpbmcgYWxsIHNvcnRzIG9mIGludGVyZGVwZW5kZW5jaWVzIGFu
ZAo+ICAgICAgPiBwcm9taXNjdW91cyBjb21tdW5pY2F0aW9ucyBpbnNpZGUgYW5kIG91dHNpZGUg
b2YgZGJ1cywgd2VyZSBvYnZpb3VzbHkKPiAgICAgID4gYSBiYWQgaWRlYSBmcm9tIHRoZSBiZWdp
bm5pbmcsIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gY29udHJvbCB0aGVpcgo+ICAgICAgPiBjb21w
dXRlcnMgcmF0aGVyIHRoYW4gdGhlIG90aGVyIHdheSBhcm91bmQuCj4gICAgICA+Cj4gICAgICA+
IElmIHlvdSB1c2UgYSBkZXNrdG9wIGVudmlyb25tZW50LCB3cml0ZSB0byB0aGVtIGFuZCB0ZWxs
IHRoZW0gdG8KPiAgICAgID4gcmVkdWNlIHByb21pc2N1b3VzIGNvbW11bmljYXRpb24gYW5kIGRl
cGVuZGVuY2llcy4gVGhleSdsbCBsYXVnaCBhdAo+ICAgICAgPiB5b3UsIG9mIGNvdXJzZTogVGhl
aXIgcHVycG9zZSBvbiB0aGlzIGVhcnRoIGlzIHRvIGNyZWF0ZSBvYnNjZW5lbHkKPiAgICAgID4g
aW50ZXJkZXBlbmRlbnQgYmxhY2sgYm94ZXMuCj4gICAgICA+Cj4gICAgICA+IFlvdSBjYW4gYXZv
aWQgYSBsb3Qgb2YgdGhpcyBieSBnb2luZyBiYWNrIHRvIGEgd2luZG93IG1hbmFnZXIgYW5kCj4g
ICAgICA+IHNlbGVjdGluZyB5b3VyIGFwcGxpY2F0aW9ucyBhLWxhLWNhcnRlLCB0cnlpbmcgbWln
aHRpbHkgbm90IHRvCj4gICAgIGluY2x1ZGUKPiAgICAgID4gZGVza3RvcCBlbnZpcm9ubWVudCBh
cHBzLiBJZiBlbm91Z2ggcGVvcGxlIHdlcmUgdG8gZG8gdGhpcyAobm90IHZlcnkKPiAgICAgID4g
bGlrZWx5LCBtb3N0IHBlb3BsZSBhcmUgd2VkZGVkIHRvIHRoZWlyICJ3ZSBkbyBpdCBhbGwgZm9y
IHlvdSIKPiAgICAgID4gZW52aXJvbm1lbnRzKSwgdGhlICJkZXNrdG9wIGVudmlyb25tZW50cyIg
bWlnaHQgY2F0Y2ggb24gYW5kIHB1dCBtb3JlCj4gICAgICA+IG9mIGEgcHJpb3JpdHkgb24gbW9k
dWxhcml0eSBhbmQgdGhpbiBpbnRlcmZhY2VzIChvciBubyBpbnRlcmZhY2VzCj4gICAgICA+IHdo
ZXJlIG5vdCBuZWVkZWQpLgo+ICAgICAgPgo+ICAgICAgPiBJIGtpY2tlZCBLREUgYW5kIGV2ZXJ5
IEtERSBhcHAgYW5kIGxpYnJhcnkgb2ZmIG15IGNvbXB1dGVyIGluCj4gICAgICA+IDIwMTItMjAx
MywgYW5kIGxpdmVkIHRvIHRlbGwgYWJvdXQgaXQuIEkndmUgbmV2ZXIgdXNlZCBHbm9tZTMsIGFu
ZAo+ICAgICAgPiBzbG93bHkgYnV0IHN1cmVseSBJJ3ZlIGJlZW4ga2lja2luZyBpdHMgYXBwcyBh
bmQgbGlicmFyaWVzIG9mZiBteQo+ICAgICAgPiBjb21wdXRlci4gTm93IEkgYm9zcyBteSBjb21w
dXRlciBhcm91bmQsIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KPiAgICAgID4KPiAgICAgID4K
PiAgICAgID4gVEhFIFNPRlRXQVJFIEFVVEhPUlM6Cj4gICAgICA+Cj4gICAgICA+IFRydWUgc3Rv
cnkuIFdoZW4gdXNpbmcgUHl0aG9uIHdyaXRpbmcgYSBwaWVjZSBvZiBmcmVlIHNvZnR3YXJlCj4g
ICAgICA+IGludGVuZGVkIHRvIGJlIHVzZWQgYnkgb3RoZXJzLCBJIG5lZWRlZCBvbmUgbWlub3Ig
YnV0IG5vdCBvYnZpb3VzIGhvdwo+ICAgICAgPiB0byBjb2RlIGZ1bmN0aW9uYWxpdHkuIFNvIEkg
YXNrZWQgaG93IHRvIGNvZGUgaXQgb24gdGhlIFB5dGhvbiBJUkMKPiAgICAgID4gY2hhbm5lbC4g
Tm90IG9uZSBhbnN3ZXIsIGJ1dCB0aHJlZSBvciBmb3VyIHBlb3BsZSB0b2xkIG1lIHRvIHVzZSBz
b21lCj4gICAgICA+IGdpbm9ybW91cyBsaWJyYXJ5LCBpdHNlbGYgaGF2aW5nIGxvdHMgb2YgZGVw
ZW5kZW5jaWVzLCB0aGF0IHdhcyBub3QKPiAgICAgID4gcGFydCBvZiB0aGUgc3RhbmRhcmQgUHl0
aG9uIGRpc3RyaWJ1dGlvbi4KPiAgICAgID4KPiAgICAgID4gSSBleHBsYWluZWQgdGhhdCBJIGRp
ZG4ndCBuZWVkIGFsbCB0aGF0IHN0dWZmLCBJIGp1c3QgbmVlZGVkIHRoaXMgb25lCj4gICAgICA+
IGZ1bmN0aW9uYWxpdHkuIEkgZGlkbid0IHdhbnQgbXkgdXNlcnMgdG8gaGF2ZSB0byBpbnRlZ3Jh
dGUgdGhpcwo+ICAgICAgPiBsaWJyYXJ5IGludG8gdGhlaXIgc3lzdGVtcy4gIk5vIHByb2JsZW0i
LCBvbmUgb2YgdGhlIElSQyBkZW5pemVucwo+ICAgICAgPiBwcm9jbGFpbWVkLCAidGhhdCdzIHdo
YXQgdGhlIFB5dGhvbiA8d2hhdGV2ZXI+IGlzIGZvcjogWW91IGNhbiBidWlsZAo+ICAgICAgPiB5
b3VyIG93biBQeXRob24gaW50ZXJwcmV0ZXIgZm9yIHlvdXIgb25lIGFwcGxpY2F0aW9uLCBhbmQg
c2hpcCB0aGUKPiAgICAgID4gaW50ZXJwcmV0ZXIgYWxvbmcgd2l0aCB0aGUgYXBwIi4gTG9vayBh
dCB5b3VyIGNvbXB1dGVyJ3MgY2xvY2s6IFRoaXMKPiAgICAgID4gaXMgbm90IGFuIEFwcmlsIEZv
b2xzIGpva2UsIHRoaXMgaGFwcGVuZWQuCj4gICAgICA+Cj4gICAgICA+IElmIGNvdXJzZSBJIHNh
aWQgIm5vIiwgYW5kIHRoZW4gdGhlIHJlYWwgYWJ1c2UgaGFwcGVuZWQsIHdpdGggdGhlCj4gICAg
ICA+IHVzdWFsICJkb24ndCByZWludmVudCB0aGUgd2hlZWwiIGFuZCAic2NhcmVkIHRvIGxlYXJu
IG5ldyB0aGluZ3MiIGFuZAo+ICAgICAgPiBhIG5ldyBjcmVhdGl2ZSBkaXNzOiAiUmVhbCBwcm9n
cmFtbWVycyB0cnkgbmV3IHBhY2thZ2VzIGp1c3QgdG8gZ2V0Cj4gICAgICA+IGZhbWlsaWFyIHdp
dGggdGhlbSwgaXQncyBhIHJlYWwgb3Bwb3J0dW5pdHkhIgo+ICAgICAgPgo+ICAgICAgPiBVbmZv
cnR1bmF0ZWx5LCB0aGVzZSBndXlzIHdlcmVuJ3QgdW51c3VhbC4gV2F5IHRvbyBtYW55IHByb2dy
YW1tZXJzLAo+ICAgICAgPiBpbiB0aGUgbmFtZSBvZiBhdm9pZGluZyByZWludmVudGluZyB0aGUg
d2hlZWwsIGludGVncmF0ZSBzb21lYm9keQo+ICAgICAgPiBlbHNlJ3Mgd2hlZWwsIHdoZW4gYWxs
IHRoZXkgbmVlZGVkIHdhcyBhbiBlYXNpbHkgYXZhaWxhYmxlIHNpbmdsZQo+ICAgICAgPiBzcG9r
ZS4gWW91IGtub3cgd2hvIHN1ZmZlcnM/IFRoZSBkaXN0cm8gbWFpbnRhaW5lcnMgYW5kIHRoZSB1
c2Vycy4KPiAgICAgID4KPiAgICAgID4gQWxsIHRvbyBtYW55IGRldmVsb3BlcnMgcHV0IGFic29s
dXRlbHkgemVybyBwcmlvcml0eSBvbiBzaW1wbGljaXR5Lgo+ICAgICAgPiBUaGUgc2xpZ2h0ZXN0
IGltcHJvdmVtZW50IGluICJwcmV0dHkiLCBvciB0aGUgc2xpZ2h0ZXN0ICJpbXByb3ZlbWVudCIK
PiAgICAgID4gdG8ga2VlcCB0aGUgdXNlciBmcm9tIGhhdmluZyB0byB1c2UgYSB0ZXh0IGVkaXRv
ciwgaXMgcGVyZmVjdAo+ICAgICAgPiBqdXN0aWZpY2F0aW9uIHRvIGJyaW5nIGluIGEgZ2FyZ2Fu
dHVhbiBzb2Z0d2FyZSBsaWJyYXJ5IHdpdGggcG9vcmx5Cj4gICAgICA+IGRvY3VtZW50ZWQgQVBJ
LCBsb3RzIG9mIGNoaWxkIGRlcGVuZGVuY2llcywgZ3JhbmRjaGlsZCBkZXBlbmRlbmNpZXMsCj4g
ICAgICA+IGFuZCB3aG8ga25vd3MgaG93IGZhciBkb3duIHRoZSB0cmVlIGl0IGdvZXMuIEFuZCBh
dCBhbnkgZ2l2ZW4gdGltZSwKPiAgICAgID4gYXQgbGVhc3Qgb25lIGRlcGVuZGVuY3kgb2YgdGhh
dCBzb2Z0d2FyZSBkZXBlbmRlbmN5IHRyZWUgZ2V0cwo+ICAgICBidWdneSBvcgo+ICAgICAgPiBn
b2VzIHVubWFpbnRhaW5lZCBvciBzZXRzIGEgZGVwZW5kZW5jeSBvbiBzb21ldGhpbmcgc28gbW9k
ZXJuIGl0Cj4gICAgIHdvbid0Cj4gICAgICA+IHdvcmsgd2l0aCB5b3VyIGRpc3RybywgYW5kIHlv
dSBnZXQgdG8gdXNlIGEgMTAgc3RlcCBhcHQvZHBrZwo+ICAgICAgPiBjaG9yZW9ncmFwaHkuCj4g
ICAgICA+Cj4gICAgICA+IFRlbGwgdGhlIHNvZnR3YXJlIGF1dGhvcnMgeW91ciBvYmplY3Rpb25z
IHRvIGdyYXR1aXRvdXMgZGVwZW5kZW5jeQo+ICAgICAgPiBpbmNsdXNpb25zLCBhcyB3ZWxsIGFz
IHVubmVjZXNzYXJ5IGFuZCB1bmhlbHBmdWwgY29tbXVuaWNhdGlvbnMgd2l0aAo+ICAgICAgPiBi
YXJlbHkgcmVsYXRlZCBzb2Z0d2FyZS4gVGVsbCB0aGVtIHlvdSBjaG9vc2Ugc29mdHdhcmUgdG8g
d29yayBhbmQKPiAgICAgID4ga2VlcCBvbiB3b3JraW5nLCBub3QgdG8gYmUgcHJldHR5IG9yIHNw
YXJlIHlvdSBmcm9tIHVzaW5nIGFuIGVkaXRvci4KPiAgICAgID4KPiAgICAgID4gQW5kIHRoZW4g
ZG8gd2hhdCB5b3UgdG9sZCB0aGVtOiBXaGVuIGV2YWx1YXRpbmcgZnJlZSBzb2Z0d2FyZQo+ICAg
ICAgPiBhbHRlcm5hdGl2ZXMsIHNpZ25pZmljYW50bHkgZG93bnZvdGUgdGhvc2Ugd2l0aCB0b28g
bWFueSwgb3IKPiAgICAgID4gdW5uZWNlc3NhcnksIGRlcGVuZGVuY2llcy4gQW5kIGlmIHRoZSBz
aW1wbGVyIHNvZnR3YXJlIGxhY2tzIGEKPiAgICAgZmVhdHVyZQo+ICAgICAgPiB5b3UgbmVlZCwg
eW91IGNhbiB1c3VhbGx5IGtsdWRnZSBpdCB0b2dldGhlciB3aXRoIGEgY291cGxlCj4gICAgICA+
IHNoZWxsc2NyaXB0cyBhbmQgbWF5YmUgc29tZSBQeXRob24vUGVybC9SdWJ5L0x1YS9hd2svZ3Jl
cC9zZWQuIFdlIGFsbAo+ICAgICAgPiBoYXRlIHRvIGtsdWRnZSwgYnV0IEkgdGhpbmsgdGhlIHVs
dGltYXRlIGtsdWRnZSBpcyBzb21lIGNvbmNlaXRlZAo+ICAgICAgPiBkZXZlbG9wZXIgcmVxdWly
aW5nIDEwMEsgbGluZXMgb2YgaW1wb3J0ZWQgY29kZSB0byBnaXZlIGEgY291cGxlCj4gICAgICA+
IGZlYXR1cmVzIGhlIGNvdWxkIGhhdmUgZG9uZSBpbiAxMDAgbGluZXMgb2Ygc2VsZi13cml0dGVu
IGNvZGUsIGlmCj4gICAgICA+IGhlJ2QgYm90aGVyZWQuCj4gICAgICA+Cj4gICAgICA+IEkgY29w
aWVkIHRoZSBHb0xVRyBtYWlsaW5nIGxpc3QgYmVjYXVzZSBpdCdzIG15IGhvbWUtdG93biBMVUcs
Cj4gICAgIGFuZCB0aGUKPiAgICAgID4gRGV2dWFuIG1haWxpbmcgbGlzdCBiZWNhdXNlIHRoZXkn
cmUgdGhlIG9uZSBkaXJlY3QgRGViaWFuIGZvcmsKPiAgICAgID4gdGhhdCBlc2NoZXdzIHVubmVj
ZXNzYXJ5IGRlcGVuZGVuY2llcyBhbmQgaW50ZXJtb2R1bGFyCj4gICAgIGNvbW11bmljYXRpb25z
Lgo+ICAgICAgPiBOb3RpY2UgdGhhdCBzb21lIGZvcmtzIGFuZCBleHRlbnNpb25zIG9mIERldnVh
biBhbHNvIGtlZXAgY29tcGxleGl0eQo+ICAgICAgPiB0byBhIG1pbmltdW0uCj4gICAgICA+Cj4g
ICAgICA+IFN0ZXZlVAo+ICAgICAgPgo+ICAgICAgPiBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwo+ICAgICAgPiBMaW51eC1pbCBtYWlsaW5nIGxpc3QKPiAg
ICAgID4gTGludXgtaWxAY3MuaHVqaS5hYy5pbCA8bWFpbHRvOkxpbnV4LWlsQGNzLmh1amkuYWMu
aWw+Cj4gICAgICA+IGh0dHA6Ly9tYWlsbWFuLmNzLmh1amkuYWMuaWwvbWFpbG1hbi9saXN0aW5m
by9saW51eC1pbAo+IAo+IAo+IAo+ICAgICAtLSAKPiAgICAgU2hsb21vIFNvbG9tb24KPiAgICAg
aHR0cDovL3RoZS1zb2xvbW9ucy5uZXQKPiAgICAgQ2xhd3MgTWFpbCAzLjE2LjAgLSBLdWJ1bnR1
IDE4LjA0Cj4gCj4gICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCj4gICAgIExpbnV4LWlsIG1haWxpbmcgbGlzdAo+ICAgICBMaW51eC1pbEBjcy5odWpp
LmFjLmlsIDxtYWlsdG86TGludXgtaWxAY3MuaHVqaS5hYy5pbD4KPiAgICAgaHR0cDovL21haWxt
YW4uY3MuaHVqaS5hYy5pbC9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWlsCj4gCj4gCj4gCj4gLS0g
Cj4gLS0KPiBKZXJlbXkgSG95bGFuZAo+IGpob3lsYW5kQGdtYWlsLmNvbSA8bWFpbHRvOmpob3ls
YW5kQGdtYWlsLmNvbT4KPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwo+IExpbnV4LWlsIG1haWxpbmcgbGlzdAo+IExpbnV4LWlsQGNzLmh1amkuYWMu
aWwKPiBodHRwOi8vbWFpbG1hbi5jcy5odWppLmFjLmlsL21haWxtYW4vbGlzdGluZm8vbGludXgt
aWwKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpM
aW51eC1pbCBtYWlsaW5nIGxpc3QKTGludXgtaWxAY3MuaHVqaS5hYy5pbApodHRwOi8vbWFpbG1h
bi5jcy5odWppLmFjLmlsL21haWxtYW4vbGlzdGluZm8vbGludXgtaWwK