T24gU3VuLCBBdWcgMTcsIDIwMTQgYXQgNDozOCBBTSwgUnViZW4gSsO2bnNzb24gPHJ1YmVuQHJq am91cm5hbC5uZXQ+IHdyb3RlOgo+IEhhdmUgeW91IGNvbnNpZGVyZWQgdXNpbmcgYSB1bmlvbiBm b3IgdGhhdDoKPgo+IHVuaW9uIHsKPiAgIHVpbnQzMl90IHJnYl8zMjsKPiAgIHN0cnVjdCB7Cj4g ICAgIHVpbnQ4X3QgcmVkOjg7Cj4gICAgIHVpbnQ4X3QgZ3JlZW46ODsKPiAgICAgdW5pdDhfdCBi bHVlOjg7Cj4gICB9Y29sOwo+IH1yZ2I7Cj4KPiBUaGlzIHdheSB5b3UgY2FuIGFjY2VzcyB0aGUg MzIgYml0IHZhbHVlIHdpdGggcmdiLnJnYl8zMiBhbmQsIGZvcgo+IGV4YW1wbGUgcmVkIHdpdGgg cmdiLmNvbC5yZWQgZm9yIGJvdGggcmVhZGluZyBhbmQgd3JpdGluZy4KPgo+IFlvdSBjYW4gc3Rp bGwgdXNlIHRoZSBzaGlmdC9tdWx0aXBseSBtZXRob2RzIHdpdGggcmdiLnJnYl8zMiAoYnV0IHlv dQo+IG5lZWQgdG8ga25vdyBob3cgdGhlIGJpdGZpZWxkcyBhcmUgb3JkZXJlZCBieSB0aGUgY29t cGlsZXIpLgo+Cj4gVGhlIHVuaW9uIG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlcyB3aXRoaW4gaXQg c2hhcmVzIHRoZSBzYW1lIG1lbW9yeQo+IChyZ2JfMzIgYW5kIGNvbCBpbiB0aGlzIGNhc2UpLgoK SGkgUnViZW4sCgpBY3R1YWxseSwgdGhpcyB3YXMgZ29pbmcgdG8gYmUgbXkgbmV4dCBzdGVwISBJ IHdhbnRlZCB0byBtYWtlIHN1cmUgSQpjb3VsZCBzZW5kIGVub3VnaCBkYXRhIHRvIGdldCBjb250 cm9sIG9mIHRoZSBMRURzIGZpcnN0LCBiZWZvcmUgSQpzdGFydGVkIHBsYXlpbmcgd2l0aCBkaWZm ZXJlbnQgbWVtb3J5IHN0cnVjdHVyZXMuCgpTaW5jZSB5b3UndmUgcmFpc2VkIGl0LCBvbmUgb2Yg dGhlIHRoaW5ncyB0aGF0J3MgYWx3YXlzIGNvbmZ1c2VkIG1lCmFib3V0IHVuaW9ucyBpcyBpbiB0 aGUgZGVjbGFyYXRpb24gcHJvY2Vzcy4gRm9yIGluc3RhbmNlLCB0YWtlIHlvdXIKY29kZSBzbmlw cGV0IGFib3ZlLiBJIHVuZGVyc3RhbmQgdGhlIHBhcnRzLCB0aG91Z2ggSSdtIHVuc3VyZSBhYm91 dAp0aGUgInJnYiIgYXQgdGhlIGVuZC4gSXMgdGhhdCBkZWZpbmluZyB0aGUgbmV3IGRhdGF0eXBl LCB0aGF0IEkgY291bGQKdGhlbiB1c2UgdG8gZGVjbGFyZSB2YXJpYWJsZXM/IEZvciB5b3VyIGZv bGxvd2luZyBjb2RlLCB3b3VsZCBJIGhhdmUKaGFkIHRvIGRlY2xhcmUgInJnYiByZ2I7IiBmaXJz dD8KCkZ1cnRoZXIsIHNpbmNlIEknbSB1c2luZyB0aGVzZSBMRURzIGluIGEgc3RyaW5nLCBJJ20g c3RvcmluZyB0aGVpcgp2YWx1ZXMgaW4gYW4gYXJyYXkuIENvdWxkIEkgdGhlbiBqdXN0IGRlY2xh cmUgYW4gYXJyYXkgbGlrZSB0aGlzOiByZ2IKbGVkX2NvbG9yc1s4XTsgKGFzIGFuIGV4YW1wbGUp PwoKVGhhbmtzIQoKSm9zaAotLSAKQSBjb21tb24gbWlzdGFrZSB0aGF0IHBlb3BsZSBtYWtlIHdo ZW4gdHJ5aW5nIHRvIGRlc2lnbiBzb21ldGhpbmcKY29tcGxldGVseSBmb29scHJvb2YgaXMgdG8g dW5kZXJlc3RpbWF0ZSB0aGUgaW5nZW51aXR5IG9mIGNvbXBsZXRlCmZvb2xzLgogICAgICAgIC1E b3VnbGFzIEFkYW1zCgotLSAKaHR0cDovL3d3dy5waWNsaXN0LmNvbS90ZWNocmVmL3BpY2xpc3Qg UElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0 aW9ucyBhdApodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .