Re: Contributing to ScummVM with an interpreter for Magnetic Scrolls?
Torbjörn Andersson <[email protected]> Wed, 1 May 2019 17:13:55 +0200
| Newsgroups | gmane.games.devel.scummvm |
|---|---|
| Message-ID | <[email protected]> |
VGhlIExlZ2VuZCBnYW1lcyBzcGxpdCB0aGUgc2NyZWVuIGludG8gZml4ZWQgYXJlYXMsIHRob3Vn aC4gVGhlIE1hZ25ldGljIApXaW5kb3dzIEdVSSB3YXMgYmFzaWNhbGx5IGEgd2luZG93IG1hbmFn ZXIgKGluIDY0MHg0ODAgcGl4ZWxzKSwgd2l0aCAKbW92YWJsZSwgcmVzaXphYmxlLCBwb3RlbnRp YWxseSBvdmVybGFwcGluZyB3aW5kb3dzLiBIZXJlIGlzIGFuIAphZG1pdHRlZGx5IGhvcnJpZnlp bmcgc2NyZWVuc2hvdCBvZiB3aGF0IGl0IGNvdWxkIGxvb2sgbGlrZSBpZiB5b3UgCm9wZW5lZCBh bGwgdGhlIHBvc3NpYmxlIHdpbmRvd3M6CgpodHRwOi8vd3d3LnVwZGF0ZS51dS5zZS9+ZDkxdGFu L21hZ25ldGljLXdpbmRvd3MucG5nCgpJIGRlZnkgYW55b25lIHRvIGZpbmQgYSBzZW5zaWJsZSBs YXlvdXQgZm9yIGFsbCBvZiB0aGF0ISBZb3UgbWF5IHRoaW5rIAp5b3UgY2FuIGRvIGl0LCBpZiB5 b3UgY2xvc2UgdGhlICJDb21wYXNzIiwgIkludmVudG9yeSIsIGFuZCAiSXRlbXMgaW4gCnJvb20i IHdpbmRvd3MsIGFuZCBmb3IgYSB3aGlsZSB5b3UgY2FuLi4uIGFuZCB0aGVuIHlvdSByZWFsaXpl IHRoYXQgbm90IApldmVyeSBpbWFnZSBpcyB0aGUgc2FtZSBzaXplLCBhbmQgeW91IGhhdmUgdG8g bW92ZSB0aGUgIkdyYXBocGljcyIgCndpbmRvdyBvdXQgb2YgdGhlIHdheS4uLgoKVG9yYmrDtnJu IEFuZGVyc3NvbgoKT24gMDEvMDUvMjAxOSAwOC41MywgUGF1bCBHaWxiZXJ0IHdyb3RlOgo+IFRo YW5rcyBmb3IgaW5mb3JtYXRpb24gVG9yYmrDtnJuLiBJdCBkb2Vzbid0IHNvdW5kIGxpa2UgdGhl IG1pc3NpbmcgCj4gc2NyZWVuIGVsZW1lbnRzIGFyZSB0aGluZ3MgSSdkIG1pc3MgYWxsIHRoYXQg bXVjaC4gVGhvdWdoIG1heWJlIHNvbWUgb2YgCj4gaXQgY291bGQgZXZlbnR1YWxseSBiZSByZWlu dHJvZHVjZWQgYXMgYW4gb3B0aW9uLiBXaGlsc3QgR2xrIGRvZXNuJ3QgCj4gY3VycmVudGx5IGhh dmUgYW55ICJsaXN0Ym94IiB3aW5kb3cgdHlwZXMsIEkgZG8gaGF2ZSBhbiBhbHJlYWR5IAo+IGlt cGxlbWVudGVkIGxpc3Rib3ggY29udHJvbCBmb3IgbXkgc3RhbGxlZCBMZWdlbmQgZW5naW5lIHRo YXQgY291bGQgCj4gcHJvYmFibHkgYmUgYWRhcHRlZC4gQW5kIGEgbWFpbiBtZW51IGltcGxlbWVu dGF0aW9uIGNvdWxkIGJlIHVzZWZ1bCBmb3IgCj4gRnJvdHogdjYgYXMgd2VsbCBhcyB0aGUgTWFn bmV0aWMgZW5naW5lLgo+IAo+IEl0IHdpbGwgYmUgbmljZSBpZiB0aGV5IGRvIHJlbGVhc2UgdGhl IG9yaWdpbmFsIHZlcnNpb25zIGFsb25nc2lkZSB0aGUgCj4gcmVtYXN0ZXJlZCB2ZXJzaW9ucy4g QmVpbmcgYXdheSBmcm9tIGhvbWUsIEknbSBub3Qgc3VyZSBob3cgbWFueSAKPiBNYWduZXRpYyBT Y3JvbGxzIGdhbWVzIEkgaGF2ZSwgaWYgYW55Li4gY29tZXMgZnJvbSBoYXZpbmcgdG9vIGxhcmdl IGEgCj4gY29sbGVjdGlvbi4uIEknbSBzdXJlIFN0cmFuZ2Vya2UgYW1vbmcgb3RoZXJzIGNhbiBl bXBhdGhpemUgOiksIFNvIGlmIEkgCj4gZG9uJ3QgaGF2ZSBhbGwgb2YgdGhlbTsgaXQgd291bGQg YmUgbmljZSB0byBldmVudHVhbGx5IGhhdmUgYSBsZWdpdGltYXRlIAo+IHNvdXJjZSB0byBnZXQg YW55IG1pc3Npbmcgb25lcy4KPiAKPiBQYXVsLgo+IAo+IAo+IE9uIFdlZCwgTWF5IDEsIDIwMTkg YXQgNDowMCBQTSBUb3JiasO2cm4gQW5kZXJzc29uIAo+IDxlcmlrdG9yYmpvcm5AdGVsaWEuY29t IDxtYWlsdG86ZXJpa3RvcmJqb3JuQHRlbGlhLmNvbT4+IHdyb3RlOgo+IAo+ICAgICAgwqBGcm9t IHdoYXQgSSByZW1lbWJlciwgdGhlIG1haW4gZmVhdHVyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBN YWduZXRpYwo+ICAgICBpbnRlcnByZXRlciBpcyBzb21lIG9mIHRoZSAiTWFnbmV0aWMgV2luZG93 cyIgaW50ZXJmYWNlIChvbi1zY3JlZW4gbWFwLAo+ICAgICBjb21wYXNzIHJvc2UsIHNlcGFyYXRl IHdpbmRvd3MgZm9yIGludmVudG9yeSBhbmQgcm9vbSBvYmplY3RzLCBob3JyaWJseQo+ICAgICBj bHV0dGVyZWQgd2luZG93aW5nIHN5c3RlbSwgLi4uIG9oLCBzb3JyeSwgdGhhdCBsYXN0IHRoaW5n IGlzbid0IHJlYWxseQo+ICAgICBhIGZlYXR1cmUsIGlzIGl0PykgdXNlZCBieSBXb25kZXJsYW5k IGFuZCB0aGUgTWFnbmV0aWMgU2Nyb2xscwo+ICAgICBDb2xsZWN0aW9uLgo+IAo+ICAgICBBdCBs ZWFzdCBhcyBsb25nIGFzIHRoZSBmcm9udCBlbmQgaW1wbGVtZW50cyB0aGUgbmVjZXNzYXJ5IGhv b2tzIGZvcgo+ICAgICBkaXNwbGF5aW5nIHN0YXRpYyBhbmQgYW5pbWF0ZWQgcGljdHVyZXMsIGV0 Yy4gSSdtIG5vdCBzdXJlIGlmIGl0IGxvYWRzCj4gICAgIHRoZSBvcmlnaW5hbCBkYXRhIGZpbGVz LCBvciBpZiB0aGV5IGhhdmUgdG8gYmUgc3BlY2lhbGx5IHByZXBhcmVkLiAoVGhlCj4gICAgIGZp bGVzIG9uIG15IE1hZ25ldGljIFNjcm9sbHMgQ29sbGVjdGlvbiBDRCBjZXJ0YWlubHkgZG9uJ3Qg bG9vayBsaWtlCj4gICAgIGFueXRoaW5nIHRoZSBlbXVsYXRvciB3b3VsZCByZWNvZ25pemUuKQo+ IAo+ICAgICBBbHNvLCBpdCBkb2Vzbid0IHRyeSB0byBlbXVsYXRlIHRoZSBvcmlnaW5hbCBsb29r IG9mIHRoZSBnYW1lcyB3aXRoIGl0cwo+ICAgICBhbmltYXRlZCBtZW51cyBhbmQgcHVsbC1kb3du IGdyYXBoaWNzLiBXaGljaCBpcyBhIGJpdCBvZiBhIHNoYW1lCj4gICAgIG9yLCwgaW4KPiAgICAg dGhlIGNhc2Ugb2YgdGhlIE1hZ25ldGljIFdpbmRvd3MgaW50ZXJmYWNlLCBhIGh1Z2UgcmVsaWVm Lgo+IAo+ICAgICBXaGVuIEkgYXNrZWQgWzFdIG9uIHRoZSBTdHJhbmQgR2FtZXMgZm9ydW0gKHRo ZSBjb21wYW55IGluIHRoZSBwcm9jZXNzCj4gICAgIG9mIHJlbWFzdGVyaW5nIHRoZSBNYWduZXRp YyBTY3JvbGxzIGdhbWVzLCBhZnRlciB0aGUgc291cmNlIGNvZGUgd2FzCj4gICAgIHJlY292ZXJl ZCBmcm9tIGEgYmFja3VwIHRhcGUgWzJdKSBpZiB0aGV5IHdlcmUgcGxhbm5pbmcgb24gcmVsZWFz ZSB0aGUKPiAgICAgb3JpZ2luYWwgdmVyc2lvbnMgYXMgd2VsbCwganVzdCBmb3Igbm9zdGFsZ2lh LCBJIGdvdCBhIHJlcGx5IGZyb20gSHVnaAo+ICAgICBTdGVlcnMgcmVmZXJyaW5nIG1lIHRvIFN0 ZWZhbiBNZWllcidzICJNYWduZXRpYyBTY3JvbGxzIE1lbW9yaWFsIiBmb3IKPiAgICAgZGF0YSBm aWxlcyBmb3IgdGhlIGVtdWxhdG9yLgo+IAo+ICAgICBTaW5jZSAiU3RyYW5kIEdhbWVzIHdhcyBz dGFydGVkIGJ5IEh1Z2ggU3RlZXJzIC0gYSBmb3VuZGluZyBtZW1iZXIgYW5kCj4gICAgIGNvcmUg ZGV2ZWxvcGVyIG9mIE1hZ25ldGljIFNjcm9sbHMgYW5kIFN0ZWZhbiBNZWllciwgY3VyYXRvciBv Zgo+ICAgICBpZi1sZWdlbmRzLm9yZyA8aHR0cDovL2lmLWxlZ2VuZHMub3JnPiIgYW5kIHRoZXkg Y2xhaW0gdG8gaGF2ZSB0aGUKPiAgICAgc3VwcG9ydCBvZiAic2V2ZXJhbCBtZW1iZXJzCj4gICAg IG9mIHRoZSBvcmlnaW5hbCBNYWduZXRpYyBTY3JvbGxzIHRlYW0iIFszXSwgSSBndWVzcyB0aG9z ZSBmaWxlcyBhcmUKPiAgICAga2lpaW5kLW9mIG9mZmljaWFsbHkgZW5kb3JzZWQuLi4/IEl0J3Mg cHJvYmFibHkgd29ydGggYXNraW5nIHRoZW0gYWdhaW4KPiAgICAgbGF0ZXIuCj4gCj4gICAgIFsx XQo+ICAgICBodHRwczovL3N0cmFuZGdhbWVzLmNvbS9jb21tdW5pdHkvZGlzY3Vzc2lvbi82NS90 aGUtb3JpZ2luYWwtdmVyc2lvbnMKPiAgICAgWzJdCj4gICAgIGh0dHBzOi8vc3RyYW5kZ2FtZXMu Y29tL2Jsb2cvbWFnbmV0aWMtc2Nyb2xscy1nYW1lcy1zb3VyY2UtY29kZS1yZWNvdmVyZWQKPiAg ICAgWzNdIGh0dHBzOi8vc3RyYW5kZ2FtZXMuY29tL2Fib3V0Cj4gCj4gICAgIFRvcmJqw7ZybiBB bmRlc3Nvbgo+IAo+ICAgICBPbiAwMS8wNS8yMDE5IDA1LjEwLCBQYXVsIEdpbGJlcnQgd3JvdGU6 Cj4gICAgICA+IEhpIFRob21hcywKPiAgICAgID4KPiAgICAgID4gSSdtIG5vdCBzdXJlIG9mIHRo ZSBzdGF0dXMgb2YgdGhlIEdhcmdveWxlIE1hZ25ldGljIFNjcm9sbHMKPiAgICAgc3ViLWVuZ2lu ZSwKPiAgICAgID4gYW5kIEkgZG9uJ3QgY3VycmVudGx5IGhhdmUgYW55IE1hZ25ldGljIFNjcm9s bHMgZ2FtZXMgaGFuZHkgdG8KPiAgICAgdGVzdCBpdAo+ICAgICAgPiBvbi4gQnV0IHVubGVzcyBp dCdzIHNpZ25pZmljYW50bHkgbGFja2luZyBpbiBzdXBwb3J0IGZvciB0aGUKPiAgICAgbGF0ZXIg Z2FtZXMKPiAgICAgID4gdGhhdCB5b3VyIG93biB3b3JrIGFkZHMgc3VwcG9ydCBmb3IsIGl0J2xs IGxpa2VseSBwcm92ZSBlYXNpZXIgdG8KPiAgICAgd29yawo+ICAgICAgPiBvbiBjb252ZXJ0aW5n IGl0LCBJJ20gYWZyYWlkLiBTaW5jZSwgYWZ0ZXIgYWxsLCBzb21lb25lIGVsc2UgaGFzCj4gICAg IGFscmVhZHkKPiAgICAgID4gZG9uZSB0aGUgd29yayBvZiBob29raW5nIGl0IHVwIHRvIEdsayBh cyB3ZWxsLiBTbyBpdCdsbCBiZSBlYXNpZXIKPiAgICAgdG8gZG8KPiAgICAgID4gbWluaW1hbCB3 b3JrIChyZWxhdGl2ZWx5IHNwZWFraW5nKSB0byBob29rIGl0IHVwIHRvIHRoZSBTY3VtbVZNCj4g ICAgIHZlcnNpb24KPiAgICAgID4gb2YgdGhlIEdsayBsYXllci4gQW5kIHRoZW4gSSBjYW4ga2Vl cCB0ZXN0aW5nIGl0IGFzIEkgcHJvcGVybHkKPiAgICAgb2JqZWN0aWZ5Cj4gICAgICA+IGV2ZXJ5 dGhpbmcgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgYnJlYWsgYW55dGhpbmcgYWxvbmcgdGhlIHdheS4K PiAgICAgID4KPiAgICAgID4gVGhvdWdoIEknbGwgYmUgdW5saWtlbHkgdG8gYmUgc3BlbmRpbmcg bXVjaCB0aW1lIGJleW9uZCBiYXNpYwo+ICAgICBwb2xpc2hpbmcKPiAgICAgID4gdXAgb2YgdGhl IHN1Yi1lbmdpbmUgYWZ0ZXJ3YXJkcy4gU28gYmFzZWQgb24geW91ciBleHBlcmllbmNlIHdpdGgK PiAgICAgdGhlCj4gICAgICA+IGdhbWVzICYgZW5naW5lIGludm9sdmVkLCB0aGVyZSBtaWdodCBi ZSBvcHBvcnR1bml0aWVzIGFmdGVyd2FyZHMKPiAgICAgZm9yIHlvdQo+ICAgICAgPiB0byBjb250 cmlidXRlIGlmIHlvdSdyZSBpbnRlcmVzdGVkLCBhbmQgdG8gZG8gcHVsbCByZXF1ZXN0cyB0bwo+ ICAgICBpbXByb3ZlCj4gICAgICA+IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBlbmdpbmUgYmFz ZWQgb24geW91ciB3b3JrLgo+ICAgICAgPgo+ICAgICAgPiBSZWdhcmRzLAo+ICAgICAgPgo+ICAg ICAgPiBQYXVsLgo+ICAgICAgPgo+ICAgICAgPgo+ICAgICAgPiBPbiBXZWQsIE1heSAxLCAyMDE5 IGF0IDI6NTUgQU0gZGV0dHVzIDxkZXR0dXNAZGV0dHVzLm5ldAo+ICAgICA8bWFpbHRvOmRldHR1 c0BkZXR0dXMubmV0Pgo+ICAgICAgPiA8bWFpbHRvOmRldHR1c0BkZXR0dXMubmV0IDxtYWlsdG86 ZGV0dHVzQGRldHR1cy5uZXQ+Pj4gd3JvdGU6Cj4gICAgICA+Cj4gICAgICA+wqAgwqAgwqBIZWxs by4KPiAgICAgID4KPiAgICAgID4KPiAgICAgID7CoCDCoCDCoEkgbXVzdCBhZG1pdCB0aGF0IEkg aGF2ZSBub3QgaGVhcmQgYWJvdXQgR2FyZ295bGUgb3IgR0xLIGJlZm9yZS4KPiAgICAgID4KPiAg ICAgID7CoCDCoCDCoEp1ZGdpbmcgZnJvbSB0aGUgZ2l0aHViIHJlcG9zaXRvcnksIHRoZSBHYXJn b3lsZSBlbmdpbmUgZm9yCj4gICAgIE1hZ25ldGljCj4gICAgICA+wqAgwqAgwqBTY3JvbGxzIGlz IHVzaW5nIHRoZSBvcmlnaW5hbCBtYWduZXRpYyBpbnRlcnByZXRlciBmcm9tIE5pY2xhcwo+ICAg ICAgPsKgIMKgIMKgS2FybHNvbi4gV2hhdCBoZSBkaWQgd2FzLCBhcyBmYXIgYXMgSSBrbm93LCBy ZXZlcnNlLWVuZ2luZWVyCj4gICAgIHRoZSBDNjQKPiAgICAgID7CoCDCoCDCoHBvcnRzIG9mIHRo ZSBNYWduZXRpYyBTY3JvbGxzIGdhbWVzIGluIGEgcGFpbnN0YWtpbmcgcHJvY2Vzcwo+ICAgICB0 byBtYWtlCj4gICAgICA+wqAgwqAgwqB0aGVtIHJ1biBvbiBET1MuIFdoYXQgSSBkaWQgd2FzIHN0 YXJ0aW5nIGZyb20gc2NyYXRjaCBhbmQKPiAgICAgdXNpbmcgaGlzCj4gICAgICA+wqAgwqAgwqBj b2RlIGFzIGEgcmVmZXJlbmNlLiBIaXMgY29kZSBpcyBwcm9iYWJseSBtb3JlIHNldHRsZWQgdGhh biBtaW5lLgo+ICAgICAgPsKgIMKgIMKgUGx1cywgSSdkIGhhdGUgdG8gc3RlcCBvbiBzb21lYm9k eSdzIHRvZXMgd2hvIGhhcyBhbHJlYWR5Cj4gICAgIGludmVzdGVkCj4gICAgICA+wqAgwqAgwqBj b3Bpb3VzIGFtb3VudHMgb2YgdGltZSBhbmQgZW5lcmd5IGludG8gYSBwcm9qZWN0LCBzbyBpZiB5 b3UKPiAgICAgcHJlZmVyCj4gICAgICA+wqAgwqAgwqB0byB1c2UgaGlzIGNvZGU6IFBsZWFzZSwg cGxlYXNlIGRvIHNvIQo+ICAgICAgPgo+ICAgICAgPsKgIMKgIMKgV2hhdCBJIGNhbiBvZmZlciB5 b3UgaXMgYW4gZW5naW5lIHVzaW5nIGEgbW9yZSBtb2Rlcm4gY29kaW5nCj4gICAgIHN0eWxlLgo+ ICAgICAgPsKgIMKgIMKgRXZlbiB0aG91Z2ggaXQgaXMgQywgSSBhbSBzdXJlIHRoYXQgaXQgY2Fu IGJlIGludGVncmF0ZWQKPiAgICAgZWFzaWx5IHdpdGgKPiAgICAgID7CoCDCoCDCoEMrKyBwcm9q ZWN0cy4gSSBoYXZlIHdvcmtlZCB3aXRoIHByb2plY3RzIHRoYXQgdXNlIGJvdGggbGFuZ3VhZ2Vz Cj4gICAgICA+wqAgwqAgwqBhbmQgSSBhbSBleHBlcmllbmNlZCBpbiBkZXNpZ25pbmcgQVBJcyBm b3IgdGhhdC4KPiAgICAgID4KPiAgICAgID4KPiAgICAgID7CoCDCoCDCoFRodXMgZmFyLCBJIGhh dmUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBwb2ludGVycyBmb3IgY2FsbGJhY2tzOgo+ICAgICAg Pgo+ICAgICAgPgo+ICAgICAgPsKgIMKgIMKgdHlwZWRlZiBpbnQgKCpjYkxpbmVBT3V0cHV0Q2hh cikodm9pZCogY29udGV4dCxjaGFyCj4gICAgIGMsdW5zaWduZWQgY2hhcgo+ICAgICAgPsKgIMKg IMKgY29udHJvbEQyLHVuc2lnbmVkIGNoYXIgZmxhZ19oZWFkbGluZSk7Cj4gICAgICA+wqAgwqAg wqB0eXBlZGVmIGludCAoKmNiTGluZUFPdXRwdXRTdHJpbmcpKHZvaWQqIGNvbnRleHQsY2hhcioK PiAgICAgID7CoCDCoCDCoHN0cmluZyx1bnNpZ25lZCBjaGFyIGNvbnRyb2xEMix1bnNpZ25lZCBj aGFyIGZsYWdfaGVhZGxpbmUpOwo+ICAgICAgPsKgIMKgIMKgdHlwZWRlZiBpbnQgKCpjYkxpbmVB SW5wdXRTdHJpbmcpKHZvaWQqIGNvbnRleHQsaW50Kgo+ICAgICBsZW4sY2hhciogc3RyaW5nKTsK PiAgICAgID7CoCDCoCDCoHR5cGVkZWYgaW50ICgqY2JMaW5lQURyYXdQaWN0dXJlKSh2b2lkKiBj b250ZXh0LHRQaWN0dXJlKgo+ICAgICAgPsKgIMKgIMKgcGljdHVyZSxpbnQgbW9kZSk7Cj4gICAg ICA+wqAgwqAgwqB0eXBlZGVmIGludCAoKmNiTGluZUFTYXZlR2FtZSkodm9pZCogY29udGV4dCxj aGFyKiBmaWxlbmFtZSx2b2lkKgo+ICAgICAgPsKgIMKgIMKgcHRyLGludCBsZW4pOwo+ICAgICAg PsKgIMKgIMKgdHlwZWRlZiBpbnQgKCpjYkxpbmVBTG9hZEdhbWUpKHZvaWQqIGNvbnRleHQsY2hh ciogZmlsZW5hbWUsdm9pZCoKPiAgICAgID7CoCDCoCDCoHB0cixpbnQgbGVuKTsKPiAgICAgID4K PiAgICAgID7CoCDCoCDCoEFzIHdlbGwgYXMgdGhvc2UgQVBJIGZ1bmN0aW9uczoKPiAgICAgID4K PiAgICAgID7CoCDCoCDCoC8vIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCj4gICAgICA+wqAgwqAg wqBpbnQgbGluZUFfZ2V0c2l6ZShpbnQqIHNpemUpOwo+ICAgICAgPsKgIMKgIMKgaW50IGxpbmVB X2luaXQodm9pZCogaExpbmVBLHZvaWQqIHBTaGFyZWRNZW0saW50Cj4gICAgICA+wqAgwqAgwqAq c2hhcmVkbWVtc2l6ZSx2b2lkKiBwTWFnLGludCBtYWdzaXplLHZvaWQqIHBHZngsaW50IGdmeHNp emUpOwo+ICAgICAgPsKgIMKgIMKgaW50IGxpbmVBX2dldFZlcnNpb24odm9pZCogaExpbmVBLGlu dCogdmVyc2lvbik7Cj4gICAgICA+wqAgwqAgwqBpbnQgbGluZUFfc2V0Q0JvdXRwdXRDaGFyKHZv aWQqIGhMaW5lQSxjYkxpbmVBT3V0cHV0Q2hhciBwQ0Isdm9pZAo+ICAgICAgPsKgIMKgIMKgKmNv bnRleHQpOwo+ICAgICAgPsKgIMKgIMKgaW50IGxpbmVBX3NldENCb3V0cHV0U3RyaW5nKHZvaWQq IGhMaW5lQSxjYkxpbmVBT3V0cHV0U3RyaW5nCj4gICAgICA+wqAgwqAgwqBwQ0Isdm9pZCogY29u dGV4dCk7Cj4gICAgICA+wqAgwqAgwqBpbnQgbGluZUFfc2V0Q0JpbnB1dFN0cmluZyh2b2lkKiBo TGluZUEsY2JMaW5lQUlucHV0U3RyaW5nCj4gICAgIHBDQix2b2lkKgo+ICAgICAgPsKgIMKgIMKg Y29udGV4dCk7Cj4gICAgICA+wqAgwqAgwqBpbnQgbGluZUFfc2V0Q0JEcmF3UGljdHVyZSh2b2lk KiBoTGluZUEsY2JMaW5lQURyYXdQaWN0dXJlCj4gICAgIHBDQix2b2lkKgo+ICAgICAgPsKgIMKg IMKgY29udGV4dCk7Cj4gICAgICA+wqAgwqAgwqBpbnQgbGluZUFfc2V0Q0JTYXZlR2FtZSh2b2lk KiBoTGluZUEsY2JMaW5lQVNhdmVHYW1lCj4gICAgIHBDQix2b2lkKiBjb250ZXh0KTsKPiAgICAg ID7CoCDCoCDCoGludCBsaW5lQV9zZXRDQkxvYWRHYW1lKHZvaWQqIGhMaW5lQSxjYkxpbmVBTG9h ZEdhbWUKPiAgICAgcENCLHZvaWQqIGNvbnRleHQpOwo+ICAgICAgPgo+ICAgICAgPgo+ICAgICAg PsKgIMKgIMKgWW91IHR5cGljYWxseSBpbml0aWFsaXplIHRoZSBlbmdpbmUgd2l0aCBwb2ludGVy cyB0byB0aGUgZ2FtZQo+ICAgICAgPsKgIMKgIMKgYmluYXJpZXMsIHNldCB0aGUgZnVuY3Rpb24g cG9pbnRlcnMsIGFuZCBsZXQgaXQgcnVuLiBXaGVuIGl0Cj4gICAgIHJlYWNoZXMKPiAgICAgID7C oCDCoCDCoGEgcG9pbnQgd2hlcmUgYW4gaW5wdXQgaXMgcmVxdWlyZWQsIHRoZSBlbmdpbmUgZ2Vu ZXJhdGVzIGEKPiAgICAgY2FsbGJhY2sKPiAgICAgID7CoCDCoCDCoGFuZCBwYXVzZXMgdW50aWwg dGhlIGNhbGxiYWNrIHJldHVybnMuCj4gICAgICA+Cj4gICAgICA+Cj4gICAgICA+wqAgwqAgwqBS ZWdhcmRpbmcgcGljdHVlczogVGhleSBhcmUgYWxzbyBiZWluZyByZW5kZXJlZCBpbnRlcm5hbGx5 LCBhbmQKPiAgICAgID7CoCDCoCDCoGFub3RoZXIgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLiBBbiB1 cHBlciBsYXllciBtdXN0IGRyYXcgaXQgaW4KPiAgICAgID7CoCDCoCDCoHdoYXRldmVyIHdheSBp dCBkZWVtcyBhcHByb3ByaWF0ZS4gU28sIGl0IGRvZXMgbm90IHJlYWxseQo+ICAgICBjYXJlIHdo ZXJlCj4gICAgICA+wqAgwqAgwqBpdCBzaXRzLCBvciBpZiBpdCB3aWxsIGV2ZW4gYmUgZGlzcGxh eWVkLiBUaGUgZGF0YSBmb3JtYXQKPiAgICAgaXRzZWxmIGlzCj4gICAgICA+wqAgwqAgwqB2ZXJ5 IGJhc2ljLCBhbG1vc3QgLnhwbS4KPiAgICAgID4KPiAgICAgID4KPiAgICAgID7CoCDCoCDCoHR5 cGVkZWYgc3RydWN0IF90UGljdHVyZQo+ICAgICAgPsKgIMKgIMKgewo+ICAgICAgPsKgIMKgIMKg IMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBwYWxldHRlWzE2XTsKPiAgICAgID7CoCDCoCDC oCDCoMKgwqDCoMKgwqDCoCBpbnQgaGVpZ2h0Owo+ICAgICAgPsKgIMKgIMKgIMKgwqDCoMKgwqDC oMKgIGludCB3aWR0aDsKPiAgICAgID7CoCDCoCDCoCDCoMKgwqDCoMKgwqDCoCBjaGFyIHBpeGVs c1s2NTUzNl07Cj4gICAgICA+wqAgwqAgwqB9IHRQaWN0dXJlOwo+ICAgICAgPgo+ICAgICAgPgo+ ICAgICAgPsKgIMKgIMKgSSBhbSBzdXJlIEkgY2FuIGRlc2lnbiBhbiBleHRyYSBmdW5jdGlvbiBm b3IgYW5pbWF0aW9ucywgc3VjaAo+ICAgICBhcyB0aGlzOgo+ICAgICAgPgo+ICAgICAgPsKgIMKg IMKgdHlwZWRlZiBpbnQgKCpjYkxpbmVBRHJhd0FuaW1hdGlvbikodm9pZCogY29udGV4dCx0UGlj dHVyZSoKPiAgICAgID7CoCDCoCDCoGZyYW1lc1tdLGludCBtb2RlLGludCBmcmFtZW51bSxpbnQg ZGVsYXkpOwo+ICAgICAgPgo+ICAgICAgPgo+ICAgICAgPgo+ICAgICAgPsKgIMKgIMKgUGxlYXNl IGxldCBtZSBrbm93IGlmIHRoaXMgaXMgb2YgaW50ZXJlc3RlZCB0byB5b3UuCj4gICAgICA+Cj4g ICAgICA+wqAgwqAgwqBUaG9tYXMKPiAgICAgID4KPiAgICAgID4KPiAgICAgID4KPiAgICAgID7C oCDCoCDCoE9uIDQvMzAvMTkgMjoyMCBBTSwgUGF1bCBHaWxiZXJ0IHdyb3RlOgo+ICAgICAgPj7C oCDCoCDCoEhpIGd1eXMsCj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoFRoYW5rcyBmb3IgdGhl IGV4Y2VsbGVudCBzdW1tYXJ5IG9mIHRoZSBjdXJyZW50IHN0YXR1cywKPiAgICAgRmlsaXBwb3Mu Cj4gICAgICA+PsKgIMKgIMKgQXMgaGUgc2FpZCwgSSdtIGN1cnJlbnRseSBpbiB0aGUgbWlkZGxl IG9mIHdvcmtpbmcgbXkgd2F5Cj4gICAgIHRocm91Z2gKPiAgICAgID4+wqAgwqAgwqBjb252ZXJ0 aW5nIGFsbCB0aGUgR2FyZ295bGUgZW5naW5lcyB0byBTY3VtbVZNLCBjbGVhbmluZyB0aGVtIHVw Cj4gICAgICA+PsKgIMKgIMKgYW5kIG1ha2luZyB0aGVtIGNvbmZvcm0gdG8gb3VyIGNvZGluZyBy ZXF1aXJlbWVudHMsIGFzIHdlbGwgYXMKPiAgICAgID4+wqAgwqAgwqBtYWtpbmcgdGhlbSBwcm9w ZXIgQysrIGNsYXNzZXMuIElmIHlvdSBkbyBkZWNpZGUgdG8gd29yayBvbiB0aGUKPiAgICAgID4+ wqAgwqAgwqBHYXJnb3lsZSBzdWItZW5naW5lLCBwbGVhc2UgbGV0IG1lIGtub3cuLiBJJ2xsIGhv bGQgb2ZmCj4gICAgIHdvcmtpbmcgb24KPiAgICAgID4+wqAgwqAgwqBpdCB1bnRpbCBhZnRlciBJ J3ZlIGNvbnZlcnRlZCB0aGUgcmVtYWluaW5nIHN1Yi1lbmdpbmVzLiBUaGF0J2xsCj4gICAgICA+ PsKgIMKgIMKgZ2l2ZSB5b3UgcGxlbnR5IG9mIHRpbWUuLiB0aGUgVEFEUyAmIEh1Z28gc3ViLWVu Z2luZXMgYXJlIGJpZwo+ICAgICAgPj7CoCDCoCDCoGVub3VnaCB0aGF0IHRoYXQnbGwgbGlrZWx5 IHRha2UgbWUgYSB3aGlsZSB0byBmaW5pc2gKPiAgICAgY29udmVydGluZyA6KS4KPiAgICAgID4+ Cj4gICAgICA+PsKgIMKgIMKgSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBhYm91dCB0aGUgR2xr IGVuZ2luZSBzcGVjaWZpY2FsbHksCj4gICAgIGZlZWwKPiAgICAgID4+wqAgwqAgwqBmcmVlIHRv IGRyb3AgbWUgYcKgbGluZS7CoCBUaGVyZSdzIGFsc28gdGhlIHRlY2huaWNhbCBmb3J1bXMgYXQK PiAgICAgID4+IGludGZpY3Rpb24ub3JnIDxodHRwOi8vaW50ZmljdGlvbi5vcmc+IDxodHRwOi8v aW50ZmljdGlvbi5vcmc+Lgo+ICAgICBUaG91Z2ggbXkgc2NoZWR1bGUgaXMgYQo+ICAgICAgPj7C oCDCoCDCoGJpdCBwYWNrZWQgZm9yIHRoZcKgbmV4dCBmZXcgd2Vla3MsIHNvIGlmIHlvdSBkbyBl bWFpbCwgSSBtYXkKPiAgICAgdGFrZQo+ICAgICAgPj7CoCDCoCDCoGEgYml0IHRvIGdldCBiYWNr IHRvIHlvdS4KPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgQXMgZmFyIGFzIG11c2ljIGFuZCBh bmltYXRpb24gZ29lcywgbXVzaWMgYXQgbGVhc3Qgc2hvdWxkIGJlCj4gICAgIGVhc3ksCj4gICAg ICA+PsKgIMKgIMKgc28gbG9uZyBhcyBpdCdzIGEgc3RhbmRhcmQgZm9ybWF0IFNjdW1tVk0gdW5k ZXJzdGFuZHMuIEN1cnJlbnRseQo+ICAgICAgPj7CoCDCoCDCoHRoZSBlbmdpbmUgc3VwcG9ydHMg cmF3IHNvdW5kLCB3YXYgZmlsZXMsIGFpZmYsIGFuZCBtcDMuIEFzIGZvcgo+ICAgICAgPj7CoCDC oCDCoGdyYXBoaWNzLCB0aGF0J3Mgc29tZXdoYXQgc3RyYWlnaHRmb3J3YXJkIGFzIHdlbGwsIGFz IGxvbmcKPiAgICAgYXMgdGhlCj4gICAgICA+PsKgIMKgIMKgZ3JhcGhpY3MgY2FuIGJlIHNlZ21l bnRlZCBpbnRvIGNvbXBsZXRlbHkgc2VwYXJhdGUgd2luZG93cyB0aGFuCj4gICAgICA+PsKgIMKg IMKgdGhlIHRleHQsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBNYWduZXRpYyBTY3JvbGwgZ2FtZXMg ZG8uLiB3aGVuCj4gICAgICA+PsKgIMKgIMKgeW91IGNyZWF0ZSB3aW5kb3dzIGluIEdsaywgeW91 IGNhbiBzcGVjaWZ5IHdoYXQgcG9ydGlvbiBvZiB0aGUKPiAgICAgID4+wqAgwqAgwqBzY3JlZW4g ZWFjaCB3aWxsIHVzZSAoZm9yIHRleHQgdnMgZ3JhcGhpY3MpLiBJJ3ZlIGhhZCBhIGxvdCBvZgo+ ICAgICAgPj7CoCDCoCDCoHRyb3VibGUgd2l0aCB0aGUgRnJvdHogc3ViLWVuZ2luZSwgYnV0IG9u bHkgYmVjYXVzZSBncmFwaGljcyBhbmQKPiAgICAgID4+wqAgwqAgwqB0ZXh0IGNhbiBpbnRlcm1p bmdsZSBpbiB0aGUgc2FtZSB3aW5kb3dzLCB3aGljaCBHbGsgZG9lc24ndAo+ICAgICBhbGxvdy4K PiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgUmVnYXJkcywKPiAgICAgID4+Cj4gICAgICA+PsKg IMKgIMKgUGF1bCBHaWxiZXJ0IChha2EgRHJlYW1NYXN0ZXIpLgo+ICAgICAgPj4KPiAgICAgID4+ Cj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgT24gTW9uLCBB cHIgMjksIDIwMTkgYXQgNzoxOCBQTSBGaWxpcHBvcyBLYXJhcGV0aXMKPiAgICAgID4+wqAgwqAg wqA8Ymx1ZWdyQGdtYWlsLmNvbSA8bWFpbHRvOmJsdWVnckBnbWFpbC5jb20+Cj4gICAgIDxtYWls dG86Ymx1ZWdyQGdtYWlsLmNvbSA8bWFpbHRvOmJsdWVnckBnbWFpbC5jb20+Pj4gd3JvdGU6Cj4g ICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoFNvcnJ5LCBmb3Jnb3QgdG8gc2F5IHRoYXQg dGhlIGdsayBlbmdpbmUgaW4gU2N1bW1WTSBjYW4gYmUKPiAgICAgID4+wqAgwqAgwqAgwqAgwqBm b3VuZCBoZXJlOgo+ICAgICAgPj4gaHR0cHM6Ly9naXRodWIuY29tL3NjdW1tdm0vc2N1bW12bS90 cmVlL21hc3Rlci9lbmdpbmVzL2dsawo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqBU aGVyZSBhcmUgY3VycmVudGx5IHN1YmVuZ2luZXMgZm9yIHRoZSBhbGFuMiwgZnJvdHosIGdsdWx4 ZSwKPiAgICAgID4+wqAgwqAgwqAgwqAgwqBtYWduZXRpYywgc2NvdHQsIGFuZCB0YWRzIGludGVy cHJldGVycywgaW4gdmFyaW91cyBzdGFnZXMgb2YKPiAgICAgID4+wqAgwqAgwqAgwqAgwqBkZXZl bG9wbWVudC4gZHJlYW1tYXN0ZXIgaXMgbWFpbmx5IHdvcmtpbmcgb24gdGhlc2UuIFlvdSBjYW4K PiAgICAgID4+wqAgwqAgwqAgwqAgwqBhbHNvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGds ayBlbmdpbmUgaW4gb3VyIHdpa2k6Cj4gICAgICA+PiBodHRwczovL3dpa2kuc2N1bW12bS5vcmcv aW5kZXgucGhwP3RpdGxlPVNjdW1tR2xrCj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDC oFJlZ2FyZHMKPiAgICAgID4+wqAgwqAgwqAgwqAgwqBGaWxpcHBvcyBLYXJhcGV0aXMKPiAgICAg ID4+Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgT24gTW9uLCBBcHIgMjksIDIwMTkgYXQgMTI6MTQg UE0gRmlsaXBwb3MgS2FyYXBldGlzCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgPGJsdWVnckBnbWFp bC5jb20gPG1haWx0bzpibHVlZ3JAZ21haWwuY29tPgo+ICAgICA8bWFpbHRvOmJsdWVnckBnbWFp bC5jb20gPG1haWx0bzpibHVlZ3JAZ21haWwuY29tPj4+IHdyb3RlOgo+ICAgICAgPj4KPiAgICAg ID4+wqAgwqAgwqAgwqAgwqAgwqAgwqBIZWxsbywgYW5kIGdsYWQgdG8gaGVhciBhYm91dCB5b3Vy IGludGVyZXN0IGluIFNjdW1tVk0sCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgYW5kIHlv dXIgd29yayBvbiB0aGUgTWFnbmV0aWMgU2Nyb2xscyBnYW1lcyEKPiAgICAgID4+Cj4gICAgICA+ PsKgIMKgIMKgIMKgIMKgIMKgIMKgSXQncyBncmVhdCB0aGF0IHlvdSBhcmUgd29ya2luZyBvbiB0 aGlzLiBCZWFyIGluIG1pbmQsCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgdGhvdWdoLCB0 aGF0IHRoZXJlIGhhcyBiZWVuIGV4dGVuc2l2ZSB3b3JrIG9uIHRoZQo+ICAgICBNYWduZXRpYwo+ ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoFNjcm9sbHMgZ2FtZXMsIHdoaWNoIGhhcyBiZWVu IGludGVncmF0ZWQgaW50byB0aGUKPiAgICAgR2FyZ295bGUKPiAgICAgID4+wqAgwqAgwqAgwqAg wqAgwqAgwqBpbnRlcnByZXRlcjoKPiAgICAgID4+IGh0dHA6Ly9jY3h2aWkubmV0L2dhcmdveWxl Lwo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqBHYXJnb3lsZSBpcyBiZWlu ZyBpbnRlZ3JhdGVkIGFzIGEgc3ViZW5naW5lIGludG8KPiAgICAgU2N1bW1WTSwKPiAgICAgID4+ wqAgwqAgwqAgwqAgwqAgwqAgwqBpbiB0aGUgZ2xrIGVuZ2luZS4gVGhlIGdsayBlbmdpbmUgaXMg YSBwb3J0IG9mIHRoZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoEdhcmdveWxlIGVuZ2lu ZSBpbnRvIFNjdW1tVk0uIFRoZXJlJ3MgYW4gZXh0ZW5zaXZlIHdpa2kKPiAgICAgID4+wqAgwqAg wqAgwqAgwqAgwqAgwqBmb3IgR2FyZ295bGUsIGhlcmU6Cj4gICAgICA+PiBodHRwOi8vaWZ3aWtp Lm9yZy9pbmRleC5waHAvR2FyZ295bGUKPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKg IMKgIMKgU28sIG15IGFkdmljZSB3b3VsZCBiZSB0byBtYWtlIHlvdXIgZW5naW5lIHBhcnQgb2YK PiAgICAgdGhlIGdsawo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoGVuZ2luZSwgYW5kIGJh c2UgeW91ciB3b3JrIG9uIHRoZSBhbHJlYWR5IHdvcmtpbmcKPiAgICAgTWFnbmV0aWMKPiAgICAg ID4+wqAgwqAgwqAgwqAgwqAgwqAgwqBTY3JvbGxzIGludGVycHJldGVyIGZyb20gdGhlIEdhcmdv eWxlIGVuZ2luZS4gVGhlCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgaW50ZXJwcmV0ZXIg aXMgb3BlbiBzb3VyY2UsIGFuZCBjYW4gYmUgZm91bmQgaGVyZToKPiAgICAgID4+IGh0dHBzOi8v Z2l0aHViLmNvbS9nYXJnbGsvZ2FyZ2xrL3RyZWUvbWFzdGVyL3RlcnBzL21hZ25ldGljCj4gICAg ICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoFRoZSBsaXN0IG9mIHN1cHBvcnRlZCBN YWduZXRpYyBTY3JvbGxzIGdhbWVzIGNhbiBiZQo+ICAgICBmb3VuZAo+ICAgICAgPj7CoCDCoCDC oCDCoCDCoCDCoCDCoGhlcmU6Cj4gICAgICA+Pgo+ICAgICBodHRwczovL2dpdGh1Yi5jb20vZ2Fy Z2xrL2dhcmdsay9ibG9iL21hc3Rlci90ZXJwcy9tYWduZXRpYy9HZW5lcmljL2dhbWVzLnR4dAo+ ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqBBbmQgdGhlcmUncyBhbiBhcmNo aXZlIGFib3V0IGludGVyYWN0aXZlIGZpY3Rpb24gZ2FtZXMsCj4gICAgICA+PsKgIMKgIMKgIMKg IMKgIMKgIMKgd2hlcmUgYSBsb3Qgb2YgcmVzb3VyY2VzIGFib3V0IHRoZSBNYWduZXRpYyBTY3Jv bGxzCj4gICAgIGdhbWVzCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgY2FuIGJlIGZvdW5k LCBoZXJlOgo+ICAgICAgPj4gaHR0cDovL3d3dy5pZmFyY2hpdmUub3JnL2luZGV4ZXMvaWYtYXJj aGl2ZS9tYWduZXRpYy1zY3JvbGxzLwo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAg wqAgwqBUaGFua3MgZm9yIHlvdXIgaW50ZXJlc3QgaW4gdGhlc2UgZ2FtZXMhIEl0IHdvdWxkIGJl Cj4gICAgIGdyZWF0Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgdG8gc2VlIHlvdXIgd29y ayBvbiB0aGVtIDopCj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoFJlZ2Fy ZHMKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqBGaWxpcHBvcyBLYXJhcGV0aXMKPiAgICAg ID4+Cj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoE9uIE1vbiwgQXByIDI5 LCAyMDE5IGF0IDEwOjA4IEFNIGRldHR1cwo+ICAgICA8ZGV0dHVzQGRldHR1cy5uZXQgPG1haWx0 bzpkZXR0dXNAZGV0dHVzLm5ldD4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqA8bWFpbHRv OmRldHR1c0BkZXR0dXMubmV0Cj4gICAgIDxtYWlsdG86ZGV0dHVzQGRldHR1cy5uZXQ+Pj4gd3Jv dGU6Cj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEhlbGxvLgo+ ICAgICAgPj4KPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTXkg bmFtZSBpcyBUaG9tYXMsIEkgYW0gYSBiaWcgZmFuIG9mIFNjdW1tVk0uCj4gICAgICA+Pgo+ICAg ICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEN1cnJlbnRseSwgSSBhbSBpbiB0aGUgcHJv Y2VzcyBvZiB3cml0aW5nIGFuCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW50 ZXJwcmV0ZXIgZm9yIGNsYXNzaWMKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0 ZXh0IGFkdmVudHVyZXMgZnJvbSBNYWduZXRpYyBTY3JvbGxzLCBzdWNoIGFzICJUaGUKPiAgICAg ID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQYXduIiBvciAiVGhlIEd1aWxkCj4gICAgICA+ PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgT2YgVGhpZXZlcyIuCj4gICAgICA+Pgo+ICAgICAg Pj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEV2ZW4gdGhvdWdoIEkgYW0gbm90IHNheWluZyB0 aGF0IGl0IFNIT1VMRCBiZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGludGVn cmF0ZWQgaW50byBTY3VtbVZNLCBJCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg d291bGQgbGlrZSB0byB0aGluayB0aGF0IGl0IENPVUxELiBJdCBpcyBXQVkgdG8KPiAgICAgZWFy bHkKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0byByZWFsbHkgc3RhcnQKPiAg ICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnRlZ3JhdGluZyBpdCwgYnV0IEkgbGlr ZSB0byBiZSBwcmVwYXJlZC4KPiAgICAgID4+Cj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+ wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTbywgdGhlIHJlYXNvbiB3aHkgSSBhbSB3cml0aW5n IHRoaXMgbWFpbCBpcwo+ICAgICBiZWNhdXNlIEkKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqB3b3VsZCBiZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGludGVy ZXN0ZWQgYXMgb24gaG93IEkgd291bGQgaGF2ZSB0byBkZXNpZ24gbXkKPiAgICAgY29kZSB0bwo+ ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG1ha2UgaXQgcG9zc2libGUuCj4gICAg ICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQ3VycmVudGx5LCBteSBpbnRlcnByZXRlciBu ZWVkcyBhIGNvdXBsZSBvZgo+ICAgICBob29rcyBpbnRvCj4gICAgICA+PsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgYW55IGZvcm0gb2YgR1VJOgo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAtIEluaXRpYWxpemF0aW9uLCB3aGVyZSBwb2ludGVycyB0byB0aGUg b3JpZ2luYWwKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBiaW5hcmllcyBhcmUg YmVpbmcgcHJvdmlkZWQKPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgLSBDYWxsYmFja3MgZm9yIHRleHR1YWwgaW5wdXQgKHN0cmluZ3MpCj4gICAgICA+PsKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgLSBDYWxsYmFja3MgZm9yIHRleHR1YWwgb3V0cHV0IChzdHJp bmdzKQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC0gQ2FsbGJhY2tzIGZvciB0 ZXh0dWFsIG91dHB1dCAoY2hhcmFjdGVycykKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAtIENhbGxiYWNrcyBmb3IgZHJhd2luZyBhIHBpY3R1cmUgKFhQTSkKPiAgICAgID4+Cj4g ICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgTXkgY29kZSBpcyBwdXJlbHkgQywgc28g Y2FsbGJhY2tzIEkgYW0gdXNpbmcKPiAgICAgZnVuY3Rpb24KPiAgICAgID4+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBwb2ludGVycy4gU2FpZAo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGZ1bmN0aW9ucyBhcmUsIGF0IHRoZSBtb21lbnQsIGRvaW5nIG5vdGhpbmcgbW9yZQo+ ICAgICB0aGFuCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKganVzdCBhIHNpbXBs ZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHByaW50ZigpIGFuZCBmZ2V0cygp LiBUaGUgZ2FtZXMgSSBjYW4gcGxheSBzbwo+ICAgICBmYXIgYXJlCj4gICAgICA+PsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIlRoZSBQYXduIiwgIlRoZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoEd1aWxkIG9mIFRoaWV2ZXMiIGFuZCAiSmlueHRlciIuIEhPV0VWRVIsIGxh dGVyCj4gICAgIGdhbWVzLAo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN1Y2gg YXMKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAiQ29ycnVwdGlvbiIsICJNeXRo IiwgIkZpc2ghIiBhbmQgIldvbmRlcmxhbmQiIGFkZGVkCj4gICAgICA+PsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgZmVhdHVyZXMgc3VjaCBhcwo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGFuaW1hdGlvbiBhbmQgbXVzaWMuCj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoFNPIE1ZIFFVRVNUSU9OIGlzIHRoaXM6IEhvdyB3b3VsZCBJIGJlc3Qg ZGVzaWduIHRoZQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNhbGxiYWNrcyBm b3IKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBhbmltYXRpb24gYW5kIG11c2lj IGluIHdheSBzbyB0aGF0IGl0IE1JR0hUIGJlCj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgaW50ZWdyYXRhYmxlIGludG8gU2N1bW1WTT8KPiAgICAgID4+Cj4gICAgICA+Pgo+ICAg ICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBEZXR0dXMKPiAgICAgID4+ Cj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQ LlMuOiBNeSBpbnRlcnByZXRlciBpcyBhdmFpbGFibGUgYXQKPiAgICAgID4+IGh0dHA6Ly93d3cu ZGV0dHVzLm5ldC9kTWFnbmV0aWMuCj4gICAgICA+Pgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoChIb3BlZnVsbHkgdGhpcyBsaW5rLCBhbmQgdGhlIGZhY3QgdGhhdCB0aGlzIGlz IG15Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZmlyc3QgZW1haWwgd2lsbCBu b3QKPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBtYWtlIHRoaXMgc3BhbS4gOykg KQo+ICAgICAgPj4KPiAgICAgID4+Cj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+Cj4gICAg ICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiAgICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBT Y3VtbXZtLWRldmVsIG1haWxpbmcgbGlzdAo+ICAgICAgPj4gU2N1bW12bS1kZXZlbEBsaXN0cy5z Y3VtbXZtLm9yZwo+ICAgICA8bWFpbHRvOlNjdW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmc+ Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgPG1haWx0bzpTY3VtbXZtLWRldmVs QGxpc3RzLnNjdW1tdm0ub3JnCj4gICAgIDxtYWlsdG86U2N1bW12bS1kZXZlbEBsaXN0cy5zY3Vt bXZtLm9yZz4+Cj4gICAgICA+PiBodHRwczovL2xpc3RzLnNjdW1tdm0ub3JnL2xpc3RpbmZvL3Nj dW1tdm0tZGV2ZWwKPiAgICAgID4+Cj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+wqAgwqAg wqAgwqAgwqAgwqAgwqAtLQo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoCDCoCDCoCJFeHBlcmllbmNl IGlzIHRoZSBuYW1lIGV2ZXJ5IG9uZSBnaXZlcyB0byB0aGVpcgo+ICAgICBtaXN0YWtlcyIKPiAg ICAgID4+wqAgwqAgwqAgwqAgwqAgwqAgwqAtIE9zY2FyIFdpbGRlCj4gICAgICA+Pgo+ICAgICAg Pj4KPiAgICAgID4+Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgLS0KPiAgICAgID4+wqAgwqAgwqAg wqAgwqAiRXhwZXJpZW5jZSBpcyB0aGUgbmFtZSBldmVyeSBvbmUgZ2l2ZXMgdG8gdGhlaXIgbWlz dGFrZXMiIC0KPiAgICAgID4+wqAgwqAgwqAgwqAgwqBPc2NhciBXaWxkZQo+ICAgICAgPj7CoCDC oCDCoCDCoCDCoF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gICAgICA+PsKgIMKgIMKgIMKgIMKgU2N1bW12bS1kZXZlbCBtYWlsaW5nIGxpc3QKPiAgICAg ID4+IFNjdW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmcKPiAgICAgPG1haWx0bzpTY3VtbXZt LWRldmVsQGxpc3RzLnNjdW1tdm0ub3JnPgo+ICAgICAgPj7CoCDCoCDCoCDCoCDCoDxtYWlsdG86 U2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwo+ICAgICA8bWFpbHRvOlNjdW1tdm0tZGV2 ZWxAbGlzdHMuc2N1bW12bS5vcmc+Pgo+ICAgICAgPj4gaHR0cHM6Ly9saXN0cy5zY3VtbXZtLm9y Zy9saXN0aW5mby9zY3VtbXZtLWRldmVsCj4gICAgICA+Pgo+ICAgICAgPj4KPiAgICAgID4+wqAg wqAgwqBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ICAg ICAgPj7CoCDCoCDCoFNjdW1tdm0tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gICAgICA+PiBTY3VtbXZt LWRldmVsQGxpc3RzLnNjdW1tdm0ub3JnCj4gICAgIDxtYWlsdG86U2N1bW12bS1kZXZlbEBsaXN0 cy5zY3VtbXZtLm9yZz4gCj4gICAgIDxtYWlsdG86U2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZt Lm9yZwo+ICAgICA8bWFpbHRvOlNjdW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmc+Pgo+ICAg ICAgPj4gaHR0cHM6Ly9saXN0cy5zY3VtbXZtLm9yZy9saXN0aW5mby9zY3VtbXZtLWRldmVsCj4g ICAgICA+wqAgwqAgwqBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+ICAgICAgPsKgIMKgIMKgU2N1bW12bS1kZXZlbCBtYWlsaW5nIGxpc3QKPiAgICAgID4g U2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwo+ICAgICA8bWFpbHRvOlNjdW1tdm0tZGV2 ZWxAbGlzdHMuc2N1bW12bS5vcmc+Cj4gICAgIDxtYWlsdG86U2N1bW12bS1kZXZlbEBsaXN0cy5z Y3VtbXZtLm9yZwo+ICAgICA8bWFpbHRvOlNjdW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmc+ Pgo+ICAgICAgPiBodHRwczovL2xpc3RzLnNjdW1tdm0ub3JnL2xpc3RpbmZvL3NjdW1tdm0tZGV2 ZWwKPiAgICAgID4KPiAgICAgID4KPiAgICAgID4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiAgICAgID4gU2N1bW12bS1kZXZlbCBtYWlsaW5nIGxpc3QK PiAgICAgID4gU2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwo+ICAgICA8bWFpbHRvOlNj dW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmc+Cj4gICAgICA+IGh0dHBzOi8vbGlzdHMuc2N1 bW12bS5vcmcvbGlzdGluZm8vc2N1bW12bS1kZXZlbAo+ICAgICAgPgo+IAo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gU2N1bW12bS1kZXZlbCBt YWlsaW5nIGxpc3QKPiBTY3VtbXZtLWRldmVsQGxpc3RzLnNjdW1tdm0ub3JnCj4gaHR0cHM6Ly9s aXN0cy5zY3VtbXZtLm9yZy9saXN0aW5mby9zY3VtbXZtLWRldmVsCj4gCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KU2N1bW12bS1kZXZlbCBtYWlsaW5n IGxpc3QKU2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwpodHRwczovL2xpc3RzLnNjdW1t dm0ub3JnL2xpc3RpbmZvL3NjdW1tdm0tZGV2ZWwK