-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjre_lib.so
1 lines (1 loc) · 39.6 KB
/
jre_lib.so
1
bXlzcWw+IGRlc2NyaWJlIGJvcnJvd2VyOyANCiANCg0KbXlzcWw+IGNyZWF0ZSB0YWJsZSBmaW5lKHJvbGxubyBpbnQgLGZkYXRlIGRhdGUsYW10IGludCwgY29uc3RyYWludCB4eXogZm9yZWlnbiBrZXkocm9sbGluKSByZWZlcmVuY2VzIA0KYm9ycm93ZXIocm9sbF9ubykgKTsgDQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjA0IHNlYykgDQoNCm15c3FsPiBkZXNjcmliZSBmaW5lOw0KIA0KDQpteXNxbD4gaW5zZXJ0IGludG8gYm9ycm93ZXIgdmFsdWVzKDEsImEiLCIyMDIwLzExLzAxIiwiamF2YSIsIkkiKTsgDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQsIDEgd2FybmluZyAoMC4wMyBzZWMpIA0KDQpteXNxbD4gaW5zZXJ0IGludG8gYm9ycm93ZXIgdmFsdWVzKDIsImIiLCIyMDIwLzEwLzE1IiwibmV0d29ya2luZyIsIkkiKTsgDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQsIDEgd2FybmluZyAoMC4wMCBzZWMpIA0KDQpteXNxbD4gaW5zZXJ0IGludG8gYm9ycm93ZXIgdmFsdWVzKDMsImMiLCIyMDIwLzA5LzIyIiwiREJNUyIsIkkiKTsgDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQsIDEgd2FybmluZyAoMC4wMSBzZWMpIA0KbXlzcWw+IGluc2VydCBpbnRvIGJvcnJvd2VyIHZhbHVlcyg0LCJkIiwiMjAyMC8wOS8yMiIsIkNOIiwiSSIpOyANClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCwgMSB3YXJuaW5nICgwLjAxIHNlYykgDQoNCm15c3FsPiBzZWxlY3QgKiBmcm9tIGJvcnJvd2VyOw0KIA0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSBmaW5lOyANCkVtcHR5IHNldCAoMC4wMCBzZWMpIA0KDQpteXNxbD4gZGVsaW1pdGVyICQgDQpteXNxbD4gY3JlYXRlIHByb2NlZHVyZSBmaW5lX2NhbGN1bGF0aW9uKElOIHJubyBpbnQoMyksYm5hbWUgY2hhcigyMCkpIA0KIC0+IGJlZ2luIA0KIC0+IGRlY2xhcmUgaV9kYXRlIGRhdGU7IA0KIC0+IGRlY2xhcmUgZGlmZiBpbnQ7IA0KIC0+IGRlY2xhcmUgZmluZV9hbXQgaW50OyANCiAtPiBkZWNsYXJlIGV4aXQgaGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uIHNlbGVjdCAnVGFibGUgbm90IGZvdW5kJzsgDQogLT4gc2VsZWN0IGRhdGVvZklzc3VlIGludG8gaV9kYXRlIGZyb20gYm9ycm93ZXIgd2hlcmUgcm9sbGluID1ybm8gYW5kIGJuYW1lID1ibmFtZTsgDQogLT4gc2VsZWN0IGRhdGVkaWZmKGN1cmRhdGUoKSxpX2RhdGUpIGludG8gZGlmZjsgDQogLT4gaWYoZGlmZj4xNSBhbmQgZGlmZjw9MzApIHRoZW4gDQogLT4gc2V0IGZpbmVfYW10ID0gZGlmZio1OyANCiAtPiBpbnNlcnQgaW50byBmaW5lIHZhbHVlcyhybm8sY3VyZGF0ZSgpLGZpbmVfYW10KTsgDQogLT4gZWxzZWlmKGRpZmY+MzApIHRoZW4gDQogLT4gc2V0IGZpbmVfYW10ID0gMTUqNSsoZGlmZi0zMCkqNTA7IA0KIC0+IGluc2VydCBpbnRvIGZpbmUgdmFsdWVzKHJubyxjdXJkYXRlKCksZmluZV9hbXQpOyANCiAtPiBlbmQgaWY7IA0KIC0+IHVwZGF0ZSBib3Jyb3dlciBzZXQgc3RhdHVzID0nUicgd2hlcmUgcm9sbGluPXJubyBhbmQgYm5hbWU9Ym5hbWU7IA0KIC0+IGVuZDsgDQogLT4gJCANClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQsIDEgd2FybmluZyAoMC4xMSBzZWMpIA0KDQpteXNxbD4gY2FsbCBmaW5lX2NhbGN1bGF0aW9uKDMsIkRCTVMiKTsgDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQsIDEgd2FybmluZyAoMC4wMSBzZWMpIA0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSBib3Jyb3dlcjsNCiANCg0KDQoNCg0KDQoNCg0KQXNzaWdubWVudCA1DQpteXNxbD4gY3JlYXRlIGRhdGFiYXNlIHN0dWQ7DQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDIgc2VjKQ0KDQpteXNxbD4gdXNlIHN0dWQ7DQpEYXRhYmFzZSBjaGFuZ2VkDQpteXNxbD4gY3JlYXRlIHRhYmxlIHN0dWRfbWFya3Mocm9sbF9ubyBpbnRlZ2VyIHByaW1hcnkga2V5LG5hbWUgdmFyY2hhcigyMCksdG90YWxfbWFya3MgaW50ZWdlcik7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAyIHNlYykNCg0KbXlzcWw+IGNyZWF0ZSB0YWJsZSByZXN1bHQocm9sbF9ubyBpbnRlZ2VyLGNsYXNzIHZhcmNoYXIoMjApLGNvbnN0cmFpbnQgeHl6IGZvcmVpZ24ga2V5KHJvbGxfbm8pIHJlZmVyZW5jZXMgc3R1ZF9tYXJrcyhyb2xsX25vKSk7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAzIHNlYykNCg0KbXlzcWw+IGluc2VydCBpbnRvIHN0dWRfbWFya3MgdmFsdWUgKDEsJ2FhJyw5MzApOw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IGluc2VydCBpbnRvIHN0dWRfbWFya3Mocm9sbF9ubyxuYW1lLHRvdGFsX21hcmtzKSB2YWx1ZXMoMiwnYmInLDExMzApLCgzLCdjYycsOTUwKSwoNCwnZGQnLDg0MCksKDUsJ2VlJywxMDAwKSwoNiwnZmYnLDg2MCk7DQpRdWVyeSBPSywgNSByb3dzIGFmZmVjdGVkICgwLjA0IHNlYykNClJlY29yZHM6IDUgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwDQoNCm15c3FsPiBzZWxlY3QgKiBmcm9tIHN0dWRfbWFya3M7DQogDQo2IHJvd3MgaW4gc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IGRlbGltaXRlciAvLw0KbXlzcWw+IGNyZWF0ZSBwcm9jZWR1cmUgY3JlZGl0IChJTiByb2xsIGludGVnZXIpDQogICAgLT4gYmVnaW4NCiAgICAtPiBkZWNsYXJlIG0gaW50ZWdlcjsNCiAgICAtPiBkZWNsYXJlIGMgdmFyY2hhcigyMCk7DQogICAgLT4gc2VsZWN0IHRvdGFsX21hcmtzIGludG8gbSBmcm9tIHN0dWRfbWFya3Mgd2hlcmUgcm9sbF9ubz1yb2xsOw0KICAgIC0+IGlmIG0+PTk5MCBhbmQgbTw9MTUwMCB0aGVuDQogICAgLT4gc2V0IGM9J0Rpc3RpbmN0aW9uJzsNCiAgICAtPiBpbnNlcnQgaW50byByZXN1bHQgdmFsdWVzKHJvbGwsYyk7DQogICAgLT4gZWxzZWlmIG0+PTkwMCBhbmQgbTw9OTg5IHRoZW4NCiAgICAtPiBzZXQgYz0nRmlyc3QgQ2xhc3MnOw0KICAgIC0+IGluc2VydCBpbnRvIHJlc3VsdCB2YWx1ZXMocm9sbCxjKTsNCiAgICAtPiBlbHNlaWYgbT49ODI1IGFuZCBtPD04OTkgdGhlbg0KICAgIC0+IHNldCBjPSdIaWdoZXIgU2Vjb25kIENsYXNzJzsNCiAgICAtPiBpbnNlcnQgaW50byByZXN1bHQgdmFsdWVzKHJvbGwsYyk7DQogICAgLT4gZW5kIGlmOw0KICAgIC0+IGVuZCAvLw0KUXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wNSBzZWMpDQoNCm15c3FsPiBjYWxsIGNyZWRpdCgxKS8vDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSByZXN1bHQvLw0KIA0KMSByb3cgaW4gc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IGNhbGwgY3JlZGl0KDIpLy8NClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiBjYWxsIGNyZWRpdCgzKS8vDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KDQpteXNxbD4gY2FsbCBjcmVkaXQoMykvLw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IGNhbGwgY3JlZGl0KDQpLy8NClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wMSBzZWMpDQoNCm15c3FsPiBjYWxsIGNyZWRpdCg1KS8vDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KDQpteXNxbD4gY2FsbCBjcmVkaXQoNikvLw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gcmVzdWx0Ly8NCiANCjcgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQoNCg0KDQoNCg0KQXNzaWdubWVudCA2DQpteXNxbD4gY3JlYXRlIGRhdGFiYXNlIHN0dWQ7DQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDIgc2VjKQ0KDQpteXNxbD4gdXNlIHN0dWQ7DQpEYXRhYmFzZSBjaGFuZ2VkDQoNCm15c3FsPiBjcmVhdGUgdGFibGUgc3R1ZF9tYXJrcyhyb2xsX25vIGludGVnZXIgcHJpbWFyeSBrZXksbmFtZSB2YXJjaGFyKDIwKSx0b3RhbF9tYXJrcyBpbnRlZ2VyKTsNClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDIgc2VjKQ0KDQpteXNxbD4gU0VUIEdMT0JBTCBsb2dfYmluX3RydXN0X2Z1bmN0aW9uX2NyZWF0b3JzID0gMTsNCg0KbXlzcWw+IGRlbGltaXRlciAvLw0KDQpteXNxbD4gY3JlYXRlIGZ1bmN0aW9uIGRpc3BfZ3JhZGUyKHJvbGwxIGludGVnZXIpIFJFVFVSTlMgdmFyY2hhcigyMCkgYmVnaW4gZGVjbGFyZSBtMSBpbnRlZ2VyOyBkZWNsYXJlIGMxIHZhcmNoYXIoMjApOyBzZWxlY3QgdG90YWxfbWFya3MgaW50byBtMSBmcm9tIHN0dWRfbWFya3Mgd2hlcmUgcm9sbDE9cm9sbF9ubzsgaWYgbTE+PTk5MCBhbmQgbTE8PTE1MDAgdGhlbiBzZXQgYzE9J0Rpc3RpbmN0aW9uJzsgZWxzZWlmIG0xPj05MDAgYW5kIG0xPD05ODkgdGhlbiBzZXQgYzE9J0ZpcnN0IENsYXNzJzsgZWxzZWlmIG0xPj04MjUgYW5kIG0xPD04OTkgdGhlbiBzZXQgYzE9J0hpZ2hlciBTZWNvbmQgQ2xhc3MnOyBlbmQgaWY7IHJldHVybiBjMTtlbmQgLy8NClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KDQpteXNxbD4gc2VsZWN0IGRpc3BfZ3JhZGUyKDEpLy8NCiANCjEgcm93IGluIHNldCAoMC4wNCBzZWMpDQoNCm15c3FsPiBzZWxlY3QgZGlzcF9ncmFkZTIoMikvLw0KIA0KMSByb3cgaW4gc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IHNlbGVjdCBkaXNwX2dyYWRlMigzKS8vDQogDQoxIHJvdyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gc2VsZWN0IGRpc3BfZ3JhZGUyKDQpLy8NCiANCjEgcm93IGluIHNldCAoMC4wMCBzZWMpDQoNCm15c3FsPiBzZWxlY3QgZGlzcF9ncmFkZTIoNSkvLw0KIA0KMSByb3cgaW4gc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IHNlbGVjdCBkaXNwX2dyYWRlMig2KS8vDQogDQoxIHJvdyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCkFzc2lnbm1lbnQgNw0KbXlzcWw+IGNyZWF0ZSBkYXRhYmFzZSBzdHVkZW50Ow0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IHVzZSBzdHVkZW50Ow0KRGF0YWJhc2UgY2hhbmdlZA0KbXlzcWw+IGNyZWF0ZSB0YWJsZSBzdHVkX21hcmtzKHJvbGxfbm8gaW50IHByaW1hcnkga2V5LG5hbWUgdmFyY2hhcigxMDApLHRvdGFsX21hcmtzIGludCk7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IGluc2VydCBpbnRvIHN0dWRfbWFya3MgdmFsdWVzKDEsJ2FhYScsODAwKTsNClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiBpbnNlcnQgaW50byBzdHVkX21hcmtzIHZhbHVlcygyLCdiYmInLDk1MCk7DQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gaW5zZXJ0IGludG8gc3R1ZF9tYXJrcyB2YWx1ZXMoMywnY2NjJyw2NTApOw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gc3R1ZF9tYXJrczsNCiANCjMgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gY3JlYXRlIHRhYmxlIG5ld19zdHVkX21hcmtzKHJvbGxfbm8gaW50LCBncmFkZSBjaGFyKDEwKSk7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjA1IHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gbmV3X3N0dWRfbWFya3M7DQpFbXB0eSBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gZGVsaW1pdGVyICQkDQpteXNxbD4gY3JlYXRlIHByb2NlZHVyZSBzZXRfY3Vyc29yKCkgYmVnaW4gZGVjbGFyZSByb2xsbm8gaW50OyBkZWNsYXJlIG1hcmtzIGludDsgZGVjbGFyZSBmbGFnIGludDsgZGVjbGFyZSBjMSBjdXJzb3IgZm9yIHNlbGVjdCByb2xsX25vLCB0b3RhbF9tYXJrcyBmcm9tIHN0dWRfbWFya3M7IG9wZW4gYzE7IGwxOmxvb3AgZmV0Y2ggYzEgaW50byByb2xsbm8sIG1hcmtzOyBzZXQgZmxhZz0wOyBzZWxlY3Qgcm9sbF9ubyBpbnRvIGZsYWcgZnJvbSBuZXdfc3R1ZF9tYXJrcyB3aGVyZSBuZXdfc3R1ZF9tYXJrcy5yb2xsX25vID0gcm9sbG5vOyBpZiBmbGFnID0gMCB0aGVuIGlmIG1hcmtzPD0xNTAwIGFuZCBtYXJrcz49OTkwIHRoZW4gaW5zZXJ0IGludG8gbmV3X3N0dWRfbWFya3MgdmFsdWVzKHJvbGxubywnRElTVCcpOyBlbmQgaWY7IGlmIG1hcmtzPDk5MCBhbmQgbWFya3M+PTkwMCB0aGVuIGluc2VydCBpbnRvIG5ld19zdHVkX21hcmtzIHZhbHVlcyhyb2xsbm8sJ0ZDJyk7IGVuZCBpZjsgaWYgbWFya3M8OTAwIGFuZCBtYXJrcz49ODI1IHRoZW4gaW5zZXJ0IGludG8gbmV3X3N0dWRfbWFya3MgdmFsdWVzKHJvbGxubywnSFNDJyk7IGVuZCBpZjsgaWYgbWFya3M8ODI1IGFuZCBtYXJrcz49NzUwIHRoZW4gaW5zZXJ0IGludG8gbmV3X3N0dWRfbWFya3MgdmFsdWVzKHJvbGxubywnU0MnKTsgZW5kIGlmOyBpZiBtYXJrczw3NTAgYW5kIG1hcmtzPj02MDAgdGhlbiBpbnNlcnQgaW50byBuZXdfc3R1ZF9tYXJrcyB2YWx1ZXMocm9sbG5vLCdQQycpOyBlbmQgaWY7IGlmIG1hcmtzPDYwMCB0aGVuIGluc2VydCBpbnRvIG5ld19zdHVkX21hcmtzIHZhbHVlcyhyb2xsbm8sJ0ZBSUwnKTsgZW5kIGlmOyBlbmQgaWY7IGVuZCBsb29wIGwxOyBjbG9zZSBjMTsgZW5kICQkDQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gc3R1ZF9tYXJrcyAkJA0KIA0KMyByb3dzIGluIHNldCAoMC4wMCBzZWMpDQoNCm15c3FsPiBjYWxsIHNldF9jdXJzb3IoKSQkDQpFUlJPUiAxMzI5ICgwMjAwMCk6IE5vIGRhdGEgLSB6ZXJvIHJvd3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZA0KbXlzcWw+IHNlbGVjdCAqIGZyb20gbmV3X3N0dWRfbWFya3MgJCQNCiANCjMgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gaW5zZXJ0IGludG8gc3R1ZF9tYXJrcyB2YWx1ZXMoNCwnZGQnLDEwMDApOw0KICAgIC0+ICQkDQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDMgc2VjKQ0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSBzdHVkX21hcmtzDQogICAgLT4gJCQNCiANCjQgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gY2FsbCBzZXRfY3Vyc29yKCkkJA0KRVJST1IgMTMyOSAoMDIwMDApOiBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNlbGVjdGVkLCBvciBwcm9jZXNzZWQNCm15c3FsPiBzZWxlY3QgKiBmcm9tIG5ld19zdHVkX21hcmtzICQkDQogDQo0IHJvd3MgaW4gc2V0ICgwLjAwIHNlYykNCg0KDQoNCg0KQXNzaWdubWVudCA4DQpteXNxbD4gY3JlYXRlIGRhdGFiYXNlIGxpYjsNClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiB1c2UgbGliOw0KRGF0YWJhc2UgY2hhbmdlZA0KbXlzcWw+IGNyZWF0ZSB0YWJsZSBsaWJyYXJ5KGFjY2Vzc2lvbiBpbnRlZ2VyIHByaW1hcnkga2V5LCB0aXRsZSB2YXJjaGFyKDYwKSxhdXRob3IgdmFyY2hhcig4MCkscHVibGlzaGVyIHZhcmNoYXIoNTApKTsNClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDYgc2VjKQ0KDQpteXNxbD4gY3JlYXRlIHRhYmxlIGxpYnJhcnlfYXVkaXQoYWNjZXNzaW9uIGludGVnZXIsIHRpdGxlIHZhcmNoYXIoNjApLGF1dGhvciB2YXJjaGFyKDgwKSxwdWJsaXNoZXIgdmFyY2hhcig1MCksb3BlcmF0aW9uIHZhcmNoYXIoNTApLGNvbnN0cmFpbnQgYWQgZm9yZWlnbiBrZXkoYWNjZXNzaW9uKXJlZmVyZW5jZXMgbGlicmFyeShhY2Nlc3Npb24pKTsNClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDcgc2VjKQ0KDQpteXNxbD4gZGVzY3JpYmUgbGlicmFyeTsNCiANCjQgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gZGVzY3JpYmUgbGlicmFyeV9hdWRpdDsNCiANCjUgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gaW5zZXJ0IGludG8gbGlicmFyeSB2YWx1ZXMoMSwnTGV0IHVzIEMnLCdrYW5pdGFrYXInLCdUYXRhJyk7DQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDEgc2VjKQ0KDQpteXNxbD4gaW5zZXJ0IGludG8gbGlicmFyeSB2YWx1ZXMoMiwnQyBwcm9ncmFtbWluZycsJ2JhbGFnaScsJ3RlY2huaWNhbCcpOw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjAwIHNlYykNCg0KbXlzcWw+IGluc2VydCBpbnRvIGxpYnJhcnkgdmFsdWVzKDMsJ0Rpc3RyaWJ1dGVkIFN5c3RlbXMnLCdBQUEnLCdUZWNNYXgnKTsNClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiBjcmVhdGUgdHJpZ2dlciB1cGRhdGVfbGliIGFmdGVyIHVwZGF0ZSBvbiBsaWJyYXJ5IGZvciBlYWNoIHJvdyBpbnNlcnQgaW50byBsaWJyYXJ5X2F1ZGl0KGFjY2Vzc2lvbix0aXRsZSxhdXRob3IscHVibGlzaGVyLG9wZXJhdGlvbil2YWx1ZXMob2xkLmFjY2Vzc2lvbixvbGQudGl0bGUsb2xkLmF1dGhvcixvbGQucHVibGlzaGVyLCd1cGRhdGUnKTsNClF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSBsaWJyYXJ5X2F1ZGl0Ow0KRW1wdHkgc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gbGlicmFyeTsNCiANCjMgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gdXBkYXRlIGxpYnJhcnkgc2V0IHB1Ymxpc2hlcj0ndGF0YScgd2hlcmUgYWNjZXNzaW9uPTI7DQpRdWVyeSBPSywgMSByb3cgYWZmZWN0ZWQgKDAuMDQgc2VjKQ0KUm93cyBtYXRjaGVkOiAxICBDaGFuZ2VkOiAxICBXYXJuaW5nczogMA0KDQpteXNxbD4gc2VsZWN0ICogZnJvbSBsaWJyYXJ5X2F1ZGl0Ow0KIA0KMSByb3cgaW4gc2V0ICgwLjAwIHNlYykNCg0KbXlzcWw+IGNyZWF0ZSB0cmlnZ2VyIGRlbGV0ZV9saWIgYWZ0ZXIgZGVsZXRlIG9uIGxpYnJhcnkgZm9yIGVhY2ggcm93IGluc2VydCBpbnRvIGxpYnJhcnlfYXVkaXQoYWNjZXNzaW9uLHRpdGxlLGF1dGhvcixwdWJsaXNoZXIsb3BlcmF0aW9uKXZhbHVlcyhvbGQuYWNjZXNzaW9uLG9sZC50aXRsZSxvbGQuYXV0aG9yLG9sZC5wdWJsaXNoZXIsJ2RlbGV0ZScpOw0KUXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiBTRVQgZm9yZWlnbl9rZXlfY2hlY2tzPTA7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAwIHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gbGlicmFyeV9hdWRpdDsNCiANCjEgcm93IGluIHNldCAoMC4wMCBzZWMpDQoNCm15c3FsPiBkZWxldGUgZnJvbSBsaWJyYXJ5IHdoZXJlIGFjY2Vzc2lvbj0xOw0KUXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjA0IHNlYykNCg0KbXlzcWw+IHNlbGVjdCAqIGZyb20gbGlicmFyeV9hdWRpdDsNCiANCjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKQ0KDQpteXNxbD4gY3JlYXRlIHRyaWdnZXIgaW5zZXJ0X2xpYiBhZnRlciBpbnNlcnQgb24gbGlicmFyeSBmb3IgZWFjaCByb3cgaW5zZXJ0IGludG8gbGlicmFyeV9hdWRpdChhY2Nlc3Npb24sdGl0bGUsYXV0aG9yLHB1Ymxpc2hlcixvcGVyYXRpb24pdmFsdWVzKG5ldy5hY2Nlc3Npb24sbmV3LnRpdGxlLG5ldy5hdXRob3IsbmV3LnB1Ymxpc2hlciwnaW5zZXJ0Jyk7DQpRdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAxIHNlYykNCg0KbXlzcWw+IGluc2VydCBpbnRvIGxpYnJhcnkgdmFsdWVzKDQsJ0phdmEgUHJvZ3JhbW1pbmcnLCdCQkInLCd0ZWNobmljYWwnKTsNClF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wNCBzZWMpDQoNCm15c3FsPiBzZWxlY3QgKiBmcm9tIGxpYnJhcnlfYXVkaXQ7DQogDQozIHJvd3MgaW4gc2V0ICgwLjAwIHNlYykNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQp0ZXN0PiB1c2UgbXlkYg0Kc3dpdGNoZWQgdG8gZGIgbXlkYg0KDQpteWRiPiBkYi5jcmVhdGVDb2xsZWN0aW9uKCdzdHVkJyk7DQp7IG9rOiAxIH0NCg0KbXlkYj4gZGIuc3R1ZC5pbnNlcnQoe3JvbGxubzoxLCBuYW1lOidaWlonLG1hcmtzOjkxfSk7DQpEZXByZWNhdGlvbldhcm5pbmc6IENvbGxlY3Rpb24uaW5zZXJ0KCkgaXMgZGVwcmVjYXRlZC4gVXNlIGluc2VydE9uZSwgaW5zZXJ0TWFueSwgb3IgYnVsa1dyaXRlLg0Kew0KICBhY2tub3dsZWRnZWQ6IHRydWUsDQogIGluc2VydGVkSWRzOiB7ICcwJzogT2JqZWN0SWQoIjYzNTAzMGExZGY5ZTY3ODFlYWUwM2MxZSIpIH0NCn0NCm15ZGI+IGRiLnN0dWQuZmluZCgpLnByZXR0eSgpDQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzBhMWRmOWU2NzgxZWFlMDNjMWUiKSwNCiAgICByb2xsbm86IDEsDQogICAgbmFtZTogJ1paWicsDQogICAgbWFya3M6IDkxDQogIH0NCl0NCg0KbXlkYj4gZGIuc3R1ZC5pbnNlcnQoW3tyb2xsbm86MiwgbmFtZTonQUFBJywgbWFya3M6OTB9LCB7cm9sbG5vOjMsIG5hbWU6J0JCQicsIG1hcmtzOjgwfSwge3JvbGxubzo0LCBuYW1lOidDQ0MnLCBtYXJrczo3MH0sIHtyb2xsbm86NSwgbmFtZTonREREJywgbWFya3M6ODV9LCB7cm9sbG5vOjYsIG5hbWU6J0VFRScsIG1hcmtzOjkwfSwge3JvbGxubzo3LCBuYW1lOidGRkYnLCBtYXJrczo5NX0sIHtyb2xsbm86OCwgbmFtZTonR0dHJywgbWFya3M6NzB9LCB7cm9sbG5vOjksIG5hbWU6J0hISCcsIG1hcmtzOjYwfSwge3JvbGxubzoxMCwgbmFtZTonSUlJJywgbWFya3M6OTh9XSk7DQp7DQogIGFja25vd2xlZGdlZDogdHJ1ZSwNCiAgaW5zZXJ0ZWRJZHM6IHsNCiAgICAnMCc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjgiKSwNCiAgICAnMSc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjkiKSwNCiAgICAnMic6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmEiKSwNCiAgICAnMyc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmIiKSwNCiAgICAnNCc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmMiKSwNCiAgICAnNSc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmQiKSwNCiAgICAnNic6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmUiKSwNCiAgICAnNyc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmYiKSwNCiAgICAnOCc6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMzAiKQ0KICB9DQp9DQpteWRiPiBkYi5zdHVkLmZpbmQoKS5wcmV0dHkoKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDMwYTFkZjllNjc4MWVhZTAzYzFlIiksDQogICAgcm9sbG5vOiAxLA0KICAgIG5hbWU6ICdaWlonLA0KICAgIG1hcmtzOiA5MQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI4IiksDQogICAgcm9sbG5vOiAyLA0KICAgIG5hbWU6ICdBQUEnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI5IiksDQogICAgcm9sbG5vOiAzLA0KICAgIG5hbWU6ICdCQkInLA0KICAgIG1hcmtzOiA4MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJhIiksDQogICAgcm9sbG5vOiA0LA0KICAgIG5hbWU6ICdDQ0MnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJiIiksDQogICAgcm9sbG5vOiA1LA0KICAgIG5hbWU6ICdEREQnLA0KICAgIG1hcmtzOiA4NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJjIiksDQogICAgcm9sbG5vOiA2LA0KICAgIG5hbWU6ICdFRUUnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJkIiksDQogICAgcm9sbG5vOiA3LA0KICAgIG5hbWU6ICdGRkYnLA0KICAgIG1hcmtzOiA5NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJlIiksDQogICAgcm9sbG5vOiA4LA0KICAgIG5hbWU6ICdHR0cnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJmIiksDQogICAgcm9sbG5vOiA5LA0KICAgIG5hbWU6ICdISEgnLA0KICAgIG1hcmtzOiA2MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzMwIiksDQogICAgcm9sbG5vOiAxMCwNCiAgICBuYW1lOiAnSUlJJywNCiAgICBtYXJrczogOTgNCiAgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHtuYW1lOidBQUEnfSkucHJldHR5KCk7DQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjgiKSwNCiAgICByb2xsbm86IDIsDQogICAgbmFtZTogJ0FBQScsDQogICAgbWFya3M6IDkwDQogIH0NCl0NCg0KbXlkYj4gZGIuc3R1ZC5maW5kKHt9LHtuYW1lOjF9KS5wcmV0dHkoKTsNClsNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzBhMWRmOWU2NzgxZWFlMDNjMWUiKSwgbmFtZTogJ1paWicgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjgiKSwgbmFtZTogJ0FBQScgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjkiKSwgbmFtZTogJ0JCQicgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmEiKSwgbmFtZTogJ0NDQycgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmIiKSwgbmFtZTogJ0RERCcgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmMiKSwgbmFtZTogJ0VFRScgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmQiKSwgbmFtZTogJ0ZGRicgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmUiKSwgbmFtZTogJ0dHRycgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmYiKSwgbmFtZTogJ0hISCcgfSwNCiAgeyBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMzAiKSwgbmFtZTogJ0lJSScgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHt9LHtuYW1lOjEscm9sbG5vOjF9KS5wcmV0dHkoKTsNClsNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzMGExZGY5ZTY3ODFlYWUwM2MxZSIpLA0KICAgIHJvbGxubzogMSwNCiAgICBuYW1lOiAnWlpaJw0KICB9LA0KICB7IF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyOCIpLCByb2xsbm86IDIsIG5hbWU6ICdBQUEnIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjkiKSwNCiAgICByb2xsbm86IDMsDQogICAgbmFtZTogJ0JCQicNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyYSIpLA0KICAgIHJvbGxubzogNCwNCiAgICBuYW1lOiAnQ0NDJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJiIiksDQogICAgcm9sbG5vOiA1LA0KICAgIG5hbWU6ICdEREQnDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmMiKSwNCiAgICByb2xsbm86IDYsDQogICAgbmFtZTogJ0VFRScNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyZCIpLA0KICAgIHJvbGxubzogNywNCiAgICBuYW1lOiAnRkZGJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJlIiksDQogICAgcm9sbG5vOiA4LA0KICAgIG5hbWU6ICdHR0cnDQogIH0sDQogIHsgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJmIiksIHJvbGxubzogOSwgbmFtZTogJ0hISCcgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MzMCIpLA0KICAgIHJvbGxubzogMTAsDQogICAgbmFtZTogJ0lJSScNCiAgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHtuYW1lOidaWlonLHJvbGxubzoxfSkucHJldHR5KCk7DQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzBhMWRmOWU2NzgxZWFlMDNjMWUiKSwNCiAgICByb2xsbm86IDEsDQogICAgbmFtZTogJ1paWicsDQogICAgbWFya3M6IDkxDQogIH0NCl0NCm15ZGI+IGRiLnN0dWQuZmluZCh7bWFya3M6eyRsdDo3MH19KS5wcmV0dHkoKTsNClsNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyZiIpLA0KICAgIHJvbGxubzogOSwNCiAgICBuYW1lOiAnSEhIJywNCiAgICBtYXJrczogNjANCiAgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHttYXJrczp7JGd0OjcwfX0pLnByZXR0eSgpOw0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDMwYTFkZjllNjc4MWVhZTAzYzFlIiksDQogICAgcm9sbG5vOiAxLA0KICAgIG5hbWU6ICdaWlonLA0KICAgIG1hcmtzOiA5MQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI4IiksDQogICAgcm9sbG5vOiAyLA0KICAgIG5hbWU6ICdBQUEnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI5IiksDQogICAgcm9sbG5vOiAzLA0KICAgIG5hbWU6ICdCQkInLA0KICAgIG1hcmtzOiA4MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJiIiksDQogICAgcm9sbG5vOiA1LA0KICAgIG5hbWU6ICdEREQnLA0KICAgIG1hcmtzOiA4NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJjIiksDQogICAgcm9sbG5vOiA2LA0KICAgIG5hbWU6ICdFRUUnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJkIiksDQogICAgcm9sbG5vOiA3LA0KICAgIG5hbWU6ICdGRkYnLA0KICAgIG1hcmtzOiA5NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzMwIiksDQogICAgcm9sbG5vOiAxMCwNCiAgICBuYW1lOiAnSUlJJywNCiAgICBtYXJrczogOTgNCiAgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHttYXJrczp7JGd0ZTo5MH19KS5wcmV0dHkoKTsNClsNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzMGExZGY5ZTY3ODFlYWUwM2MxZSIpLA0KICAgIHJvbGxubzogMSwNCiAgICBuYW1lOiAnWlpaJywNCiAgICBtYXJrczogOTENCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyOCIpLA0KICAgIHJvbGxubzogMiwNCiAgICBuYW1lOiAnQUFBJywNCiAgICBtYXJrczogOTANCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyYyIpLA0KICAgIHJvbGxubzogNiwNCiAgICBuYW1lOiAnRUVFJywNCiAgICBtYXJrczogOTANCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyZCIpLA0KICAgIHJvbGxubzogNywNCiAgICBuYW1lOiAnRkZGJywNCiAgICBtYXJrczogOTUNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MzMCIpLA0KICAgIHJvbGxubzogMTAsDQogICAgbmFtZTogJ0lJSScsDQogICAgbWFya3M6IDk4DQogIH0NCl0NCm15ZGI+IGRiLnN0dWQuZmluZCh7bWFya3M6eyRsdGU6ODB9fSkucHJldHR5KCk7DQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMjkiKSwNCiAgICByb2xsbm86IDMsDQogICAgbmFtZTogJ0JCQicsDQogICAgbWFya3M6IDgwDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmEiKSwNCiAgICByb2xsbm86IDQsDQogICAgbmFtZTogJ0NDQycsDQogICAgbWFya3M6IDcwDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzUwMzQzYWRmOWU2NzgxZWFlMDNjMmUiKSwNCiAgICByb2xsbm86IDgsDQogICAgbmFtZTog4oCYR0dH4oCZLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJmIiksDQogICAgcm9sbG5vOiA5LA0KICAgIG5hbWU6IOKAmEhISOKAmSwNCiAgICBtYXJrczogNjANCiAgfQ0KXQ0KDQpteWRiPiBkYi5zdHVkLnVwZGF0ZSh7cm9sbG5vOjJ9LHskc2V0OntuYW1lOidBQUEnfX0pOw0Kew0KICBhY2tub3dsZWRnZWQ6IHRydWUsDQogIGluc2VydGVkSWQ6IG51bGwsDQogIG1hdGNoZWRDb3VudDogMSwNCiAgbW9kaWZpZWRDb3VudDogMCwNCiAgdXBzZXJ0ZWRDb3VudDogMA0KfQ0KbXlkYj4gZGIuc3R1ZC5maW5kKCkucHJldHR5KCkNClsNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzMGExZGY5ZTY3ODFlYWUwM2MxZSIpLA0KICAgIHJvbGxubzogMSwNCiAgICBuYW1lOiDigJhaWlonLA0KICAgIG1hcmtzOiA5MQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI4IiksDQogICAgcm9sbG5vOiAyLA0KICAgIG5hbWU6ICdBQUEnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI5IiksDQogICAgcm9sbG5vOiAzLA0KICAgIG5hbWU6ICdCQkInLA0KICAgIG1hcmtzOiA4MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJhIiksDQogICAgcm9sbG5vOiA0LA0KICAgIG5hbWU6ICdDQ0MnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJiIiksDQogICAgcm9sbG5vOiA1LA0KICAgIG5hbWU6ICdEREQnLA0KICAgIG1hcmtzOiA4NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJjIiksDQogICAgcm9sbG5vOiA2LA0KICAgIG5hbWU6ICdFRUUnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJkIiksDQogICAgcm9sbG5vOiA3LA0KICAgIG5hbWU6ICdGRkYnLA0KICAgIG1hcmtzOiA5NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJlIiksDQogICAgcm9sbG5vOiA4LA0KICAgIG5hbWU6ICdHR0cnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJmIiksDQogICAgcm9sbG5vOiA5LA0KICAgIG5hbWU6ICdISEgnLA0KICAgIG1hcmtzOiA2MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzMwIiksDQogICAgcm9sbG5vOiAxMCwNCiAgICBuYW1lOiAnSUlJJywNCiAgICBtYXJrczogOTgNCiAgfQ0KXQ0KDQpteWRiPiBkYg0KbXlkYg0KDQpteWRiPiBkYi5zdHVkLnJlbW92ZSh7bmFtZToneHl6Jyxyb2xsbm86MSxtYXJrczo5MH0pOw0KRGVwcmVjYXRpb25XYXJuaW5nOiBDb2xsZWN0aW9uLnJlbW92ZSgpIGlzIGRlcHJlY2F0ZWQuIFVzZSBkZWxldGVPbmUsIGRlbGV0ZU1hbnksIGZpbmRPbmVBbmREZWxldGUsIG9yIGJ1bGtXcml0ZS4NCnsgYWNrbm93bGVkZ2VkOiB0cnVlLCBkZWxldGVkQ291bnQ6IDAgfQ0KDQpteWRiPiBkYi5zdHVkLnJlbW92ZSh7bmFtZTonQkJCJyxyb2xsbm86MyxtYXJrczo4MH0pOw0KeyBhY2tub3dsZWRnZWQ6IHRydWUsIGRlbGV0ZWRDb3VudDogMSB9DQpteWRiPiBkYi5zdHVkLmZpbmQoKS5wcmV0dHkoKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDMwYTFkZjllNjc4MWVhZTAzYzFlIiksDQogICAgcm9sbG5vOiAxLA0KICAgIG5hbWU6ICdaWlonLA0KICAgIG1hcmtzOiA5MQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzI4IiksDQogICAgcm9sbG5vOiAyLA0KICAgIG5hbWU6ICdBQUEnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJhIiksDQogICAgcm9sbG5vOiA0LA0KICAgIG5hbWU6ICdDQ0MnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJiIiksDQogICAgcm9sbG5vOiA1LA0KICAgIG5hbWU6ICdEREQnLA0KICAgIG1hcmtzOiA4NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJjIiksDQogICAgcm9sbG5vOiA2LA0KICAgIG5hbWU6ICdFRUUnLA0KICAgIG1hcmtzOiA5MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJkIiksDQogICAgcm9sbG5vOiA3LA0KICAgIG5hbWU6ICdGRkYnLA0KICAgIG1hcmtzOiA5NQ0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJlIiksDQogICAgcm9sbG5vOiA4LA0KICAgIG5hbWU6ICdHR0cnLA0KICAgIG1hcmtzOiA3MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzJmIiksDQogICAgcm9sbG5vOiA5LA0KICAgIG5hbWU6ICdISEgnLA0KICAgIG1hcmtzOiA2MA0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjM1MDM0M2FkZjllNjc4MWVhZTAzYzMwIiksDQogICAgcm9sbG5vOiAxMCwNCiAgICBuYW1lOiAnSUlJJywNCiAgICBtYXJrczogOTgNCiAgfQ0KXQ0KbXlkYj4gZGIuc3R1ZC5maW5kKHtuYW1lOnskaW46WydGRkYnLCdJSUknLCdKSkonXX19KTsNClsNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyYyIpLA0KICAgIHJvbGxubzogNiwNCiAgICBuYW1lOiAnRUVFJywNCiAgICBtYXJrczogOTANCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MyZiIpLA0KICAgIHJvbGxubzogOSwNCiAgICBuYW1lOiAnSEhIJywNCiAgICBtYXJrczogNjANCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzNTAzNDNhZGY5ZTY3ODFlYWUwM2MzMCIpLA0KICAgIHJvbGxubzogMTAsDQogICAgbmFtZTogJ0lJSScsDQogICAgbWFya3M6IDk4DQogIH0NCl0NCg0KbXlkYj4gZGIuc3R1ZC5lbnN1cmVJbmRleCh7bmFtZToxfSk7DQpbICduYW1lXzEnIF0NCg0KbXlkYj4gZGIuc3R1ZC5nZXRJbmRleGVzKCk7DQpbDQogIHsgdjogMiwga2V5OiB7IF9pZDogMSB9LCBuYW1lOiAnX2lkXycgfSwNCiAgeyB2OiAyLCBrZXk6IHsgbmFtZTogMSB9LCBuYW1lOiAnbmFtZV8xJyB9DQpdDQoNCm15ZGI+IGRiLnN0dWQuZHJvcEluZGV4KHtuYW1lOjF9KTsNCnsgbkluZGV4ZXNXYXM6IDIsIG9rOiAxIH0NCm15ZGI+IGRiLnN0dWQuZ2V0SW5kZXhlcygpOw0KWyB7IHY6IDIsIGtleTogeyBfaWQ6IDEgfSwgbmFtZTogJ19pZF8nIH0gXQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KdGVzdD4gdXNlIGN1c3RvbWVyDQpzd2l0Y2hlZCB0byBkYiBjdXN0b21lcg0KDQpjdXN0b21lcj4gY3JlYXRlIGNvbGxlY3Rpb24gb3JkZXINCg0KY3VzdG9tZXI+IGRiLmNyZWF0ZUNvbGxlY3Rpb24oIm9yZGVyIikNCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmluc2VydChbe2N1c3RfaWQ6IDEwMSwgaXRlbTogImJhZ3MiLCBhbXQ6IDUwMCwgcXVhbnRpdHk6IDUsIHN0YXR1czogIlkifSx7Y3VzdF9pZDogMTAyLCBpdGVtOiAicGVucyIsIGFtdDogMTAwLCBxdWFudGl0eTogMTAsIHN0YXR1czogIlkifSx7Y3VzdF9pZDogMTAzLCBpdGVtOiAibW9iaWxlIiwgYW10OiA1MDAwLCBxdWFudGl0eTogMSwgc3RhdHVzOiAiTiJ9LHtjdXN0X2lkOiAxMDQsIGl0ZW06ICJmbG93ZXJzIiwgYW10OiAyMDAsIHF1YW50aXR5OiAxMCwgc3RhdHVzOiAiTiJ9XSkNCkRlcHJlY2F0aW9uV2FybmluZzogQ29sbGVjdGlvbi5pbnNlcnQoKSBpcyBkZXByZWNhdGVkLiBVc2UgaW5zZXJ0T25lLCBpbnNlcnRNYW55LCBvciBidWxrV3JpdGUuDQp7DQogIGFja25vd2xlZGdlZDogdHJ1ZSwNCiAgaW5zZXJ0ZWRJZHM6IHsNCiAgICAnMCc6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzIiKSwNCiAgICAnMSc6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzMiKSwNCiAgICAnMic6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzQiKSwNCiAgICAnMyc6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzUiKQ0KICB9DQp9DQpjdXN0b21lcj4gZGIub3JkZXIuZmluZCgpLnByZXR0eSgpDQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzIiKSwNCiAgICBjdXN0X2lkOiAxMDEsDQogICAgaXRlbTogJ2JhZ3MnLA0KICAgIGFtdDogNTAwLA0KICAgIHF1YW50aXR5OiA1LA0KICAgIHN0YXR1czogJ1knDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzMiKSwNCiAgICBjdXN0X2lkOiAxMDIsDQogICAgaXRlbTogJ3BlbnMnLA0KICAgIGFtdDogMTAwLA0KICAgIHF1YW50aXR5OiAxMCwNCiAgICBzdGF0dXM6ICdZJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM0IiksDQogICAgY3VzdF9pZDogMTAzLA0KICAgIGl0ZW06ICdtb2JpbGUnLA0KICAgIGFtdDogNTAwMCwNCiAgICBxdWFudGl0eTogMSwNCiAgICBzdGF0dXM6ICdOJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM1IiksDQogICAgY3VzdF9pZDogMTA0LA0KICAgIGl0ZW06ICdmbG93ZXJzJywNCiAgICBhbXQ6IDIwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnTicNCiAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuZGlzdGluY3QoImN1c3RfaWQiKQ0KWyAxMDEsIDEwMiwgMTAzLCAxMDQgXQ0KDQpNb25nb1NlcnZlckVycm9yOiBCU09OIGZpZWxkICdjb3VudC5xdWVyeScgaXMgdGhlIHdyb25nIHR5cGUgJ3N0cmluZycsIGV4cGVjdGVkIHR5cGUgJ29iamVjdCcNCmN1c3RvbWVyPiBkYi5vcmRlci5jb3VudCgpDQo0DQoNCmN1c3RvbWVyPiBkYi5vcmRlci5hZ2dyZWdhdGUoW3skZ3JvdXA6eyJfaWQiOiAiJGN1c3RfaWQiLCBUb3RhbDp7JG1pbjogIiRhbXQifX19XSkNClsNCiAgeyBfaWQ6IDEwMiwgVG90YWw6IDEwMCB9LA0KICB7IF9pZDogMTA0LCBUb3RhbDogMjAwIH0sDQogIHsgX2lkOiAxMDEsIFRvdGFsOiA1MDAgfSwNCiAgeyBfaWQ6IDEwMywgVG90YWw6IDUwMDAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JGdyb3VwOnsiX2lkIjogIiRjdXN0X2lkIiwgVG90YWw6eyRtYXg6ICIkYW10In19fV0pDQpbDQogIHsgX2lkOiAxMDMsIFRvdGFsOiA1MDAwIH0sDQogIHsgX2lkOiAxMDEsIFRvdGFsOiA1MDAgfSwNCiAgeyBfaWQ6IDEwNCwgVG90YWw6IDIwMCB9LA0KICB7IF9pZDogMTAyLCBUb3RhbDogMTAwIH0NCl0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRncm91cDp7Il9pZCI6ICIkY3VzdF9pZCIsIFRvdGFsOnskc3VtOiAiJGFtdCJ9fX1dKQ0KWw0KICB7IF9pZDogMTAxLCBUb3RhbDogNTAwIH0sDQogIHsgX2lkOiAxMDMsIFRvdGFsOiA1MDAwIH0sDQogIHsgX2lkOiAxMDQsIFRvdGFsOiAyMDAgfSwNCiAgeyBfaWQ6IDEwMiwgVG90YWw6IDEwMCB9DQpdDQoNCg0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JGdyb3VwOnsiX2lkIjogIiRjdXN0X2lkIiwgVG90YWw6eyRhdmc6ICIkYW10In19fV0pDQpbDQogIHsgX2lkOiAxMDIsIFRvdGFsOiAxMDAgfSwNCiAgeyBfaWQ6IDEwNCwgVG90YWw6IDIwMCB9LA0KICB7IF9pZDogMTAxLCBUb3RhbDogNTAwIH0sDQogIHsgX2lkOiAxMDMsIFRvdGFsOiA1MDAwIH0NCl0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRncm91cDp7Il9pZCI6ICJieV91c2VyIiwgVG90YWw6eyRtaW46ICIkYW10In19fV0pDQpbIHsgX2lkOiAnYnlfdXNlcicsIFRvdGFsOiAxMDAgfSBdDQoNCmN1c3RvbWVyPiBkYi5vcmRlci5hZ2dyZWdhdGUoW3skZ3JvdXA6eyJfaWQiOiAiYnlfdXNlciIsIFRvdGFsOnskbWF4OiAiJGFtdCJ9fX1dKQ0KWyB7IF9pZDogJ2J5X3VzZXInLCBUb3RhbDogNTAwMCB9IF0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRncm91cDp7Il9pZCI6ICJieV91c2VyIiwgVG90YWw6eyRzdW06ICIkYW10In19fV0pDQpbIHsgX2lkOiAnYnlfdXNlcicsIFRvdGFsOiA1ODAwIH0gXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JGdyb3VwOnsiX2lkIjogImJ5X3VzZXIiLCBUb3RhbDp7JGF2ZzogIiRhbXQifX19XSkNClsgeyBfaWQ6ICdieV91c2VyJywgVG90YWw6IDE0NTAgfSBdDQoNCmN1c3RvbWVyPiBkYi5vcmRlci5hZ2dyZWdhdGUoW3skbWF0Y2g6e3N0YXR1czoiWSJ9fSx7JGdyb3VwOnsiX2lkIjogImJ5X3VzZXIiLCBUb3RhbDp7JG1pbjogIiRhbXQifX19XSkNClsgeyBfaWQ6ICdieV91c2VyJywgVG90YWw6IDEwMCB9IF0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRtYXRjaDp7c3RhdHVzOiJZIn19LHskZ3JvdXA6eyJfaWQiOiAiYnlfdXNlciIsIFRvdGFsOnskbWF4OiAiJGFtdCJ9fX1dKQ0KWyB7IF9pZDogJ2J5X3VzZXInLCBUb3RhbDogNTAwIH0gXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JG1hdGNoOntzdGF0dXM6IlkifX0seyRncm91cDp7Il9pZCI6ICJieV91c2VyIiwgVG90YWw6eyRzdW06ICIkYW10In19fV0pDQpbIHsgX2lkOiAnYnlfdXNlcicsIFRvdGFsOiA2MDAgfSBdDQoNCmN1c3RvbWVyPiBkYi5vcmRlci5hZ2dyZWdhdGUoW3skbWF0Y2g6e3N0YXR1czoiWSJ9fSx7JGdyb3VwOnsiX2lkIjogImJ5X3VzZXIiLCBUb3RhbDp7JGF2ZzogIiRhbXQifX19XSkNClsgeyBfaWQ6ICdieV91c2VyJywgVG90YWw6IDMwMCB9IF0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRtYXRjaDp7c3RhdHVzOiJZIn19LHskZ3JvdXA6eyJfaWQiOiAiYnlfdXNlciIsIFRvdGFsOnskZmlyc3Q6ICIkYW10In19fV0pDQpbIHsgX2lkOiAnYnlfdXNlcicsIFRvdGFsOiA1MDAgfSBdDQoNCmN1c3RvbWVyPiBkYi5vcmRlci5hZ2dyZWdhdGUoW3skbWF0Y2g6e3N0YXR1czoiWSJ9fSx7JGdyb3VwOnsiX2lkIjogImJ5X3VzZXIiLCBUb3RhbDp7JGxhc3Q6ICIkYW10In19fV0pDQpbIHsgX2lkOiAnYnlfdXNlcicsIFRvdGFsOiAxMDAgfSBdDQoNCg0KDQpjdXN0b21lcj4gZGIub3JkZXIuZmluZCgpLnByZXR0eSgpDQpbDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzIiKSwNCiAgICBjdXN0X2lkOiAxMDEsDQogICAgaXRlbTogJ2JhZ3MnLA0KICAgIGFtdDogNTAwLA0KICAgIHF1YW50aXR5OiA1LA0KICAgIHN0YXR1czogJ1knDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzMiKSwNCiAgICBjdXN0X2lkOiAxMDIsDQogICAgaXRlbTogJ3BlbnMnLA0KICAgIGFtdDogMTAwLA0KICAgIHF1YW50aXR5OiAxMCwNCiAgICBzdGF0dXM6ICdZJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM0IiksDQogICAgY3VzdF9pZDogMTAzLA0KICAgIGl0ZW06ICdtb2JpbGUnLA0KICAgIGFtdDogNTAwMCwNCiAgICBxdWFudGl0eTogMSwNCiAgICBzdGF0dXM6ICdOJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM1IiksDQogICAgY3VzdF9pZDogMTA0LA0KICAgIGl0ZW06ICdmbG93ZXJzJywNCiAgICBhbXQ6IDIwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnTicNCiAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuZmluZCgpLnNvcnQoeyJhbXQiOjF9KQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGMzIiksDQogICAgY3VzdF9pZDogMTAyLA0KICAgIGl0ZW06ICdwZW5zJywNCiAgICBhbXQ6IDEwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnWScNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzMzNkNjgxOTBlYTYzZDFlNmIzZjRjNSIpLA0KICAgIGN1c3RfaWQ6IDEwNCwNCiAgICBpdGVtOiAnZmxvd2VycycsDQogICAgYW10OiAyMDAsDQogICAgcXVhbnRpdHk6IDEwLA0KICAgIHN0YXR1czogJ04nDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzIiKSwNCiAgICBjdXN0X2lkOiAxMDEsDQogICAgaXRlbTogJ2JhZ3MnLA0KICAgIGFtdDogNTAwLA0KICAgIHF1YW50aXR5OiA1LA0KICAgIHN0YXR1czogJ1knDQogIH0sDQogIHsNCiAgICBfaWQ6IE9iamVjdElkKCI2MzMzZDY4MTkwZWE2M2QxZTZiM2Y0YzQiKSwNCiAgICBjdXN0X2lkOiAxMDMsDQogICAgaXRlbTogJ21vYmlsZScsDQogICAgYW10OiA1MDAwLA0KICAgIHF1YW50aXR5OiAxLA0KICAgIHN0YXR1czogJ04nDQogIH0NCl0NCg0KY3VzdG9tZXI+IGRiLm9yZGVyLmFnZ3JlZ2F0ZShbeyRtYXRjaDp7c3RhdHVzOiJZIn19LHskc29ydDoge2FtdDoxfX1dKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGMzIiksDQogICAgY3VzdF9pZDogMTAyLA0KICAgIGl0ZW06ICdwZW5zJywNCiAgICBhbXQ6IDEwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnWScNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzMzNkNjgxOTBlYTYzZDFlNmIzZjRjMiIpLA0KICAgIGN1c3RfaWQ6IDEwMSwNCiAgICBpdGVtOiAnYmFncycsDQogICAgYW10OiA1MDAsDQogICAgcXVhbnRpdHk6IDUsDQogICAgc3RhdHVzOiAnWScNCiAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JG1hdGNoOntzdGF0dXM6IlkifX0seyRzb3J0OiB7YW10Oi0xfX1dKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGMyIiksDQogICAgY3VzdF9pZDogMTAxLA0KICAgIGl0ZW06ICdiYWdzJywNCiAgICBhbXQ6IDUwMCwNCiAgICBxdWFudGl0eTogNSwNCiAgICBzdGF0dXM6ICdZJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGMzIiksDQogICAgY3VzdF9pZDogMTAyLA0KICAgIGl0ZW06ICdwZW5zJywNCiAgICBhbXQ6IDEwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnWScNCiAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JG1hdGNoOnthbXQ6eyRndDoxMDB9fX0seyRzb3J0OiB7YW10Oi0xfX1dKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM0IiksDQogICAgY3VzdF9pZDogMTAzLA0KICAgIGl0ZW06ICdtb2JpbGUnLA0KICAgIGFtdDogNTAwMCwNCiAgICBxdWFudGl0eTogMSwNCiAgICBzdGF0dXM6ICdOJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGMyIiksDQogICAgY3VzdF9pZDogMTAxLA0KICAgIGl0ZW06ICdiYWdzJywNCiAgICBhbXQ6IDUwMCwNCiAgICBxdWFudGl0eTogNSwNCiAgICBzdGF0dXM6ICdZJw0KICB9LA0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM1IiksDQogICAgY3VzdF9pZDogMTA0LA0KICAgIGl0ZW06ICdmbG93ZXJzJywNCiAgICBhbXQ6IDIwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnTicNCiAgfQ0KXQ0KDQpjdXN0b21lcj4gZGIub3JkZXIuYWdncmVnYXRlKFt7JG1hdGNoOnthbXQ6eyRsdDo1MDB9fX0seyRzb3J0OiB7YW10Oi0xfX1dKQ0KWw0KICB7DQogICAgX2lkOiBPYmplY3RJZCgiNjMzM2Q2ODE5MGVhNjNkMWU2YjNmNGM1IiksDQogICAgY3VzdF9pZDogMTA0LA0KICAgIGl0ZW06ICdmbG93ZXJzJywNCiAgICBhbXQ6IDIwMCwNCiAgICBxdWFudGl0eTogMTAsDQogICAgc3RhdHVzOiAnTicNCiAgfSwNCiAgew0KICAgIF9pZDogT2JqZWN0SWQoIjYzMzNkNjgxOTBlYTYzZDFlNmIzZjRjMyIpLA0KICAgIGN1c3RfaWQ6IDEwMiwNCiAgICBpdGVtOiAncGVucycsDQogICAgYW10OiAxMDAsDQogICAgcXVhbnRpdHk6IDEwLA0KICAgIHN0YXR1czogJ1knDQogIH0NCl0NCk1vbmdvREIgTWFwUmVkdWNlDQoNCm15ZGI+IGRiLmNyZWF0ZUNvbGxlY3Rpb24oIm9yZGVycyIpDQp7IG9rOiAxIH0NCg0KbXlkYj4gdXNlIG9yZGVycw0Kc3dpdGNoZWQgdG8gZGIgb3JkZXJzDQoNCm9yZGVycz4gZGIub3JkZXJzLmluc2VydE1hbnkoWw0KLi4uICAgIHsgX2lkOiAxLCBjdXN0X2lkOiAiQUFBQUEiLCBwcmljZTogMjUsIGl0ZW1zOiBbIHsgc2t1OiAib3JhbmdlcyIsIHF0eTogNSwgcHJpY2U6IDIuNSB9LCB7IHNrdTogImFwcGxlcyIsIHF0eTogNSwgcHJpY2U6IDIuNSB9IF19LA0KLi4uICAgIHsgX2lkOiAyLCBjdXN0X2lkOiAiQUFBQUEiLCBwcmljZTogNzAsIGl0ZW1zOiBbIHsgc2t1OiAib3JhbmdlcyIsIHF0eTogOCwgcHJpY2U6IDIuNSB9LCB7IHNrdTogImNob2NvbGF0ZXMiLCBxdHk6IDUsIHByaWNlOiAxMCB9IF19LA0KLi4uICAgIHsgX2lkOiAzLCBjdXN0X2lkOiAiQkJCQkIiLCBwcmljZTogNTAsIGl0ZW1zOiBbIHsgc2t1OiAib3JhbmdlcyIsIHF0eTogMTAsIHByaWNlOiAyLjUgfSwgeyBza3U6ICJwZWFycyIsIHF0eTogMTAsIHByaWNlOiAyLjUgfSBdfSwNCi4uLiAgICB7IF9pZDogNCwgY3VzdF9pZDogIkJCQkJCIiwgcHJpY2U6IDI1LCBpdGVtczogWyB7IHNrdTogIm9yYW5nZXMiLCBxdHk6IDEwLCBwcmljZTogMi41IH0gXX0sDQouLi4gICAgeyBfaWQ6IDUsIGN1c3RfaWQ6ICJCQkJCQiIsIHByaWNlOiA1MCwgaXRlbXM6IFsgeyBza3U6ICJjaG9jb2xhdGVzIiwgcXR5OiA1LCBwcmljZTogMTAgfSBdfSwNCi4uLiAgICB7IF9pZDogNiwgY3VzdF9pZDogIkNDQ0NDIiwgcHJpY2U6IDM1LCBpdGVtczogWyB7IHNrdTogImNhcnJvdHMiLCBxdHk6IDEwLCBwcmljZTogMS4wIH0sIHsgc2t1OiAiYXBwbGVzIiwgcXR5OiAxMCwgcHJpY2U6IDIuNSB9IF19LA0KLi4uICAgIHsgX2lkOiA3LCBjdXN0X2lkOiAiQ0NDQ0MiLCBwcmljZTogMjUsIGl0ZW1zOiBbIHsgc2t1OiAib3JhbmdlcyIsIHF0eTogMTAsIHByaWNlOiAyLjUgfSBdfSwNCi4uLiAgICB7IF9pZDogOCwgY3VzdF9pZDogIkREREREIiwgcHJpY2U6IDc1LCBpdGVtczogWyB7IHNrdTogImNob2NvbGF0ZXMiLCBxdHk6IDUsIHByaWNlOiAxMCB9LCB7IHNrdTogImFwcGxlcyIsIHF0eTogMTAsIHByaWNlOiAyLjUgfSBdfSwNCi4uLiAgICB7IF9pZDogOSwgY3VzdF9pZDogIkREREREIiwgcHJpY2U6IDU1LCBpdGVtczogWyB7IHNrdTogImNhcnJvdHMiLCBxdHk6IDUsIHByaWNlOiAxLjAgfSwgeyBza3U6ICJhcHBsZXMiLCBxdHk6IDEwLCBwcmljZTogMi41IH0sIHsgc2t1OiAib3JhbmdlcyIsIHF0eXF0eTogMTAsIHByaWNlOiAyLjUgfSBdfSwNCi4uLiAgICB7IF9pZDogMTAsIGN1c3RfaWQ6ICJERERERCIsIHByaWNlOiAyNSwgaXRlbXM6IFsgeyBza3U6ICJvcmFuZ2VzIiwgcXR5OiAxMCwgcHJpY2U6IDIuNSB9IF19DQouLi4gXSkNCnsNCiAgYWNrbm93bGVkZ2VkOiB0cnVlLA0KICBpbnNlcnRlZElkczogew0KICAgICcwJzogMSwNCiAgICAnMSc6IDIsDQogICAgJzInOiAzLA0KICAgICczJzogNCwNCiAgICAnNCc6IDUsDQogICAgJzUnOiA2LA0KICAgICc2JzogNywNCiAgICAnNyc6IDgsDQogICAgJzgnOiA5LA0KICAgICc5JzogMTANCiAgfQ0KDQpvcmRlcnM+IHZhciBtYXBGdW5jdGlvbjEgPSBmdW5jdGlvbigpIHsNCi4uLiAgICBlbWl0KHRoaXMuY3VzdF9pZCwgdGhpcy5wcmljZSk7DQouLi4gfTsNCg0Kb3JkZXJzPiB2YXIgcmVkdWNlRnVuY3Rpb24xID0gZnVuY3Rpb24oa2V5Q3VzdElkLCB2YWx1ZXNQcmljZXMpIHsNCi4uLiAgICByZXR1cm4gQXJyYXkuc3VtKHZhbHVlc1ByaWNlcyk7DQouLi4gfTsNCg0Kb3JkZXJzPiBkYi5vcmRlcnMubWFwUmVkdWNlKA0KLi4uICAgIG1hcEZ1bmN0aW9uMSwNCi4uLiAgICByZWR1Y2VGdW5jdGlvbjEsDQouLi4gICAgeyBvdXQ6ICJtYXBfcmVkdWNlX2V4YW1wbGUiIH0NCi4uLiApDQpEZXByZWNhdGlvbldhcm5pbmc6IENvbGxlY3Rpb24ubWFwUmVkdWNlKCkgaXMgZGVwcmVjYXRlZC4gVXNlIGFuIGFnZ3JlZ2F0aW9uIGluc3RlYWQuDQpTZWUgaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9jb3JlL21hcC1yZWR1Y2UgZm9yIGRldGFpbHMuDQp7IHJlc3VsdDogJ21hcF9yZWR1Y2VfZXhhbXBsZScsIG9rOiAxIH0NCg0Kb3JkZXJzPiBkYi5tYXBfcmVkdWNlX2V4YW1wbGUuZmluZCgpLnNvcnQoIHsgX2lkOiAxIH0gKQ0KWw0KICB7IF9pZDogJ0FBQUFBJywgdmFsdWU6IDk1IH0sDQogIHsgX2lkOiAnQkJCQkInLCB2YWx1ZTogMTI1IH0sDQogIHsgX2lkOiAnQ0NDQ0MnLCB2YWx1ZTogNjAgfSwNCiAgeyBfaWQ6ICdERERERCcsIHZhbHVlOiAxNTUgfQ0KXQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpNb25nb0RCIERhdGFiYXNlIENvbm5lY3Rpdml0eSB1c2luZyBKQVZBDQoNCmltcG9ydCBjb20ubW9uZ29kYi5Nb25nb0NsaWVudDsNCmltcG9ydCBjb20ubW9uZ29kYi5Nb25nb0V4Y2VwdGlvbjsNCmltcG9ydCBjb20ubW9uZ29kYi5jbGllbnQuTW9uZ29EYXRhYmFzZTsNCg0KcHVibGljIGNsYXNzIE1vbmdvREJDb25uZWN0aXZpdHkgew0KICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsNCg0KICAgICAgICBNb25nb0NsaWVudCBtb25nb0NsaWVudCA9IG51bGw7DQoNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgIG1vbmdvQ2xpZW50ID0gbmV3IE1vbmdvQ2xpZW50KCAiMTI3LjAuMC4xIiAsIDI3MDE3ICk7DQoNCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29ubmVjdGVkIHRvIE1vbmdvREIhIik7DQoNCiAgICAgICAgICAgIE1vbmdvRGF0YWJhc2UgZGF0YWJhc2UgPSBtb25nb0NsaWVudC5nZXREYXRhYmFzZSgibXlkYiIpOw0KICAgICAgICAgICAgLy9DcmVhdGluZyBhIGNvbGxlY3Rpb24NCiAgICAgICAgICAgIGRhdGFiYXNlLmNyZWF0ZUNvbGxlY3Rpb24oInRlc3RDb2xsZWN0aW9uMDAiKTsNCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29sbGVjdGlvbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseSEiKTsNCiAgICAgICAgfSBjYXRjaCAoTW9uZ29FeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCiAgICAgICAgfSBmaW5hbGx5IHsNCiAgICAgICAgICAgIGlmKG1vbmdvQ2xpZW50IT1udWxsKQ0KICAgICAgICAgICAgICAgIG1vbmdvQ2xpZW50LmNsb3NlKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQoNCk91dHB1dDogDQpqYXZhYyBNb25nb0RCQ29ubmVjdGl2aXR5LmphdmENCmphdmEgTW9uZ29EQkNvbm5lY3Rpdml0eQ0KDQpDb25uZWN0ZWQgdG8gTW9uZ29EQiENCkNvbGxlY3Rpb24gY3JlYXRlZCBzdWNjZXNzZnVsbHkhDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KTW9uZ29EQiBEYXRhYmFzZSBDb25uZWN0aXZpdHkgdXNpbmcgUEhQDQoNCjw/cGhwDQpyZXF1aXJlICd2ZW5kb3IvYXV0b2xvYWQucGhwJzsgLy8gaW5jbHVkZSBDb21wb3NlcidzIGF1dG9sb2FkZXINCmhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L3BsYWluJyk7DQokY2xpZW50ID0gbmV3IE1vbmdvREJcQ2xpZW50KCJtb25nb2RiOi8vbG9jYWxob3N0OjI3MDE3Iik7DQppZigkY2xpZW50KXsNCiAgIGVjaG8gIkNvbm5lY3Rpb24gRXN0YWJsaXNoZWQgd2l0aCAkY2xpZW50XG5cbkRBVEEgU0hFRVRcbiI7DQp9DQokY29sbGVjdGlvbiA9ICRjbGllbnQtPlNJVFNfVEVTVC0+bmFtZXM7DQokY3Vyc29yID0gJGNvbGxlY3Rpb24tPmZpbmQoKTsNCi8vIGl0ZXJhdGUgY3Vyc29yIHRvIGRpc3BsYXkgdGl0bGUgb2YgZG9jdW1lbnRzDQogIGZvcmVhY2ggKCRjdXJzb3IgYXMgJGRvY3VtZW50KSB7DQogIGVjaG8gIlVzZXI6Ii4kZG9jdW1lbnRbIm5hbWUiXSAuIiAiLiRkb2N1bWVudFsic3VybmFtZSJdLiJcbiI7DQogfQ0KDQpPdXRwdXQ6DQpDb25uZWN0aW9uIEVzdGFibGlzaGVkIHdpdGggbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNw0KDQpEQVRBIFNIRUVUDQpVc2VyOkFuZHJldyBCcmV3bWFuDQpVc2VyOk1heCBQYXluZQ0KVXNlcjpLYWNoYSBCYWRtYW4NCg==