TG9sIG9rIDQ0MjcwMDcwNDQ2MTUxMTUwNTAwMzQ4NTQ2NDg1MjU2ODU4NzE1ODcgLwoxNDA5MTYw MTA4NTA2Mjc2NzgzMDg1NzE4NDQwMjUyMzc1MDk5NjUzIHRha2VzIHRoZSBjYWtlLgoKT24gMzAg TWF5IDIwMTUgYXQgMDY6MzksIERhbmllbCBTZXJwZWxsIDxkYW5pZWwuc2VycGVsbEBnbWFpbC5j b20+IHdyb3RlOgo+IEhpLAo+Cj4gT24gRnJpLCBNYXkgMjksIDIwMTUgYXQgODozMyBBTSwgUnVz c2VsbE1jIDxhcHB0ZWNobnpAZ21haWwuY29tPiB3cm90ZToKPj4gSSBzYWlkOgo+Pgo+Pj4KPj4g U29tZXRoaW5nIGJldHRlciB0aGFuIDM1NS8xMTMgbG9va3MgZHVlIHRvIHBvcCBvdXQgYXJvdW5k Cj4+PiAyNDg2MTAgLyA3OTEzNSAod2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzNTUvMTEzKQo+Pgo+ PiBUaGF0IHNob3VsZCBoYXZlIGJlZW46ICAyNDg1MDAgLyA3OTEwMC4KPj4gTm90ICB0aGUgMjQ4 NjEwIC8gNzkxMzUgdGhhdCBJIHdyb3RlLCB3aGljaCB3YXMgZm9yIGEgbmVhcmJ5IGNlbGwgdGhh dCB3YXMKPj4gYW4gaW5mZXJpb3IgbG9jYWwgbWF4aW11bS4KPgo+IFRoZXJlIGFyZSBkaWZmZXJl bnQgbWV0cmljcyBvZiB3aGljaCBhcHByb3hpbWF0aW9uIGlzICJiZXR0ZXIiLgo+Cj4gSWYgeW91 ciBtZXRyaWMgaXMgIm51bWJlciBvZiBiaXRzIG9mIG51bWVyYXRvciArIGRlbm9taW5hdG9yIC0g bnVtYmVyIG9mIGJpdHMKPiBvZiB0aGUgYXBwcm94aW1hdGlvbiIsIDM1NS8xMTMgaXMgdGhlIGJl c3QgPCAxMF4yNTAsIHdpdGggOC41ICsgNi44IC0KPiAyMS44ID0gLTYuNQo+Cj4gU28sIDM1NS8x MTMgaGFzIDYuNSBiaXRzIGxlc3MgdGhhbiB0aGUgZXF1aXZhbGVudCAiMy4xNDE1OTI5My4uIi4K Pgo+IFdpdGggYSBicnV0ZS1mb3JjZSBzZWFyY2gsIHRob3NlIGFyZSBvdGhlciAiZ29vZCIgYXBw cm94aW1hdGlvbnM6Cj4KPiAzIC8gMSAgZTogMC4xNDIgICBiaXRzOiAgIDEuNiArICAwLjAgLSAy LjggID0gLTEuMgo+IDIyIC8gNyAgZTogMC4wMDEyNiAgIGJpdHM6ICAgNC41ICsgIDIuOCAtIDku NiAgPSAtMi40Cj4gMzU1IC8gMTEzICBlOiAyLjY3ZS0wNyAgIGJpdHM6ICAgOC41ICsgIDYuOCAt IDIxLjggPSAtNi41Cj4gNTQxOTM1MSAvIDE3MjUwMzMgIGU6IDIuMjFlLTE0ICAgYml0czogIDIy LjQgKyAyMC43IC0gNDUuNCA9IC0yLjMKPiAyMTA1MzM0MzE0MSAvIDY3MDE0ODcyNTkgIGU6IDIu NjJlLTIyICAgYml0czogIDM0LjMgKyAzMi42IC0gNzEuNyA9IC00LjgKPiAyNjQ2NjkzMTI1MTM5 MzA0MzQ1IC8gODQyNDY4NTg3NDI2NTEzMjA3ICBlOiAxLjQxZS0zOCAgIGJpdHM6ICA2MS4yICsK PiA1OS41IC0xMjUuNyA9IC01LjAKPiA0NDI3MDA3MDQ0NjE1MTE1MDUwMDM0ODU0NjQ4NTI1Njg1 ODcxNTg3IC8KPiAxNDA5MTYwMTA4NTA2Mjc2NzgzMDg1NzE4NDQwMjUyMzc1MDk5NjUzIGU6IDMu MTFlLTgxICAgYml0czogMTMxLjcKPiArMTMwLjEgLTI2Ny40ID0gLTUuNwo+Cj4gImUiIGlzIHRo ZSBhYnNvbHV0ZSBlcnJvciAoYXByb3gtcGkpLCB0aGUgYml0cyBpcyBhcyBleHBsYWluZWQgYWJv dmUuCj4gQXMgeW91IHNlZSwgZXZlbgo+IHdpdGggNDAgZGlnaXQgbnVtYmVycyB5b3UgY2FuJ3Qg Z2FpbiBhcyBtdWNoIGJpdHMgYXMgd2l0aCAzNTUvMTEzLgo+Cj4gSWYgeW91ciBtZXRyaWMgaXMg c2ltcGx5ICJiZXN0IGFic29sdXRlIGVycm9yIiwgdGhlbiB0aGVyZSBhcmUgbWFueQo+IGFwcHJv eGltYXRpb25zLiBIZXJlIGlzCj4gYSB0YWJsZTogaHR0cDovL3Fpbi5sYXlhLmNvbS90ZWNoX3By b2plY3RzX2FwcHJveHBpLmh0bWwKPgo+IFRoZSBmb2xsb3dpbmcgcHl0aG9uIHByb2dyYW0gY2Fu IGdlbmVyYXRlIGEgdGFibGUgc2ltaWxhciB0byB0aGUgYWJvdmUKPiBmb3IgYW55IG51bWJlcgo+ IHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmU6Cj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICMhL3Vzci9iaW4vZW52IHB5dGhvbgo+IGltcG9ydCBkZWNp bWFsLCBzeXMsIG1hdGgKPiBkZWNpbWFsLmdldGNvbnRleHQoKS5wcmVjID0gMjUwICMgVXNlIGEg YmlnZ2VyIG51bWJlciBpZiB5b3UgbmVlZCBtb3JlIHByZWNpc2lvbgo+IGxvZzIgPSBtYXRoLmxv ZygyKQo+IGJlc3QgPSAxMDAKPgo+IGRlZiB0ZXN0TnVtKG51bWVyLCBkZW5vbSwgbnVtKToKPiAg ICAgZ2xvYmFsIGJlc3QKPgo+ICAgICB4ID0gZGVjaW1hbC5EZWNpbWFsKG51bWVyKSAvIGRlY2lt YWwuRGVjaW1hbChkZW5vbSkKPiAgICAgZSA9IGZsb2F0KHggLSBudW0pCj4KPiAgICAgcG9zID0g VHJ1ZQo+ICAgICBpZiBlIDwgMCA6Cj4gICAgICAgICBlID0gLSBlCj4gICAgICAgICBwb3MgPSBG YWxzZQo+Cj4gICAgICMgVW5jb21tZW50IG9uZSBvZiB0aG9zZSB0YXJnZXQgc2VhcmNoOgo+ICMg ICAgYiA9IGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBCZXN0IGFi c29sdXRlIGVycm9yCj4gICAgIGIgPSBudW1lciAqIGRlbm9tICogZSAgICAgICAgICAgICAgICAg ICAgICAgICMgQmVzdCB1c2Ugb2YgYml0cwo+ICMgICAgYiA9IGUgKiBtYXRoLnNxcnQobnVtZXIq bnVtZXIrZGVub20qZGVub20pICAgIyBCZXN0IGVycm9yCj4gcHJvcG9ydGlvbmFsIHRvIG51bWVy L2Rlbm9tCj4gICAgIGlmIGIgPCBiZXN0IDoKPiAgICAgICAgIGRpYWcgPSBlICogbWF0aC5zcXJ0 KG51bWVyKm51bWVyK2Rlbm9tKmRlbm9tKQo+ICAgICAgICAgYml0MSA9IG1hdGgubG9nKG51bWVy KSAvIGxvZzIKPiAgICAgICAgIGJpdDIgPSBtYXRoLmxvZyhkZW5vbSkgLyBsb2cyCj4gICAgICAg ICBpZiBlID09IDA6Cj4gICAgICAgICAgICAgYml0ZSA9IDAKPiAgICAgICAgIGVsc2U6Cj4gICAg ICAgICAgICAgYml0ZSA9IG1hdGgubG9nKGUpIC8gbG9nMgo+ICAgICAgICAgYmVzdCA9IGIKPiAg ICAgICAgIHByaW50ICJ7MDozMWR9L3sxOjMxZH0gPSB7MjouNjBmfSBlPXszOjguM2d9IChkaWFn OiB7ODo2LjFnfSkKPiAoYml0czogezQ6LjFmfSt7NTouMWZ9LXs2Oi4xZn0gPSB7NzouMWZ9KSIu Zm9ybWF0KAo+ICAgICAgICAgICAgIG51bWVyICwgZGVub20gLCB4ICwgZSwgYml0MSwgYml0Miwg LWJpdGUsIGJpdDErYml0MitiaXRlLCBkaWFnKQo+Cj4gICAgIHJldHVybiBwb3MKPgo+ICMgU3Rh cnRpbmcgc2VhcmNoIHZhbHVlcywgdXNlcyBTdGVybuKAk0Jyb2NvdCBzZWFyY2ggdHJlZQo+IG4w ID0gMAo+IGQwID0gMQo+IG4xID0gMQo+IGQxID0gMAo+ICMgVGFyZ2V0IHZhbHVlIHNwZWNpZmll ZCBpbiBjb21tYW5kIGxpbmUgKHVzZSBhcyBtYW55IGRpZ2l0cyBhcyB5b3UgbmVlZCkKPiB0YXJn ZXQgPSBkZWNpbWFsLkRlY2ltYWwoc3lzLmFyZ3ZbMV0pCj4KPiB3aGlsZSBkMCA8IDFlKzQwOgo+ ICAgICBudW0gPSBuMCtuMQo+ICAgICBkZW4gPSBkMCtkMQo+ICAgICBpZiB0ZXN0TnVtKG51bSwg ZGVuLCB0YXJnZXQpOgo+ICAgICAgICAgbjEgPSBudW0KPiAgICAgICAgIGQxID0gZGVuCj4gICAg IGVsc2U6Cj4gICAgICAgICBuMCA9IG51bQo+ICAgICAgICAgZDAgPSBkZW4KPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gLS0KPiBodHRwOi8vd3d3LnBp Y2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4gVmll dy9jaGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPiBodHRwOi8vbWFpbG1hbi5taXQu ZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20v dGVjaHJlZi9waWNsaXN0IFBJQy9TWCBGQVEgJiBsaXN0IGFyY2hpdmUKVmlldy9jaGFuZ2UgeW91 ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKaHR0cDovL21haWxtYW4ubWl0LmVkdS9tYWlsbWFuL2xp c3RpbmZvL3BpY2xpc3QK .