Re: monomorphism restriction vs unused
Viktor Dukhovni <[email protected]> Mon, 22 Jun 2026 16:52:30 +1000
| Newsgroups | gmane.comp.lang.haskell.cafe |
|---|---|
| Message-ID | <[email protected]> |
T24gU3VuLCBKdW4gMjEsIDIwMjYgYXQgMDE6MDU6NThQTSAtMDcwMCwgRXZhbiBMYWZvcmdlIHdy b3RlOg0KDQo+IEkgc2hvdWxkIGhhdmUgdHJpZWQgdGhpcyBiZWZvcmUgc2VuZGluZyEgIEl0IHR1 cm5zIG91dA0KPiBOb01vbm9tb3JwaGlzbVJlc3RyaWN0aW9uIGlzIG5vdCByZWFsbHkgYSB1c2Fi bGUgd29ya2Fyb3VuZC4NCj4gRmlyc3QgaXQgc2VlbXMgdG8gdHJpZ2dlciBhIGJ1ZzoNCj4gDQo+ IERlcml2ZS9KU2NvcmUvVC5oczo3NjoxMTogZXJyb3I6IFtHSEMtMzk5OTldDQo+ICAgICDigKIg QW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkNCj4gICAgICAgR0hDIEJ1ZyAjMjAwNzYg PGh0dHBzOi8vZ2l0bGFiLmhhc2tlbGwub3JnL2doYy9naGMvLS9pc3N1ZXMvMjAwNzY+DQo+ICAg ICAgIEFzc3VtaW5nIHlvdSBoYXZlIGEgcGFydGlhbCB0eXBlIHNpZ25hdHVyZSwgeW91IGNhbiBh dm9pZCB0aGlzIGVycm9yDQo+ICAgICAgIGJ5IGVpdGhlciBhZGRpbmcgYW4gZXh0cmEtY29uc3Ry YWludHMgd2lsZGNhcmQgKGxpa2UgYCguLi4sIF8pID0+IC4uLmAsDQo+ICAgICAgIHdpdGggdGhl IHVuZGVyc2NvcmUgYXQgdGhlIGVuZCBvZiB0aGUgY29uc3RyYWludCksIG9yIGJ5IGF2b2lkaW5n IHRoZQ0KPiAgICAgICB1c2Ugb2YgYSBzaW1wbGlmaWFibGUgY29uc3RyYWludCBpbiB5b3VyIHBh cnRpYWwgdHlwZSBzaWduYXR1cmUuDQo+ICAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKA mChCb3VuZGVkIGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCj4gICAgICAgUHJvYmFibGUgZml4 OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3VsZCBi ZS4NCj4gICAgICAgUG90ZW50aWFsbHkgbWF0Y2hpbmcgaW5zdGFuY2VzOg0KPiAgICAgICAgIGlu c3RhbmNlIEJvdW5kZWQgT3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuRW51beKAmQ0KPiAg ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgSW5zdHJ1bWVudCAtLSBEZWZpbmVkIGF0IERlcml2ZS9K U2NvcmUvVC5oczoxMzI6MzANCj4gICAgICAgICAuLi5wbHVzIDIzIG90aGVycw0KPiAgICAgICAg IC4uLnBsdXMgZm91ciBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KPiAg ICAgICAgICh1c2UgLWZwcmludC1wb3RlbnRpYWwtaW5zdGFuY2VzIHRvIHNlZSB0aGVtIGFsbCkN Cj4gDQo+IFRoaXMgaXMgaW4gYSBjb250ZXh0IHdoZXJlIGFsbCB0aGUgdHlwZXMgYXJlIGZ1bGx5 IHNwZWNpZmllZCwgYW5kIG5vDQo+IHBhcnRpYWwgdHlwZSBzaWduYXR1cmVzOg0KPiANCj4gYGBg DQo+IGRhdGEgUGl0Y2hDbGFzcyA9IFAxIHwgUDIgfCBQMyB8IFA0IHwgUDUgfCBQNiB8IFA3DQo+ ICAgICBkZXJpdmluZyAoRXEsIE9yZCwgU2hvdywgQm91bmRlZCwgRW51bSkNCj4gZGF0YSBQaXRj aCA9IFBpdGNoIHsgcGl0Y2hfb2N0YXZlIDo6IEludCwgcGl0Y2hfcGMgOjogUGl0Y2hDbGFzcyB9 DQo+ICAgICBkZXJpdmluZyAoRXEsIE9yZCwgU2hvdykNCj4gDQo+IHRvRW51bUJvdW5kZWQgOjog Zm9yYWxsIGEuIChCb3VuZGVkIGEsIEVudW0gYSkgPT4gSW50IC0+IChJbnQsIGEpDQo+IHRvRW51 bUJvdW5kZWQgbiA9IChpLCB0b0VudW0gcikNCj4gICAgIHdoZXJlIChpLCByKSA9IG4gYGRpdk1v ZGAgKGZyb21FbnVtIChtYXhCb3VuZCA6OiBhKSArIDEpDQo+IA0KPiBhZGRfcGNfYWJzIDo6IElu dCAtPiBQaXRjaCAtPiBQaXRjaA0KPiBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBvY3RhdmUgcGMp ID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkgcGMyDQo+ICAgICB3aGVyZSAob2N0LCBwYzIpID0gdG9F bnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCj4gYGBgDQo+IA0KPiBgdG9FbnVtQm91 bmRlZGAgaXMgY29uc2lkZXJlZCBhbWJpZ3VvdXMgZXZlbiB0aG91Z2ggYHBjMmAgc2hvdWxkIGJl DQo+IGNsZWFyLiAgYHBjMiA6OiBQaXRjaENsYXNzYCB3b3JrcyBhcm91bmQuDQoNCldpdGgganVz dCB0aGUgcXVvdGVkIGFib3ZlIGNvZGUgZnJhZ21lbnQgYW5kDQoiTm9Nb25vbW9ycGhpc21SZXN0 cmljdGlvbiIsIHRlc3RpbmcgYSByYW5nZSBvZiBjb21waWxlciB2ZXJzaW9ucyBJIG9ubHkNCnNl ZSB0aGUgcmVwb3J0ZWQgIkdIQyBCdWcgIzIwMDc2IiB3aXRoIEdIQyA5LjQgYW5kIDkuNiwgYnV0 IHRoZSBjb2RlDQpjb21waWxlcyBzdWNjZXNzZnVsbHkgb25seSB3aXRoIGEgbm93IHNvbWV3aGF0 IGRhdGVkIEdIQyAxMC4wIHNuYXBzaG90IEkNCmJ1aWx0IGJhY2sgaW4gQXByaWwuDQoNCkFyZSB5 b3UgdXNpbmcgYW55IGFkZGl0aW9uYWwgcmVsZXZhbnQgY29tcGlsZXIgb3B0aW9ucz8NCg0KLS0g DQogICAgVmlrdG9yLiAg8J+HuvCfh6Yg0KHQu9Cw0LLQsCDQo9C60YDQsNGX0L3RliENCg0KR0hD aSwgdmVyc2lvbiA4LjEwLjc6IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBo ZWxwDQpbMSBvZiAxXSBDb21waWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBp bnRlcnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1OjExOiBlcnJvcjoNCiAgICDigKIgQW1iaWd1 b3VzIHR5cGUgdmFyaWFibGUg4oCYYjDigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50 IOKAmChCb3VuZGVkIGIwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICDigKIgV2hlbiBjaGVj a2luZyB0aGF0IHRoZSBpbmZlcnJlZCB0eXBlDQogICAgICAgIG9jdCA6OiBmb3JhbGwgYi4gKEJv dW5kZWQgYiwgRW51bSBiKSA9PiBJbnQNCiAgICAgIGlzIGFzIGdlbmVyYWwgYXMgaXRzIGluZmVy cmVkIHNpZ25hdHVyZQ0KICAgICAgICBvY3QgOjogSW50DQogICAgICBJbiBhbiBlcXVhdGlvbiBm b3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBv Y3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAg ICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAk IGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0 b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQpGYWlsZWQsIG5vIG1v ZHVsZXMgbG9hZGVkLg0KDQotLS0tDQoNCkdIQ2ksIHZlcnNpb24gOS4yLjg6IGh0dHBzOi8vd3d3 Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAxXSBDb21waWxpbmcgTWFpbiAg ICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1 OjExOiBlcnJvcjoNCiAgICDigKIgQW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkgYXJp c2luZyBmcm9tIEdIQyBCdWcgIzIwMDc2DQogICAgICBwcmV2ZW50cyB0aGUgY29uc3RyYWludCDi gJgoQm91bmRlZCBhMCnigJkgZnJvbSBiZWluZyBzb2x2ZWQuDQogICAgICBQcm9iYWJsZSBmaXg6 IHVzZSBhIHR5cGUgYW5ub3RhdGlvbiB0byBzcGVjaWZ5IHdoYXQg4oCYYTDigJkgc2hvdWxkIGJl Lg0KICAgICAgVGhlc2UgcG90ZW50aWFsIGluc3RhbmNlcyBleGlzdDoNCiAgICAgICAgaW5zdGFu Y2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQogICAgICAg IGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9vLmhzOjU6 MzANCiAgICAgICAgaW5zdGFuY2UgQm91bmRlZCAoKSAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt 4oCZDQogICAgICAgIC4uLnBsdXMgMTkgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5z dGFuY2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50 LXBvdGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBXaGVuIGNoZWNr aW5nIHRoYXQgdGhlIGluZmVycmVkIHR5cGUNCiAgICAgICAgb2N0IDo6IGZvcmFsbCB7YX0uIChC b3VuZGVkIGEsIEVudW0gYSkgPT4gSW50DQogICAgICBpcyBhcyBnZW5lcmFsIGFzIGl0cyBpbmZl cnJlZCBzaWduYXR1cmUNCiAgICAgICAgb2N0IDo6IEludA0KICAgICAgSW4gYW4gZXF1YXRpb24g Zm9yIOKAmGFkZF9wY19hYnPigJk6DQogICAgICAgICAgYWRkX3BjX2FicyBzdGVwcyAoUGl0Y2gg b2N0YXZlIHBjKQ0KICAgICAgICAgICAgPSBQaXRjaCAob2N0YXZlICsgb2N0KSBwYzINCiAgICAg ICAgICAgIHdoZXJlDQogICAgICAgICAgICAgICAgKG9jdCwgcGMyKSA9IHRvRW51bUJvdW5kZWQg JCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8DQoxNSB8ICAgICB3aGVyZSAob2N0LCBwYzIpID0g dG9FbnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwgICAgICAgICAgIF5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXg0KRmFpbGVkLCBubyBt b2R1bGVzIGxvYWRlZC4NCg0KLS0tLQ0KDQpHSENpLCB2ZXJzaW9uIDkuNC44OiBodHRwczovL3d3 dy5oYXNrZWxsLm9yZy9naGMvICA6PyBmb3IgaGVscA0KWzEgb2YgMl0gQ29tcGlsaW5nIE1haW4g ICAgICAgICAgICAgKCAvdG1wL2Zvby5ocywgaW50ZXJwcmV0ZWQgKQ0KDQovdG1wL2Zvby5oczox NToxMTogZXJyb3I6DQogICAg4oCiIEFtYmlndW91cyB0eXBlIHZhcmlhYmxlIOKAmGEw4oCZIEdI QyBCdWcgIzIwMDc2IDxodHRwczovL2dpdGxhYi5oYXNrZWxsLm9yZy9naGMvZ2hjLy0vaXNzdWVz LzIwMDc2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3N1bWluZyB5b3Ug aGF2ZSBhIHBhcnRpYWwgdHlwZSBzaWduYXR1cmUsIHlvdSBjYW4gYXZvaWQgdGhpcyBlcnJvcg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBlaXRoZXIgYWRkaW5nIGFuIGV4 dHJhLWNvbnN0cmFpbnRzIHdpbGRjYXJkIChsaWtlIGAoLi4uLCBfKSA9PiAuLi5gLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSB1bmRlcnNjb3JlIGF0IHRoZSBl bmQgb2YgdGhlIGNvbnN0cmFpbnQpLCBvciBieSBhdm9pZGluZyB0aGUNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlIG9mIGEgc2ltcGxpZmlhYmxlIGNvbnN0cmFpbnQgaW4g eW91ciBwYXJ0aWFsIHR5cGUgc2lnbmF0dXJlLg0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0cmFp bnQg4oCYKEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFibGUg Zml4OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3Vs ZCBiZS4NCiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAgaW5z dGFuY2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQogICAg ICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9vLmhz OjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJlZSBp bnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1mcHJp bnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFuIGVx dWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3RlcHMg KFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkgcGMy DQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0VudW1C b3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9jdCwg cGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAgICAg ICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCkZhaWxl ZCwgbm8gbW9kdWxlcyBsb2FkZWQuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjYuNDogaHR0 cHM6Ly93d3cuaGFza2VsbC5vcmcvZ2hjLyAgOj8gZm9yIGhlbHANClsxIG9mIDJdIENvbXBpbGlu ZyBNYWluICAgICAgICAgICAgICggL3RtcC9mb28uaHMsIGludGVycHJldGVkICkNCg0KL3RtcC9m b28uaHM6MTU6MTE6IGVycm9yOiBbR0hDLTM5OTk5XQ0KICAgIOKAoiBBbWJpZ3VvdXMgdHlwZSB2 YXJpYWJsZSDigJhhMOKAmSBHSEMgQnVnICMyMDA3NiA8aHR0cHM6Ly9naXRsYWIuaGFza2VsbC5v cmcvZ2hjL2doYy8tL2lzc3Vlcy8yMDA3Nj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQXNzdW1pbmcgeW91IGhhdmUgYSBwYXJ0aWFsIHR5cGUgc2lnbmF0dXJlLCB5b3UgY2Fu IGF2b2lkIHRoaXMgZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkg ZWl0aGVyIGFkZGluZyBhbiBleHRyYS1jb25zdHJhaW50cyB3aWxkY2FyZCAobGlrZSBgKC4uLiwg XykgPT4gLi4uYCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGUg dW5kZXJzY29yZSBhdCB0aGUgZW5kIG9mIHRoZSBjb25zdHJhaW50KSwgb3IgYnkgYXZvaWRpbmcg dGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBvZiBhIHNpbXBsaWZp YWJsZSBjb25zdHJhaW50IGluIHlvdXIgcGFydGlhbCB0eXBlIHNpZ25hdHVyZS4NCiAgICAgIHBy ZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVkIGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZl ZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlwZSBhbm5vdGF0aW9uIHRvIHNwZWNpZnkg d2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQb3RlbnRpYWxseSBtYXRjaGluZyBpbnN0 YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQgT3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDi gJhHSEMuRW51beKAmQ0KICAgICAgICBpbnN0YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVm aW5lZCBhdCAvdG1wL2Zvby5oczo1OjMwDQogICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAg ICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFuY2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMN CiAgICAgICAgKHVzZSAtZnByaW50LXBvdGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxs KQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlvbiBmb3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAg ICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBvY3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNo IChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAgICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAo b2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1 IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBz dGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eDQpGYWlsZWQsIG5vIG1vZHVsZXMgbG9hZGVkLg0KDQotLS0tDQoNCkdIQ2ks IHZlcnNpb24gOS44LjM6IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxw DQpbMSBvZiAyXSBDb21waWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRl cnByZXRlZCApDQoNCi90bXAvZm9vLmhzOjE1OjExOiBlcnJvcjogW0dIQy0zOTk5OV0NCiAgICDi gKIgQW1iaWd1b3VzIHR5cGUgdmFyaWFibGUg4oCYYTDigJkgYXJpc2luZyB3aGVuIG1hdGNoaW5n IHJlcXVpcmVkIGNvbnN0cmFpbnRzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluIGEgZ3JvdXAgaW52b2x2aW5nIOKAmG9jdOKAmQ0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0 cmFpbnQg4oCYKEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFi bGUgZml4OiB1c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNo b3VsZCBiZS4NCiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAg aW5zdGFuY2UgQm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5FbnVt4oCZDQog ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9v LmhzOjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJl ZSBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1m cHJpbnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFu IGVxdWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3Rl cHMgKFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkg cGMyDQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0Vu dW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9j dCwgcGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAg ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCkZh aWxlZCwgbm8gbW9kdWxlcyBsb2FkZWQuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjEwLjM6 IGh0dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21w aWxpbmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQovdG1w L2Zvby5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBl IHZhcmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgd2hlbiBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJh aW50cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGdyb3VwIGludm9s dmluZyDigJhvY3TigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVk IGEwKeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlw ZSBhbm5vdGF0aW9uIHRvIHNwZWNpZnkgd2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQ b3RlbnRpYWxseSBtYXRjaGluZyBpbnN0YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQg T3JkZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuSW50ZXJuYWwuRW51beKAmQ0KICAgICAgICBp bnN0YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVmaW5lZCBhdCAvdG1wL2Zvby5oczo1OjMw DQogICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFu Y2VzIGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50LXBv dGVudGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlv biBmb3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRj aCBvY3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAg ICAgICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRl ZCAkIGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikg PSB0b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQoNCkZhaWxlZCwg dW5sb2FkZWQgYWxsIG1vZHVsZXMuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjEyLjQ6IGh0 dHBzOi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21waWxp bmcgTWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApDQovdG1wL2Zv by5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBlIHZh cmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgd2hlbiBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJhaW50 cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGdyb3VwIGludm9sdmlu ZyDigJhvY3TigJkNCiAgICAgIHByZXZlbnRzIHRoZSBjb25zdHJhaW50IOKAmChCb3VuZGVkIGEw KeKAmSBmcm9tIGJlaW5nIHNvbHZlZC4NCiAgICAgIFByb2JhYmxlIGZpeDogdXNlIGEgdHlwZSBh bm5vdGF0aW9uIHRvIHNwZWNpZnkgd2hhdCDigJhhMOKAmSBzaG91bGQgYmUuDQogICAgICBQb3Rl bnRpYWxseSBtYXRjaGluZyBpbnN0YW5jZXM6DQogICAgICAgIGluc3RhbmNlIEJvdW5kZWQgT3Jk ZXJpbmcgLS0gRGVmaW5lZCBpbiDigJhHSEMuSW50ZXJuYWwuRW51beKAmQ0KICAgICAgICBpbnN0 YW5jZSBCb3VuZGVkIFBpdGNoQ2xhc3MgLS0gRGVmaW5lZCBhdCAvdG1wL2Zvby5oczo1OjMwDQog ICAgICAgIC4uLnBsdXMgMjAgb3RoZXJzDQogICAgICAgIC4uLnBsdXMgdGhyZWUgaW5zdGFuY2Vz IGludm9sdmluZyBvdXQtb2Ytc2NvcGUgdHlwZXMNCiAgICAgICAgKHVzZSAtZnByaW50LXBvdGVu dGlhbC1pbnN0YW5jZXMgdG8gc2VlIHRoZW0gYWxsKQ0KICAgIOKAoiBJbiBhbiBlcXVhdGlvbiBm b3Ig4oCYYWRkX3BjX2Fic+KAmToNCiAgICAgICAgICBhZGRfcGNfYWJzIHN0ZXBzIChQaXRjaCBv Y3RhdmUgcGMpDQogICAgICAgICAgICA9IFBpdGNoIChvY3RhdmUgKyBvY3QpIHBjMg0KICAgICAg ICAgICAgd2hlcmUNCiAgICAgICAgICAgICAgICAob2N0LCBwYzIpID0gdG9FbnVtQm91bmRlZCAk IGZyb21FbnVtIHBjICsgc3RlcHMNCiAgIHwNCjE1IHwgICAgIHdoZXJlIChvY3QsIHBjMikgPSB0 b0VudW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfCAgICAgICAgICAgXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQoNCkZhaWxlZCwgdW5s b2FkZWQgYWxsIG1vZHVsZXMuDQoNCi0tLS0NCg0KR0hDaSwgdmVyc2lvbiA5LjE0LjE6IGh0dHBz Oi8vd3d3Lmhhc2tlbGwub3JnL2doYy8gIDo/IGZvciBoZWxwDQpbMSBvZiAyXSBDb21waWxpbmcg TWFpbiAgICAgICAgICAgICAoIC90bXAvZm9vLmhzLCBpbnRlcnByZXRlZCApW21haW5dDQovdG1w L2Zvby5oczoxNToxMTogZXJyb3I6IFtHSEMtMzk5OTldDQogICAg4oCiIEFtYmlndW91cyB0eXBl IHZhcmlhYmxlIOKAmGEw4oCZIGFyaXNpbmcgZnJvbSBtYXRjaGluZyByZXF1aXJlZCBjb25zdHJh aW50cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGJpbmRpbmcgZ3Jv dXAgaW52b2x2aW5nIOKAmG9jdOKAmQ0KICAgICAgcHJldmVudHMgdGhlIGNvbnN0cmFpbnQg4oCY KEJvdW5kZWQgYTAp4oCZIGZyb20gYmVpbmcgc29sdmVkLg0KICAgICAgUHJvYmFibGUgZml4OiB1 c2UgYSB0eXBlIGFubm90YXRpb24gdG8gc3BlY2lmeSB3aGF0IOKAmGEw4oCZIHNob3VsZCBiZS4N CiAgICAgIFBvdGVudGlhbGx5IG1hdGNoaW5nIGluc3RhbmNlczoNCiAgICAgICAgaW5zdGFuY2Ug Qm91bmRlZCBPcmRlcmluZyAtLSBEZWZpbmVkIGluIOKAmEdIQy5JbnRlcm5hbC5FbnVt4oCZDQog ICAgICAgIGluc3RhbmNlIEJvdW5kZWQgUGl0Y2hDbGFzcyAtLSBEZWZpbmVkIGF0IC90bXAvZm9v LmhzOjU6MzANCiAgICAgICAgLi4ucGx1cyAyMCBvdGhlcnMNCiAgICAgICAgLi4ucGx1cyB0aHJl ZSBpbnN0YW5jZXMgaW52b2x2aW5nIG91dC1vZi1zY29wZSB0eXBlcw0KICAgICAgICAodXNlIC1m cHJpbnQtcG90ZW50aWFsLWluc3RhbmNlcyB0byBzZWUgdGhlbSBhbGwpDQogICAg4oCiIEluIGFu IGVxdWF0aW9uIGZvciDigJhhZGRfcGNfYWJz4oCZOg0KICAgICAgICAgIGFkZF9wY19hYnMgc3Rl cHMgKFBpdGNoIG9jdGF2ZSBwYykNCiAgICAgICAgICAgID0gUGl0Y2ggKG9jdGF2ZSArIG9jdCkg cGMyDQogICAgICAgICAgICB3aGVyZQ0KICAgICAgICAgICAgICAgIChvY3QsIHBjMikgPSB0b0Vu dW1Cb3VuZGVkICQgZnJvbUVudW0gcGMgKyBzdGVwcw0KICAgfA0KMTUgfCAgICAgd2hlcmUgKG9j dCwgcGMyKSA9IHRvRW51bUJvdW5kZWQgJCBmcm9tRW51bSBwYyArIHN0ZXBzDQogICB8ICAgICAg ICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCg0K RmFpbGVkLCB1bmxvYWRlZCBhbGwgbW9kdWxlcy4NCg0KLS0tLQ0KDQpHSENpLCB2ZXJzaW9uIDEw LjAuMC4yMDI2MDQyNzogaHR0cHM6Ly93d3cuaGFza2VsbC5vcmcvZ2hjLyAgOj8gZm9yIGhlbHAN ClVzaW5nIGRlZmF1bHQgbGFuZ3VhZ2UgZWRpdGlvbjogR0hDMjAyNA0KWzEgb2YgMl0gQ29tcGls aW5nIE1haW4gICAgICAgICAgICAgKCAvdG1wL2Zvby5ocywgaW50ZXJwcmV0ZWQgKVttYWluXQ0K T2ssIG9uZSBtb2R1bGUgbG9hZGVkLg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSGFza2VsbC1DYWZlIG1haWxpbmcgbGlzdCAtLSBoYXNrZWxsLWNhZmVA aGFza2VsbC5vcmcKVG8gKHVuKXN1YnNjcmliZSwgbW9kaWZ5IG9wdGlvbnMgb3IgdmlldyBhcmNo aXZlcyBnbyB0bzoKT25seSBtZW1iZXJzIHN1YnNjcmliZWQgdmlhIHRoZSBtYWlsbWFuIGxpc3Qg YXJlIGFsbG93ZWQgdG8gcG9zdC4=