QVBBQ0hFIDEuMyBTVEFUVVM6CQkJCQkJLSotdGV4dC0qLQogIExhc3QgbW9kaWZpZWQgYXQgWyREYXRlJF0KClJlbGVhc2U6CgogICAxLjMuNDI6IEluIGRldi9tYWludCBtb2RlLgogICAxLjMuNDE6IFJlbGVhc2VkIEphbnVhcnkgMTksIDIwMDguCiAgIDEuMy40MDogVGFnZ2VkIEphbnVhcnkgNCwgMjAwOC4gTm90IHJlbGVhc2VkLgogICAxLjMuMzk6IFJlbGVhc2VkIFNlcHRlbWJlciA3LCAyMDA3LgogICAxLjMuMzg6IFRhZ2dlZCBBdWd1c3QgMTAsIDIwMDcuIE5vdCByZWxlYXNlZC4KICAgMS4zLjM3OiBUYWdnZWQgSnVseSAyNywgMjAwNi4gQW5ub3VuY2VkIEp1bHkgMjgsIDIwMDYuCiAgIDEuMy4zNjogVGFnZ2VkIE1heSAxNCwgMjAwNi4gQW5ub3VuY2VkIE1heSAxNywgMjAwNi4KICAgMS4zLjM1OiBUYWdnZWQgQXByaWwgMjQsIDIwMDYuIEFubm91bmNlZCBNYXkgMSwgMjAwNi4KICAgMS4zLjM0OiBUYWdnZWQgT2N0b2JlciAxMywgMjAwNS4gQW5ub3VuY2VkIE9jdG9iZXIgMTgsIDIwMDUuCiAgIDEuMy4zMzogVGFnZ2VkIE9jdG9iZXIgMjcsIDIwMDQuIEFubm91bmNlZCBPY3RvYmVyIDI5LCAyMDA0LgogICAxLjMuMzI6IFRhZ2dlZCBPY3RvYmVyIDE4LCAyMDA0LiBOb3QgZm9ybWFsbHkgcmVsZWFzZWQuCiAgIDEuMy4zMTogVGFnZ2VkIE1heSA3LCAyMDA0LiBBbm5vdW5jZWQgTWF5IDExLCAyMDA0LgogICAxLjMuMzA6IFRhZ2dlZCBBcHJpbCA5LCAyMDA0LiBOb3QgcmVsZWFzZWQuCiAgIDEuMy4yOTogVGFnZ2VkIE9jdG9iZXIgMjQsIDIwMDMuIEFubm91bmNlZCBPY3QgMjksIDIwMDMuCiAgIDEuMy4yODogVGFnZ2VkIEp1bHkgMTYsIDIwMDMuIEFubm91bmNlZCA/PwogICAxLjMuMjc6IFRhZ2dlZCBTZXB0ZW1iZXIgMzAsIDIwMDIuIEFubm91bmNlZCBPY3QgMywgMjAwMi4KICAgMS4zLjI2OiBUYWdnZWQgSnVuZSAxOCwgMjAwMi4KICAgMS4zLjI1OiBUYWdnZWQgSnVuZSAxNywgMjAwMi4gTm90IHJlbGVhc2VkLgogICAxLjMuMjQ6IFRhZ2dlZCBNYXIgMjEsIDIwMDIuIEFubm91bmNlZCBNYXIgMjIsIDIwMDIuCiAgIDEuMy4yMzogVGFnZ2VkIEphbiAyMSwgMjAwMi4KICAgMS4zLjIyOiBUYWdnZWQgT2N0IDgsIDIwMDEuICBBbm5vdW5jZWQgT2N0IDEyLCAyMDAxLgogICAxLjMuMjE6IE5vdCByZWxlYXNlZC4KICAgICAgICAgICAgIChQdWxsZWQgZm9yIGh0ZG9jcy9tYW51YWwgY29uZmlnIG1pc21hdGNoLiB0L3IgT2N0IDUsIDIwMDEpCiAgIDEuMy4yMDogVGFnZ2VkIGFuZCByb2xsZWQgTWF5IDE1LCAyMDAxLiBBbm5vdW5jZWQgTWF5IDIxLCAyMDAxLgogICAxLjMuMTk6IFRhZ2dlZCBhbmQgcm9sbGVkIEZlYiAyNiwgMjAwMS4gQW5ub3VuY2VkIE1hciAwMSwgMjAwMS4KICAgMS4zLjE4OiBUYWdnZWQgYW5kIHJvbGxlZCBOb3QgcmVsZWFzZWQuCiAgICAgICAgICAgICAoUHVsbGVkIGJlY2F1c2Ugb2YgYW4gaW5jb3JyZWN0IHVuZXNjYXBpbmcgZml4LiB0L3IgRmViIDE5LCAyMDAxKQogICAxLjMuMTc6IFRhZ2dlZCBhbmQgcm9sbGVkIEphbiAyNiwgMjAwMS4gQW5ub3VuY2VkIEphbiAyOSwgMjAwMS4KICAgMS4zLjE2OiBOb3QgcmVsZWFzZWQuCiAgICAgICAgICAgICAoUHVsbGVkIGJlY2F1c2Ugb2Ygdmhvc3RpbmcgYnVnLiB0L3IgSmFuIDIwLCAyMDAxKQogICAxLjMuMTU6IE5vdCByZWxlYXNlZC4KICAgICAgICAgICAgIChQdWxsZWQgZHVlIHRvIENWUyBkdW1waW5nIGNvcmUgZHVyaW5nIHRoZSB0YWdnaW5nIHdoZW4gaXQKICAgICAgICAgICAgICByZWFjaGVkIHNyYy9vcy93aW4zMi8pCiAgIDEuMy4xNDogVGFnZ2VkIGFuZCBSb2xsZWQgT2N0IDEwLCAyMDAwLiAgUmVsZWFzZWQvYW5ub3VuY2VkIG9uIHRoZSAxM3RoLgogICAxLjMuMTM6IE5vdCByZWxlYXNlZC4KICAgICAgICAgICAgIChQdWxsZWQgaW4gdGhlICJmaXJzdCBtaW51dGVzIiBkdWUgdG8gYSBOZXR3YXJlIGJ1aWxkIGJ1ZykKICAgMS4zLjEyOiBUYWdnZWQgYW5kIHJvbGxlZCBGZWIuIDIzLCAyMDAwLiBSZWxlYXNlZC9hbm5vdW5jZWQgb24gdGhlIDI1dGguCiAgIDEuMy4xMTogVGFnZ2VkIGFuZCByb2xsZWQgSmFuLiAxOSwgMjAwMC4gUmVsZWFzZWQvYW5ub3VuY2VkIG9uIHRoZSAyMXN0LgogICAxLjMuMTA6IE5vdCByZWxlYXNlZC4KICAgICAgICAgICAgIChQdWxsZWQgYXQgImxhc3QgbWludXRlIiBkdWUgdG8gYSBidWlsZCBidWcgaW4gdGhlIE1QRSBwb3J0KQogICAgMS4zLjk6IFRhZ2dlZCBhbmQgcm9sbGVkIG9uIEF1Zy4gMTYsIDE5OTkuIFJlbGVhc2VkIGFuZCBhbm5vdW5jZWQgb24gMTl0aC4KICAgIDEuMy44OiBOb3QgcmVsZWFzZWQuCiAgICAxLjMuNzogTm90IHJlbGVhc2VkLgogICAgMS4zLjY6IFRhZ2dlZCBhbmQgcm9sbGVkIG9uIE1hci4gMjIsIDE5OTkuIFJlbGVhc2VkIGFuZCBhbm5vdW5jZWQgb24gMjR0aC4KICAgIDEuMy41OiBOb3QgcmVsZWFzZWQuCiAgICAxLjMuNDogVGFnZ2VkIGFuZCByb2xsZWQgb24gSmFuLiA5LCAxOTk5LiAgUmVsZWFzZWQgb24gMTF0aCwgYW5ub3VuY2VkIG9uIDEydGguCiAgICAxLjMuMzogVGFnZ2VkIGFuZCByb2xsZWQgb24gT2N0LiA3LCAxOTk4LiAgUmVsZWFzZWQgb24gOXRoLCBhbm5vdW5jZWQgb24gMTB0aC4KICAgIDEuMy4yOiBUYWdnZWQgYW5kIHJvbGxlZCBvbiBTZXAuIDIxLCAxOTk4LiBBbm5vdW5jZWQgYW5kIHJlbGVhc2VkIG9uIDIzcmQuCiAgICAxLjMuMTogVGFnZ2VkIGFuZCByb2xsZWQgb24gSnVseSAxOSwgMTk5OC4gQW5ub3VuY2VkIGFuZCByZWxlYXNlZC4KICAgIDEuMy4wOiBUYWdnZWQgYW5kIHJvbGxlZCBvbiBKdW5lIDEsIDE5OTguICBBbm5vdW5jZWQgYW5kIHJlbGVhc2VkIG9uIHRoZSA2dGguCiAgICAgICAgICAgCiAgICAyLjAgIDogQXZhaWxhYmxlIGZvciBnZW5lcmFsIHVzZSwgc2VlIGh0dHBkLTIuMCByZXBvc2l0b3J5CgpSRUxFQVNFIFNIT1dTVE9QUEVSUzoKClBST1BPU0VEIFBBVENIRVMgRk9SIFRISVMgUkVMRUFTRToKCiAgICopIG1vZF9yZXdyaXRlIG9uIFdpbjMyOiBjaGFuZ2UgdGhlIG11dGV4IG1lY2hhbmlzbSBmb3IgUmV3cml0ZUxvZwogICAgICB0byBzb21ldGhpbmcgbW9yZSByZWxpYWJsZTsgQXBhY2hlIG9uIFdpbjMyIHdpbGwgb2Z0ZW4gZXhpdCgxKQogICAgICBjdXJyZW50bHkgaWYgUmV3cml0ZUxvZyBpcyBlbmFibGVkCiAgICAgIFBhdGNoIGlzIGhlcmU6CiAgICAgICAgaHR0cDovL3Blb3BsZS5hcGFjaGUub3JnL35jb2xtL21vZF9yZXdyaXRlLXdpbjMybG9nbG9jay5kaWZmCiAgICAgICAgTWVzc2FnZS1JRDogPDE0MDRlNTkxMDUwNDAxMDcxNjM4OWRkN2RhQG1haWwuZ21haWwuY29tPgogICAgICAgIEZyb206IEVyaWMgQ292ZW5lciA8Y292ZW5lckBnbWFpbC5jb20+CiAgICAgICAgU3ViamVjdDogWzEuMyBQQVRDSF0gV2luMzIgUmV3cml0ZUxvZyBkZWFkbG9jawogICAgICArMTogdHJhd2ljaywgd3Jvd2UsIGNvbG0gKHRlc3RlZCBvbiBYUCBhbmQgVmlzdGEsIGJ1dCBub3QgOXgpLgoKICAgKikgbW9kX2xvZ19jb25maWc6IENsZWFudXAgbG9nX2hlYWRlcl9vdXQgZnVuY3Rpb24gdG8gYWxsb3cgbXVsdGlwbGUgaGVhZGVycwogICAgICBsaWtlIFNldC1Db29raWUgdG8gYmUgbG9nZ2VkIHByb3Blcmx5LiBQUiAyNzc4NyAKICAgICAgICBodHRwOi8vcGVvcGxlLmFwYWNoZS5vcmcvfmNvbG0vbW9kX2xvZ19jb25maWcuZGlmZgogICAgICBqZXJlbmtyYW50eiBhc2tzOiBJc24ndCB0aGlzIHdoYXQgYXByX3RhYmxlX21lcmdlIGlzIGZvcj8KICAgICAgbmQgcmVwbGllczogeWVwLiBCdXQgY29va2llcyB3b24ndCBiZSBtZXJnZWQsIGJlY2F1c2UgYnJvd3NlcnMgZG9uJ3QKICAgICAgICAgICAgICAgICAgc3VwcG9ydCBpdC4KICAgICAgamVyZW5rcmFudHo6IENvdWxkbid0IHdlIGNvcHkgdGhlIHRhYmxlIGFuZCBtZXJnZSB0aGUgdmFsdWVzIHNvbWVob3c/CiAgICAgICAgICAgICAgICAgICBUaGlzIGp1c3Qgc2VlbXMgbGlrZSBhIGxvdCBvZiBjb2RlIHRvIGR1cGxpY2F0ZSB3aGF0IHdlCiAgICAgICAgICAgICAgICAgICBoYXZlIGFscmVhZHkuICAqc2hydWcqCiAgICAgICsxOiBjb2xtCgpSRUxFQVNFIE5PTi1TSE9XU1RPUFBFUlMgQlVUIFdPVUxEIEJFIFJFQUwgTklDRSBUTyBXUkFQIFRIRVNFIFVQOgoKICAgKiBiYWNrcG9ydCBmaXggZm9yIG1vZF9sb2dfY29uZmlnIGxvZ2dpbmcgIjAiIGZvciAlYgogICAgICAgWzEuMyBQQVRDSF0gYmFja3BvcnQgMi4wIGZpeCB0byBsb2cgIi0iIGZvciAlYi4uLgogICAgICAgTWVzc2FnZS1JRDogPGNjNjc2NDhlMDQxMjIxMDY0NDU0MmY1NWRjQG1haWwuZ21haWwuY29tPgogICAgICAgICsxOiB0cmF3aWNrLCBuZAoKICAgKiBtb2Rfd2hhdGtpbGxlZHVzOiBsb2cgdGhlIGFkZHJlc3Mgb2YgYWN0aXZlIHJlcXVlc3RfcmVjIGFuZC9vcgogICAgIGNvbm5fcmVjIChpZiBhbnkpOyB0aGlzIHByb3ZpZGVzIGEgaGVhZCBzdGFydCB0byBjb3JlZHVtcAogICAgIGFuYWx5c2lzOyB0aGlzIHVwZGF0ZXMgQXBhY2hlIDEuMyB0byB0aGUgbGV2ZWwgb2YgY29kZSAKICAgICBJJ3ZlIGJlZW4gZ2l2aW5nIG91dCBmb3Igc29tZSB0aW1lCiAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvfnRyYXdpY2svd2hhdGtpbGxlZHVzLnR4dAogICAgICAgICsxOiB0cmF3aWNrLiBjb2xtCgogICAqIFBSOiAyNzAyMyBDb29raWUgY291bGQgbm90IGRlbGl2ZXJlZCBpZiB0aGUgY29va2llIG1hZGUgYmVmb3JlCiAgICAgICAgIHByb3h5IG1vZHVsZS4KCiAgICogaXNuJ3QgYXBfZGllKCkgYnJva2VuIHdpdGggcmVjb2duaXppbmcgcmVjdXJzaXZlIGVycm9ycwogICAgICAgTWVzc2FnZS1JZDogPDNGOEM1NkUzLjgwNTA1MDFAYXR0Z2xvYmFsLm5ldD4KICAgICAgICArMTogamVmZiwgamltCgogICAqIEN1cnJlbnQgdm90ZSBvbiAzIFBScyBmb3IgaW5jbHVzaW9uOgogICAgICBCdWd6ICMxNzg3NyAocGFzc2luZyBjaHVua2VkIGVuY29kaW5nIHRocnUgcHJveHkpCiAgICAgIChzdGlsbCBjaGVja2luZyBpZiBSRkMgY29tcGxpYW50Li4uIHZvdGUgaXMgb24gdGhlCiAgICAgICBjb3JyZWN0bmVzcyBvZiB0aGUgcGF0Y2ggY29kZSBvbmx5KS4KICAgICAgICArMTogamltLCBjaHVjaywgbWluZnJpbgogICAgICBCdWd6ICM5MTgxIChVbmFibGUgdG8gc2V0IGhlYWRlcnMgb24gbm9uLTJYWCByZXNwb25zZXMpCiAgICAgICAgKzE6IE1hcnRpbiwgSmltCiAgICAgIEduYXRzICMxMDI0NiAoQWRkIFByb3h5Q29ubkFsbG93IGRpcmVjdGl2ZSkKICAgICAgICArMDogTWFydGluIChvciByYXRoZXIgLS41LCBzZWUgZGV2QCBNZXNzYWdlCgkgICAgICAgICAgICA8MjAwMjA1MjkyMTUwNDguQTU2MDE1QGRlZWphaTIubWNoLmZzYy5uZXQ+KQoKICAgICogaHRwYXNzd2QuYyBhbmQgaHRkaWdlc3QuYyB1c2UgdG1wbmFtKCkuLi4gY29uc2lkZXIgdXNpbmcKICAgICAgbWtzdGVtcCgpIHdoZW4gYXZhaWxhYmxlLgogICAgICAgIE1lc3NhZ2UtSUQ6IDxQaW5lLkxOWC40LjMwLjAxMDIxOTE0NDExMDAuMjI1MDAtMTAwMDAwQGRheC5qb2guY2FtLmFjLnVrPgoJU3RhdHVzOgogICAgICAgIAogICAgKiBEZWFuJ3MgInVuZXNjYXBpbmcgaGVsbCIgKHVuZXNjYXBpbmcgdGhlIHZhcmlvdXMgVVJJIGNvbXBvbmVudHMKICAgICAgYXQgdGhlIHJpZ2h0IHRpbWUgYW5kIHBsYWNlLCBlc3AuIHVuZXNjYXBpbmcgdGhlIGhvc3QgbmFtZSkuCiAgICAgICAgTWVzc2FnZS1JRDogPFBpbmUuTE5YLjQuMzMuMDEwMjIzMTIzNTAzMS4xMTY5OS0xMDAwMDBAdHdpbmxhcmsuYXJjdGljLm9yZz4KICAgICAgICBTdGF0dXM6CgogICAgKiBNYXJ0aW4gb2JzZXJ2ZWQgYSBjb3JlIGR1bXAgYmVjYXVzZSBhIGlwYWRkcl9jaGFpbiBzdHJ1Y3QgY29udGFpbnMKICAgICAgYSBOVUxMLSJzZXJ2ZXIiIHBvaW50ZXIgd2hlbiBiZWluZyBkZXJlZmVyZW5jZWQgYnkgaW52b2tpbmcgImh0dHBkIC1TIi4KICAgICAgICBNZXNzYWdlLUlEOiA8MjAwMTAyMTMyMzE4NTQuQTIwOTMyQGRlZWphaTIubWNoLmZzYy5uZXQ+CiAgICAgICAgU3RhdHVzOiBXb3JrYXJvdW5kIGVuYWJsZWQuIENsZWFuIHNvbHV0aW9uIGNhbiBjb21lIGFmdGVyIDEuMy4xOQoKICAgICogbG9uZyBwYXRobmFtZXMgd2l0aCBtYW55IGNvbXBvbmVudHMgYW5kIG5vIEFsbG93T3ZlcnJpZGUgTm9uZQogICAgICBXb3JrYXJvdW5kIGlzIHRvIGRlZmluZSA8RGlyZWN0b3J5IC8+IHdpdGggQWxsb3dPdmVycmlkZSBOb25lLAogICAgICB3aGljaCBpcyBzb21ldGhpbmcgYWxsIHNpdGVzIHNob3VsZCBkbyBpbiBhbnkgY2FzZS4KCVN0YXR1czogTWFyYyB3YXMgbG9va2luZyBhdCBpdC4gIChXaWxsIGFza3MgJ3dhc24ndCB0aGlzIHBhdGNoZWQ/JykKCiAgICAqIFJvbmFsZCBUc2NoYWzkcidzIHBhdGNoIHRvIG1vZF9wcm94eSB0byBhbGxvdyBvdGhlciBtb2R1bGVzIHRvCiAgICAgIHNldCBoZWFkZXJzIHRvbyAobmVlZGVkIGJ5IG1vZF9hdXRoX2RpZ2VzdCkKICAgICAgICBNZXNzYWdlLUlEOiA8MTk5OTA3MDgwNzEyLkpBQTI4MjY5QGNoaWxsLmlubm92YXRpb24uY2g+CiAgICAgICAgU3RhdHVzOgoKCkF2YWlsYWJsZSBQYXRjaGVzIChNb3N0IGxpa2VseSwgd2lsbCBiZSBwb3J0ZWQgdG8gMi4wIGFzIGFwcHJvcHJpYXRlKToKCiAgICogIEEgcmV3cml0ZSBvZiBhcF91bnBhcnNlX3VyaV9jb21wb25lbnRzKCkgYnkgSmVmZnJleSBXLiBCYWtlcgogICAgIDxqd2Jha2VyQGFjbS5vcmc+IHRvIG1vcmUgZnVsbHkgY2xvc2Ugc29tZSBzZWdmYXVsdCBwb3RlbnRpYWwuCiAgICAgICAgTWVzc2FnZS1JRDogPFBpbmUuTE5YLjQuMjEuMDEwMjEwMjM1MDA2MC42ODE1LTIwMDAwMEBkZXNrdG9wPgogICAgICAgIFN0YXR1czogIEppbSArMSAoZm9yIDEuMy4xOSksIE1hcnRpbiArMAoKICAgICogQW5kcmV3IEZvcmQncyBwYXRjaCAoMTk5OS8xMi8wNSkgdG8gYWRkIGFic29sdXRlIHRpbWVzIHRvIG1vZF9leHBpcmVzCglNZXNzYWdlLUlEOiA8bTN3dnF0Y29xeC5mc2ZAaWNhcnVzLmRlbW9uLmNvLnVrPgoJU3RhdHVzOiBNYXJ0aW4gKzEsIEppbSArMSwgS2VuICsxIChvbiBjb25jZXB0KQoKICAgICogUmF5bW9uZCBTIEJyYW5kJ3MgcGF0aCB0byBtb2RfYXV0b2luZGV4IHRvIGZpeCB0aGUgaGVhZGVyL3JlYWRtZQogICAgICBpbmNsdWRlIHByb2Nlc3Npbmcgc28gdGhlIGVudmFyaWFibGVzIGFyZSBjb3JyZWN0IGZvciB0aGUgaW5jbHVkZWQKICAgICAgZG9jdW1lbnRzLiAgKEFjdHVhbGx5LCB0aGVyZSBhcmUgdHdvIHZhcmlhbnRzIGluIHRoZSBwYXRjaCBtZXNzYWdlLAogICAgICBmb3IgdHdvIGRpZmZlcmVudCB3YXlzIG9mIGRvaW5nIGl0LikKCU1lc3NhZ2UtSUQ6IDwzODRBQTI0Mi5COTNGOEI1QHJzYngubmV0PgoJU3RhdHVzOiBNYXJ0aW4gKzEoY29uY2VwdCkKCiAgICAqIEpheWFyYW0ncyBwYXRjaCAoMTAvMjcvOTkpIGZvciBidWdmaXggdG8gbW9kX2F1dG9pbmRleAogICAgICBJbmRleElnbm9yZSA8ZmlsZS1leHRlbnNpb24+IHNob3VsZCBoaWRlIHRoZSBmaWxlcyB3aXRoIHRoaXMgZmlsZS0KICAgICAgZXh0ZW5zaW9uIGluIGRpcmVjdG9yeSBsaXN0aW5ncy4gVGhpcyB3YXMgTk9UIGhhcHBlbmluZyBiZWNhdXNlIHRoZSAKICAgICAgdG90YWwgZmlsZW5hbWUgd2FzIGJlaW5nIGNvbXBhcmVkIHdpdGggdGhlIGZpbGUtZXh0ZW5zaW9uLgogICAgICBTdGF0dXM6IE1hcnRpbiArMSh1bnRlc3RlZCksIEtlbiArMSh1bnRlc3RlZCkKICAgICAgIAogICAgKiBTYWx2YWRvciBPcnRpeiBHYXJjaWEgPHNvZ0Btc2cuY29tLm14PicgcGF0Y2ggdG8gYWxsb3cgRGlyZWN0b3J5SW5kZXgKICAgICAgdG8gcmVmZXIgdG8gVVJJcyBmb3Igbm9uLXN0YXRpYyByZXNvdXJjZXMuCglNSUQ6IDxQaW5lLkxOWC40LjEwLjk5MDYwNDE0MTUzMzAuMTU3NzYtMTAwMDAwQHhpb21hcmEubXNnLmNvbS5teD4KCVN0YXR1czogS2VuICsxIChvbiBjb25jZXB0KSwgTGFycyArMSAob24gY29uY2VwdCkKCiAgICAqIEJyaWFuIEhhdmFyZCdzIHBhdGNoIHRvIHJlbW92ZSBkZXBlbmRlbmN5IG9mIG1vZF9hdXRoX2RibSBvbiBtb2RfYXV0aC4KICAgICAgKFBSIzI1OTgpCglNZXNzYWdlLUlEOiA8MTk5OTA1MTcwODMwLlNBQTMxNTQ5QHNpbGsuYXBhbmEub3JnLmF1PgoJU3RhdHVzOiBMYXJzICsxIChvbiBjb25jZXB0KSwgS2VuICsxIChvbiBjb25jZXB0KSwKICAgICAgICAgICAgICAgIE1hcnRpbiArMSh1bnRlc3RlZCkKCiAgICAqIEFpZGFuIEN1bGx5J3MgcGF0Y2ggdG8gYWxsb3cgYXNzaWdubWVudCBvZiAnb3duZXJzaGlwJyBvZiByZXNvdXJjZXMKICAgICAgdG8gZWl0aGVyIHRoZSBzZXJ2ZXIgVUlEIG9yIHRoZSBmaWxlJ3Mgb3duZXIuCglNZXNzYWdlLUlEOiA8MzczMDZDQjQuOEVBOUQ3NkNAR29sdXguQ29tPgoJU3RhdHVzOiBLZW4gKzEsIERlYW4gKzEsIFJhbmR5ICsxLCBMYXJzICswLCBKaW0gKzEKCkluIHByb2dyZXNzOgoKTmVlZHMgcGF0Y2g6CgogICAgKiBnZXRfcGF0aF9pbmZvIGJ1ZzsgYXBfZ2V0X3JlbW90ZV9ob3N0IHNob3VsZCBiZSBhcF92Zm9ybWF0dGVyIGluc3RlYWQuCiAgICAgIFNlZTogPFBpbmUuTE5YLjMuOTZkZzQuOTgwNDI3MDM0MzAxLjE2NjQ4UC0xMDAwMDBAdHdpbmxhcmsuYXJjdGljLm9yZz4KCiAgICAqIFVSSSBpc3N1ZXMKCS0gUkZDMjA2OCByZXF1aXJlcyBhIHNlcnZlciB0byByZWNvZ25pemUgaXRzIG93biBJUCBhZGRyKHMpIGluCglkb3Qgbm90YXRpb24sIHdlIGRvIHRoaXMgZmluZSBpZiB0aGUgdXNlciBmb2xsb3dzIHRoZQoJZG5zLWNhdmVhdHMgZG9jdW1lbnRhdGlvbi4uLiB3ZSBzaG91bGQgaGFuZGxlIGl0IGluIHRoZSBjYXNlCgl0aGUgdXNlciBkb2Vzbid0IGV2ZXIgc3VwcGx5IGEgZG90LW5vdGF0aW9uIGFkZHJlc3MuCgogICAgKiBQcm9ibGVtcyBkZWFsaW5nIHdpdGggLi1yb290ZWQgZG9tYWluIG5hbWVzIHN1Y2ggYXMgInR3aW5sYXJrLiIKICAgICAgICB2ZXJzdXMgInR3aW5sYXJrLmFyY3RpYy5vcmcuIi4gIFNlZSB0aGUgdGhyZWFkIGNvbnRhaW5pbmcKCU1lc3NhZ2UtSUQ6IDwxOTk4MDIwMzIxMTgxNy4wNjcyM0BkZWVqYWkubWNoLnNuaS5kZT4gZm9yIG1vcmUKCWRldGFpbHMuICBJbiBwYXJ0aWN1bGFyIHRoaXMgYWZmZWN0cyB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlCglwcm94eSBhbmQgdGhlIHZob3N0IG1lY2hhbmlzbS4KCiAgICAqIHByb3h5XypfY2Fub24gcm91dGluZXMgdXNlIHItPnByb3h5cmVxIGluY29ycmVjdGx5LiAgU2VlCgk8UGluZS5MTlguMy45NmRnNC45ODAzMDQwMzAwNTcuMTM2NTZPLTEwMDAwMEB0d2lubGFyay5hcmN0aWMub3JnPgoKT3BlbiBpc3N1ZXM6CgogICAgKiBTaG91bGQgd2UgcHJvdmlkZSBhIHdheSB0byBmb3JjZSBDdXN0b21FcnJvciByZXNwb25zZXMgcGFzdCBJRSdzCiAgICAgICdwcmV0dGlmeS1pZi1sZXNzLXRoYW4tTi1ieXRlcycgYm9nb3NpdHk/CgogICAgKiBnZW5lcmFsLzM3ODc6IFNFUlZFUl9QT1JUIGlzIGFsd2F5cyA4MCBpZiBjbGllbnQgY29tZXMgdG8gYW55IHBvcnQKICAgICAgPT4gbmVlZHMgcmV2aWV3IGJ5IHRoZSBwcm90b2NvbCBndXlzLCBJIHRoaW5rLgoKICAgICogQWxsIERCTXMgc3VmZmVyIGZyb20gY29uZnVzaW9uIGluIGRibW1hbmFnZSAocGVybCBzY3JpcHQpIHNpbmNlIHRoZQogICAgICAgIGRibW1hbmFnZSBjcmVhdGVzIGluIHRoZSBmaXJzdC1tYXRjaGVkIGRibSBmb3JtYXQuICBUaGlzIGlzIG5vdAogICAgICAgIG5lY2Vzc2FyaWx5IHRoZSBsaWJyYXJ5IHRoYXQgQXBhY2hlIHdhcyBidWlsdCB3aXRoLiAgQXVnaHQgdG8KICAgICAgICByZXdyaXRlIGRibW1hbmFnZSB3aXRoIHRoZSBwcm9wZXIgbGlicmFyeSBmb3IgY2xlYW4gYWRtaW5pc3RyYXRpb24uCgogICAgKiBNYXJjJ3Mgc29ja2V0IG9wdGlvbnMgbGlrZSBzb3VyY2Ugcm91dGluZyAoa2lsbCB0aGVtPykKCU1hcmMsIE1hcnRpbiBzYXkgWWVzCgogICAgKiBJbiBhcF9iY2xvc2UoKSB0aGVyZSdzIG5vIHRlc3QgdGhhdCAoZmItPmZkICE9IC0xKSAtLSBzbyBpdCdzCiAgICAgIHBvc3NpYmxlIHRoYXQgaXQnbGwgZG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgYm9ndXMgd2hlbiBpdCdzIAogICAgICB1c2VkIGZvciByZWFkLW9ubHkgdGhpbmdzLiAtIERlYW4gR2F1ZGV0CgogICAgKiBSb3kncyBIVFRQLzEuMSBXaXNobGlzdCBpdGVtczoKICAgICAgICAxKSBieXRlIHJhbmdlIGVycm9yIGhhbmRsaW5nCgogICAgKiB1c2Ugb2Ygc3Bhd252cCBpbiB1bmNvbXByZXNzX2NoaWxkIGluIG1vZF9taW1lX21hZ2ljIC0gZG9lc24ndAogICAgICB1c2UgdGhlIG5ldyBjaGlsZF9pbmZvIHN0cnVjdHVyZSwgaXMgdGhpcyBzdGlsbCBzYWZlPyAgTmVlZHMgdG8gYmUgCiAgICAgIGxvb2tlZCBhdC4KCiAgICAqIHN1ZXhlYyBkb2Vzbid0IHVuZGVyc3RhbmQgYXJndiBwYXJhbWV0ZXJzOyBlLmcuCgogICAgICAgIDwhLS0jZXhlYyBjbWQ9Ii4vbHMgLWwiIC0tPgoKICAgICAgZmFpbHMgZXZlbiB3aGVuICJscyIgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGJlY2F1c2Ugc3VleGVjIGlzIHRyeWluZwogICAgICB0byBzdGF0IGEgZmlsZSBjYWxsZWQgImxzIC1sIi4gIEEgcGF0Y2ggZm9yIHRoaXMgaXMgYXZhaWxhYmxlIGF0CgogICAgICAgIGh0dHA6Ly93d3cueG5ldC5jb20vfmVtYXJzaGFsL3N1ZXhlYy5kaWZmCgogICAgICBhbmQgaXQncyBub3QgYmFkIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgaGFuZGxlIHByb2dyYW1zIHdpdGggc3BhY2VzIGluCiAgICAgIHRoZSBmaWxlbmFtZSAodGhpbmsgd2luMzIsIG9yIHNhbWJhLW1vdW50ZWQgZmlsZXN5c3RlbXMpLiAgVGhlcmUgYXJlCiAgICAgIHNldmVyYWwgUFIncyB0byB0aGlzIGFuZCBJIGRvbid0IHNlZSBmb3Igc2VjdXJpdHkgcmVhc29ucyB3aHkgd2UgY2FuJ3QKICAgICAgYWNjb21vZGF0ZSBpdCwgdGhvdWdoIGl0IGRvZXMgYWRkIGNvbXBsZXhpdHkgdG8gc3VleGVjLmMuCiAgICAgIEFjY2VwdGluZyBxdW90ZWQgZXhlY3V0YWJsZSBuYW1lcyBzb2x2ZXMgdGhhdCBpc3N1ZSwgZXhjZXB0IHRoYXQgdGhlCiAgICAgIGV4ZWMgY21kPSIiIHBhcnNpbmcgbmVlZHMgdG8gYWNjZXB0IGVzY2FwZWQgcXVvdGVzLgogICAgICBQUiAjMTEyMAogICAgICBCcmlhbjogKzEKICAgICAgICBTdGF0dXM6IEFscmVhZHkgcmVzb2x2ZWQgaW4gQXBhY2hlIDIuMCAtIGV4ZWMgaXMgZGVmaW5lZCBhcyBwYXNzaW5nCiAgICAgICAgICAgICAgICB0aGUgY21kPSIiIGFyZ3VtZW50IGFzIGFyZ3ZbMF0sIHdoaWNoIG1lYW5zIGl0IGlzIC1vbmx5LSB0aGUKICAgICAgICAgICAgICAgIGZpbGUgbmFtZSB0byBleGVjdXRlICh3aXRoIHNwYWNlcyBhbGxvd2VkIGluIHRoZSBuYW1lLikKICAgICAgCldpbjMyL05ldHdhcmUgc3BlY2lmaWMgaXNzdWVzOgoKICAgICogbW9kX3Jld3JpdGUncyBjYWNoZSBpc24ndCB0aHJlYWRzYWZlLCBuZWVkcyBhIG11dGV4IG9uIFdpbjMyL05ldHdhcmUKICAgICAgKGFuZCBPUy8yPykKCiAgICAqIGFwcGFyZW50bHkgZWl0aGVyICJCcm93c2VyTWF0Y2giIG9yIHRoZSAibm9rZWVwYWxpdmUiIHZhcmlhYmxlCiAgICAgIGNhdXNlIGluc3RhYmlsaXR5IC0gc2VlIFBSIzE3MjkuCgoKQmluYXJpZXMgKDEuMy4zOSk6CgogUGxhdGZvcm0gICAgICAgICAgICAgICAgICAgICAgQXZhaWwuICBWb2x1bnRlZXIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMDAwOTY0ODA0QzAwLWlibS1haXg0LjMgICAgICAgbm8gICAgICBCaWxsIFN0b2RkYXJkCiA5MDAwXzcxNS1ocC1ocHV4MTEuMDAgICAgICAgICBubyAgICAgIEplZmYgVHJhd2ljawogOTAwMF83ODUtaHAtaHB1eDExLjAwICAgICAgICAgbm8gICAgICBDbGlmZiBXb29sbGV5CiBhbHBoYS1kZWMtb3NmMy4wICAgICAgICAgICAgICBubyAgICAgIFNhbWVlciBQYXJla2gKIGFscGhhLWRlYy1vc2Y0LjAgICAgICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0LCBLZW4gQ29hciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZHkgVGVyYnVzaAogYWxwaGEtd2hhdGV2ZXItbGludXgyICAgICAgICAgbm8gICAgICBSYW5keSBUZXJidXNoCiBhcm12NGwtd2hhdGV2ZXItbGludXgyICAgICAgICBubyAgICAgIFJhc211cyBMZXJkb3JmCiBocHBhMS4xLWhwLWhwdXgtMTAueCAgICAgICAgICBubyAgICAgIFJvYiBIYXJ0aWxsLCBSYW5keSBUZXJidXNoCiBpMzg2LWJlLWJlb3MgICAgICAgICAgICAgICAgICBubyAgICAgIERhdmlkIFJlaWQKIGkzODYtZGctZGd1eDUuNFIyLjAxICAgICAgICAgIG5vICAgICAgUmFuZHkgVGVyYnVzaAogaTM4Ni1zaWVtZW5zLXNpbml4NS40ICAgICAgICAgeWVzICAgICBNYXJ0aW4gS3JhZW1lcgogaTM4Ni1zbGFja3dhcmUtbGludXgoYS5vdXQpICAgbm8gICAgICBTYW1lZXIgUGFyZWtoCiBpMzg2LXN1bi1zb2xhcmlzMi41ICAgICAgICAgICBubyAgICAgIFNhbWVlciBQYXJla2gKIGkzODYtc3VuLXNvbGFyaXMyLjYgICAgICAgICAgIG5vICAgICAgUmFuZHkgVGVyYnVzaAogaTM4Ni1zdW4tc29sYXJpczIuNyAgICAgICAgICAgbm8gICAgICBDbGlmZiBTa29sbmljawogaTM4Ni1zdW4tc29sYXJpczIuOCAgICAgICAgICAgbm8gICAgICBBYXJvbiBCYW5uZXJ0CiBpMzg2LXVuaXh3YXJlLXN2cjQgICAgICAgICAgICBubyAgICAgIFNhbWVlciBQYXJla2gsIFJhbmR5IFRlcmJ1c2gKIGkzODYtdW5rbm93bi1saW51eChFTEYpICAgICAgIG5vICAgICAgQXJhbSBNaXJ6YWRlaCwgTWljaGFlbCBEb3VnbGFzcwogaTM4Ni11bmtub3duLW5ldEJTRC0xLjMuMiAgICAgbm8gICAgICBMYXJzIEVpbGVicmVjaHQsIFJhbmR5IFRlcmJ1c2gKIGkzODYtdW5rbm93bi1zY28zICAgICAgICAgICAgIG5vICAgICAgQmVuIExhdXJpZQogaTM4Ni11bmtub3duLXNjbzUgICAgICAgICAgICAgbm8gICAgICBCZW4gTGF1cmllCiBpMzg2LXdoYXRldmVyLWJzZGkgICAgICAgICAgICBubyAgICAgIERhdmlkIFJlaWQKIGkzODYtd2hhdGV2ZXItZnJlZWJzZDMuMCAgICAgIG5vICAgICAgRGlyay1XaWxsZW0gdmFuIEd1bGlrCiBpMzg2LXdoYXRldmVyLWZyZWVic2QzLjMgICAgICBubyAgICAgIEFzayBCam9lcm4gSGFuc2VuCiBpMzg2LXdoYXRldmVyLWZyZWVic2Q0LjAgICAgICBubyAgICAgIEFzayBCam9lcm4gSGFuc2VuCiBpMzg2LXdoYXRldmVyLWZyZWVic2Q0LjYgICAgICBubyAgICAgIEFhcm9uIEJhbm5lcnQKIGk1ODYtdW5rbm93bi1saW51eDIgICAgICAgICAgIG5vICAgICAgUmFsZiBTLiBFbmdlbHNjaGFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFycyBFaWxlYnJlY2h0LCBSYW5keSBUZXJidXNoCiBpNjg2LXBjLWZyZWVic2QzLjEgICAgICAgICAgICBubyAgICAgIFJhbGYgUy4gRW5nZWxzY2hhbGwKIGk2ODYtdW5rbm93bi1saW51eDIgICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0CiBpNjg2LXdoYXRldmVyLWN5Z3dpbiAgICAgICAgICBubyAgICAgIFN0aXBlIFRvbGoKIGk2ODYtd2hhdGV2ZXItbGludXgyICAgICAgICAgIG5vICAgICAgS2VuIENvYXIsIFJhbmR5IFRlcmJ1c2gKIGk2ODYtd2hhdGV2ZXItbGludXgyMiAgICAgICAgIG5vICAgICAgQWFyb24gQmFubmVydCwgR3JhaGFtIExlZ2dldHQKIGlhNjQtd2hhdGV2ZXItbGludXgyMiAgICAgICAgIG5vICAgICAgTWFydGluIEtyYWVtZXIKIGlhNjQtaHAtaHB1eDExLjIwICAgICAgICAgICAgIG5vICAgICAgQ2xpZmYgV29vbGxleQogbTY4ay1hcHBsZS1hdXgzLjEuMSAgICAgICAgICAgbm8gICAgICBKaW0gSmFnaWVsc2tpCiBtODhrLWRnLWRndXg1LjRSMi4wMSAgICAgICAgICBubyAgICAgIFNhbWVlciBwYXJla2gKIG04OGstbmV4dC1uZXh0ICAgICAgICAgICAgICAgIG5vICAgICAgUm9iIEhhcnRpbGwKIG1pcHMtZGVjLXVsdHJpeDQuNCAgICAgICAgICAgIG5vICAgICAgU2FtZWVyIFBhcmVraAogbWlwcy1zZ2ktaXJpeDUuMyAgICAgICAgICAgICAgbm8gICAgICBNYXJrIEltYnJpYW5jbywgUmFuZHkgVGVyYnVzaAogbWlwcy1zZ2ktaXJpeDYuMiAgICAgICAgICAgICAgbm8gICAgICBMYXJzIEVpbGVicmVjaHQsIFJhbmR5IFRlcmJ1c2gKIG1pcHMtc2dpLWlyaXg2LjQgICAgICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0CiBtaXBzLXNpZW1lbnMtcmVsaWFudHVuaXg1LjQgICB5ZXMgICAgIE1hcnRpbiBLcmFlbWVyCiBtaXBzLXVua25vd24tbGludXggICAgICAgICAgICBubyAgICAgIExhcnMgRWlsZWJyZWNodAogbmV0d2FyZSAgICAgICAgICAgICAgICAgICAgICAgeWVzICAgICBCcmFkIE5pY2hvbGVzIDxibmljaG9sZXNAbm92ZWxsLmNvbT4KIE9TLzIgICAgICAgICAgICAgICAgICAgICAgICAgIG5vICAgICAgQnJpYW4gSGF2YXJkCiBPUy8zOTAtMDkuMDAtMDIgICAgICAgICAgICAgICBubyAgICAgICAgICAgICAgICAgICAgIAogcG93ZXJwYytpMzg2LWFwcGxlLWRhcndpbjEuMiAgbm8gICAgICBXaWxmcmVkbyBTYW5jaGV6CiBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5NS41ICAgICBubyAgICAgIFdpbGZyZWRvIFNhbmNoZXoKIHBvd2VycGMtYXBwbGUtZGFyd2luNS41ICAgICAgIG5vICAgICAgQWFyb24gQmFubmVydAogcG93ZXJwYy1hcHBsZS1kYXJ3aW43LjAuMCAgICAgbm8gICAgICBKaW0gSmFnaWVsc2tpCiBwcGMtd2hhdGV2ZXItbGludXgyMiAgICAgICAgICBubyAgICAgIEdyYWhhbSBMZWdnZXR0CiByczYwMDAtaWJtLWFpeDMuMi41ICAgICAgICAgICBubyAgICAgIFNhbWVlciBQYXJla2gKIHJzNjAwMC1pYm0tYWl4NC4xICAgICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0CiByczYwMDAtaWJtLWFpeDQuMy54ICAgICAgICAgICBubyAgICAgIEJpbGwgU3RvZGRhcmQsIFJhbmR5IFRlcmJ1c2gKIHNwYXJjLXN1bi1zb2xhcmlzMi41ICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0LCBSYW5keSBUZXJidXNoCiBzcGFyYy1zdW4tc29sYXJpczIuNiAgICAgICAgICBubyAgICAgIExhcnMgRWlsZWJyZWNodAogc3BhcmMtc3VuLXNvbGFyaXMyLjcgICAgICAgICAgbm8gICAgICBDbGlmZiBTa29sbmljawogc3BhcmMtc3VuLXNvbGFyaXMyLjggICAgICAgICAgbm8gICAgICBKaW0gSmFnaWVsc2tpCiBzcGFyYy1zdW4tc3Vub3M0LjEuM19VMSAgICAgICBubyAgICAgIFNhbWVlciBQYXJla2gKIHNwYXJjLXVua25vd24tbGludXggICAgICAgICAgIG5vICAgICAgTGFycyBFaWxlYnJlY2h0LCBSYW5keSBUZXJidXNoCiBzdW40dS1zdW4tc29sYXJpczIuMjgwICAgICAgICBubyAgICAgIEplZmYgVHJhd2ljawogVFBGICAgICAgICAgICAgICAgICAgICAgICAgICAgbm8gICAgICBEYXZpZCBNY0NyZWVkeSwgQ2Fyb2x5biBXZWlzcwogd2luMzIgICAgICAgICAgICAgICAgICAgICAgICAgbm8gICAgICBXaWxsaWFtIFJvd2UKIHg4Ni1ic2Rvcy0zLnggICAgICAgICAgICAgICAgIG5vICAgICAgUmFuZHkgVGVyYnVzaAogeDg2LWJzZG9zLTQueCAgICAgICAgICAgICAgICAgbm8gICAgICBSYW5keSBUZXJidXNoCiB4ODYtb3BlbmJzZC0yLnggICAgICAgICAgICAgICBubyAgICAgIFJhbmR5IFRlcmJ1c2gKIHg4Ni1xbngtNC54ICAgICAgICAgICAgICAgICAgIG5vICAgICAgUmFuZHkgVGVyYnVzaAogeDg2XzY0LXdoYXRldmVyLWxpbnV4MjIgICAgICAgbm8gICAgICBBYXJvbiBCYW5uZXJ0Cg==