diff --git a/docs/categories/all.html b/docs/categories/all.html index 5f68deeb..b446812a 100644 --- a/docs/categories/all.html +++ b/docs/categories/all.html @@ -357,7 +357,7 @@

Yes Yes Yes - 6290 + 6313 @@ -380,7 +380,7 @@

Yes No No - 1182 + 1184 @@ -403,7 +403,7 @@

No Yes No - 1704 + 1705 @@ -466,7 +466,7 @@

Yes Yes Yes - 23390 + 23397 @@ -887,7 +887,7 @@

No Yes Yes - 21490 + 21503 @@ -933,7 +933,7 @@

No Yes Yes - 2870 + 2876 @@ -1045,7 +1045,7 @@

No Yes Yes - 330 + 331 @@ -1091,7 +1091,7 @@

Yes Yes Yes - 8893 + 8896 @@ -1197,7 +1197,7 @@

Yes Yes Yes - 15 + 16 @@ -1364,7 +1364,7 @@

No Yes No - 85 + 86 @@ -1433,7 +1433,7 @@

Yes Yes Yes - 1364 + 1366 @@ -1564,7 +1564,7 @@

No Yes Yes - 3478 + 3480 @@ -1587,7 +1587,7 @@

Yes Yes Yes - 1105 + 1110 @@ -1702,7 +1702,7 @@

No Yes Yes - 8555 + 8556 @@ -1880,7 +1880,7 @@

No Yes Yes - 4187 + 4188 @@ -1989,7 +1989,7 @@

No Yes No - 1640 + 1641 @@ -2033,7 +2033,7 @@

Yes Yes Yes - 2480 + 2481 @@ -2075,7 +2075,7 @@

Yes Yes Yes - 489 + 490 @@ -2098,7 +2098,7 @@

Yes Yes Yes - 913 + 914 @@ -2163,7 +2163,7 @@

Yes Yes No - 115 + 114 @@ -2209,7 +2209,7 @@

Yes Yes Yes - 781 + 782 @@ -2230,7 +2230,7 @@

No Yes Yes - 1096 + 1097 @@ -2341,7 +2341,7 @@

No Yes Yes - 2579 + 2580 @@ -2641,7 +2641,7 @@

No No Yes - 9494 + 9495 @@ -2710,7 +2710,7 @@

No Yes Yes - 6734 + 6736 @@ -2756,7 +2756,7 @@

No Yes Yes - 16940 + 16942 @@ -2777,7 +2777,7 @@

No Yes Yes - 4603 + 4604 @@ -2823,7 +2823,7 @@

Yes Yes Yes - 272 + 273 @@ -3279,7 +3279,7 @@

No Yes No - 5046 + 5050 @@ -3302,7 +3302,7 @@

No Yes No - 485 + 488 @@ -3415,7 +3415,7 @@

Yes Yes No - 3917 + 3919 @@ -3438,7 +3438,7 @@

No Yes No - 4357 + 4360 @@ -3484,7 +3484,7 @@

Yes Yes No - 900 + 901 @@ -3526,7 +3526,7 @@

Yes Yes Yes - 916 + 915 @@ -3637,7 +3637,7 @@

No Yes Yes - 12577 + 12581 @@ -4030,7 +4030,7 @@

Yes Yes No - 1281 + 1282 @@ -4053,7 +4053,7 @@

Yes Yes Yes - 1738 + 1742 @@ -4436,7 +4436,7 @@

Yes Yes Yes - 452 + 454 @@ -4524,7 +4524,7 @@

No Yes No - 70 + 71 @@ -4874,7 +4874,7 @@

No Yes No - 1974 + 1975 @@ -4897,7 +4897,7 @@

Yes Yes Yes - 2612 + 2617 @@ -4964,7 +4964,7 @@

Yes Yes No - 1388 + 1392 @@ -5033,7 +5033,7 @@

No Yes No - 419 + 420 @@ -5121,7 +5121,7 @@

No Yes No - 824 + 825 @@ -5144,7 +5144,7 @@

Yes Yes No - 1951 + 1959 @@ -5259,7 +5259,7 @@

No Yes Yes - 1484 + 1485 @@ -5282,7 +5282,7 @@

Yes Yes No - 64 + 66 @@ -5305,7 +5305,7 @@

No Yes No - 76290 + 76322 @@ -5328,7 +5328,7 @@

Yes Yes No - 26418 + 26422 @@ -5351,7 +5351,7 @@

Yes Yes No - 23390 + 23397 @@ -5393,7 +5393,7 @@

No Yes No - 6311 + 6314 @@ -5416,7 +5416,7 @@

No Yes No - 6120 + 6127 @@ -5439,7 +5439,7 @@

Yes Yes Yes - 5652 + 5657 @@ -5460,7 +5460,7 @@

No Yes No - 4094 + 4095 @@ -5525,7 +5525,7 @@

No Yes No - 2697 + 2698 @@ -5567,7 +5567,7 @@

No Yes No - 2343 + 2344 @@ -5588,7 +5588,7 @@

No Yes No - 2297 + 2299 @@ -5632,7 +5632,7 @@

No Yes No - 2084 + 2085 @@ -5653,7 +5653,7 @@

No Yes No - 1655 + 1658 @@ -5718,7 +5718,7 @@

No Yes No - 1338 + 1337 @@ -5781,7 +5781,7 @@

No Yes No - 920 + 921 @@ -5802,7 +5802,7 @@

No Yes No - 836 + 837 @@ -5823,7 +5823,7 @@

No Yes No - 812 + 813 @@ -5844,7 +5844,7 @@

No Yes No - 807 + 808 @@ -5909,7 +5909,7 @@

Yes Yes No - 677 + 678 @@ -6035,7 +6035,7 @@

No Yes No - 513 + 512 @@ -6056,7 +6056,7 @@

No Yes No - 498 + 499 @@ -6140,7 +6140,7 @@

No Yes No - 456 + 457 @@ -6203,7 +6203,7 @@

No Yes No - 419 + 420 @@ -6352,7 +6352,7 @@

No Yes No - 362 + 363 @@ -6436,7 +6436,7 @@

No Yes No - 333 + 334 @@ -6520,7 +6520,7 @@

No Yes No - 301 + 302 @@ -6604,7 +6604,7 @@

No Yes No - 268 + 271 @@ -6648,7 +6648,7 @@

No Yes No - 250 + 251 @@ -6986,7 +6986,7 @@

No Yes No - 198 + 199 @@ -7091,7 +7091,7 @@

No Yes No - 187 + 188 @@ -7133,7 +7133,7 @@

No Yes No - 184 + 185 @@ -7597,7 +7597,7 @@

Yes Yes No - 113 + 115 @@ -7786,7 +7786,7 @@

No Yes No - 104 + 105 @@ -9518,7 +9518,7 @@

Yes Yes No - 35 + 36 @@ -10442,7 +10442,7 @@

Yes Yes No - 20 + 21 @@ -10757,7 +10757,7 @@

No Yes No - 18 + 19 @@ -11095,7 +11095,7 @@

No Yes No - 17 + 18 @@ -16876,7 +16876,7 @@

No Yes No - 3 + 4 @@ -24751,7 +24751,7 @@

Yes Yes No - 2249 + 2253 @@ -25318,7 +25318,7 @@

No Yes Yes - 2907 + 2912 @@ -27023,7 +27023,7 @@

Yes Yes Yes - 670 + 671 @@ -27086,7 +27086,7 @@

No Yes No - 270 + 271 @@ -27107,7 +27107,7 @@

No Yes No - 26657 + 26676 @@ -31455,7 +31455,7 @@

No No No - 15 + 14 @@ -31612,7 +31612,7 @@

No No No - 167 + 168 @@ -32199,7 +32199,7 @@

No Yes Yes - 2587 + 2588 @@ -33628,7 +33628,7 @@

Scalar (link)

Stars - 6290 + 6313 Watchers @@ -33644,7 +33644,7 @@

Scalar (link)

Last Updated - 2024-10-07T00:58:53Z + 2024-10-08T02:46:47Z Archived @@ -33679,7 +33679,7 @@

Scramble (link)

Stars - 1182 + 1184 Watchers @@ -33695,7 +33695,7 @@

Scramble (link)

Last Updated - 2024-10-06T14:56:36Z + 2024-10-07T13:29:20Z Archived @@ -33730,7 +33730,7 @@

Scribe (link)

Stars - 1704 + 1705 Watchers @@ -33746,7 +33746,7 @@

Scribe (link)

Last Updated - 2024-10-05T15:01:33Z + 2024-10-07T05:37:08Z Archived @@ -33883,11 +33883,11 @@

ReDoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -33899,7 +33899,7 @@

ReDoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived @@ -34052,7 +34052,7 @@

OpenAPI-UI (link)

Last Updated - 2024-10-04T15:59:58Z + 2024-10-07T15:02:28Z Archived @@ -34095,7 +34095,7 @@

oasdiff (link)

Forks - 62 + 63 Created @@ -34103,7 +34103,7 @@

oasdiff (link)

Last Updated - 2024-10-05T14:51:58Z + 2024-10-07T08:42:14Z Archived @@ -34852,7 +34852,7 @@

OpenAPI Generator (link)

Stars - 21490 + 21503 Watchers @@ -34860,7 +34860,7 @@

OpenAPI Generator (link)

Forks - 6505 + 6507 Created @@ -34868,7 +34868,7 @@

OpenAPI Generator (link)

Last Updated - 2024-10-07T03:28:34Z + 2024-10-08T03:22:05Z Archived @@ -34954,7 +34954,7 @@

Kiota Api Client Generator (link)

Stars - 2870 + 2876 Watchers @@ -34962,7 +34962,7 @@

Kiota Api Client Generator (link)

Forks - 197 + 198 Created @@ -34970,7 +34970,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-10-05T18:30:32Z + 2024-10-07T22:44:15Z Archived @@ -35021,7 +35021,7 @@

FabriKt (link)

Last Updated - 2024-10-06T19:26:04Z + 2024-10-07T13:31:38Z Archived @@ -35209,7 +35209,7 @@

VSCode OpenAPI Editor (link)

Stars - 330 + 331 Watchers @@ -35225,7 +35225,7 @@

VSCode OpenAPI Editor (link)

Last Updated - 2024-10-04T14:23:57Z + 2024-10-07T16:23:39Z Archived @@ -35311,7 +35311,7 @@

Swagger Editor (link)

Stars - 8893 + 8896 Watchers @@ -35327,7 +35327,7 @@

Swagger Editor (link)

Last Updated - 2024-10-06T22:02:51Z + 2024-10-07T15:59:07Z Archived @@ -35566,7 +35566,7 @@

Hackolade (link)

Stars - 15 + 16 Watchers @@ -35582,7 +35582,7 @@

Hackolade (link)

Last Updated - 2024-10-02T15:06:19Z + 2024-10-07T18:59:02Z Archived @@ -35974,7 +35974,7 @@

Response2Schema (link)

Stars - 85 + 86 Watchers @@ -35990,7 +35990,7 @@

Response2Schema (link)

Last Updated - 2024-10-02T23:38:55Z + 2024-10-08T01:04:36Z Archived @@ -36127,7 +36127,7 @@

Microcks (link)

Stars - 1364 + 1366 Watchers @@ -36143,7 +36143,7 @@

Microcks (link)

Last Updated - 2024-10-05T14:33:11Z + 2024-10-07T19:34:03Z Archived @@ -36433,7 +36433,7 @@

tsoa (link)

Stars - 3478 + 3480 Watchers @@ -36449,7 +36449,7 @@

tsoa (link)

Last Updated - 2024-10-05T01:53:14Z + 2024-10-08T01:22:31Z Archived @@ -36484,7 +36484,7 @@

@hey-api/openapi-ts (link)

Stars - 1105 + 1110 Watchers @@ -36500,7 +36500,7 @@

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T01:51:17Z + 2024-10-07T22:15:49Z Archived @@ -36551,7 +36551,7 @@

Vert.x Web Api Contract (link)

Last Updated - 2024-10-06T04:26:21Z + 2024-10-07T21:44:05Z Archived @@ -36739,11 +36739,11 @@

API Platform (link)

Stars - 8555 + 8556 Watchers - 213 + 214 Forks @@ -36755,7 +36755,7 @@

API Platform (link)

Last Updated - 2024-10-06T10:41:47Z + 2024-10-07T15:42:36Z Archived @@ -37061,7 +37061,7 @@

@nestjs/swagger (link)

Last Updated - 2024-10-06T13:21:43Z + 2024-10-07T22:07:56Z Archived @@ -37147,7 +37147,7 @@

Dredd (link)

Stars - 4187 + 4188 Watchers @@ -37163,7 +37163,7 @@

Dredd (link)

Last Updated - 2024-10-04T12:23:14Z + 2024-10-07T08:16:50Z Archived @@ -37367,7 +37367,7 @@

portman (link)

Last Updated - 2024-10-04T15:40:21Z + 2024-10-07T18:29:12Z Archived @@ -37402,7 +37402,7 @@

Step CI (link)

Stars - 1640 + 1641 Watchers @@ -37418,7 +37418,7 @@

Step CI (link)

Last Updated - 2024-10-07T00:52:57Z + 2024-10-07T11:58:08Z Archived @@ -37504,7 +37504,7 @@

Spectral (link)

Stars - 2480 + 2481 Watchers @@ -37520,7 +37520,7 @@

Spectral (link)

Last Updated - 2024-10-06T10:51:51Z + 2024-10-07T23:20:37Z Archived @@ -37606,7 +37606,7 @@

OpenAPI Validator (link)

Stars - 489 + 490 Watchers @@ -37622,7 +37622,7 @@

OpenAPI Validator (link)

Last Updated - 2024-10-03T18:28:58Z + 2024-10-07T15:37:31Z Archived @@ -37657,7 +37657,7 @@

Redocly CLI (link)

Stars - 913 + 914 Watchers @@ -37673,7 +37673,7 @@

Redocly CLI (link)

Last Updated - 2024-10-04T12:09:46Z + 2024-10-07T11:21:39Z Archived @@ -37810,7 +37810,7 @@

openapi_first (link)

Stars - 115 + 114 Watchers @@ -37826,7 +37826,7 @@

openapi_first (link)

Last Updated - 2024-10-03T21:18:22Z + 2024-10-07T05:14:40Z Archived @@ -37912,7 +37912,7 @@

swagger-parser (link)

Stars - 781 + 782 Watchers @@ -37928,7 +37928,7 @@

swagger-parser (link)

Last Updated - 2024-10-04T22:29:51Z + 2024-10-07T05:55:41Z Archived @@ -37963,11 +37963,11 @@

APIDevTools/swagger-parser (link)

Stars - 1096 + 1097 Watchers - 18 + 19 Forks @@ -37979,7 +37979,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-10-06T21:05:01Z + 2024-10-07T18:11:29Z Archived @@ -38218,7 +38218,7 @@

kin-openapi (link)

Stars - 2579 + 2580 Watchers @@ -38234,7 +38234,7 @@

kin-openapi (link)

Last Updated - 2024-10-04T17:58:45Z + 2024-10-07T06:55:17Z Archived @@ -38932,7 +38932,7 @@

go-swagger (link)

Stars - 9494 + 9495 Watchers @@ -38948,7 +38948,7 @@

go-swagger (link)

Last Updated - 2024-10-06T18:02:33Z + 2024-10-07T16:04:37Z Archived @@ -39085,7 +39085,7 @@

NSwag (link)

Stars - 6734 + 6736 Watchers @@ -39093,7 +39093,7 @@

NSwag (link)

Forks - 1290 + 1291 Created @@ -39101,7 +39101,7 @@

NSwag (link)

Last Updated - 2024-10-06T13:46:59Z + 2024-10-07T16:45:25Z Archived @@ -39187,7 +39187,7 @@

Swagger-Codegen (link)

Stars - 16940 + 16942 Watchers @@ -39195,7 +39195,7 @@

Swagger-Codegen (link)

Forks - 6028 + 6029 Created @@ -39203,7 +39203,7 @@

Swagger-Codegen (link)

Last Updated - 2024-10-06T16:45:35Z + 2024-10-07T23:21:58Z Archived @@ -39238,11 +39238,11 @@

Azure AutoRest (link)

Stars - 4603 + 4604 Watchers - 898 + 899 Forks @@ -39254,7 +39254,7 @@

Azure AutoRest (link)

Last Updated - 2024-10-06T11:32:11Z + 2024-10-07T06:35:23Z Archived @@ -39340,7 +39340,7 @@

oas (link)

Stars - 272 + 273 Watchers @@ -39356,7 +39356,7 @@

oas (link)

Last Updated - 2024-09-16T17:32:39Z + 2024-10-07T04:18:46Z Archived @@ -40019,7 +40019,7 @@

cats (link)

Last Updated - 2024-10-06T20:07:05Z + 2024-10-07T19:33:11Z Archived @@ -40411,7 +40411,7 @@

mitmproxy2swagger (link)

Stars - 5046 + 5050 Watchers @@ -40427,7 +40427,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-10-07T01:48:17Z + 2024-10-08T02:05:58Z Archived @@ -40462,7 +40462,7 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 485 + 488 Watchers @@ -40478,7 +40478,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T02:17:34Z + 2024-10-07T21:08:40Z Archived @@ -40717,7 +40717,7 @@

OpenAPI DevTools (link)

Stars - 3917 + 3919 Watchers @@ -40733,7 +40733,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-10-07T01:48:50Z + 2024-10-07T21:22:51Z Archived @@ -40768,7 +40768,7 @@

TypeSpec (link)

Stars - 4357 + 4360 Watchers @@ -40784,7 +40784,7 @@

TypeSpec (link)

Last Updated - 2024-10-06T19:26:20Z + 2024-10-08T03:16:12Z Archived @@ -40870,7 +40870,7 @@

Restish (link)

Stars - 900 + 901 Watchers @@ -40886,7 +40886,7 @@

Restish (link)

Last Updated - 2024-10-04T10:34:48Z + 2024-10-07T15:46:06Z Archived @@ -40972,7 +40972,7 @@

openapi-to-postman (link)

Stars - 916 + 915 Watchers @@ -40988,7 +40988,7 @@

openapi-to-postman (link)

Last Updated - 2024-10-05T05:29:45Z + 2024-10-07T15:49:03Z Archived @@ -41039,7 +41039,7 @@

openapi-format (link)

Last Updated - 2024-10-06T12:30:26Z + 2024-10-07T17:49:24Z Archived @@ -41227,11 +41227,11 @@

OWASP ZAP (link)

Stars - 12577 + 12581 Watchers - 394 + 395 Forks @@ -41243,7 +41243,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-06T03:55:45Z + 2024-10-07T19:00:47Z Archived @@ -41541,7 +41541,7 @@

OpenAPI HttpFoundation Testing (link) Forks - 13 + 14 Created @@ -41549,7 +41549,7 @@

OpenAPI HttpFoundation Testing (link) Last Updated - 2024-10-04T22:48:16Z + 2024-10-07T15:35:49Z Archived @@ -41796,7 +41796,7 @@

Django REST Framework (link)

Forks - 6818 + 6819 Created @@ -41804,7 +41804,7 @@

Django REST Framework (link)

Last Updated - 2024-10-07T02:54:51Z + 2024-10-07T20:08:01Z Archived @@ -42145,7 +42145,7 @@

openapi-python-client (link)

Stars - 1281 + 1282 Watchers @@ -42161,7 +42161,7 @@

openapi-python-client (link)

Last Updated - 2024-10-05T09:38:50Z + 2024-10-07T23:55:25Z Archived @@ -42196,7 +42196,7 @@

Elements (link)

Stars - 1738 + 1742 Watchers @@ -42212,7 +42212,7 @@

Elements (link)

Last Updated - 2024-10-06T18:16:37Z + 2024-10-07T14:30:18Z Archived @@ -42620,7 +42620,7 @@

kotlin-openapi3-dsl (link)

Last Updated - 2024-10-02T16:47:49Z + 2024-10-07T21:38:21Z Archived @@ -42765,7 +42765,7 @@

OpenAPI Commander (link)

Forks - 2 + 3 Created @@ -42824,7 +42824,7 @@

Counterfact (link)

Last Updated - 2024-10-06T21:05:56Z + 2024-10-08T00:13:04Z Archived @@ -43063,7 +43063,7 @@

libopenapi (link)

Stars - 452 + 454 Watchers @@ -43079,7 +43079,7 @@

libopenapi (link)

Last Updated - 2024-10-06T11:15:58Z + 2024-10-08T02:08:31Z Archived @@ -43267,7 +43267,7 @@

ABAP OpenAPI Client & Server Genera Stars - 70 + 71 Watchers @@ -43283,7 +43283,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2024-10-04T13:27:44Z + 2024-10-07T18:40:44Z Archived @@ -43538,7 +43538,7 @@

Specmatic (link)

Last Updated - 2024-10-06T20:18:26Z + 2024-10-07T07:43:09Z Archived @@ -43589,7 +43589,7 @@

openapi-changes (link)

Last Updated - 2024-10-03T04:43:42Z + 2024-10-08T02:41:54Z Archived @@ -44083,7 +44083,7 @@

rswag (link)

Stars - 1974 + 1975 Watchers @@ -44099,7 +44099,7 @@

rswag (link)

Last Updated - 2024-10-06T13:29:50Z + 2024-10-07T23:32:46Z Archived @@ -44134,7 +44134,7 @@

🌿 Fern (link)

Stars - 2612 + 2617 Watchers @@ -44150,7 +44150,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T02:40:03Z + 2024-10-07T23:52:22Z Archived @@ -44287,7 +44287,7 @@

Swift OpenAPI Generator (link)

Stars - 1388 + 1392 Watchers @@ -44303,7 +44303,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-10-06T20:45:13Z + 2024-10-07T22:58:19Z Archived @@ -44440,7 +44440,7 @@

typeconv (link)

Stars - 419 + 420 Watchers @@ -44456,7 +44456,7 @@

typeconv (link)

Last Updated - 2024-10-01T21:08:48Z + 2024-10-08T00:19:20Z Archived @@ -44644,7 +44644,7 @@

Fuego (link)

Stars - 824 + 825 Watchers @@ -44660,7 +44660,7 @@

Fuego (link)

Last Updated - 2024-10-06T11:40:38Z + 2024-10-07T17:50:31Z Archived @@ -44695,7 +44695,7 @@

Huma (link)

Stars - 1951 + 1959 Watchers @@ -44711,7 +44711,7 @@

Huma (link)

Last Updated - 2024-10-07T01:18:36Z + 2024-10-08T00:58:26Z Archived @@ -44754,7 +44754,7 @@

openapi-merge (link)

Forks - 25 + 26 Created @@ -44813,7 +44813,7 @@

OpenAPI::Modern (link)

Last Updated - 2024-10-01T17:04:52Z + 2024-10-07T20:58:11Z Archived @@ -44950,7 +44950,7 @@

widdershins (link)

Stars - 1484 + 1485 Watchers @@ -44966,7 +44966,7 @@

widdershins (link)

Last Updated - 2024-10-03T14:42:22Z + 2024-10-07T10:14:01Z Archived @@ -45001,11 +45001,11 @@

Zudoku (link)

Stars - 64 + 66 Watchers - 3 + 4 Forks @@ -45017,7 +45017,7 @@

Zudoku (link)

Last Updated - 2024-10-07T03:32:42Z + 2024-10-07T18:01:20Z Archived @@ -45052,15 +45052,15 @@

FastAPI (link)

Stars - 76290 + 76322 Watchers - 678 + 679 Forks - 6433 + 6437 Created @@ -45068,7 +45068,7 @@

FastAPI (link)

Last Updated - 2024-10-07T03:24:57Z + 2024-10-08T02:24:52Z Archived @@ -45103,7 +45103,7 @@

swagger-ui (link)

Stars - 26418 + 26422 Watchers @@ -45111,7 +45111,7 @@

swagger-ui (link)

Forks - 8927 + 8929 Created @@ -45119,7 +45119,7 @@

swagger-ui (link)

Last Updated - 2024-10-07T03:07:20Z + 2024-10-08T00:54:07Z Archived @@ -45154,11 +45154,11 @@

Redoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -45170,7 +45170,7 @@

Redoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived @@ -45221,7 +45221,7 @@

swagger-core (link)

Last Updated - 2024-10-06T16:45:42Z + 2024-10-07T12:26:55Z Archived @@ -45256,7 +45256,7 @@

mockoon (link)

Stars - 6311 + 6314 Watchers @@ -45272,7 +45272,7 @@

mockoon (link)

Last Updated - 2024-10-07T01:39:27Z + 2024-10-07T22:48:23Z Archived @@ -45307,7 +45307,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 6120 + 6127 Watchers @@ -45315,7 +45315,7 @@

OpenAPI Server Code Generator (oapi-cod Forks - 845 + 846 Created @@ -45323,7 +45323,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-10-07T03:12:59Z + 2024-10-08T02:48:21Z Archived @@ -45358,7 +45358,7 @@

OpenAPI TypeScript (link)

Stars - 5652 + 5657 Watchers @@ -45374,7 +45374,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T01:12:43Z + 2024-10-07T22:51:52Z Archived @@ -45409,7 +45409,7 @@

knife4j (link)

Stars - 4094 + 4095 Watchers @@ -45425,7 +45425,7 @@

knife4j (link)

Last Updated - 2024-10-05T13:45:41Z + 2024-10-07T13:01:14Z Archived @@ -45562,7 +45562,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2697 + 2698 Watchers @@ -45578,7 +45578,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2024-10-06T19:15:39Z + 2024-10-07T13:26:49Z Archived @@ -45629,7 +45629,7 @@

swagger-js (link)

Last Updated - 2024-10-06T16:45:56Z + 2024-10-07T23:23:51Z Archived @@ -45664,7 +45664,7 @@

drf-spectacular (link)

Stars - 2343 + 2344 Watchers @@ -45680,7 +45680,7 @@

drf-spectacular (link)

Last Updated - 2024-10-06T17:35:11Z + 2024-10-07T16:24:53Z Archived @@ -45715,7 +45715,7 @@

msgspec (link)

Stars - 2297 + 2299 Watchers @@ -45731,7 +45731,7 @@

msgspec (link)

Last Updated - 2024-10-07T01:37:35Z + 2024-10-07T09:58:52Z Archived @@ -45774,7 +45774,7 @@

Schemathesis (link)

Forks - 159 + 161 Created @@ -45817,7 +45817,7 @@

gnostic (link)

Stars - 2084 + 2085 Watchers @@ -45833,7 +45833,7 @@

gnostic (link)

Last Updated - 2024-10-03T13:58:50Z + 2024-10-08T03:24:46Z Archived @@ -45868,7 +45868,7 @@

rapidoc (link)

Stars - 1655 + 1658 Watchers @@ -45884,7 +45884,7 @@

rapidoc (link)

Last Updated - 2024-10-06T19:54:04Z + 2024-10-07T23:08:54Z Archived @@ -46021,7 +46021,7 @@

ogen (link)

Stars - 1338 + 1337 Watchers @@ -46037,7 +46037,7 @@

ogen (link)

Last Updated - 2024-10-06T20:45:46Z + 2024-10-07T20:11:50Z Archived @@ -46088,7 +46088,7 @@

apispec (link)

Last Updated - 2024-10-01T18:51:43Z + 2024-10-07T12:28:15Z Archived @@ -46139,7 +46139,7 @@

apiflask (link)

Last Updated - 2024-10-04T23:22:12Z + 2024-10-07T18:55:18Z Archived @@ -46174,7 +46174,7 @@

zod-to-openapi (link)

Stars - 920 + 921 Watchers @@ -46190,7 +46190,7 @@

zod-to-openapi (link)

Last Updated - 2024-10-06T18:43:57Z + 2024-10-07T09:55:00Z Archived @@ -46225,7 +46225,7 @@

json-schema-validator (link)

Stars - 836 + 837 Watchers @@ -46241,7 +46241,7 @@

json-schema-validator (link)

Last Updated - 2024-09-28T08:20:19Z + 2024-10-07T09:17:20Z Archived @@ -46276,7 +46276,7 @@

openapi-diff (link)

Stars - 812 + 813 Watchers @@ -46292,7 +46292,7 @@

openapi-diff (link)

Last Updated - 2024-10-05T14:19:22Z + 2024-10-08T01:06:53Z Archived @@ -46327,7 +46327,7 @@

studio (link)

Stars - 807 + 808 Watchers @@ -46343,7 +46343,7 @@

studio (link)

Last Updated - 2024-10-03T14:51:00Z + 2024-10-07T05:01:19Z Archived @@ -46480,7 +46480,7 @@

openapi.tools (link)

Stars - 677 + 678 Watchers @@ -46496,7 +46496,7 @@

openapi.tools (link)

Last Updated - 2024-10-03T10:39:49Z + 2024-10-07T11:29:35Z Archived @@ -46786,7 +46786,7 @@

stackql (link)

Stars - 513 + 512 Watchers @@ -46802,7 +46802,7 @@

stackql (link)

Last Updated - 2024-10-04T04:16:22Z + 2024-10-07T12:57:33Z Archived @@ -46837,7 +46837,7 @@

docusaurus-openapi (link)

Stars - 498 + 499 Watchers @@ -46853,7 +46853,7 @@

docusaurus-openapi (link)

Last Updated - 2024-10-05T02:53:36Z + 2024-10-07T23:20:36Z Archived @@ -47041,7 +47041,7 @@

swagger-autogen (link)

Stars - 456 + 457 Watchers @@ -47057,7 +47057,7 @@

swagger-autogen (link)

Last Updated - 2024-10-02T14:49:43Z + 2024-10-07T17:17:52Z Archived @@ -47194,7 +47194,7 @@

typeconv (link)

Stars - 419 + 420 Watchers @@ -47210,7 +47210,7 @@

typeconv (link)

Last Updated - 2024-10-01T21:08:48Z + 2024-10-08T00:19:20Z Archived @@ -47551,7 +47551,7 @@

rest (link)

Stars - 362 + 363 Watchers @@ -47567,7 +47567,7 @@

rest (link)

Last Updated - 2024-10-06T10:49:49Z + 2024-10-08T00:38:45Z Archived @@ -47755,7 +47755,7 @@

beacon-apis (link)

Stars - 333 + 334 Watchers @@ -47771,7 +47771,7 @@

beacon-apis (link)

Last Updated - 2024-10-05T10:18:58Z + 2024-10-07T20:41:15Z Archived @@ -47959,7 +47959,7 @@

esmerald (link)

Stars - 301 + 302 Watchers @@ -47975,7 +47975,7 @@

esmerald (link)

Last Updated - 2024-10-04T18:11:07Z + 2024-10-07T04:54:44Z Archived @@ -48163,7 +48163,7 @@

zod-openapi (link)

Stars - 268 + 271 Watchers @@ -48179,7 +48179,7 @@

zod-openapi (link)

Last Updated - 2024-10-07T02:29:17Z + 2024-10-08T02:11:31Z Archived @@ -48265,7 +48265,7 @@

openapi-go (link)

Stars - 250 + 251 Watchers @@ -48281,7 +48281,7 @@

openapi-go (link)

Last Updated - 2024-10-04T18:06:22Z + 2024-10-07T12:15:01Z Archived @@ -48332,7 +48332,7 @@

znai (link)

Last Updated - 2024-10-05T22:30:52Z + 2024-10-07T23:13:59Z Archived @@ -48587,7 +48587,7 @@

prance (link)

Last Updated - 2024-09-15T17:46:25Z + 2024-10-07T20:56:50Z Archived @@ -49081,15 +49081,15 @@

typescript-backend-toolkit (link)

Stars - 198 + 199 Watchers - 2 + 3 Forks - 35 + 36 Created @@ -49097,7 +49097,7 @@

typescript-backend-toolkit (link)

Last Updated - 2024-10-06T13:36:22Z + 2024-10-07T08:26:56Z Archived @@ -49336,7 +49336,7 @@

refitter (link)

Stars - 187 + 188 Watchers @@ -49352,7 +49352,7 @@

refitter (link)

Last Updated - 2024-10-03T10:32:50Z + 2024-10-07T12:27:22Z Archived @@ -49438,7 +49438,7 @@

speakeasy (link)

Stars - 184 + 185 Watchers @@ -49454,7 +49454,7 @@

speakeasy (link)

Last Updated - 2024-10-06T21:32:10Z + 2024-10-07T23:27:50Z Archived @@ -49658,7 +49658,7 @@

apiclientcodegen (link)

Last Updated - 2024-10-06T22:03:59Z + 2024-10-07T12:09:42Z Archived @@ -50015,7 +50015,7 @@

deeptest (link)

Last Updated - 2024-10-07T02:52:54Z + 2024-10-08T02:35:11Z Archived @@ -50560,7 +50560,7 @@

learn.openapis.org (link)

Stars - 113 + 115 Watchers @@ -50576,7 +50576,7 @@

learn.openapis.org (link)

Last Updated - 2024-09-26T17:20:06Z + 2024-10-07T20:58:53Z Archived @@ -50780,7 +50780,7 @@

moclojer (link)

Last Updated - 2024-10-03T23:23:07Z + 2024-10-07T17:53:01Z Archived @@ -50874,7 +50874,7 @@

api-docs (link)

Forks - 188 + 187 Created @@ -51019,7 +51019,7 @@

go-swagger3 (link)

Stars - 104 + 105 Watchers @@ -51035,7 +51035,7 @@

go-swagger3 (link)

Last Updated - 2024-10-07T01:19:56Z + 2024-10-08T00:38:32Z Archived @@ -51137,7 +51137,7 @@

tools.openapis.org (link)

Last Updated - 2024-10-06T03:37:32Z + 2024-10-07T03:37:14Z Archived @@ -51239,7 +51239,7 @@

openapi-to-plantuml (link)

Last Updated - 2024-10-01T17:26:27Z + 2024-10-07T17:29:05Z Archived @@ -52514,7 +52514,7 @@

api-oas-checker (link)

Last Updated - 2024-10-02T12:57:21Z + 2024-10-07T09:08:21Z Archived @@ -53169,7 +53169,7 @@

openapi-petstore (link)

Forks - 43 + 44 Created @@ -53534,7 +53534,7 @@

swagger-editor-validate (link)

Last Updated - 2024-10-04T05:02:17Z + 2024-10-07T04:46:12Z Archived @@ -53687,7 +53687,7 @@

javalin-openapi (link)

Last Updated - 2024-09-30T16:59:32Z + 2024-10-07T11:20:12Z Archived @@ -53942,7 +53942,7 @@

backbase-openapi-tools (link)

Last Updated - 2024-10-04T14:41:08Z + 2024-10-07T13:20:01Z Archived @@ -53985,7 +53985,7 @@

openapi.jl (link)

Forks - 7 + 8 Created @@ -55005,7 +55005,7 @@

spring-boot-swagger-3-example (link) Forks - 26 + 27 Created @@ -55201,7 +55201,7 @@

vitepress-openapi (link)

Stars - 35 + 36 Watchers @@ -55209,7 +55209,7 @@

vitepress-openapi (link)

Forks - 7 + 8 Created @@ -55217,7 +55217,7 @@

vitepress-openapi (link)

Last Updated - 2024-10-06T17:57:22Z + 2024-10-08T02:19:40Z Archived @@ -55676,7 +55676,7 @@

hei-admin-api (link)

Last Updated - 2024-10-04T12:30:50Z + 2024-10-07T13:16:40Z Archived @@ -56339,7 +56339,7 @@

fastify-openapi3 (link)

Last Updated - 2024-09-24T20:00:35Z + 2024-10-07T20:55:26Z Archived @@ -57104,7 +57104,7 @@

sbt-openapi-schema (link)

Last Updated - 2024-10-06T06:26:14Z + 2024-10-07T22:54:21Z Archived @@ -57445,7 +57445,7 @@

redocly-cli-cookbook (link)

Stars - 20 + 21 Watchers @@ -57461,7 +57461,7 @@

redocly-cli-cookbook (link)

Last Updated - 2024-10-02T14:32:43Z + 2024-10-07T11:22:17Z Archived @@ -58210,7 +58210,7 @@

file-service (link)

Stars - 18 + 19 Watchers @@ -58218,7 +58218,7 @@

file-service (link)

Forks - 5 + 6 Created @@ -58226,7 +58226,7 @@

file-service (link)

Last Updated - 2024-09-26T04:17:30Z + 2024-10-07T14:51:48Z Archived @@ -59026,7 +59026,7 @@

postgrest-openapi (link)

Stars - 17 + 18 Watchers @@ -59042,7 +59042,7 @@

postgrest-openapi (link)

Last Updated - 2024-09-02T19:00:01Z + 2024-10-07T04:30:32Z Archived @@ -63734,7 +63734,7 @@

sandbox (link)

Last Updated - 2024-10-04T15:27:30Z + 2024-10-07T16:04:02Z Archived @@ -64601,7 +64601,7 @@

openapi-oathkeeper (link)

Last Updated - 2024-09-15T15:43:08Z + 2024-10-07T14:19:14Z Archived @@ -66284,7 +66284,7 @@

stackql-azure-openapi (link)

Last Updated - 2024-10-04T10:41:19Z + 2024-10-07T21:22:24Z Archived @@ -73051,7 +73051,7 @@

provider-pact-example (link)

Stars - 3 + 4 Watchers @@ -73067,7 +73067,7 @@

provider-pact-example (link)

Last Updated - 2024-08-05T12:03:47Z + 2024-10-07T08:15:59Z Archived @@ -74393,7 +74393,7 @@

restdocs-openapi3 (link)

Last Updated - 2024-10-01T01:28:30Z + 2024-10-08T02:06:30Z Archived @@ -75464,7 +75464,7 @@

programming-machine-learning (link)

Last Updated - 2024-10-06T22:04:14Z + 2024-10-07T20:42:50Z Archived @@ -80156,7 +80156,7 @@

openapi-to-java-records-mustache-templa Last Updated - 2024-09-30T17:00:55Z + 2024-10-07T17:56:37Z Archived @@ -88316,7 +88316,7 @@

hub (link)

Last Updated - 2024-09-27T10:01:01Z + 2024-10-07T13:06:40Z Archived @@ -91274,7 +91274,7 @@

centeredge.textpay (link)

Last Updated - 2022-01-21T13:17:48Z + 2024-10-07T13:46:33Z Archived @@ -92176,7 +92176,7 @@

utoipa (link)

Stars - 2249 + 2253 Watchers @@ -92192,7 +92192,7 @@

utoipa (link)

Last Updated - 2024-10-06T22:40:42Z + 2024-10-07T20:49:04Z Archived @@ -92333,7 +92333,7 @@

oas3-rs (link)

Watchers - 4 + 3 Forks @@ -92345,7 +92345,7 @@

oas3-rs (link)

Last Updated - 2024-10-07T03:00:50Z + 2024-10-07T09:37:31Z Archived @@ -93553,7 +93553,7 @@

orval (link)

Stars - 2907 + 2912 Watchers @@ -93569,7 +93569,7 @@

orval (link)

Last Updated - 2024-10-07T03:04:31Z + 2024-10-08T00:02:03Z Archived @@ -97684,7 +97684,7 @@

kubb (link)

Stars - 670 + 671 Watchers @@ -97692,7 +97692,7 @@

kubb (link)

Forks - 54 + 55 Created @@ -97700,7 +97700,7 @@

kubb (link)

Last Updated - 2024-10-06T19:07:09Z + 2024-10-07T18:29:38Z Archived @@ -97837,7 +97837,7 @@

apicat (link)

Stars - 270 + 271 Watchers @@ -97853,7 +97853,7 @@

apicat (link)

Last Updated - 2024-10-05T22:53:02Z + 2024-10-07T13:47:56Z Archived @@ -97888,7 +97888,7 @@

full-stack-fastapi-template (link)

Stars - 26657 + 26676 Watchers @@ -97896,7 +97896,7 @@

full-stack-fastapi-template (link)

Forks - 4694 + 4702 Created @@ -97904,7 +97904,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-10-07T03:11:49Z + 2024-10-08T00:40:00Z Archived @@ -99128,7 +99128,7 @@

spring-boot-starter-tomcat (link)

Last Updated - 2024-10-04T15:39:19Z + 2024-10-07T15:21:37Z Archived @@ -99218,7 +99218,7 @@

UI Bakery (link)

Watchers - 5 + 7 Forks @@ -107798,7 +107798,7 @@

swagger-models (link)

Last Updated - 2024-10-06T16:45:42Z + 2024-10-07T12:26:55Z Archived @@ -108496,7 +108496,7 @@

Modern (link)

Stars - 15 + 14 Watchers @@ -108512,7 +108512,7 @@

Modern (link)

Last Updated - 2021-03-19T23:47:47Z + 2024-10-07T05:14:37Z Archived @@ -108606,7 +108606,7 @@

PHP-CRUD-API (link)

Forks - 1009 + 1010 Created @@ -108853,7 +108853,7 @@

zero-rails_openapi (link)

Stars - 167 + 168 Watchers @@ -108869,7 +108869,7 @@

zero-rails_openapi (link)

Last Updated - 2024-09-21T18:41:39Z + 2024-10-07T15:58:30Z Archived @@ -110144,7 +110144,7 @@

LoopBack 4 (link)

Last Updated - 2024-10-07T00:55:49Z + 2024-10-08T00:12:49Z Archived @@ -110230,7 +110230,7 @@

RESTler (link)

Stars - 2587 + 2588 Watchers @@ -110246,7 +110246,7 @@

RESTler (link)

Last Updated - 2024-10-04T00:10:08Z + 2024-10-07T08:50:57Z Archived @@ -111572,7 +111572,7 @@

Vert.x Web API Service (link)

Last Updated - 2024-10-06T04:26:21Z + 2024-10-07T21:44:05Z Archived @@ -111674,7 +111674,7 @@

go-doudou (link)

Last Updated - 2024-10-05T13:22:06Z + 2024-10-08T01:18:18Z Archived diff --git a/docs/categories/auto-generators.html b/docs/categories/auto-generators.html index 9ecb2057..c61da147 100644 --- a/docs/categories/auto-generators.html +++ b/docs/categories/auto-generators.html @@ -91,7 +91,7 @@

Yes No No - 1182 + 1184 @@ -114,7 +114,7 @@

No Yes No - 5046 + 5050 @@ -137,7 +137,7 @@

No Yes No - 485 + 488 @@ -250,7 +250,7 @@

Yes Yes No - 3917 + 3919 @@ -273,7 +273,7 @@

No Yes No - 4357 + 4360 @@ -296,7 +296,7 @@

No Yes No - 824 + 825 @@ -319,7 +319,7 @@

Yes Yes No - 1951 + 1959 @@ -373,7 +373,7 @@

Scramble (link)

Stars - 1182 + 1184 Watchers @@ -389,7 +389,7 @@

Scramble (link)

Last Updated - 2024-10-06T14:56:36Z + 2024-10-07T13:29:20Z Archived @@ -424,7 +424,7 @@

mitmproxy2swagger (link)

Stars - 5046 + 5050 Watchers @@ -440,7 +440,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-10-07T01:48:17Z + 2024-10-08T02:05:58Z Archived @@ -475,7 +475,7 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 485 + 488 Watchers @@ -491,7 +491,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T02:17:34Z + 2024-10-07T21:08:40Z Archived @@ -730,7 +730,7 @@

OpenAPI DevTools (link)

Stars - 3917 + 3919 Watchers @@ -746,7 +746,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-10-07T01:48:50Z + 2024-10-07T21:22:51Z Archived @@ -781,7 +781,7 @@

TypeSpec (link)

Stars - 4357 + 4360 Watchers @@ -797,7 +797,7 @@

TypeSpec (link)

Last Updated - 2024-10-06T19:26:20Z + 2024-10-08T03:16:12Z Archived @@ -832,7 +832,7 @@

Fuego (link)

Stars - 824 + 825 Watchers @@ -848,7 +848,7 @@

Fuego (link)

Last Updated - 2024-10-06T11:40:38Z + 2024-10-07T17:50:31Z Archived @@ -883,7 +883,7 @@

Huma (link)

Stars - 1951 + 1959 Watchers @@ -899,7 +899,7 @@

Huma (link)

Last Updated - 2024-10-07T01:18:36Z + 2024-10-08T00:58:26Z Archived diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html index 2c526cf3..1e4be282 100644 --- a/docs/categories/code-generators.html +++ b/docs/categories/code-generators.html @@ -114,7 +114,7 @@

No Yes Yes - 21490 + 21503 @@ -160,7 +160,7 @@

No Yes Yes - 2870 + 2876 @@ -248,7 +248,7 @@

No Yes Yes - 16940 + 16942 @@ -340,7 +340,7 @@

Yes Yes Yes - 2612 + 2617 @@ -386,7 +386,7 @@

Yes Yes No - 26418 + 26422 @@ -430,7 +430,7 @@

No Yes No - 6120 + 6127 @@ -1381,7 +1381,7 @@

No Yes Yes - 2907 + 2912 @@ -1591,7 +1591,7 @@

Yes Yes Yes - 670 + 671 @@ -1933,7 +1933,7 @@

No No No - 167 + 168 @@ -2168,7 +2168,7 @@

OpenAPI Generator (link)

Stars - 21490 + 21503 Watchers @@ -2176,7 +2176,7 @@

OpenAPI Generator (link)

Forks - 6505 + 6507 Created @@ -2184,7 +2184,7 @@

OpenAPI Generator (link)

Last Updated - 2024-10-07T03:28:34Z + 2024-10-08T03:22:05Z Archived @@ -2270,7 +2270,7 @@

Kiota Api Client Generator (link)

Stars - 2870 + 2876 Watchers @@ -2278,7 +2278,7 @@

Kiota Api Client Generator (link)

Forks - 197 + 198 Created @@ -2286,7 +2286,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-10-05T18:30:32Z + 2024-10-07T22:44:15Z Archived @@ -2337,7 +2337,7 @@

FabriKt (link)

Last Updated - 2024-10-06T19:26:04Z + 2024-10-07T13:31:38Z Archived @@ -2474,7 +2474,7 @@

Swagger-Codegen (link)

Stars - 16940 + 16942 Watchers @@ -2482,7 +2482,7 @@

Swagger-Codegen (link)

Forks - 6028 + 6029 Created @@ -2490,7 +2490,7 @@

Swagger-Codegen (link)

Last Updated - 2024-10-06T16:45:35Z + 2024-10-07T23:21:58Z Archived @@ -2635,7 +2635,7 @@

OpenAPI Commander (link)

Forks - 2 + 3 Created @@ -2678,7 +2678,7 @@

🌿 Fern (link)

Stars - 2612 + 2617 Watchers @@ -2694,7 +2694,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T02:40:03Z + 2024-10-07T23:52:22Z Archived @@ -2780,7 +2780,7 @@

swagger-ui (link)

Stars - 26418 + 26422 Watchers @@ -2788,7 +2788,7 @@

swagger-ui (link)

Forks - 8927 + 8929 Created @@ -2796,7 +2796,7 @@

swagger-ui (link)

Last Updated - 2024-10-07T03:07:20Z + 2024-10-08T00:54:07Z Archived @@ -2847,7 +2847,7 @@

swagger-core (link)

Last Updated - 2024-10-06T16:45:42Z + 2024-10-07T12:26:55Z Archived @@ -2882,7 +2882,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 6120 + 6127 Watchers @@ -2890,7 +2890,7 @@

OpenAPI Server Code Generator (oapi-cod Forks - 845 + 846 Created @@ -2898,7 +2898,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-10-07T03:12:59Z + 2024-10-08T02:48:21Z Archived @@ -2949,7 +2949,7 @@

swagger-js (link)

Last Updated - 2024-10-06T16:45:56Z + 2024-10-07T23:23:51Z Archived @@ -3400,7 +3400,7 @@

openapi-petstore (link)

Forks - 43 + 44 Created @@ -3561,7 +3561,7 @@

hei-admin-api (link)

Last Updated - 2024-10-04T12:30:50Z + 2024-10-07T13:16:40Z Archived @@ -5177,7 +5177,7 @@

orval (link)

Stars - 2907 + 2912 Watchers @@ -5193,7 +5193,7 @@

orval (link)

Last Updated - 2024-10-07T03:04:31Z + 2024-10-08T00:02:03Z Archived @@ -5687,7 +5687,7 @@

kubb (link)

Stars - 670 + 671 Watchers @@ -5695,7 +5695,7 @@

kubb (link)

Forks - 54 + 55 Created @@ -5703,7 +5703,7 @@

kubb (link)

Last Updated - 2024-10-06T19:07:09Z + 2024-10-07T18:29:38Z Archived @@ -6366,7 +6366,7 @@

swagger-models (link)

Last Updated - 2024-10-06T16:45:42Z + 2024-10-07T12:26:55Z Archived @@ -6503,7 +6503,7 @@

zero-rails_openapi (link)

Stars - 167 + 168 Watchers @@ -6519,7 +6519,7 @@

zero-rails_openapi (link)

Last Updated - 2024-09-21T18:41:39Z + 2024-10-07T15:58:30Z Archived diff --git a/docs/categories/converters.html b/docs/categories/converters.html index 12702824..73de880d 100644 --- a/docs/categories/converters.html +++ b/docs/categories/converters.html @@ -221,7 +221,7 @@

Yes Yes Yes - 1105 + 1110 @@ -267,7 +267,7 @@

No Yes No - 1640 + 1641 @@ -290,7 +290,7 @@

No No Yes - 9494 + 9495 @@ -336,7 +336,7 @@

Yes Yes Yes - 272 + 273 @@ -447,7 +447,7 @@

Yes Yes Yes - 916 + 915 @@ -493,7 +493,7 @@

Yes Yes No - 1281 + 1282 @@ -558,7 +558,7 @@

No Yes No - 419 + 420 @@ -604,7 +604,7 @@

Yes Yes Yes - 5652 + 5657 @@ -625,7 +625,7 @@

No Yes No - 2084 + 2085 @@ -1470,7 +1470,7 @@

@hey-api/openapi-ts (link)

Stars - 1105 + 1110 Watchers @@ -1486,7 +1486,7 @@

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T01:51:17Z + 2024-10-07T22:15:49Z Archived @@ -1537,7 +1537,7 @@

portman (link)

Last Updated - 2024-10-04T15:40:21Z + 2024-10-07T18:29:12Z Archived @@ -1572,7 +1572,7 @@

Step CI (link)

Stars - 1640 + 1641 Watchers @@ -1588,7 +1588,7 @@

Step CI (link)

Last Updated - 2024-10-07T00:52:57Z + 2024-10-07T11:58:08Z Archived @@ -1623,7 +1623,7 @@

go-swagger (link)

Stars - 9494 + 9495 Watchers @@ -1639,7 +1639,7 @@

go-swagger (link)

Last Updated - 2024-10-06T18:02:33Z + 2024-10-07T16:04:37Z Archived @@ -1725,7 +1725,7 @@

oas (link)

Stars - 272 + 273 Watchers @@ -1741,7 +1741,7 @@

oas (link)

Last Updated - 2024-09-16T17:32:39Z + 2024-10-07T04:18:46Z Archived @@ -1980,7 +1980,7 @@

openapi-to-postman (link)

Stars - 916 + 915 Watchers @@ -1996,7 +1996,7 @@

openapi-to-postman (link)

Last Updated - 2024-10-05T05:29:45Z + 2024-10-07T15:49:03Z Archived @@ -2047,7 +2047,7 @@

openapi-format (link)

Last Updated - 2024-10-06T12:30:26Z + 2024-10-07T17:49:24Z Archived @@ -2082,7 +2082,7 @@

openapi-python-client (link)

Stars - 1281 + 1282 Watchers @@ -2098,7 +2098,7 @@

openapi-python-client (link)

Last Updated - 2024-10-05T09:38:50Z + 2024-10-07T23:55:25Z Archived @@ -2235,7 +2235,7 @@

typeconv (link)

Stars - 419 + 420 Watchers @@ -2251,7 +2251,7 @@

typeconv (link)

Last Updated - 2024-10-01T21:08:48Z + 2024-10-08T00:19:20Z Archived @@ -2294,7 +2294,7 @@

openapi-merge (link)

Forks - 25 + 26 Created @@ -2337,7 +2337,7 @@

OpenAPI TypeScript (link)

Stars - 5652 + 5657 Watchers @@ -2353,7 +2353,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T01:12:43Z + 2024-10-07T22:51:52Z Archived @@ -2388,7 +2388,7 @@

gnostic (link)

Stars - 2084 + 2085 Watchers @@ -2404,7 +2404,7 @@

gnostic (link)

Last Updated - 2024-10-03T13:58:50Z + 2024-10-08T03:24:46Z Archived diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html index b773462a..d26b9f04 100644 --- a/docs/categories/data-validators.html +++ b/docs/categories/data-validators.html @@ -112,7 +112,7 @@

No Yes Yes - 3478 + 3480 @@ -177,7 +177,7 @@

No Yes No - 1640 + 1641 @@ -263,7 +263,7 @@

Yes Yes No - 115 + 114 @@ -309,7 +309,7 @@

No Yes Yes - 2579 + 2580 @@ -663,7 +663,7 @@

No Yes No - 824 + 825 @@ -686,7 +686,7 @@

Yes Yes No - 1951 + 1959 @@ -2019,7 +2019,7 @@

tsoa (link)

Stars - 3478 + 3480 Watchers @@ -2035,7 +2035,7 @@

tsoa (link)

Last Updated - 2024-10-05T01:53:14Z + 2024-10-08T01:22:31Z Archived @@ -2172,7 +2172,7 @@

Step CI (link)

Stars - 1640 + 1641 Watchers @@ -2188,7 +2188,7 @@

Step CI (link)

Last Updated - 2024-10-07T00:52:57Z + 2024-10-07T11:58:08Z Archived @@ -2376,7 +2376,7 @@

openapi_first (link)

Stars - 115 + 114 Watchers @@ -2392,7 +2392,7 @@

openapi_first (link)

Last Updated - 2024-10-03T21:18:22Z + 2024-10-07T05:14:40Z Archived @@ -2478,7 +2478,7 @@

kin-openapi (link)

Stars - 2579 + 2580 Watchers @@ -2494,7 +2494,7 @@

kin-openapi (link)

Last Updated - 2024-10-04T17:58:45Z + 2024-10-07T06:55:17Z Archived @@ -2792,7 +2792,7 @@

OpenAPI HttpFoundation Testing (link) Forks - 13 + 14 Created @@ -2800,7 +2800,7 @@

OpenAPI HttpFoundation Testing (link) Last Updated - 2024-10-04T22:48:16Z + 2024-10-07T15:35:49Z Archived @@ -3106,7 +3106,7 @@

openapi-changes (link)

Last Updated - 2024-10-03T04:43:42Z + 2024-10-08T02:41:54Z Archived @@ -3294,7 +3294,7 @@

Fuego (link)

Stars - 824 + 825 Watchers @@ -3310,7 +3310,7 @@

Fuego (link)

Last Updated - 2024-10-06T11:40:38Z + 2024-10-07T17:50:31Z Archived @@ -3345,7 +3345,7 @@

Huma (link)

Stars - 1951 + 1959 Watchers @@ -3361,7 +3361,7 @@

Huma (link)

Last Updated - 2024-10-07T01:18:36Z + 2024-10-08T00:58:26Z Archived @@ -3412,7 +3412,7 @@

OpenAPI::Modern (link)

Last Updated - 2024-10-01T17:04:52Z + 2024-10-07T20:58:11Z Archived diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html index 93c23eed..6bfa6644 100644 --- a/docs/categories/description-validators.html +++ b/docs/categories/description-validators.html @@ -197,7 +197,7 @@

Yes Yes Yes - 2480 + 2481 @@ -239,7 +239,7 @@

Yes Yes Yes - 489 + 490 @@ -262,7 +262,7 @@

Yes Yes Yes - 913 + 914 @@ -329,7 +329,7 @@

Yes Yes Yes - 272 + 273 @@ -553,7 +553,7 @@

No Yes No - 807 + 808 @@ -574,7 +574,7 @@

Yes Yes No - 677 + 678 @@ -1912,7 +1912,7 @@

Spectral (link)

Stars - 2480 + 2481 Watchers @@ -1928,7 +1928,7 @@

Spectral (link)

Last Updated - 2024-10-06T10:51:51Z + 2024-10-07T23:20:37Z Archived @@ -2014,7 +2014,7 @@

OpenAPI Validator (link)

Stars - 489 + 490 Watchers @@ -2030,7 +2030,7 @@

OpenAPI Validator (link)

Last Updated - 2024-10-03T18:28:58Z + 2024-10-07T15:37:31Z Archived @@ -2065,7 +2065,7 @@

Redocly CLI (link)

Stars - 913 + 914 Watchers @@ -2081,7 +2081,7 @@

Redocly CLI (link)

Last Updated - 2024-10-04T12:09:46Z + 2024-10-07T11:21:39Z Archived @@ -2218,7 +2218,7 @@

oas (link)

Stars - 272 + 273 Watchers @@ -2234,7 +2234,7 @@

oas (link)

Last Updated - 2024-09-16T17:32:39Z + 2024-10-07T04:18:46Z Archived @@ -2693,7 +2693,7 @@

OpenAPI::Modern (link)

Last Updated - 2024-10-01T17:04:52Z + 2024-10-07T20:58:11Z Archived @@ -2728,7 +2728,7 @@

studio (link)

Stars - 807 + 808 Watchers @@ -2744,7 +2744,7 @@

studio (link)

Last Updated - 2024-10-03T14:51:00Z + 2024-10-07T05:01:19Z Archived @@ -2779,7 +2779,7 @@

openapi.tools (link)

Stars - 677 + 678 Watchers @@ -2795,7 +2795,7 @@

openapi.tools (link)

Last Updated - 2024-10-03T10:39:49Z + 2024-10-07T11:29:35Z Archived @@ -3101,7 +3101,7 @@

api-oas-checker (link)

Last Updated - 2024-10-02T12:57:21Z + 2024-10-07T09:08:21Z Archived diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html index 3bfba13f..a420f662 100644 --- a/docs/categories/documentation.html +++ b/docs/categories/documentation.html @@ -169,7 +169,7 @@

Yes Yes Yes - 6290 + 6313 @@ -192,7 +192,7 @@

Yes No No - 1182 + 1184 @@ -215,7 +215,7 @@

No Yes No - 1704 + 1705 @@ -259,7 +259,7 @@

Yes Yes Yes - 23390 + 23397 @@ -544,7 +544,7 @@

Yes Yes Yes - 913 + 914 @@ -634,7 +634,7 @@

Yes Yes No - 3917 + 3919 @@ -657,7 +657,7 @@

Yes Yes No - 900 + 901 @@ -722,7 +722,7 @@

Yes Yes Yes - 1738 + 1742 @@ -959,7 +959,7 @@

Yes Yes Yes - 2612 + 2617 @@ -1049,7 +1049,7 @@

No Yes Yes - 1484 + 1485 @@ -1072,7 +1072,7 @@

Yes Yes No - 64 + 66 @@ -1093,7 +1093,7 @@

No Yes No - 1655 + 1658 @@ -1114,7 +1114,7 @@

No Yes No - 333 + 334 @@ -2602,7 +2602,7 @@

Scalar (link)

Stars - 6290 + 6313 Watchers @@ -2618,7 +2618,7 @@

Scalar (link)

Last Updated - 2024-10-07T00:58:53Z + 2024-10-08T02:46:47Z Archived @@ -2653,7 +2653,7 @@

Scramble (link)

Stars - 1182 + 1184 Watchers @@ -2669,7 +2669,7 @@

Scramble (link)

Last Updated - 2024-10-06T14:56:36Z + 2024-10-07T13:29:20Z Archived @@ -2704,7 +2704,7 @@

Scribe (link)

Stars - 1704 + 1705 Watchers @@ -2720,7 +2720,7 @@

Scribe (link)

Last Updated - 2024-10-05T15:01:33Z + 2024-10-07T05:37:08Z Archived @@ -2806,11 +2806,11 @@

ReDoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -2822,7 +2822,7 @@

ReDoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived @@ -2975,7 +2975,7 @@

OpenAPI-UI (link)

Last Updated - 2024-10-04T15:59:58Z + 2024-10-07T15:02:28Z Archived @@ -3469,7 +3469,7 @@

Redocly CLI (link)

Stars - 913 + 914 Watchers @@ -3485,7 +3485,7 @@

Redocly CLI (link)

Last Updated - 2024-10-04T12:09:46Z + 2024-10-07T11:21:39Z Archived @@ -3673,7 +3673,7 @@

OpenAPI DevTools (link)

Stars - 3917 + 3919 Watchers @@ -3689,7 +3689,7 @@

OpenAPI DevTools (link)

Last Updated - 2024-10-07T01:48:50Z + 2024-10-07T21:22:51Z Archived @@ -3724,7 +3724,7 @@

Restish (link)

Stars - 900 + 901 Watchers @@ -3740,7 +3740,7 @@

Restish (link)

Last Updated - 2024-10-04T10:34:48Z + 2024-10-07T15:46:06Z Archived @@ -3877,7 +3877,7 @@

Elements (link)

Stars - 1738 + 1742 Watchers @@ -3893,7 +3893,7 @@

Elements (link)

Last Updated - 2024-10-06T18:16:37Z + 2024-10-07T14:30:18Z Archived @@ -4250,7 +4250,7 @@

openapi-changes (link)

Last Updated - 2024-10-03T04:43:42Z + 2024-10-08T02:41:54Z Archived @@ -4438,7 +4438,7 @@

🌿 Fern (link)

Stars - 2612 + 2617 Watchers @@ -4454,7 +4454,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T02:40:03Z + 2024-10-07T23:52:22Z Archived @@ -4642,7 +4642,7 @@

widdershins (link)

Stars - 1484 + 1485 Watchers @@ -4658,7 +4658,7 @@

widdershins (link)

Last Updated - 2024-10-03T14:42:22Z + 2024-10-07T10:14:01Z Archived @@ -4693,11 +4693,11 @@

Zudoku (link)

Stars - 64 + 66 Watchers - 3 + 4 Forks @@ -4709,7 +4709,7 @@

Zudoku (link)

Last Updated - 2024-10-07T03:32:42Z + 2024-10-07T18:01:20Z Archived @@ -4744,7 +4744,7 @@

rapidoc (link)

Stars - 1655 + 1658 Watchers @@ -4760,7 +4760,7 @@

rapidoc (link)

Last Updated - 2024-10-06T19:54:04Z + 2024-10-07T23:08:54Z Archived @@ -4795,7 +4795,7 @@

beacon-apis (link)

Stars - 333 + 334 Watchers @@ -4811,7 +4811,7 @@

beacon-apis (link)

Last Updated - 2024-10-05T10:18:58Z + 2024-10-07T20:41:15Z Archived @@ -4862,7 +4862,7 @@

znai (link)

Last Updated - 2024-10-05T22:30:52Z + 2024-10-07T23:13:59Z Archived diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html index bfa9de86..7ef8962c 100644 --- a/docs/categories/dsl.html +++ b/docs/categories/dsl.html @@ -215,7 +215,7 @@

No Yes No - 1974 + 1975 @@ -584,7 +584,7 @@

kotlin-openapi3-dsl (link)

Last Updated - 2024-10-02T16:47:49Z + 2024-10-07T21:38:21Z Archived @@ -619,7 +619,7 @@

rswag (link)

Stars - 1974 + 1975 Watchers @@ -635,7 +635,7 @@

rswag (link)

Last Updated - 2024-10-06T13:29:50Z + 2024-10-07T23:32:46Z Archived diff --git a/docs/categories/gui-editors.html b/docs/categories/gui-editors.html index da42d48b..1c9e720f 100644 --- a/docs/categories/gui-editors.html +++ b/docs/categories/gui-editors.html @@ -151,7 +151,7 @@

Yes Yes Yes - 15 + 16 @@ -621,7 +621,7 @@

Hackolade (link)

Stars - 15 + 16 Watchers @@ -637,7 +637,7 @@

Hackolade (link)

Last Updated - 2024-10-02T15:06:19Z + 2024-10-07T18:59:02Z Archived diff --git a/docs/categories/learning.html b/docs/categories/learning.html index 529b82f7..42f436a0 100644 --- a/docs/categories/learning.html +++ b/docs/categories/learning.html @@ -114,7 +114,7 @@

No Yes No - 85 + 86 @@ -397,7 +397,7 @@

Response2Schema (link)

Stars - 85 + 86 Watchers @@ -413,7 +413,7 @@

Response2Schema (link)

Last Updated - 2024-10-02T23:38:55Z + 2024-10-08T01:04:36Z Archived diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html index 2f3858c2..73fb8693 100644 --- a/docs/categories/low-level-tooling.html +++ b/docs/categories/low-level-tooling.html @@ -114,7 +114,7 @@

No Yes No - 250 + 251 @@ -1491,7 +1491,7 @@

openapi-go (link)

Stars - 250 + 251 Watchers @@ -1507,7 +1507,7 @@

openapi-go (link)

Last Updated - 2024-10-04T18:06:22Z + 2024-10-07T12:15:01Z Archived @@ -1754,7 +1754,7 @@

api-docs (link)

Forks - 188 + 187 Created @@ -4312,7 +4312,7 @@

swagger-models (link)

Last Updated - 2024-10-06T16:45:42Z + 2024-10-07T12:26:55Z Archived diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html index 815bb3d5..1b135194 100644 --- a/docs/categories/mock-testing.html +++ b/docs/categories/mock-testing.html @@ -91,7 +91,7 @@

Yes Yes Yes - 1364 + 1366 @@ -145,7 +145,7 @@

Microcks (link)

Stars - 1364 + 1366 Watchers @@ -161,7 +161,7 @@

Microcks (link)

Last Updated - 2024-10-05T14:33:11Z + 2024-10-07T19:34:03Z Archived diff --git a/docs/categories/mock.html b/docs/categories/mock.html index 2abb1dc5..05fa1c00 100644 --- a/docs/categories/mock.html +++ b/docs/categories/mock.html @@ -543,7 +543,7 @@

No Yes Yes - 2907 + 2912 @@ -1296,7 +1296,7 @@

Counterfact (link)

Last Updated - 2024-10-06T21:05:56Z + 2024-10-08T00:13:04Z Archived @@ -1449,7 +1449,7 @@

Specmatic (link)

Last Updated - 2024-10-06T20:18:26Z + 2024-10-07T07:43:09Z Archived @@ -1841,7 +1841,7 @@

orval (link)

Stars - 2907 + 2912 Watchers @@ -1857,7 +1857,7 @@

orval (link)

Last Updated - 2024-10-07T03:04:31Z + 2024-10-08T00:02:03Z Archived diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html index e57320c8..873b23d3 100644 --- a/docs/categories/parsers.html +++ b/docs/categories/parsers.html @@ -91,7 +91,7 @@

Yes Yes Yes - 23390 + 23397 @@ -315,7 +315,7 @@

Yes Yes Yes - 15 + 16 @@ -361,7 +361,7 @@

No Yes No - 85 + 86 @@ -474,7 +474,7 @@

No Yes Yes - 3478 + 3480 @@ -587,7 +587,7 @@

Yes Yes Yes - 781 + 782 @@ -608,7 +608,7 @@

No Yes Yes - 1096 + 1097 @@ -719,7 +719,7 @@

No Yes Yes - 2579 + 2580 @@ -918,7 +918,7 @@

No No Yes - 9494 + 9495 @@ -987,7 +987,7 @@

Yes Yes Yes - 272 + 273 @@ -1236,7 +1236,7 @@

Yes Yes Yes - 916 + 915 @@ -1391,7 +1391,7 @@

Yes Yes No - 1281 + 1282 @@ -1529,7 +1529,7 @@

Yes Yes Yes - 452 + 454 @@ -1575,7 +1575,7 @@

No Yes No - 70 + 71 @@ -1686,7 +1686,7 @@

No Yes No - 1974 + 1975 @@ -1732,7 +1732,7 @@

No Yes No - 419 + 420 @@ -1778,7 +1778,7 @@

No Yes Yes - 1484 + 1485 @@ -1801,7 +1801,7 @@

Yes Yes No - 23390 + 23397 @@ -1843,7 +1843,7 @@

No Yes No - 1338 + 1337 @@ -1885,7 +1885,7 @@

No Yes No - 920 + 921 @@ -1906,7 +1906,7 @@

No Yes No - 836 + 837 @@ -1927,7 +1927,7 @@

No Yes No - 812 + 813 @@ -2074,7 +2074,7 @@

No Yes No - 456 + 457 @@ -2095,7 +2095,7 @@

No Yes No - 419 + 420 @@ -2221,7 +2221,7 @@

No Yes No - 268 + 271 @@ -2244,7 +2244,7 @@

No Yes No - 250 + 251 @@ -2435,7 +2435,7 @@

No Yes No - 187 + 188 @@ -2456,7 +2456,7 @@

No Yes No - 184 + 185 @@ -2689,7 +2689,7 @@

Yes Yes No - 113 + 115 @@ -3577,7 +3577,7 @@

Yes Yes No - 35 + 36 @@ -8938,7 +8938,7 @@

Yes Yes No - 2249 + 2253 @@ -11026,11 +11026,11 @@

ReDoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -11042,7 +11042,7 @@

ReDoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived @@ -11085,7 +11085,7 @@

oasdiff (link)

Forks - 62 + 63 Created @@ -11093,7 +11093,7 @@

oasdiff (link)

Last Updated - 2024-10-05T14:51:58Z + 2024-10-07T08:42:14Z Archived @@ -11536,7 +11536,7 @@

Hackolade (link)

Stars - 15 + 16 Watchers @@ -11552,7 +11552,7 @@

Hackolade (link)

Last Updated - 2024-10-02T15:06:19Z + 2024-10-07T18:59:02Z Archived @@ -11638,7 +11638,7 @@

Response2Schema (link)

Stars - 85 + 86 Watchers @@ -11654,7 +11654,7 @@

Response2Schema (link)

Last Updated - 2024-10-02T23:38:55Z + 2024-10-08T01:04:36Z Archived @@ -11893,7 +11893,7 @@

tsoa (link)

Stars - 3478 + 3480 Watchers @@ -11909,7 +11909,7 @@

tsoa (link)

Last Updated - 2024-10-05T01:53:14Z + 2024-10-08T01:22:31Z Archived @@ -12148,7 +12148,7 @@

swagger-parser (link)

Stars - 781 + 782 Watchers @@ -12164,7 +12164,7 @@

swagger-parser (link)

Last Updated - 2024-10-04T22:29:51Z + 2024-10-07T05:55:41Z Archived @@ -12199,11 +12199,11 @@

APIDevTools/swagger-parser (link)

Stars - 1096 + 1097 Watchers - 18 + 19 Forks @@ -12215,7 +12215,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-10-06T21:05:01Z + 2024-10-07T18:11:29Z Archived @@ -12454,7 +12454,7 @@

kin-openapi (link)

Stars - 2579 + 2580 Watchers @@ -12470,7 +12470,7 @@

kin-openapi (link)

Last Updated - 2024-10-04T17:58:45Z + 2024-10-07T06:55:17Z Archived @@ -12913,7 +12913,7 @@

go-swagger (link)

Stars - 9494 + 9495 Watchers @@ -12929,7 +12929,7 @@

go-swagger (link)

Last Updated - 2024-10-06T18:02:33Z + 2024-10-07T16:04:37Z Archived @@ -13066,7 +13066,7 @@

oas (link)

Stars - 272 + 273 Watchers @@ -13082,7 +13082,7 @@

oas (link)

Last Updated - 2024-09-16T17:32:39Z + 2024-10-07T04:18:46Z Archived @@ -13627,7 +13627,7 @@

openapi-to-postman (link)

Stars - 916 + 915 Watchers @@ -13643,7 +13643,7 @@

openapi-to-postman (link)

Last Updated - 2024-10-05T05:29:45Z + 2024-10-07T15:49:03Z Archived @@ -13694,7 +13694,7 @@

openapi-format (link)

Last Updated - 2024-10-06T12:30:26Z + 2024-10-07T17:49:24Z Archived @@ -13984,7 +13984,7 @@

openapi-python-client (link)

Stars - 1281 + 1282 Watchers @@ -14000,7 +14000,7 @@

openapi-python-client (link)

Last Updated - 2024-10-05T09:38:50Z + 2024-10-07T23:55:25Z Archived @@ -14153,7 +14153,7 @@

kotlin-openapi3-dsl (link)

Last Updated - 2024-10-02T16:47:49Z + 2024-10-07T21:38:21Z Archived @@ -14247,7 +14247,7 @@

OpenAPI Commander (link)

Forks - 2 + 3 Created @@ -14290,7 +14290,7 @@

libopenapi (link)

Stars - 452 + 454 Watchers @@ -14306,7 +14306,7 @@

libopenapi (link)

Last Updated - 2024-10-06T11:15:58Z + 2024-10-08T02:08:31Z Archived @@ -14392,7 +14392,7 @@

ABAP OpenAPI Client & Server Genera Stars - 70 + 71 Watchers @@ -14408,7 +14408,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2024-10-04T13:27:44Z + 2024-10-07T18:40:44Z Archived @@ -14647,7 +14647,7 @@

rswag (link)

Stars - 1974 + 1975 Watchers @@ -14663,7 +14663,7 @@

rswag (link)

Last Updated - 2024-10-06T13:29:50Z + 2024-10-07T23:32:46Z Archived @@ -14749,7 +14749,7 @@

typeconv (link)

Stars - 419 + 420 Watchers @@ -14765,7 +14765,7 @@

typeconv (link)

Last Updated - 2024-10-01T21:08:48Z + 2024-10-08T00:19:20Z Archived @@ -14808,7 +14808,7 @@

openapi-merge (link)

Forks - 25 + 26 Created @@ -14851,7 +14851,7 @@

widdershins (link)

Stars - 1484 + 1485 Watchers @@ -14867,7 +14867,7 @@

widdershins (link)

Last Updated - 2024-10-03T14:42:22Z + 2024-10-07T10:14:01Z Archived @@ -14902,11 +14902,11 @@

Redoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -14918,7 +14918,7 @@

Redoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived @@ -15004,7 +15004,7 @@

ogen (link)

Stars - 1338 + 1337 Watchers @@ -15020,7 +15020,7 @@

ogen (link)

Last Updated - 2024-10-06T20:45:46Z + 2024-10-07T20:11:50Z Archived @@ -15071,7 +15071,7 @@

apispec (link)

Last Updated - 2024-10-01T18:51:43Z + 2024-10-07T12:28:15Z Archived @@ -15106,7 +15106,7 @@

zod-to-openapi (link)

Stars - 920 + 921 Watchers @@ -15122,7 +15122,7 @@

zod-to-openapi (link)

Last Updated - 2024-10-06T18:43:57Z + 2024-10-07T09:55:00Z Archived @@ -15157,7 +15157,7 @@

json-schema-validator (link)

Stars - 836 + 837 Watchers @@ -15173,7 +15173,7 @@

json-schema-validator (link)

Last Updated - 2024-09-28T08:20:19Z + 2024-10-07T09:17:20Z Archived @@ -15208,7 +15208,7 @@

openapi-diff (link)

Stars - 812 + 813 Watchers @@ -15224,7 +15224,7 @@

openapi-diff (link)

Last Updated - 2024-10-05T14:19:22Z + 2024-10-08T01:06:53Z Archived @@ -15565,7 +15565,7 @@

swagger-autogen (link)

Stars - 456 + 457 Watchers @@ -15581,7 +15581,7 @@

swagger-autogen (link)

Last Updated - 2024-10-02T14:49:43Z + 2024-10-07T17:17:52Z Archived @@ -15616,7 +15616,7 @@

typeconv (link)

Stars - 419 + 420 Watchers @@ -15632,7 +15632,7 @@

typeconv (link)

Last Updated - 2024-10-01T21:08:48Z + 2024-10-08T00:19:20Z Archived @@ -15922,7 +15922,7 @@

zod-openapi (link)

Stars - 268 + 271 Watchers @@ -15938,7 +15938,7 @@

zod-openapi (link)

Last Updated - 2024-10-07T02:29:17Z + 2024-10-08T02:11:31Z Archived @@ -15973,7 +15973,7 @@

openapi-go (link)

Stars - 250 + 251 Watchers @@ -15989,7 +15989,7 @@

openapi-go (link)

Last Updated - 2024-10-04T18:06:22Z + 2024-10-07T12:15:01Z Archived @@ -16432,7 +16432,7 @@

refitter (link)

Stars - 187 + 188 Watchers @@ -16448,7 +16448,7 @@

refitter (link)

Last Updated - 2024-10-03T10:32:50Z + 2024-10-07T12:27:22Z Archived @@ -16483,7 +16483,7 @@

speakeasy (link)

Stars - 184 + 185 Watchers @@ -16499,7 +16499,7 @@

speakeasy (link)

Last Updated - 2024-10-06T21:32:10Z + 2024-10-07T23:27:50Z Archived @@ -17044,7 +17044,7 @@

learn.openapis.org (link)

Stars - 113 + 115 Watchers @@ -17060,7 +17060,7 @@

learn.openapis.org (link)

Last Updated - 2024-09-26T17:20:06Z + 2024-10-07T20:58:53Z Archived @@ -18684,7 +18684,7 @@

openapi.jl (link)

Forks - 7 + 8 Created @@ -19186,7 +19186,7 @@

vitepress-openapi (link)

Stars - 35 + 36 Watchers @@ -19194,7 +19194,7 @@

vitepress-openapi (link)

Forks - 7 + 8 Created @@ -19202,7 +19202,7 @@

vitepress-openapi (link)

Last Updated - 2024-10-06T17:57:22Z + 2024-10-08T02:19:40Z Archived @@ -19661,7 +19661,7 @@

fastify-openapi3 (link)

Last Updated - 2024-09-24T20:00:35Z + 2024-10-07T20:55:26Z Archived @@ -20069,7 +20069,7 @@

sbt-openapi-schema (link)

Last Updated - 2024-10-06T06:26:14Z + 2024-10-07T22:54:21Z Archived @@ -23129,7 +23129,7 @@

openapi-oathkeeper (link)

Last Updated - 2024-09-15T15:43:08Z + 2024-10-07T14:19:14Z Archived @@ -23741,7 +23741,7 @@

stackql-azure-openapi (link)

Last Updated - 2024-10-04T10:41:19Z + 2024-10-07T21:22:24Z Archived @@ -28178,7 +28178,7 @@

openapi-to-java-records-mustache-templa Last Updated - 2024-09-30T17:00:55Z + 2024-10-07T17:56:37Z Archived @@ -32191,7 +32191,7 @@

utoipa (link)

Stars - 2249 + 2253 Watchers @@ -32207,7 +32207,7 @@

utoipa (link)

Last Updated - 2024-10-06T22:40:42Z + 2024-10-07T20:49:04Z Archived @@ -32297,7 +32297,7 @@

oas3-rs (link)

Watchers - 4 + 3 Forks @@ -32309,7 +32309,7 @@

oas3-rs (link)

Last Updated - 2024-10-07T03:00:50Z + 2024-10-07T09:37:31Z Archived diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html index 548307df..b3d6ce2d 100644 --- a/docs/categories/sdk.html +++ b/docs/categories/sdk.html @@ -114,7 +114,7 @@

No Yes Yes - 21490 + 21503 @@ -160,7 +160,7 @@

No Yes Yes - 2870 + 2876 @@ -206,7 +206,7 @@

Yes Yes Yes - 1364 + 1366 @@ -229,7 +229,7 @@

Yes Yes Yes - 1105 + 1110 @@ -313,7 +313,7 @@

No No Yes - 9494 + 9495 @@ -382,7 +382,7 @@

No Yes Yes - 6734 + 6736 @@ -426,7 +426,7 @@

No Yes Yes - 4603 + 4604 @@ -537,7 +537,7 @@

No Yes Yes - 12577 + 12581 @@ -742,7 +742,7 @@

No Yes No - 70 + 71 @@ -765,7 +765,7 @@

Yes Yes Yes - 2612 + 2617 @@ -832,7 +832,7 @@

Yes Yes No - 1388 + 1392 @@ -878,7 +878,7 @@

Yes Yes Yes - 5652 + 5657 @@ -899,7 +899,7 @@

No Yes No - 4094 + 4095 @@ -941,7 +941,7 @@

No Yes No - 498 + 499 @@ -3169,7 +3169,7 @@

OpenAPI Generator (link)

Stars - 21490 + 21503 Watchers @@ -3177,7 +3177,7 @@

OpenAPI Generator (link)

Forks - 6505 + 6507 Created @@ -3185,7 +3185,7 @@

OpenAPI Generator (link)

Last Updated - 2024-10-07T03:28:34Z + 2024-10-08T03:22:05Z Archived @@ -3271,7 +3271,7 @@

Kiota Api Client Generator (link)

Stars - 2870 + 2876 Watchers @@ -3279,7 +3279,7 @@

Kiota Api Client Generator (link)

Forks - 197 + 198 Created @@ -3287,7 +3287,7 @@

Kiota Api Client Generator (link)

Last Updated - 2024-10-05T18:30:32Z + 2024-10-07T22:44:15Z Archived @@ -3338,7 +3338,7 @@

FabriKt (link)

Last Updated - 2024-10-06T19:26:04Z + 2024-10-07T13:31:38Z Archived @@ -3373,7 +3373,7 @@

Microcks (link)

Stars - 1364 + 1366 Watchers @@ -3389,7 +3389,7 @@

Microcks (link)

Last Updated - 2024-10-05T14:33:11Z + 2024-10-07T19:34:03Z Archived @@ -3424,7 +3424,7 @@

@hey-api/openapi-ts (link)

Stars - 1105 + 1110 Watchers @@ -3440,7 +3440,7 @@

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T01:51:17Z + 2024-10-07T22:15:49Z Archived @@ -3628,7 +3628,7 @@

go-swagger (link)

Stars - 9494 + 9495 Watchers @@ -3644,7 +3644,7 @@

go-swagger (link)

Last Updated - 2024-10-06T18:02:33Z + 2024-10-07T16:04:37Z Archived @@ -3781,7 +3781,7 @@

NSwag (link)

Stars - 6734 + 6736 Watchers @@ -3789,7 +3789,7 @@

NSwag (link)

Forks - 1290 + 1291 Created @@ -3797,7 +3797,7 @@

NSwag (link)

Last Updated - 2024-10-06T13:46:59Z + 2024-10-07T16:45:25Z Archived @@ -3883,11 +3883,11 @@

Azure AutoRest (link)

Stars - 4603 + 4604 Watchers - 898 + 899 Forks @@ -3899,7 +3899,7 @@

Azure AutoRest (link)

Last Updated - 2024-10-06T11:32:11Z + 2024-10-07T06:35:23Z Archived @@ -4138,11 +4138,11 @@

OWASP ZAP (link)

Stars - 12577 + 12581 Watchers - 394 + 395 Forks @@ -4154,7 +4154,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-06T03:55:45Z + 2024-10-07T19:00:47Z Archived @@ -4401,7 +4401,7 @@

OpenAPI Commander (link)

Forks - 2 + 3 Created @@ -4460,7 +4460,7 @@

Counterfact (link)

Last Updated - 2024-10-06T21:05:56Z + 2024-10-08T00:13:04Z Archived @@ -4597,7 +4597,7 @@

ABAP OpenAPI Client & Server Genera Stars - 70 + 71 Watchers @@ -4613,7 +4613,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2024-10-04T13:27:44Z + 2024-10-07T18:40:44Z Archived @@ -4648,7 +4648,7 @@

🌿 Fern (link)

Stars - 2612 + 2617 Watchers @@ -4664,7 +4664,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T02:40:03Z + 2024-10-07T23:52:22Z Archived @@ -4801,7 +4801,7 @@

Swift OpenAPI Generator (link)

Stars - 1388 + 1392 Watchers @@ -4817,7 +4817,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-10-06T20:45:13Z + 2024-10-07T22:58:19Z Archived @@ -4903,7 +4903,7 @@

OpenAPI TypeScript (link)

Stars - 5652 + 5657 Watchers @@ -4919,7 +4919,7 @@

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T01:12:43Z + 2024-10-07T22:51:52Z Archived @@ -4954,7 +4954,7 @@

knife4j (link)

Stars - 4094 + 4095 Watchers @@ -4970,7 +4970,7 @@

knife4j (link)

Last Updated - 2024-10-05T13:45:41Z + 2024-10-07T13:01:14Z Archived @@ -5056,7 +5056,7 @@

docusaurus-openapi (link)

Stars - 498 + 499 Watchers @@ -5072,7 +5072,7 @@

docusaurus-openapi (link)

Last Updated - 2024-10-05T02:53:36Z + 2024-10-07T23:20:36Z Archived @@ -5378,7 +5378,7 @@

apiclientcodegen (link)

Last Updated - 2024-10-06T22:03:59Z + 2024-10-07T12:09:42Z Archived @@ -5429,7 +5429,7 @@

openapi-to-plantuml (link)

Last Updated - 2024-10-01T17:26:27Z + 2024-10-07T17:29:05Z Archived @@ -5735,7 +5735,7 @@

javalin-openapi (link)

Last Updated - 2024-09-30T16:59:32Z + 2024-10-07T11:20:12Z Archived @@ -5786,7 +5786,7 @@

backbase-openapi-tools (link)

Last Updated - 2024-10-04T14:41:08Z + 2024-10-07T13:20:01Z Archived @@ -10223,7 +10223,7 @@

go-doudou (link)

Last Updated - 2024-10-05T13:22:06Z + 2024-10-08T01:18:18Z Archived diff --git a/docs/categories/security.html b/docs/categories/security.html index d26f4811..692b5c14 100644 --- a/docs/categories/security.html +++ b/docs/categories/security.html @@ -240,7 +240,7 @@

No Yes Yes - 12577 + 12581 @@ -326,7 +326,7 @@

No Yes Yes - 2587 + 2588 @@ -651,7 +651,7 @@

cats (link)

Last Updated - 2024-10-06T20:07:05Z + 2024-10-07T19:33:11Z Archived @@ -737,11 +737,11 @@

OWASP ZAP (link)

Stars - 12577 + 12581 Watchers - 394 + 395 Forks @@ -753,7 +753,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-06T03:55:45Z + 2024-10-07T19:00:47Z Archived @@ -941,7 +941,7 @@

RESTler (link)

Stars - 2587 + 2588 Watchers @@ -957,7 +957,7 @@

RESTler (link)

Last Updated - 2024-10-04T00:10:08Z + 2024-10-07T08:50:57Z Archived diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html index 81735730..fc70702e 100644 --- a/docs/categories/server-implementations.html +++ b/docs/categories/server-implementations.html @@ -137,7 +137,7 @@

Yes No No - 1182 + 1184 @@ -275,7 +275,7 @@

No Yes Yes - 330 + 331 @@ -298,7 +298,7 @@

Yes Yes Yes - 8893 + 8896 @@ -367,7 +367,7 @@

No Yes Yes - 8555 + 8556 @@ -434,7 +434,7 @@

Yes Yes Yes - 913 + 914 @@ -480,7 +480,7 @@

No Yes No - 5046 + 5050 @@ -503,7 +503,7 @@

No Yes No - 485 + 488 @@ -549,7 +549,7 @@

No Yes No - 4357 + 4360 @@ -777,7 +777,7 @@

No Yes No - 76290 + 76322 @@ -821,7 +821,7 @@

No Yes No - 2697 + 2698 @@ -842,7 +842,7 @@

No Yes No - 2343 + 2344 @@ -863,7 +863,7 @@

No Yes No - 2297 + 2299 @@ -907,7 +907,7 @@

No Yes No - 1655 + 1658 @@ -972,7 +972,7 @@

No Yes No - 807 + 808 @@ -1016,7 +1016,7 @@

No Yes No - 513 + 512 @@ -1144,7 +1144,7 @@

No Yes No - 362 + 363 @@ -1186,7 +1186,7 @@

No Yes No - 333 + 334 @@ -1228,7 +1228,7 @@

No Yes No - 301 + 302 @@ -1333,7 +1333,7 @@

No Yes No - 198 + 199 @@ -1438,7 +1438,7 @@

Yes Yes No - 113 + 115 @@ -1522,7 +1522,7 @@

No Yes No - 104 + 105 @@ -2320,7 +2320,7 @@

Yes Yes No - 20 + 21 @@ -2425,7 +2425,7 @@

No Yes No - 18 + 19 @@ -2488,7 +2488,7 @@

No Yes No - 17 + 18 @@ -4716,7 +4716,7 @@

No Yes No - 3 + 4 @@ -9235,7 +9235,7 @@

No Yes No - 270 + 271 @@ -9256,7 +9256,7 @@

No Yes No - 26657 + 26676 @@ -11148,7 +11148,7 @@

No No No - 15 + 14 @@ -11799,7 +11799,7 @@

Scramble (link)

Stars - 1182 + 1184 Watchers @@ -11815,7 +11815,7 @@

Scramble (link)

Last Updated - 2024-10-06T14:56:36Z + 2024-10-07T13:29:20Z Archived @@ -12105,7 +12105,7 @@

VSCode OpenAPI Editor (link)

Stars - 330 + 331 Watchers @@ -12121,7 +12121,7 @@

VSCode OpenAPI Editor (link)

Last Updated - 2024-10-04T14:23:57Z + 2024-10-07T16:23:39Z Archived @@ -12156,7 +12156,7 @@

Swagger Editor (link)

Stars - 8893 + 8896 Watchers @@ -12172,7 +12172,7 @@

Swagger Editor (link)

Last Updated - 2024-10-06T22:02:51Z + 2024-10-07T15:59:07Z Archived @@ -12309,11 +12309,11 @@

API Platform (link)

Stars - 8555 + 8556 Watchers - 213 + 214 Forks @@ -12325,7 +12325,7 @@

API Platform (link)

Last Updated - 2024-10-06T10:41:47Z + 2024-10-07T15:42:36Z Archived @@ -12462,7 +12462,7 @@

Redocly CLI (link)

Stars - 913 + 914 Watchers @@ -12478,7 +12478,7 @@

Redocly CLI (link)

Last Updated - 2024-10-04T12:09:46Z + 2024-10-07T11:21:39Z Archived @@ -12529,7 +12529,7 @@

cats (link)

Last Updated - 2024-10-06T20:07:05Z + 2024-10-07T19:33:11Z Archived @@ -12564,7 +12564,7 @@

mitmproxy2swagger (link)

Stars - 5046 + 5050 Watchers @@ -12580,7 +12580,7 @@

mitmproxy2swagger (link)

Last Updated - 2024-10-07T01:48:17Z + 2024-10-08T02:05:58Z Archived @@ -12615,7 +12615,7 @@

OpenApiSpecGeneratorPlugin (link)

Stars - 485 + 488 Watchers @@ -12631,7 +12631,7 @@

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T02:17:34Z + 2024-10-07T21:08:40Z Archived @@ -12717,7 +12717,7 @@

TypeSpec (link)

Stars - 4357 + 4360 Watchers @@ -12733,7 +12733,7 @@

TypeSpec (link)

Last Updated - 2024-10-06T19:26:20Z + 2024-10-08T03:16:12Z Archived @@ -12878,7 +12878,7 @@

Django REST Framework (link)

Forks - 6818 + 6819 Created @@ -12886,7 +12886,7 @@

Django REST Framework (link)

Last Updated - 2024-10-07T02:54:51Z + 2024-10-07T20:08:01Z Archived @@ -13039,7 +13039,7 @@

Counterfact (link)

Last Updated - 2024-10-06T21:05:56Z + 2024-10-08T00:13:04Z Archived @@ -13227,15 +13227,15 @@

FastAPI (link)

Stars - 76290 + 76322 Watchers - 678 + 679 Forks - 6433 + 6437 Created @@ -13243,7 +13243,7 @@

FastAPI (link)

Last Updated - 2024-10-07T03:24:57Z + 2024-10-08T02:24:52Z Archived @@ -13329,7 +13329,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2697 + 2698 Watchers @@ -13345,7 +13345,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2024-10-06T19:15:39Z + 2024-10-07T13:26:49Z Archived @@ -13380,7 +13380,7 @@

drf-spectacular (link)

Stars - 2343 + 2344 Watchers @@ -13396,7 +13396,7 @@

drf-spectacular (link)

Last Updated - 2024-10-06T17:35:11Z + 2024-10-07T16:24:53Z Archived @@ -13431,7 +13431,7 @@

msgspec (link)

Stars - 2297 + 2299 Watchers @@ -13447,7 +13447,7 @@

msgspec (link)

Last Updated - 2024-10-07T01:37:35Z + 2024-10-07T09:58:52Z Archived @@ -13490,7 +13490,7 @@

Schemathesis (link)

Forks - 159 + 161 Created @@ -13533,7 +13533,7 @@

rapidoc (link)

Stars - 1655 + 1658 Watchers @@ -13549,7 +13549,7 @@

rapidoc (link)

Last Updated - 2024-10-06T19:54:04Z + 2024-10-07T23:08:54Z Archived @@ -13651,7 +13651,7 @@

apiflask (link)

Last Updated - 2024-10-04T23:22:12Z + 2024-10-07T18:55:18Z Archived @@ -13686,7 +13686,7 @@

studio (link)

Stars - 807 + 808 Watchers @@ -13702,7 +13702,7 @@

studio (link)

Last Updated - 2024-10-03T14:51:00Z + 2024-10-07T05:01:19Z Archived @@ -13788,7 +13788,7 @@

stackql (link)

Stars - 513 + 512 Watchers @@ -13804,7 +13804,7 @@

stackql (link)

Last Updated - 2024-10-04T04:16:22Z + 2024-10-07T12:57:33Z Archived @@ -14094,7 +14094,7 @@

rest (link)

Stars - 362 + 363 Watchers @@ -14110,7 +14110,7 @@

rest (link)

Last Updated - 2024-10-06T10:49:49Z + 2024-10-08T00:38:45Z Archived @@ -14196,7 +14196,7 @@

beacon-apis (link)

Stars - 333 + 334 Watchers @@ -14212,7 +14212,7 @@

beacon-apis (link)

Last Updated - 2024-10-05T10:18:58Z + 2024-10-07T20:41:15Z Archived @@ -14298,7 +14298,7 @@

esmerald (link)

Stars - 301 + 302 Watchers @@ -14314,7 +14314,7 @@

esmerald (link)

Last Updated - 2024-10-04T18:11:07Z + 2024-10-07T04:54:44Z Archived @@ -14553,15 +14553,15 @@

typescript-backend-toolkit (link)

Stars - 198 + 199 Watchers - 2 + 3 Forks - 35 + 36 Created @@ -14569,7 +14569,7 @@

typescript-backend-toolkit (link)

Last Updated - 2024-10-06T13:36:22Z + 2024-10-07T08:26:56Z Archived @@ -14722,7 +14722,7 @@

deeptest (link)

Last Updated - 2024-10-07T02:52:54Z + 2024-10-08T02:35:11Z Archived @@ -14808,7 +14808,7 @@

learn.openapis.org (link)

Stars - 113 + 115 Watchers @@ -14824,7 +14824,7 @@

learn.openapis.org (link)

Last Updated - 2024-09-26T17:20:06Z + 2024-10-07T20:58:53Z Archived @@ -15012,7 +15012,7 @@

go-swagger3 (link)

Stars - 104 + 105 Watchers @@ -15028,7 +15028,7 @@

go-swagger3 (link)

Last Updated - 2024-10-07T01:19:56Z + 2024-10-08T00:38:32Z Archived @@ -15079,7 +15079,7 @@

tools.openapis.org (link)

Last Updated - 2024-10-06T03:37:32Z + 2024-10-07T03:37:14Z Archived @@ -15428,7 +15428,7 @@

openapi-petstore (link)

Forks - 43 + 44 Created @@ -15589,7 +15589,7 @@

swagger-editor-validate (link)

Last Updated - 2024-10-04T05:02:17Z + 2024-10-07T04:46:12Z Archived @@ -16142,7 +16142,7 @@

spring-boot-swagger-3-example (link) Forks - 26 + 27 Created @@ -16950,7 +16950,7 @@

redocly-cli-cookbook (link)

Stars - 20 + 21 Watchers @@ -16966,7 +16966,7 @@

redocly-cli-cookbook (link)

Last Updated - 2024-10-02T14:32:43Z + 2024-10-07T11:22:17Z Archived @@ -17205,7 +17205,7 @@

file-service (link)

Stars - 18 + 19 Watchers @@ -17213,7 +17213,7 @@

file-service (link)

Forks - 5 + 6 Created @@ -17221,7 +17221,7 @@

file-service (link)

Last Updated - 2024-09-26T04:17:30Z + 2024-10-07T14:51:48Z Archived @@ -17358,7 +17358,7 @@

postgrest-openapi (link)

Stars - 17 + 18 Watchers @@ -17374,7 +17374,7 @@

postgrest-openapi (link)

Last Updated - 2024-09-02T19:00:01Z + 2024-10-07T04:30:32Z Archived @@ -19159,7 +19159,7 @@

sandbox (link)

Last Updated - 2024-10-04T15:27:30Z + 2024-10-07T16:04:02Z Archived @@ -22764,7 +22764,7 @@

provider-pact-example (link)

Stars - 3 + 4 Watchers @@ -22780,7 +22780,7 @@

provider-pact-example (link)

Last Updated - 2024-08-05T12:03:47Z + 2024-10-07T08:15:59Z Archived @@ -23647,7 +23647,7 @@

programming-machine-learning (link)

Last Updated - 2024-10-06T22:04:14Z + 2024-10-07T20:42:50Z Archived @@ -29104,7 +29104,7 @@

hub (link)

Last Updated - 2024-09-27T10:01:01Z + 2024-10-07T13:06:40Z Archived @@ -33729,7 +33729,7 @@

apicat (link)

Stars - 270 + 271 Watchers @@ -33745,7 +33745,7 @@

apicat (link)

Last Updated - 2024-10-05T22:53:02Z + 2024-10-07T13:47:56Z Archived @@ -33780,7 +33780,7 @@

full-stack-fastapi-template (link)

Stars - 26657 + 26676 Watchers @@ -33788,7 +33788,7 @@

full-stack-fastapi-template (link)

Forks - 4694 + 4702 Created @@ -33796,7 +33796,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-10-07T03:11:49Z + 2024-10-08T00:40:00Z Archived @@ -34408,7 +34408,7 @@

spring-boot-starter-tomcat (link)

Last Updated - 2024-10-04T15:39:19Z + 2024-10-07T15:21:37Z Archived @@ -34447,7 +34447,7 @@

UI Bakery (link)

Watchers - 5 + 7 Forks @@ -38370,7 +38370,7 @@

Modern (link)

Stars - 15 + 14 Watchers @@ -38386,7 +38386,7 @@

Modern (link)

Last Updated - 2021-03-19T23:47:47Z + 2024-10-07T05:14:37Z Archived @@ -38480,7 +38480,7 @@

PHP-CRUD-API (link)

Forks - 1009 + 1010 Created diff --git a/docs/categories/server.html b/docs/categories/server.html index 76fd7148..8220ab91 100644 --- a/docs/categories/server.html +++ b/docs/categories/server.html @@ -114,7 +114,7 @@

No Yes Yes - 3478 + 3480 @@ -229,7 +229,7 @@

No Yes Yes - 8555 + 8556 @@ -500,7 +500,7 @@

No Yes No - 70 + 71 @@ -546,7 +546,7 @@

Yes Yes Yes - 2612 + 2617 @@ -569,7 +569,7 @@

Yes Yes No - 1388 + 1392 @@ -592,7 +592,7 @@

No Yes No - 824 + 825 @@ -615,7 +615,7 @@

Yes Yes No - 1951 + 1959 @@ -2943,7 +2943,7 @@

tsoa (link)

Stars - 3478 + 3480 Watchers @@ -2959,7 +2959,7 @@

tsoa (link)

Last Updated - 2024-10-05T01:53:14Z + 2024-10-08T01:22:31Z Archived @@ -3010,7 +3010,7 @@

Vert.x Web Api Contract (link)

Last Updated - 2024-10-06T04:26:21Z + 2024-10-07T21:44:05Z Archived @@ -3198,11 +3198,11 @@

API Platform (link)

Stars - 8555 + 8556 Watchers - 213 + 214 Forks @@ -3214,7 +3214,7 @@

API Platform (link)

Last Updated - 2024-10-06T10:41:47Z + 2024-10-07T15:42:36Z Archived @@ -3469,7 +3469,7 @@

@nestjs/swagger (link)

Last Updated - 2024-10-06T13:21:43Z + 2024-10-07T22:07:56Z Archived @@ -3810,7 +3810,7 @@

ABAP OpenAPI Client & Server Genera Stars - 70 + 71 Watchers @@ -3826,7 +3826,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2024-10-04T13:27:44Z + 2024-10-07T18:40:44Z Archived @@ -3912,7 +3912,7 @@

🌿 Fern (link)

Stars - 2612 + 2617 Watchers @@ -3928,7 +3928,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T02:40:03Z + 2024-10-07T23:52:22Z Archived @@ -3963,7 +3963,7 @@

Swift OpenAPI Generator (link)

Stars - 1388 + 1392 Watchers @@ -3979,7 +3979,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-10-06T20:45:13Z + 2024-10-07T22:58:19Z Archived @@ -4014,7 +4014,7 @@

Fuego (link)

Stars - 824 + 825 Watchers @@ -4030,7 +4030,7 @@

Fuego (link)

Last Updated - 2024-10-06T11:40:38Z + 2024-10-07T17:50:31Z Archived @@ -4065,7 +4065,7 @@

Huma (link)

Stars - 1951 + 1959 Watchers @@ -4081,7 +4081,7 @@

Huma (link)

Last Updated - 2024-10-07T01:18:36Z + 2024-10-08T00:58:26Z Archived @@ -4489,7 +4489,7 @@

fastify-openapi3 (link)

Last Updated - 2024-09-24T20:00:35Z + 2024-10-07T20:55:26Z Archived @@ -5866,7 +5866,7 @@

restdocs-openapi3 (link)

Last Updated - 2024-10-01T01:28:30Z + 2024-10-08T02:06:30Z Archived @@ -7498,7 +7498,7 @@

centeredge.textpay (link)

Last Updated - 2022-01-21T13:17:48Z + 2024-10-07T13:46:33Z Archived @@ -9283,7 +9283,7 @@

LoopBack 4 (link)

Last Updated - 2024-10-07T00:55:49Z + 2024-10-08T00:12:49Z Archived @@ -9436,7 +9436,7 @@

Vert.x Web API Service (link)

Last Updated - 2024-10-06T04:26:21Z + 2024-10-07T21:44:05Z Archived diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html index 414d1467..e666836a 100644 --- a/docs/categories/testing-tools.html +++ b/docs/categories/testing-tools.html @@ -250,7 +250,7 @@

Schemathesis (link)

Forks - 159 + 161 Created diff --git a/docs/categories/testing.html b/docs/categories/testing.html index fc169f93..9d695bbe 100644 --- a/docs/categories/testing.html +++ b/docs/categories/testing.html @@ -173,7 +173,7 @@

No Yes Yes - 4187 + 4188 @@ -240,7 +240,7 @@

No Yes No - 1640 + 1641 @@ -368,7 +368,7 @@

Yes Yes No - 900 + 901 @@ -717,7 +717,7 @@

No Yes No - 6311 + 6314 @@ -2640,7 +2640,7 @@

No Yes Yes - 2587 + 2588 @@ -2938,7 +2938,7 @@

Dredd (link)

Stars - 4187 + 4188 Watchers @@ -2954,7 +2954,7 @@

Dredd (link)

Last Updated - 2024-10-04T12:23:14Z + 2024-10-07T08:16:50Z Archived @@ -3056,7 +3056,7 @@

portman (link)

Last Updated - 2024-10-04T15:40:21Z + 2024-10-07T18:29:12Z Archived @@ -3091,7 +3091,7 @@

Step CI (link)

Stars - 1640 + 1641 Watchers @@ -3107,7 +3107,7 @@

Step CI (link)

Last Updated - 2024-10-07T00:52:57Z + 2024-10-07T11:58:08Z Archived @@ -3397,7 +3397,7 @@

Restish (link)

Stars - 900 + 901 Watchers @@ -3413,7 +3413,7 @@

Restish (link)

Last Updated - 2024-10-04T10:34:48Z + 2024-10-07T15:46:06Z Archived @@ -3974,7 +3974,7 @@

Specmatic (link)

Last Updated - 2024-10-06T20:18:26Z + 2024-10-07T07:43:09Z Archived @@ -4025,7 +4025,7 @@

openapi-changes (link)

Last Updated - 2024-10-03T04:43:42Z + 2024-10-08T02:41:54Z Archived @@ -4213,7 +4213,7 @@

mockoon (link)

Stars - 6311 + 6314 Watchers @@ -4229,7 +4229,7 @@

mockoon (link)

Last Updated - 2024-10-07T01:39:27Z + 2024-10-07T22:48:23Z Archived @@ -4637,7 +4637,7 @@

moclojer (link)

Last Updated - 2024-10-03T23:23:07Z + 2024-10-07T17:53:01Z Archived @@ -8854,7 +8854,7 @@

RESTler (link)

Stars - 2587 + 2588 Watchers @@ -8870,7 +8870,7 @@

RESTler (link)

Last Updated - 2024-10-04T00:10:08Z + 2024-10-07T08:50:57Z Archived diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html index 9ed90eda..c2394642 100644 --- a/docs/categories/text-editors.html +++ b/docs/categories/text-editors.html @@ -111,7 +111,7 @@

No Yes Yes - 330 + 331 @@ -157,7 +157,7 @@

Yes Yes Yes - 8893 + 8896 @@ -492,7 +492,7 @@

VSCode OpenAPI Editor (link)

Stars - 330 + 331 Watchers @@ -508,7 +508,7 @@

VSCode OpenAPI Editor (link)

Last Updated - 2024-10-04T14:23:57Z + 2024-10-07T16:23:39Z Archived @@ -594,7 +594,7 @@

Swagger Editor (link)

Stars - 8893 + 8896 Watchers @@ -610,7 +610,7 @@

Swagger Editor (link)

Last Updated - 2024-10-06T22:02:51Z + 2024-10-07T15:59:07Z Archived diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html index dca4dce0..ca1ea450 100644 --- a/docs/categories/unclassified.html +++ b/docs/categories/unclassified.html @@ -1267,7 +1267,7 @@

prance (link)

Last Updated - 2024-09-15T17:46:25Z + 2024-10-07T20:56:50Z Archived diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html index 28354c84..686ff3d6 100644 --- a/docs/categories/user-interfaces.html +++ b/docs/categories/user-interfaces.html @@ -91,7 +91,7 @@

Yes Yes No - 26418 + 26422 @@ -114,7 +114,7 @@

Yes Yes No - 23390 + 23397 @@ -275,7 +275,7 @@

swagger-ui (link)

Stars - 26418 + 26422 Watchers @@ -283,7 +283,7 @@

swagger-ui (link)

Forks - 8927 + 8929 Created @@ -291,7 +291,7 @@

swagger-ui (link)

Last Updated - 2024-10-07T03:07:20Z + 2024-10-08T00:54:07Z Archived @@ -326,11 +326,11 @@

Redoc (link)

Stars - 23390 + 23397 Watchers - 297 + 295 Forks @@ -342,7 +342,7 @@

Redoc (link)

Last Updated - 2024-10-07T02:51:20Z + 2024-10-08T00:19:58Z Archived diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml index f043635e..5f4d6962 100644 --- a/src/_data/tools.yaml +++ b/src/_data/tools.yaml @@ -279,17 +279,17 @@ References                                        ✨ 1st-Class OpenAPI/Swagger Support created: '2023-08-16T13:42:32Z' - updated: '2024-10-07T00:58:53Z' + updated: '2024-10-08T02:46:47Z' language: TypeScript archived: false - stars: 6290 + stars: 6313 watchers: 21 forks: 203 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 license: MIT - repoEtag: '"f6c3bb72e89c6d4a2424f9ceef054cffde3ed590665d9d59f2c0a41de7d98724"' - repoLastModified: Mon, 07 Oct 2024 00:58:53 GMT + repoEtag: '"378c8d2a2f720c7422545c2e1b0fd57afdf723ac5bc8501de5cc942a18e817dd"' + repoLastModified: Tue, 08 Oct 2024 02:46:47 GMT foundInMaster: true - source: https://openapi.tools/ name: Scramble @@ -317,17 +317,17 @@ Modern Laravel OpenAPI (Swagger) documentation generator. No PHPDoc annotations required. created: '2022-08-05T17:16:20Z' - updated: '2024-10-06T14:56:36Z' + updated: '2024-10-07T13:29:20Z' language: PHP archived: false - stars: 1182 + stars: 1184 watchers: 14 forks: 112 owner: dedoc logo: https://avatars.githubusercontent.com/u/93313138?v=4 license: MIT - repoEtag: '"e28eff8392154d1ede0db4eedc76108c9bbfd31a29a22f935ebc3955dbf97500"' - repoLastModified: Sun, 06 Oct 2024 14:56:36 GMT + repoEtag: '"ee8e824cf4fd9514def8ee56aac16ae705e4fc86ac718406ab58dadf13e156cc"' + repoLastModified: Mon, 07 Oct 2024 13:29:20 GMT foundInMaster: true - source: https://openapi.tools/ name: Scribe @@ -348,17 +348,17 @@ repositoryId: 260729799 description: Generate API documentation for humans from your Laravel codebase.✍ created: '2020-05-02T16:36:45Z' - updated: '2024-10-05T15:01:33Z' + updated: '2024-10-07T05:37:08Z' language: PHP archived: false - stars: 1704 + stars: 1705 watchers: 18 forks: 302 owner: knuckleswtf logo: https://avatars.githubusercontent.com/u/63367037?v=4 license: MIT - repoEtag: '"b357f3e4a3e888c4daecf2b00d4ae928c769707eaaf11d84514987bb251d33a7"' - repoLastModified: Sat, 05 Oct 2024 15:01:33 GMT + repoEtag: '"c97ac1131accbfc587b260fde665fa265462471e4d6b3ed09a154528efe46a01"' + repoLastModified: Mon, 07 Oct 2024 05:37:08 GMT foundInMaster: true - source: https://openapi.tools/ name: Supermodel @@ -405,17 +405,17 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2024-10-07T02:51:20Z' + updated: '2024-10-08T00:19:58Z' language: TypeScript archived: false - stars: 23390 - watchers: 297 + stars: 23397 + watchers: 295 forks: 2292 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"3d8e3b33bf3135be1a261c40f3aae4c222bad24ee0ce10fe23b5fa5503e70864"' - repoLastModified: Mon, 07 Oct 2024 02:51:20 GMT + repoEtag: '"0f707d64eb6f1f6467fcfe1aaab7da0297e5c35c93f2320c3ec3969061971601"' + repoLastModified: Tue, 08 Oct 2024 00:19:58 GMT foundInMaster: true - source: https://openapi.tools/ name: RestCase Docs @@ -477,7 +477,7 @@ also simplified postman tool. 基于 OpenAPI/Swagger 规范的接口文档,快速模拟请求参数并调用接口,也是简化版 postman 工具 created: '2023-12-20T14:51:12Z' - updated: '2024-10-04T15:59:58Z' + updated: '2024-10-07T15:02:28Z' language: TypeScript archived: false stars: 617 @@ -486,8 +486,8 @@ owner: rookie-luochao logo: https://avatars.githubusercontent.com/u/22948077?v=4 license: MIT - repoEtag: '"f9e0502bb66485827ab8a5277e7e66f88966c8592326fd6583556edca1cdd139"' - repoLastModified: Fri, 04 Oct 2024 15:59:58 GMT + repoEtag: '"7b2877bb863cde100c5da04a843a0c00bc607cc7a0a7acc7c957331e1d4ba67c"' + repoLastModified: Mon, 07 Oct 2024 15:02:28 GMT category: Documentation foundInMaster: true v3_1: true @@ -512,17 +512,17 @@ repositoryId: 337689065 description: OpenAPI Diff and Breaking Changes created: '2021-02-10T10:28:36Z' - updated: '2024-10-05T14:51:58Z' + updated: '2024-10-07T08:42:14Z' language: Go archived: false stars: 704 watchers: 9 - forks: 62 + forks: 63 owner: Tufin logo: https://avatars.githubusercontent.com/u/5352131?v=4 license: Apache-2.0 - repoEtag: '"ddd94eff656f200de5b2a2c9500f67afcfd6999386667171bb34909119cde49d"' - repoLastModified: Sat, 05 Oct 2024 14:51:58 GMT + repoEtag: '"37a9da08918ade0bcccb8329d2d9329bd1e83d84ef9e29e296941029b77a45d2"' + repoLastModified: Mon, 07 Oct 2024 08:42:14 GMT foundInMaster: true name: oasdiff language: Go @@ -579,7 +579,7 @@ owner: opticdev logo: https://avatars.githubusercontent.com/u/34556970?v=4 license: MIT - repoEtag: '"0c3ef4cafb206bc9b95c117e13faa8ea68346ffaa1953c1958cd9ea6dbbc7f6d"' + repoEtag: '"3f4c5fb4d935d1ab704630054ea01080814cdb5353605ec2d8d6eb0ec01f804b"' repoLastModified: Sat, 05 Oct 2024 20:00:18 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 @@ -1026,26 +1026,26 @@ v3: true repositoryMetadata: base64Readme: >- - PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgR2VuZXJhdG9yPC9oMT4KCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKWyFbU3RhYmxlIHJlbGVhc2VzIGluIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tbWV0YWRhdGEvdi9odHRwcy9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWF2ZW4tbWV0YWRhdGEueG1sLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYXYlN0MxJTdDZyUzQSUyMm9yZy5vcGVuYXBpdG9vbHMlMjIlMjBBTkQlMjBhJTNBJTIyb3BlbmFwaS1nZW5lcmF0b3IlMjIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpClshW09wZW4gQ29sbGVjdGl2ZSBiYWNrZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2JhY2tlcnMvb3BlbmFwaV9nZW5lcmF0b3I/Y29sb3I9b3JhbmdlJmxhYmVsPU9wZW5Db2xsZWN0aXZlJTIwQmFja2VycyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKQpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL3p0LTEyanh4ZDdwMi1YVWVRTX40cHpzVTl4fmVHTFFxWDJnKQpbIVtGb2xsb3cgT3BlbkFQSSBHZW5lcmF0b3IgVHdpdHRlciBhY2NvdW50IHRvIGdldCB0aGUgbGF0ZXN0IHVwZGF0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9vYXNfZ2VuZXJhdG9yLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9Rm9sbG93KV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vYXNfZ2VuZXJhdG9yKQpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQ29uYW4gQ2VudGVyXShodHRwczovL3NoaWVsZHMuaW8vY29uYW4vdi9vcGVuYXBpLWdlbmVyYXRvcildKGh0dHBzOi8vY29uYW4uaW8vY2VudGVyL3JlY2lwZXMvb3BlbmFwaS1nZW5lcmF0b3IpClshW1JldnZlZCB1cCBieSBEZXZlbG9jaXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JldnZlZCUyMHVwJTIwYnktRGV2ZWxvY2l0eS0wNkEwQ0U/bG9nbz1HcmFkbGUmbGFiZWxDb2xvcj0wMjMwM0EpXShodHRwczovL2dlLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gvc2NhbnMpCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCltNYXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpIChgNy45LjBgKToKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2FwaS50cmF2aXMtY2kuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/YnJhbmNoPW1hc3RlciZzdGF0dXM9cGFzc2VkKV0oaHR0cHM6Ly9hcHAudHJhdmlzLWNpLmNvbS9naXRodWIvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2J1aWxkcykKWyFbSW50ZWdyYXRpb24gVGVzdDJdKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQpbIVtXaW5kb3dzIFRlc3RdKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvZ2l0aHViL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcj9icmFuY2g9bWFzdGVyJnN2Zz10cnVlJnBhc3NpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyME9LJmZhaWxpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyMEZhaWxzKV0oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9XaWxsaWFtQ2hlbmcvb3BlbmFwaS1nZW5lcmF0b3IpClshW0JpdHJpc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYml0cmlzZS80YTJiMTBhODE5ZDEyYjY3L21hc3Rlcj9sYWJlbD1iaXRyaXNlJTNBJTIwU3dpZnQrNCw1JnRva2VuPTg1OUZNRFI4UUh3YWJDend2Wks2dlEpXShodHRwczovL2FwcC5iaXRyaXNlLmlvL2FwcC80YTJiMTBhODE5ZDEyYjY3KQoKPC9kaXY+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKOnN0YXI6OnN0YXI6OnN0YXI6IElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUsIHBsZWFzZSByZWZlciB0byBbZ3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKSBhbmQgYSBsaXN0IG9mIFtvcGVuIHRhc2tzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWlzJTNBb3BlbitpcyUzQWlzc3VlK2xhYmVsJTNBJTIyaGVscCt3YW50ZWQlMjIpLiA6c3Rhcjo6c3Rhcjo6c3RhcjoKCjpiYW5nYmFuZzogVG8gbWlncmF0ZSBmcm9tIFN3YWdnZXIgQ29kZWdlbiB0byBPcGVuQVBJIEdlbmVyYXRvciwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbbWlncmF0aW9uIGd1aWRlXShkb2NzL21pZ3JhdGlvbi1mcm9tLXN3YWdnZXItY29kZWdlbi5tZCkgOmJhbmdiYW5nOgoKOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgW1dpa2kgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpKSBhbmQgW0ZBUV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpL0ZBUSkgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6IFRoZSBlQm9vayBbQSBCZWdpbm5lcidzIEd1aWRlIHRvIENvZGUgR2VuZXJhdGlvbiBmb3IgUkVTVCBBUElzXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBiZWdpbm5lcnMgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjp3YXJuaW5nOiBJZiB0aGUgT3BlbkFQSSBzcGVjLCB0ZW1wbGF0ZXMgb3IgYW55IGlucHV0IChlLmcuIG9wdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcykgaXMgb2J0YWluZWQgZnJvbSBhbiB1bnRydXN0ZWQgc291cmNlIG9yIGVudmlyb25tZW50LCBwbGVhc2UgbWFrZSBzdXJlIHlvdSd2ZSByZXZpZXdlZCB0aGVzZSBpbnB1dHMgYmVmb3JlIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBBUEkgY2xpZW50LCBzZXJ2ZXIgc3R1YiBvciBkb2N1bWVudGF0aW9uIHRvIGF2b2lkIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgKGUuZy4gW2NvZGUgaW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2RlX2luamVjdGlvbikpLiBGb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBwbGVhc2UgY29udGFjdCBbdGVhbUBvcGVuYXBpdG9vbHMub3JnXShtYWlsdG86dGVhbUBvcGVuYXBpdG9vbHMub3JnKS4gOndhcm5pbmc6Cgo6YmFuZ2Jhbmc6IEJvdGggIk9wZW5BUEkgVG9vbHMiIChodHRwczovL09wZW5BUElUb29scy5vcmcgLSB0aGUgcGFyZW50IG9yZ2FuaXphdGlvbiBvZiBPcGVuQVBJIEdlbmVyYXRvcikgYW5kICJPcGVuQVBJIEdlbmVyYXRvciIgYXJlIG5vdCBhZmZpbGlhdGVkIHdpdGggT3BlbkFQSSBJbml0aWF0aXZlIChPQUkpIDpiYW5nYmFuZzoKCjwvZGl2PgoKIyMgU3BvbnNvcnMKCklmIHlvdSBmaW5kIE9wZW5BUEkgR2VuZXJhdG9yIHVzZWZ1bCBmb3Igd29yaywgcGxlYXNlIGNvbnNpZGVyIGFza2luZyB5b3VyIGNvbXBhbnkgdG8gc3VwcG9ydCB0aGlzIE9wZW4gU291cmNlIHByb2plY3QgYnkgW2JlY29taW5nIGEgc3BvbnNvcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaV9nZW5lcmF0b3IpLiBZb3UgY2FuIGFsc28gaW5kaXZpZHVhbGx5IHNwb25zb3IgdGhlIHByb2plY3QgYnkgW2JlY29taW5nIGEgYmFja2VyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpX2dlbmVyYXRvcikuCgojIyMjIFRoYW5rIHlvdSB0byBvdXIgYnJvbnplIHNwb25zb3JzIQoKWyFbTmFtU29yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9uYW1zb3IucG5nKV0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaWdodEJvd10oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbGlnaHRib3cucG5nKV0oaHR0cHM6Ly93d3cubGlnaHRib3cubmV0Lz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZG9jc3ByaW5nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9kb2NzcHJpbmcuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGF0YWRvZy5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZGF0YWRvZ2hxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3RoYWxlcy5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vY3BsLnRoYWxlc2dyb3VwLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2FwaWRlY2suanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5hcGlkZWNrLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3BleGEucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5wZXhhLmNvbS5hdS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL251bWFyeS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3Lm51bWFyeS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9vbmVzaWduYWwucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5vbmVzaWduYWwuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvdmlydHVhbGFuc29mdHdhcmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy52aXJ0dWFsYW5zb2Z0d2FyZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9tZXJnZWRldi5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5tZXJnZS5kZXYvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9idXJrZXJ0LmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYnVya2VydC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9maW5ib3VybmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5maW5ib3VybmUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYnVtcHNoLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9idW1wLnNoLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYmlsZXRvLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYmlsZXRvLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2JhaXJlc2Rldi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmJhaXJlc2Rldi5jb20vc3BvbnNvcmluZy1vcGVuLXNvdXJjZS1wcm9qZWN0cy8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RtdGVjaC5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5kbXRlY2guZGUvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9hZHllbi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vYWR5ZW4uY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZm9ybmV4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9mb3JuZXguY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYWxsb3lhdXRvbWF0aW9uLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9ydW5hbGxveS5jb20vc2lnbnVwP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPTE1MjRfb3BlbmFwaWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zc3N0d2l0dGVyLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9zc3N0d2l0dGVyLmNvbS8/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zdml4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuc3ZpeC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2xpdHNsaW5rLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9saXRzbGluay5jb20vc2VydmljZXMvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2U/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGVzaWdubGkuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2Rlc2lnbmxpLmNvP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2l0bS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vb3BlbnNvdXJjZS5tdWVuY2hlbi5kZT91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9rb25nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9rb25naHEuY29tL3Byb2R1Y3RzL2tvbmcta29ubmVjdD91dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9zb3VyY2U9Z2l0aHViJnV0bV9jYW1wYWlnbj1wbGF0Zm9ybSZ1dG1fY29udGVudD1vcGVuYXBpLWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9yb3V0ZTRtZS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vcm91dGU0bWUuY29tLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kbS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmRvdGNvbS1tb25pdG9yLmNvbS9zcG9uc29yaW5nLW9wZW4tc291cmNlLXByb2plY3RzLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKCiMjIyMgVGhhbmsgeW91IEdvRGFkZHkgZm9yIHNwb25zb3JpbmcgdGhlIGRvbWFpbiBuYW1lcywgTGlub2RlIGZvciBzcG9uc29yaW5nIHRoZSBWUFMsIENoZWNrbHkgZm9yIHNwb25zb3JpbmcgdGhlIEFQSSBtb25pdG9yaW5nIGFuZCBHcmFkbGUgZm9yIHNwb25zb3JpbmcgRGV2ZWxvY2l0eQoKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9nb2RhZGR5LnBuZyIgd2lkdGg9IjE1MCI+XShodHRwczovL3d3dy5nb2RhZGR5LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaW5vZGVdKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vbWVkaWEvaW1hZ2VzL2xvZ29zL3N0YW5kYXJkL2xpZ2h0L2xpbm9kZS1sb2dvX3N0YW5kYXJkX2xpZ2h0X3NtYWxsLnBuZyldKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL2VuY3J5cHRlZC10Ym4wLmdzdGF0aWMuY29tL2ltYWdlcz9xPXRibiUzQUFOZDlHY1JBaEVZYWRVeVpZekdVb3RaaVNkWGtWTXFxTEd1b2h5aXhMbDRlVXBVVjZwQWJVVUxMIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vY2hlY2tseWhxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYy9jYi9HcmFkbGVfbG9nby5wbmcvMzIwcHgtR3JhZGxlX2xvZ28ucG5nIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vZ3JhZGxlLm9yZz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCgojIyBPdmVydmlldwoKT3BlbkFQSSBHZW5lcmF0b3IgYWxsb3dzIGdlbmVyYXRpb24gb2YgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNESyBnZW5lcmF0aW9uKSwgc2VydmVyIHN0dWJzLCAgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBhdXRvbWF0aWNhbGx5IGdpdmVuIGFuIFtPcGVuQVBJIFNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSAoYm90aCAyLjAgYW5kIDMuMCBhcmUgc3VwcG9ydGVkKS4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGxhbmd1YWdlcy9mcmFtZXdvcmtzIGFyZSBzdXBwb3J0ZWQ6Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFuZ3VhZ2VzL0ZyYW1ld29ya3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgKipBUEkgY2xpZW50cyoqICAgICAgICAgICAgICAgICAgfCAqKkFjdGlvblNjcmlwdCoqLCAqKkFkYSoqLCAqKkFwZXgqKiwgKipCYXNoKiosICoqQyoqLCAqKkMjKiogKC5uZXQgMi4wLCAzLjUgb3IgbGF0ZXIsIC5ORVQgU3RhbmRhcmQgMS4zIC0gMi4xLCAuTkVUIENvcmUgMy4xLCAuTkVUIDUuMC4gTGlicmFyaWVzOiBSZXN0U2hhcnAsIEdlbmVyaWNIb3N0LCBIdHRwQ2xpZW50KSwgKipDKysqKiAoQXJkdWlubywgY3BwLXJlc3RzZGssIFF0NSwgVGl6ZW4sIFVucmVhbCBFbmdpbmUgNCksICoqQ2xvanVyZSoqLCAqKkNyeXN0YWwqKiwgKipEYXJ0KiosICoqRWxpeGlyKiosICoqRWxtKiosICoqRWlmZmVsKiosICoqRXJsYW5nKiosICoqR28qKiwgKipHcm9vdnkqKiwgKipIYXNrZWxsKiogKGh0dHAtY2xpZW50LCBTZXJ2YW50KSwgKipKYXZhKiogKEFwYWNoZSBIdHRwQ2xpZW50IDQueCwgQXBhY2hlIEh0dHBDbGllbnQgNS54LCBKZXJzZXkyLngsIE9rSHR0cCwgUmV0cm9maXQxLngsIFJldHJvZml0Mi54LCBGZWlnbiwgUmVzdFRlbXBsYXRlLCBSRVNURWFzeSwgVmVydHgsIEdvb2dsZSBBUEkgQ2xpZW50IExpYnJhcnkgZm9yIEphdmEsIFJlc3QtYXNzdXJlZCwgU3ByaW5nIDUgV2ViIENsaWVudCwgU3ByaW5nIDYgUmVzdENsaWVudCwgTWljcm9Qcm9maWxlIFJlc3QgQ2xpZW50LCBIZWxpZG9uKSwgKipKZXRicmFpbnMgSFRUUCBDbGllbnQqKiwgKipKdWxpYSoqLCAqKms2KiosICoqS290bGluKiosICoqTHVhKiosICoqTjRKUyoqLCAqKk5pbSoqLCAqKk5vZGUuanMvSmF2YVNjcmlwdCoqIChFUzUsIEVTNiwgQW5ndWxhckpTIHdpdGggR29vZ2xlIENsb3N1cmUgQ29tcGlsZXIgYW5ub3RhdGlvbnMsIEZsb3cgdHlwZXMsIEFwb2xsbyBHcmFwaFFMIERhdGFTdG9yZSksICoqT2JqZWN0aXZlLUMqKiwgKipPQ2FtbCoqLCAqKlBlcmwqKiwgKipQSFAqKiwgKipQb3dlclNoZWxsKiosICoqUHl0aG9uKiosICoqUioqLCAqKlJ1YnkqKiwgKipSdXN0KiogKGh5cGVyLCByZXF3ZXN0LCBydXN0LXNlcnZlciksICoqU2NhbGEqKiAoYWtrYSwgaHR0cDRzLCBzY2FsYXosIHN0dHAsIHN3YWdnZXItYXN5bmMtaHR0cGNsaWVudCwgcGVra28pLCAqKlN3aWZ0KiogKDIueCwgMy54LCA0LngsIDUueCwgNi54KSwgKipUeXBlc2NyaXB0KiogKEFuZ3VsYXJKUywgQW5ndWxhciAoOS54IC0gMTgueCksIEF1cmVsaWEsIEF4aW9zLCBGZXRjaCwgSW52ZXJzaWZ5LCBqUXVlcnksIE5lc3RqcywgTm9kZSwgcmVkdXgtcXVlcnksIFJ4anMpLCAqKlhvSm8qKiwgKipaYXBpZXIqKiB8CnwgKipTZXJ2ZXIgc3R1YnMqKiAgICAgICAgICAgICAgICAgfCAqKkFkYSoqLCAqKkMjKiogKEFTUC5ORVQgQ29yZSwgQXp1cmUgRnVuY3Rpb25zKSwgKipDKysqKiAoUGlzdGFjaGUsIFJlc3RiZWQsIFF0NSBRSFRUUEVuZ2luZSksICoqRXJsYW5nKiosICoqRiMqKiAoR2lyYWZmZSksICoqR28qKiAobmV0L2h0dHAsIEdpbiwgRWNobyksICoqSGFza2VsbCoqIChTZXJ2YW50LCBZZXNvZCksICoqSmF2YSoqIChNU0Y0SiwgU3ByaW5nLCBVbmRlcnRvdywgSkFYLVJTOiBDREksIENYRiwgSW5mbGVjdG9yLCBKZXJzZXksIFJlc3RFYXN5LCBQbGF5IEZyYW1ld29yaywgW1BLTVNUXShodHRwczovL2dpdGh1Yi5jb20vUHJvS2FybWEtSW5jL3BrbXN0LWdldHRpbmctc3RhcnRlZC1leGFtcGxlcyksIFtWZXJ0LnhdKGh0dHBzOi8vdmVydHguaW8vKSwgW0FwYWNoZSBDYW1lbF0oaHR0cHM6Ly9jYW1lbC5hcGFjaGUub3JnLyksIFtIZWxpZG9uXShodHRwczovL2hlbGlkb24uaW8vKSksICoqSnVsaWEqKiwgKipLb3RsaW4qKiAoU3ByaW5nIEJvb3QsIFtLdG9yXShodHRwczovL2dpdGh1Yi5jb20va3RvcmlvL2t0b3IpLCBbVmVydC54XShodHRwczovL3ZlcnR4LmlvLykpLCAqKlBIUCoqIChbRmxpZ2h0XShodHRwczovL2RvY3MuZmxpZ2h0cGhwLmNvbS8pLCBMYXJhdmVsLCBMdW1lbiwgW01lenppbyAoZmthIFplbmQgRXhwcmVzc2l2ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXp6aW8vbWV6emlvKSwgU2xpbSwgU2lsZXgsIFtTeW1mb255XShodHRwczovL3N5bWZvbnkuY29tLykpLCAqKlB5dGhvbioqIChGYXN0QVBJLCBGbGFzayksICoqTm9kZUpTKiosICoqUnVieSoqIChTaW5hdHJhLCBSYWlsczUpLCAqKlJ1c3QqKiAoW3J1c3Qtc2VydmVyXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzL3J1c3Qtc2VydmVyLykpLCAqKlNjYWxhKiogKEFra2EsIFtGaW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmFnbGUvZmluY2gpLCBbTGFnb21dKGh0dHBzOi8vZ2l0aHViLmNvbS9sYWdvbS9sYWdvbSksIFtQbGF5XShodHRwczovL3d3dy5wbGF5ZnJhbWV3b3JrLmNvbS8pLCBbQ2Fza10oaHR0cHM6Ly9naXRodWIuY29tL2NvbS1saWhhb3lpL2Nhc2spLCBTY2FsYXRyYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqQVBJIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9ycyoqIHwgKipIVE1MKiosICoqQ29uZmx1ZW5jZSBXaWtpKiosICoqQXNjaWlkb2MqKiwgKipNYXJrZG93bioqLCAqKlBsYW50VU1MKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKkNvbmZpZ3VyYXRpb24gZmlsZXMqKiAgICAgICAgICB8IFsqKkFwYWNoZTIqKl0oaHR0cHM6Ly9odHRwZC5hcGFjaGUub3JnLykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipPdGhlcnMqKiAgICAgICAgICAgICAgICAgICAgICAgfCAqKkdyYXBoUUwqKiwgKipKTWV0ZXIqKiwgKipLdG9ybSoqLCAqKk15U1FMIFNjaGVtYSoqLCAqKlBvc3RtYW4gQ29sbGVjdGlvbioqLCAqKlByb3RvY29sIEJ1ZmZlcioqLCAqKldTREwqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgVGFibGUgb2YgY29udGVudHMKCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKCNvcGVuYXBpLWdlbmVyYXRvcikKICAtIFtPdmVydmlld10oI292ZXJ2aWV3KQogIC0gW1RhYmxlIG9mIENvbnRlbnRzXSgjdGFibGUtb2YtY29udGVudHMpCiAgLSBbMSAtIEluc3RhbGxhdGlvbl0oIzEtLS1pbnN0YWxsYXRpb24pCiAgICAtIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjMTEtLS1jb21wYXRpYmlsaXR5KQogICAgLSBbMS4yIC0gQXJ0aWZhY3RzIG9uIE1hdmVuIENlbnRyYWxdKCMxMi0tLWFydGlmYWN0cy1vbi1tYXZlbi1jZW50cmFsKQogICAgLSBbMS4zIC0gRG93bmxvYWQgSkFSXSgjMTMtLS1kb3dubG9hZC1qYXIpCiAgICAtIFsxLjQgLSBCdWlsZCBQcm9qZWN0c10oIzE0LS0tYnVpbGQtcHJvamVjdHMpCiAgICAtIFsxLjUgLSBIb21lYnJld10oIzE1LS0taG9tZWJyZXcpCiAgICAtIFsxLjYgLSBEb2NrZXJdKCMxNi0tLWRvY2tlcikKICAgIC0gWzEuNyAtIE5QTV0oIzE3LS0tbnBtKQogIC0gWzIgLSBHZXR0aW5nIFN0YXJ0ZWRdKCMyLS0tZ2V0dGluZy1zdGFydGVkKQogIC0gWzMgLSBVc2FnZV0oIzMtLS11c2FnZSkKICAgIC0gWzMuMSAtIEN1c3RvbWl6YXRpb25dKCMzMS0tLWN1c3RvbWl6YXRpb24pCiAgICAtIFszLjIgLSBXb3JrZmxvdyBJbnRlZ3JhdGlvbl0oIzMyLS0td29ya2Zsb3ctaW50ZWdyYXRpb24tbWF2ZW4tZ3JhZGxlLWdpdGh1Yi1jaWNkKQogICAgLSBbMy4zIC0gT25saW5lIEdlbmVyYXRvcnNdKCMzMy0tLW9ubGluZS1vcGVuYXBpLWdlbmVyYXRvcikKICAgIC0gWzMuNCAtIExpY2Vuc2UgSW5mb3JtYXRpb24gb24gR2VuZXJhdGVkIENvZGVdKCMzNC0tLWxpY2Vuc2UtaW5mb3JtYXRpb24tb24tZ2VuZXJhdGVkLWNvZGUpCiAgICAtIFszLjUgLSBJREUgSW50ZWdyYXRpb25dKCMzNS0tLWlkZS1pbnRlZ3JhdGlvbikKICAtIFs0IC0gQ29tcGFuaWVzL1Byb2plY3RzIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXSgjNC0tLWNvbXBhbmllc3Byb2plY3RzLXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCM1LS0tcHJlc2VudGF0aW9uc3ZpZGVvc3R1dG9yaWFsc2Jvb2tzKQogIC0gWzYgLSBBYm91dCBVc10oIzYtLS1hYm91dC11cykKICAgIC0gWzYuMSAtIE9wZW5BUEkgR2VuZXJhdG9yIENvcmUgVGVhbV0oIzYxLS0tb3BlbmFwaS1nZW5lcmF0b3ItY29yZS10ZWFtKQogICAgLSBbNi4yIC0gT3BlbkFQSSBHZW5lcmF0b3IgVGVjaG5pY2FsIENvbW1pdHRlZV0oIzYyLS0tb3BlbmFwaS1nZW5lcmF0b3ItdGVjaG5pY2FsLWNvbW1pdHRlZSkKICAgIC0gWzYuMyAtIEhpc3Rvcnkgb2YgT3BlbkFQSSBHZW5lcmF0b3JdKCM2My0tLWhpc3Rvcnktb2Ytb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbNyAtIExpY2Vuc2VdKCM3LS0tbGljZW5zZSkKCiMjIFsxIC0gSW5zdGFsbGF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMgWzEuMSAtIENvbXBhdGliaWxpdHldKCN0YWJsZS1vZi1jb250ZW50cykKClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSAzIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgb3BlbmFwaS1nZW5lcmF0b3IgcHJvamVjdCBoYXMgdGhlIGZvbGxvd2luZyBjb21wYXRpYmlsaXRpZXMgd2l0aCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uOgoKfCBPcGVuQVBJIEdlbmVyYXRvciBWZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZWxlYXNlIERhdGUgfCBOb3RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCA3LjkuMCAodXBjb21pbmcgbWlub3IgcmVsZWFzZSkgW1NOQVBTSE9UXShodHRwczovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvc25hcHNob3RzL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOS4wLVNOQVBTSE9ULykgfCAwNy4xMC4yMDI0ICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs3LjguMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuOC4wKSAobGF0ZXN0IHN0YWJsZSByZWxlYXNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5LjA4LjIwMjQgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzYuNi4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ni42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEuMDUuMjAyMyAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNS40LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y1LjQuMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMS4wMS4yMDIyICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs0LjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjQuMy4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA2LjA1LjIwMjAgICB8IFBhdGNoIHJlbGVhc2UgKGVuaGFuY2VtZW50cywgYnVnIGZpeGVzLCBldGMpICAgICAgICAgICAgICAgICAgICAgICB8CgpPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eTogMS4wLCAxLjEsIDEuMiwgMi4wLCAzLjAsIDMuMSAoYmV0YSBzdXBwb3J0KQoKKFdlIGRvIG5vdCBwdWJsaXNoIGRhaWx5L25pZ2h0bHkgYnVpbGQuIFBsZWFzZSB1c2UgU05BUFNIT1QgaW5zdGVhZCkKCkZvciBvbGQgcmVsZWFzZXMsIHBsZWFzZSByZWZlciB0byB0aGUgWyoqUmVsZWFzZSoqXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzKSBwYWdlLgoKRm9yIGRlY29taXNzaW9uZWQgZ2VuZXJhdG9ycy9saWJyYXJpZXMvZnJhbWV3b3JrcywgcGxlYXNlIHJlZmVyIHRvIFt0aGUgIkRlY29tbWlzc2lvbiIgbGFiZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9bGFiZWwlM0FEZWNvbW1pc3Npb24raXMlM0FtZXJnZWQrKSBpbiB0aGUgcHVsbCByZXF1ZXN0IHBhZ2UuCgojIyBbMS4yIC0gQXJ0aWZhY3RzIG9uIE1hdmVuIENlbnRyYWxdKCN0YWJsZS1vZi1jb250ZW50cykKCllvdSBjYW4gZmluZCBvdXIgcmVsZWFzZWQgYXJ0aWZhY3RzIG9uIG1hdmVuIGNlbnRyYWw6CgoqKkNvcmU6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipDbGk6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWNsaTwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgClNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItY2xpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipNYXZlbiBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCiogU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW5dKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi9SRUFETUUubWQpCgoqKkdyYWRsZSBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoqIFNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4vUkVBRE1FLmFkb2MpCgojIyMgWzEuMyAtIERvd25sb2FkIEpBUl0oI3RhYmxlLW9mLWNvbnRlbnRzKQo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KSWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24sIHlvdSBjYW4gZ3JhYiBpdCBkaXJlY3RseSBmcm9tIE1hdmVuLm9yZyAoSmF2YSAxMSBydW50aW1lIGF0IGEgbWluaW11bSk6CgpKQVIgbG9jYXRpb246IGBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy44LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOC4wLmphcmAKCkZvciAqKk1hYy9MaW51eCoqIHVzZXJzOgpgYGBzaAp3Z2V0IGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjguMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy44LjAuamFyIC1PIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIKYGBgCgpGb3IgKipXaW5kb3dzKiogdXNlcnMsIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCBbd2dldF0oaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy93Z2V0Lmh0bSkgb3IgeW91IGNhbiB1c2UgSW52b2tlLVdlYlJlcXVlc3QgaW4gUG93ZXJTaGVsbCAoMy4wKyksIGUuZy4KYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1PdXRGaWxlIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOC4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjguMC5qYXIKYGBgCgpBZnRlciBkb3dubG9hZGluZyB0aGUgSkFSLCBydW4gYGphdmEgLWphciBvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGhlbHBgIHRvIHNob3cgdGhlIHVzYWdlLgoKRm9yIE1hYyB1c2VycywgcGxlYXNlIG1ha2Ugc3VyZSBKYXZhIDExIGlzIGluc3RhbGxlZCAoVGlwczogcnVuIGBqYXZhIC12ZXJzaW9uYCB0byBjaGVjayB0aGUgdmVyc2lvbiksIGFuZCBleHBvcnQgYEpBVkFfSE9NRWAgaW4gb3JkZXIgdG8gdXNlIHRoZSBzdXBwb3J0ZWQgSmF2YSB2ZXJzaW9uOgpgYGBzaApleHBvcnQgSkFWQV9IT01FPWAvdXNyL2xpYmV4ZWMvamF2YV9ob21lIC12IDEuMTFgCmV4cG9ydCBQQVRIPSR7SkFWQV9IT01FfS9iaW46JFBBVEgKYGBgCgo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CiMjIyBMYXVuY2hlciBTY3JpcHQKCk9uZSBkb3duc2lkZSB0byBtYW51YWwgamFyIGRvd25sb2FkcyBpcyB0aGF0IHlvdSBkb24ndCBrZWVwIHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24uIFdlIGhhdmUgYSBCYXNoIGxhdW5jaGVyIHNjcmlwdCBhdCBbYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLmNsaS5zaF0oLi9iaW4vdXRpbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLnNoKSB3aGljaCByZXNvbHZlcyB0aGlzIGlzc3VlLgoKVG8gaW5zdGFsbCB0aGUgbGF1bmNoZXIgc2NyaXB0LCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgc2NyaXB0IHRvIGEgbG9jYXRpb24gb24geW91ciBwYXRoIGFuZCBtYWtlIHRoZSBzY3JpcHQgZXhlY3V0YWJsZS4KCkFuIGV4YW1wbGUgb2Ygc2V0dGluZyB0aGlzIHVwIChOT1RFOiBBbHdheXMgZXZhbHVhdGUgc2NyaXB0cyBjdXJsZWQgZnJvbSBleHRlcm5hbCBzeXN0ZW1zIGJlZm9yZSBleGVjdXRpbmcgdGhlbSkuCgpgYGAKbWtkaXIgLXAgfi9iaW4vb3BlbmFwaXRvb2xzCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS5zaCA+IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKY2htb2QgdSt4IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKZXhwb3J0IFBBVEg9JFBBVEg6fi9iaW4vb3BlbmFwaXRvb2xzLwpgYGAKCk5vdywgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgaXMgImluc3RhbGxlZCIuIE9uIGludm9jYXRpb24sIGl0IHdpbGwgcXVlcnkgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGZvciB0aGUgbW9zdCByZWNlbnRseSByZWxlYXNlZCB2ZXJzaW9uLiBJZiB0aGlzIG1hdGNoZXMgdGhlIGxhc3QgZG93bmxvYWRlZCBqYXIsCml0IHdpbGwgZXhlY3V0ZSBhcyBub3JtYWwuIElmIGEgbmV3ZXIgdmVyc2lvbiBpcyBmb3VuZCwgdGhlIHNjcmlwdCB3aWxsIGRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZSBhbmQgZXhlY3V0ZSBpdC4KCklmIHlvdSBuZWVkIHRvIGludm9rZSBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBnZW5lcmF0b3IsIHlvdSBjYW4gZGVmaW5lIHRoZSB2YXJpYWJsZSBgT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTmAgZWl0aGVyIGFkIGhvYyBvciBnbG9iYWxseS4gWW91IGNhbiBleHBvcnQgdGhpcyB2YXJpYWJsZSBpZiB5b3UnZCBsaWtlIHRvIHBlcnNpc3QgYSBzcGVjaWZpYyByZWxlYXNlIHZlcnNpb24uCgpFeGFtcGxlczoKCmBgYAojIEV4ZWN1dGUgbGF0ZXN0IHJlbGVhc2VkIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgoKIyBFeGVjdXRlIHZlcnNpb24gNC4xLjAgZm9yIHRoZSBjdXJyZW50IGludm9jYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMS4wLVNOQVBTSE9UIGZvciB0aGUgY3VycmVudCBpbnZvY2F0aW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAtU05BUFNIT1Qgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMC4yIGZvciBldmVyeSBpbnZvY2F0aW9uIGluIHRoZSBjdXJyZW50IHNoZWxsIHNlc3Npb24KZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyA0LjAuMgpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIGFsc28gNC4wLjIKCiMgVG8gImluc3RhbGwiIGEgc3BlY2lmaWMgdmVyc2lvbiwgc2V0IHRoZSB2YXJpYWJsZSBpbiAuYmFzaHJjLy5iYXNoX3Byb2ZpbGUKZWNobyAiZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIiID4+IH4vLmJhc2hyYwpzb3VyY2Ugfi8uYmFzaHJjCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgYWx3YXlzIDQuMC4yLCB1bmxlc3MgYW55IG9mIHRoZSBhYm92ZSBvdmVycmlkZXMgYXJlIGRvbmUgYWQgaG9jCmBgYAoKIyMjIFsxLjQgLSBCdWlsZCBQcm9qZWN0c10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gYnVpbGQgZnJvbSBzb3VyY2UsIHlvdSBuZWVkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgaW4geW91ciBgJFBBVEg6YAoKKiBbSmF2YSAxMV0oaHR0cHM6Ly9hZG9wdGl1bS5uZXQvKQoKKiBbQXBhY2hlIE1hdmVuIDMuOC44IG9yIGdyZWF0ZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy8pIChvcHRpb25hbCkKCkFmdGVyIGNsb25pbmcgdGhlIHByb2plY3QsIHlvdSBjYW4gYnVpbGQgaXQgZnJvbSBzb3VyY2UgdXNpbmcgW21hdmVuIHdyYXBwZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy93cmFwcGVyLyk6CgotIExpbnV4OiBgLi9tdm53IGNsZWFuIGluc3RhbGxgCi0gV2luZG93czogYG12bncuY21kIGNsZWFuIGluc3RhbGxgCgojIyMjIE5peCB1c2VycwoKSWYgeW91J3JlIGEgbml4IHVzZXIsIHlvdSBjYW4gZW50ZXIgT3BlbkFQSSBHZW5lcmF0b3Igc2hlbGwsIGJ5IHR5cGluZzoKYGBgc2gKbml4IGRldmVsb3AKYGBgCkl0IHdpbGwgZW50ZXIgYSBzaGVsbCB3aXRoIEphdmEgMTEgaW5zdGFsbGVkLgoKRGlyZW52IHN1cHBvcnRzIGF1dG9tYXRpY2FsbHkgbG9hZGluZyBvZiB0aGUgbml4IGRldmVsb3BlciBzaGVsbCwgc28gaWYgeW91J3JlIHVzaW5nIGRpcmVudiB0b28sIHR5cGU6CmBgYHNoCmRpcmVudiBhbGxvdwpgYGAKYW5kIGhhdmUgYGphdmFgIGFuZCBgbXZuYCBzZXQgdXAgd2l0aCBjb3JyZWN0IHZlcnNpb25zIGVhY2ggdGltZSB5b3UgZW50ZXIgcHJvamVjdCBkaXJlY3RvcnkuCgpUaGUgZGVmYXVsdCBidWlsZCBjb250YWlucyBtaW5pbWFsIHN0YXRpYyBhbmFseXNpcyAodmlhIENoZWNrU3R5bGUpLiBUbyBydW4geW91ciBidWlsZCB3aXRoIFBNRCBhbmQgU3BvdGJ1Z3MsIHVzZSB0aGUgYHN0YXRpYy1hbmFseXNpc2AgcHJvZmlsZToKCi0gTGludXg6IGAuL212bncgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKLSBXaW5kb3dzOiBgbXZudy5jbWQgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKCiMjIyBbMS41IC0gSG9tZWJyZXddKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGluc3RhbGwsIHJ1biBgYnJldyBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yYAoKSGVyZSBpcyBhbiBleGFtcGxlIHVzYWdlIHRvIGdlbmVyYXRlIGEgUnVieSBjbGllbnQ6CmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHJ1YnkgLW8gL3RtcC90ZXN0LwpgYGAKClRvIHJlaW5zdGFsbCB3aXRoIHRoZSBsYXRlc3QgbWFzdGVyLCBydW4gYGJyZXcgdW5pbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yICYmIGJyZXcgaW5zdGFsbCAtLUhFQUQgb3BlbmFwaS1nZW5lcmF0b3JgCgpUbyBpbnN0YWxsIE9wZW5KREsgKHByZS1yZXF1aXNpdGVzKSwgcGxlYXNlIHJ1bgpgYGBzaApicmV3IHRhcCBBZG9wdE9wZW5KREsvb3BlbmpkawpicmV3IGluc3RhbGwgLS1jYXNrIGFkb3B0b3BlbmpkazExCmV4cG9ydCBKQVZBX0hPTUU9YC91c3IvbGliZXhlYy9qYXZhX2hvbWUgLXYgMS4xMWAKYGBgCgpvciBkb3dubG9hZCBpbnN0YWxsZXIgdmlhIGh0dHBzOi8vYWRvcHRpdW0ubmV0LwoKVG8gaW5zdGFsbCBNYXZlbiAob3B0aW9uYWwpLCBwbGVhc2UgcnVuCmBgYHNoCmJyZXcgaW5zdGFsbCBtYXZlbgpgYGAKCiMjIyBbMS42IC0gRG9ja2VyXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMjIFB1YmxpYyBQcmUtYnVpbHQgRG9ja2VyIGltYWdlcwoKIC0gW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvKSAob2ZmaWNpYWwgQ0xJKQogLSBbaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUvXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW9ubGluZS8pIChvZmZpY2lhbCB3ZWIgc2VydmljZSkKCgojIyMjIE9wZW5BUEkgR2VuZXJhdG9yIENMSSBEb2NrZXIgSW1hZ2UKClRoZSBPcGVuQVBJIEdlbmVyYXRvciBpbWFnZSBhY3RzIGFzIGEgc3RhbmRhbG9uZSBleGVjdXRhYmxlLiBJdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBpbnN0YWxsaW5nIHZpYSBob21lYnJldywgb3IgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB1bmFibGUgdG8gaW5zdGFsbCBKYXZhIG9yIHVwZ3JhZGUgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLgoKVG8gZ2VuZXJhdGUgY29kZSB3aXRoIHRoaXMgaW1hZ2UsIHlvdSdsbCBuZWVkIHRvIG1vdW50IGEgbG9jYWwgbG9jYXRpb24gYXMgYSB2b2x1bWUuCgpFeGFtcGxlOgoKYGBgc2gKZG9ja2VyIHJ1biAtLXJtIC12ICIke1BXRH06L2xvY2FsIiBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIFwKICAgIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIGdvIFwKICAgIC1vIC9sb2NhbC9vdXQvZ28KYGBgCgpUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBiZSBsb2NhdGVkIHVuZGVyIGAuL291dC9nb2AgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKIyMjIyBPcGVuQVBJIEdlbmVyYXRvciBPbmxpbmUgRG9ja2VyIEltYWdlCgpUaGUgb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lIGltYWdlIGNhbiBhY3QgYXMgYSBzZWxmLWhvc3RlZCB3ZWIgYXBwbGljYXRpb24gYW5kIEFQSSBmb3IgZ2VuZXJhdGluZyBjb2RlLiBUaGlzIGNvbnRhaW5lciBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYSBDSSBwaXBlbGluZSwgYW5kIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBIVFRQIHJlcXVlc3RzIGFuZCBzb21lIGRvY2tlciBvcmNoZXN0cmF0aW9uIHRvIGFjY2VzcyBnZW5lcmF0ZWQgY29kZS4KCkV4YW1wbGUgdXNhZ2U6CgpgYGBzaAojIFN0YXJ0IGNvbnRhaW5lciBhdCBwb3J0IDg4ODggYW5kIHNhdmUgdGhlIGNvbnRhaW5lciBpZAo+IENJRD0kKGRvY2tlciBydW4gLWQgLXAgODg4ODo4MDgwIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUpCgojIGFsbG93IGZvciBzdGFydHVwCj4gc2xlZXAgMTAKCiMgR2V0IHRoZSBJUCBvZiB0aGUgcnVubmluZyBjb250YWluZXIgKG9wdGlvbmFsKQpHRU5fSVA9JChkb2NrZXIgaW5zcGVjdCAtLWZvcm1hdCAne3suTmV0d29ya1NldHRpbmdzLklQQWRkcmVzc319JyAgJENJRCkKCiMgRXhlY3V0ZSBhbiBIVFRQIHJlcXVlc3QgdG8gZ2VuZXJhdGUgYSBSdWJ5IGNsaWVudAo+IGN1cmwgLVggUE9TVCAtLWhlYWRlciAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAtLWhlYWRlciAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJyBcCi1kICd7Im9wZW5BUElVcmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwifScgXAonaHR0cDovL2xvY2FsaG9zdDo4ODg4L2FwaS9nZW4vY2xpZW50cy9ydWJ5JwoKeyJjb2RlIjoiYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4IiwibGluayI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOCJ9CgojIERvd25sb2FkIHRoZSBnZW5lcmF0ZWQgemlwIGZpbGUKPiB3Z2V0IGh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBVbnppcCB0aGUgZmlsZQo+IHVuemlwIGMyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBTaHV0ZG93biB0aGUgb3BlbmFwaSBnZW5lcmF0b3IgaW1hZ2UKPiBkb2NrZXIgc3RvcCAkQ0lEICYmIGRvY2tlciBybSAkQ0lECmBgYAoKIyMjIyBEZXZlbG9wbWVudCBpbiBkb2NrZXIKCllvdSBjYW4gdXNlIGBydW4taW4tZG9ja2VyLnNoYCB0byBkbyBhbGwgZGV2ZWxvcG1lbnQuIFRoaXMgc2NyaXB0IG1hcHMgeW91ciBsb2NhbCByZXBvc2l0b3J5IHRvIGAvZ2VuYAppbiB0aGUgZG9ja2VyIGNvbnRhaW5lci4gSXQgYWxzbyBtYXBzIGB+Ly5tMi9yZXBvc2l0b3J5YCB0byB0aGUgYXBwcm9wcmlhdGUgY29udGFpbmVyIGxvY2F0aW9uLgoKVG8gZXhlY3V0ZSBgbXZuIHBhY2thZ2VgOgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9ydW4taW4tZG9ja2VyLnNoIG12biBwYWNrYWdlCmBgYAoKQnVpbGQgYXJ0aWZhY3RzIGFyZSBub3cgYWNjZXNzaWJsZSBpbiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LgoKT25jZSBidWlsdCwgYHJ1bi1pbi1kb2NrZXIuc2hgIHdpbGwgYWN0IGFzIGFuIGV4ZWN1dGFibGUgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS4gVG8gZ2VuZXJhdGUgY29kZSwgeW91J2xsIG5lZWQgdG8gb3V0cHV0IHRvIGEgZGlyZWN0b3J5IHVuZGVyIGAvZ2VuYCAoZS5nLiBgL2dlbi9vdXRgKS4gRm9yIGV4YW1wbGU6CgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggaGVscCAjIEV4ZWN1dGVzICdoZWxwJyBjb21tYW5kIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkKLi9ydW4taW4tZG9ja2VyLnNoIGxpc3QgIyBFeGVjdXRlcyAnbGlzdCcgY29tbWFuZCBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpCi4vcnVuLWluLWRvY2tlci5zaCBnZW5lcmF0ZSAtaSBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgICAtZyBnbyAtbyAvZ2VuL291dC9nby1wZXRzdG9yZSAtcCBwYWNrYWdlTmFtZT1wZXRzdG9yZSAjIGdlbmVyYXRlcyBnbyBjbGllbnQsIG91dHB1dHMgbG9jYWxseSB0byAuL291dC9nby1wZXRzdG9yZQpgYGAKCiMjIyMjIFRyb3VibGVzaG9vdGluZwoKSWYgYW4gZXJyb3IgbGlrZSB0aGlzIG9jY3VycywganVzdCBleGVjdXRlIHRoZSAqKi4vbXZudyBjbGVhbiBpbnN0YWxsIC1VKiogY29tbWFuZDoKCj4gb3JnLmFwYWNoZS5tYXZlbi5saWZlY3ljbGUuTGlmZWN5Y2xlRXhlY3V0aW9uRXhjZXB0aW9uOiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3QgKGRlZmF1bHQtdGVzdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvcjogQSB0eXBlIGluY29tcGF0aWJpbGl0eSBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zOm1hdmVuLXN1cmVmaXJlLXBsdWdpbjoyLjE5LjE6dGVzdDogamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciBjYW5ub3QgYmUgY2FzdCB0byBqYXZhLmlvLklPRXhjZXB0aW9uCgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggLi9tdm53IGNsZWFuIGluc3RhbGwgLVUKYGBgCgo+IEZhaWxlZCB0byBleGVjdXRlIGdvYWwgb3JnLmZvcnRhc29mdDpncmFkbGUtbWF2ZW4tcGx1Z2luOjEuMC44Omludm9rZSAoZGVmYXVsdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luLW12bi13cmFwcGVyOiBvcmcuZ3JhZGxlLnRvb2xpbmcuQnVpbGRFeGNlcHRpb246IENvdWxkIG5vdCBleGVjdXRlIGJ1aWxkIHVzaW5nIEdyYWRsZSBkaXN0cmlidXRpb24gJ2h0dHBzOi8vc2VydmljZXMuZ3JhZGxlLm9yZy9kaXN0cmlidXRpb25zL2dyYWRsZS00LjctYmluLnppcCcKClJpZ2h0IG5vdzogbm8gc29sdXRpb24gZm9yIHRoaXMgb25lIDp8CgojIyMjIFJ1biBEb2NrZXIgaW4gVmFncmFudApQcmVyZXF1aXNpdGU6IGluc3RhbGwgW1ZhZ3JhbnRdKGh0dHBzOi8vd3d3LnZhZ3JhbnR1cC5jb20vZG93bmxvYWRzLmh0bWwpIGFuZCBbVmlydHVhbEJveF0oaHR0cHM6Ly93d3cudmlydHVhbGJveC5vcmcvd2lraS9Eb3dubG9hZHMpLgogYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IuZ2l0CmNkIG9wZW5hcGktZ2VuZXJhdG9yCnZhZ3JhbnQgdXAKdmFncmFudCBzc2gKY2QgL3ZhZ3JhbnQKLi9ydW4taW4tZG9ja2VyLnNoIC4vbXZudyBwYWNrYWdlCmBgYAoKIyMjIFsxLjcgLSBOUE1dKCN0YWJsZS1vZi1jb250ZW50cykKClRoZXJlIGlzIGFsc28gYW4gW05QTSBwYWNrYWdlIHdyYXBwZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSBhdmFpbGFibGUgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMgKGUuZy4gTGludXgsIE1hYywgV2luZG93cykuIChKVk0gaXMgc3RpbGwgcmVxdWlyZWQpClBsZWFzZSBzZWUgdGhlIFtwcm9qZWN0J3MgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgdGhlcmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpJbnN0YWxsIGl0IGdsb2JhbGx5IHRvIGdldCB0aGUgQ0xJIGF2YWlsYWJsZSBvbiB0aGUgY29tbWFuZCBsaW5lOgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLWcKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KYGBgCgo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KVG8gdXNlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiAib3BlbmFwaS1nZW5lcmF0b3ItY2xpIgoKYGBgc2gKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24tbWFuYWdlciBzZXQgNy44LjAKYGBgCgpPciBpbnN0YWxsIGl0IGFzIGRldi1kZXBlbmRlbmN5OgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLUQKYGBgCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KCllvdSBjYW4gdXNlIFtsb2NhbGx5IGJ1aWx0IEpBUnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpP3RhYj1yZWFkbWUtb3YtZmlsZSN1c2UtbG9jYWxseS1idWlsdC1qYXIpIG9yIFtgU05BUFNIT1RgIHZlcnNpb25zXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaT90YWI9cmVhZG1lLW92LWZpbGUjdXNlLW5pZ2h0bHktc25hcHNob3QtYnVpbGQpIGFzIHdlbGwuCgojIyBbMiAtIEdldHRpbmcgU3RhcnRlZF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gZ2VuZXJhdGUgYSBQSFAgY2xpZW50IGZvciBbcGV0c3RvcmUueWFtbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpLCBwbGVhc2UgcnVuIHRoZSBmb2xsb3dpbmcKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9tdm53IGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAtZyBwaHAgXAogICAtbyAvdmFyL3RtcC9waHBfYXBpX2NsaWVudApgYGAKKGlmIHlvdSdyZSBvbiBXaW5kb3dzLCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aCBgamF2YSAtamFyIG1vZHVsZXNcb3BlbmFwaS1nZW5lcmF0b3ItY2xpXHRhcmdldFxvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHBocCAtbyBjOlx0ZW1wXHBocF9hcGlfY2xpZW50YCkKCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpZb3UgY2FuIGFsc28gZG93bmxvYWQgdGhlIEpBUiAobGF0ZXN0IHJlbGVhc2UpIGRpcmVjdGx5IGZyb20gW21hdmVuLm9yZ10oaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOC4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjguMC5qYXIpCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KClRvIGdldCBhIGxpc3Qgb2YgKipnZW5lcmFsKiogb3B0aW9ucyBhdmFpbGFibGUsIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBoZWxwIGdlbmVyYXRlYAoKVG8gZ2V0IGEgbGlzdCBvZiBQSFAgc3BlY2lmaWVkIG9wdGlvbnMgKHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGdlbmVyYXRvciB3aXRoIGEgY29uZmlnIGZpbGUgdmlhIHRoZSBgLWNgIG9wdGlvbiksIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBjb25maWctaGVscCAtZyBwaHBgCgojIyBbMyAtIFVzYWdlXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMgVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnkKWW91IGNhbiBidWlsZCBhIGNsaWVudCBhZ2FpbnN0IHRoZSBbUGV0c3RvcmUgQVBJXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCkgYXMgZm9sbG93czoKCmBgYHNoCi4vYmluL2dlbmVyYXRlLXNhbXBsZXMuc2ggLi9iaW4vY29uZmlncy9qYXZhLW9raHR0cC1nc29uLnlhbWwKYGBgCgooT24gV2luZG93cywgcGxlYXNlIGluc3RhbGwgW0dJVCBCYXNoIGZvciBXaW5kb3dzXShodHRwczovL2dpdGZvcndpbmRvd3Mub3JnLykgdG8gcnVuIHRoZSBjb21tYW5kIGFib3ZlKQoKVGhpcyBzY3JpcHQgdXNlcyB0aGUgZGVmYXVsdCBsaWJyYXJ5LCB3aGljaCBpcyBgb2todHRwLWdzb25gLiBJdCB3aWxsIHJ1biB0aGUgZ2VuZXJhdG9yIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgc2gKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgLWcgamF2YSBcCiAgLXQgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvSmF2YSBcCiAgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgYXJ0aWZhY3RJZD1wZXRzdG9yZS1va2h0dHAtZ3NvbixoaWRlR2VuZXJhdGlvblRpbWVzdGFtcD10cnVlIFwKICAtbyBzYW1wbGVzL2NsaWVudC9wZXRzdG9yZS9qYXZhL29raHR0cC1nc29uCmBgYAoKd2l0aCBhIG51bWJlciBvZiBvcHRpb25zLiBbVGhlIGphdmEgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBoZXJlLl0oZG9jcy9nZW5lcmF0b3JzL2phdmEubWQpCgpZb3UgY2FuIGFsc28gZ2V0IHRoZSBvcHRpb25zIHdpdGggdGhlIGBoZWxwIGdlbmVyYXRlYCBjb21tYW5kIChiZWxvdyBvbmx5IHNob3dzIHBhcnRpYWwgcmVzdWx0cyk6CgpgYGAKTkFNRQogICAgICAgIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtIEdlbmVyYXRlIGNvZGUgd2l0aCB0aGUgc3BlY2lmaWVkCiAgICAgICAgZ2VuZXJhdG9yLgoKU1lOT1BTSVMKICAgICAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUKICAgICAgICAgICAgICAgIFsoLWEgPGF1dGhvcml6YXRpb24+IHwgLS1hdXRoIDxhdXRob3JpemF0aW9uPildCiAgICAgICAgICAgICAgICBbLS1hcGktbmFtZS1zdWZmaXggPGFwaSBuYW1lIHN1ZmZpeD5dIFstLWFwaS1wYWNrYWdlIDxhcGkgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbLS1hcnRpZmFjdC1pZCA8YXJ0aWZhY3QgaWQ+XSBbLS1hcnRpZmFjdC12ZXJzaW9uIDxhcnRpZmFjdCB2ZXJzaW9uPl0KICAgICAgICAgICAgICAgIFsoLWMgPGNvbmZpZ3VyYXRpb24gZmlsZT4gfCAtLWNvbmZpZyA8Y29uZmlndXJhdGlvbiBmaWxlPildIFstLWRyeS1ydW5dCiAgICAgICAgICAgICAgICBbKC1lIDx0ZW1wbGF0aW5nIGVuZ2luZT4gfCAtLWVuZ2luZSA8dGVtcGxhdGluZyBlbmdpbmU+KV0KICAgICAgICAgICAgICAgIFstLWVuYWJsZS1wb3N0LXByb2Nlc3MtZmlsZV0KICAgICAgICAgICAgICAgIFsoLWcgPGdlbmVyYXRvciBuYW1lPiB8IC0tZ2VuZXJhdG9yLW5hbWUgPGdlbmVyYXRvciBuYW1lPildCiAgICAgICAgICAgICAgICBbLS1nZW5lcmF0ZS1hbGlhcy1hcy1tb2RlbF0gWy0tZ2l0LWhvc3QgPGdpdCBob3N0Pl0KICAgICAgICAgICAgICAgIFstLWdpdC1yZXBvLWlkIDxnaXQgcmVwbyBpZD5dIFstLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD5dCiAgICAgICAgICAgICAgICBbLS1nbG9iYWwtcHJvcGVydHkgPGdsb2JhbCBwcm9wZXJ0aWVzPi4uLl0gWy0tZ3JvdXAtaWQgPGdyb3VwIGlkPl0KICAgICAgICAgICAgICAgIFstLWh0dHAtdXNlci1hZ2VudCA8aHR0cCB1c2VyIGFnZW50Pl0KICAgICAgICAgICAgICAgIFsoLWkgPHNwZWMgZmlsZT4gfCAtLWlucHV0LXNwZWMgPHNwZWMgZmlsZT4pXQogICAgICAgICAgICAgICAgWy0taWdub3JlLWZpbGUtb3ZlcnJpZGUgPGlnbm9yZSBmaWxlIG92ZXJyaWRlIGxvY2F0aW9uPl0KICAgICAgICAgICAgICAgIFstLWltcG9ydC1tYXBwaW5ncyA8aW1wb3J0IG1hcHBpbmdzPi4uLl0KICAgICAgICAgICAgICAgIFstLWluc3RhbnRpYXRpb24tdHlwZXMgPGluc3RhbnRpYXRpb24gdHlwZXM+Li4uXQogICAgICAgICAgICAgICAgWy0taW52b2tlci1wYWNrYWdlIDxpbnZva2VyIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWy0tbGFuZ3VhZ2Utc3BlY2lmaWMtcHJpbWl0aXZlcyA8bGFuZ3VhZ2Ugc3BlY2lmaWMgcHJpbWl0aXZlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1sZWdhY3ktZGlzY3JpbWluYXRvci1iZWhhdmlvcl0gWy0tbGlicmFyeSA8bGlicmFyeT5dCiAgICAgICAgICAgICAgICBbLS1sb2ctdG8tc3RkZXJyXSBbLS1taW5pbWFsLXVwZGF0ZV0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtcHJlZml4IDxtb2RlbCBuYW1lIHByZWZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1uYW1lLXN1ZmZpeCA8bW9kZWwgbmFtZSBzdWZmaXg+XQogICAgICAgICAgICAgICAgWy0tbW9kZWwtcGFja2FnZSA8bW9kZWwgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbKC1vIDxvdXRwdXQgZGlyZWN0b3J5PiB8IC0tb3V0cHV0IDxvdXRwdXQgZGlyZWN0b3J5PildIFsoLXAgPGFkZGl0aW9uYWwgcHJvcGVydGllcz4gfCAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPikuLi5dCiAgICAgICAgICAgICAgICBbLS1wYWNrYWdlLW5hbWUgPHBhY2thZ2UgbmFtZT5dIFstLXJlbGVhc2Utbm90ZSA8cmVsZWFzZSBub3RlPl0KICAgICAgICAgICAgICAgIFstLXJlbW92ZS1vcGVyYXRpb24taWQtcHJlZml4XQogICAgICAgICAgICAgICAgWy0tcmVzZXJ2ZWQtd29yZHMtbWFwcGluZ3MgPHJlc2VydmVkIHdvcmQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWygtcyB8IC0tc2tpcC1vdmVyd3JpdGUpXSBbLS1zZXJ2ZXItdmFyaWFibGVzIDxzZXJ2ZXIgdmFyaWFibGVzPi4uLl0KICAgICAgICAgICAgICAgIFstLXNraXAtdmFsaWRhdGUtc3BlY10gWy0tc3RyaWN0LXNwZWMgPHRydWUvZmFsc2Ugc3RyaWN0IGJlaGF2aW9yPl0KICAgICAgICAgICAgICAgIFsoLXQgPHRlbXBsYXRlIGRpcmVjdG9yeT4gfCAtLXRlbXBsYXRlLWRpciA8dGVtcGxhdGUgZGlyZWN0b3J5PildCiAgICAgICAgICAgICAgICBbLS10eXBlLW1hcHBpbmdzIDx0eXBlIG1hcHBpbmdzPi4uLl0gWygtdiB8IC0tdmVyYm9zZSldCgpPUFRJT05TCiAgICAgICAgLWEgPGF1dGhvcml6YXRpb24+LCAtLWF1dGggPGF1dGhvcml6YXRpb24+CiAgICAgICAgICAgIGFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMKICAgICAgICAgICAgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgbmFtZTpoZWFkZXIgd2l0aCBhIGNvbW1hCiAgICAgICAgICAgIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzCgouLi4uLi4gKHJlc3VsdHMgb21pdHRlZCkKCiAgICAgICAgLXYsIC0tdmVyYm9zZQogICAgICAgICAgICB2ZXJib3NlIG1vZGUKCmBgYAoKWW91IGNhbiB0aGVuIGNvbXBpbGUgYW5kIHJ1biB0aGUgY2xpZW50LCBhcyB3ZWxsIGFzIHVuaXQgdGVzdHMgYWdhaW5zdCBpdDoKCmBgYHNoCmNkIHNhbXBsZXMvY2xpZW50L3BldHN0b3JlL2phdmEvb2todHRwLWdzb24KbXZuIHBhY2thZ2UKYGBgCgpPdGhlciBnZW5lcmF0b3JzIGhhdmUgW3NhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvc2FtcGxlcykgdG9vLgoKIyMjIFszLjEgLSBDdXN0b21pemF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2N1c3RvbWl6YXRpb24ubWRdKGRvY3MvY3VzdG9taXphdGlvbi5tZCkgb24gaG93IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IChlLmcuIHBhY2thZ2UgbmFtZSwgdmVyc2lvbikKCiMjIyBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb24gKE1hdmVuLCBHcmFkbGUsIEdpdGh1YiwgQ0kvQ0QpXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2ludGVncmF0aW9uLm1kXShkb2NzL2ludGVncmF0aW9uLm1kKSBvbiBob3cgdG8gaW50ZWdyYXRlIE9wZW5BUEkgZ2VuZXJhdG9yIHdpdGggTWF2ZW4sIEdyYWRsZSwgc2J0LCBCYXplbCwgR2l0aHViIGFuZCBDSS9DRC4KCiMjIyBbMy4zIC0gT25saW5lIE9wZW5BUEkgZ2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpIZXJlIGFyZSB0aGUgcHVibGljIG9ubGluZSBzZXJ2aWNlczoKCi0gbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uOiBodHRwczovL2FwaS5vcGVuYXBpLWdlbmVyYXRvci50ZWNoCi0gbGF0ZXN0IG1hc3RlcjogaHR0cHM6Ly9hcGktbGF0ZXN0LW1hc3Rlci5vcGVuYXBpLWdlbmVyYXRvci50ZWNoICh1cGRhdGVkIHdpdGggbGF0ZXN0IG1hc3RlciBldmVyeSBob3VyKQoKVGhlIHNlcnZlciBpcyBzcG9uc29yZWQgYnkgW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pIFshW0xpbm9kZSBMb2dvXShodHRwczovL3d3dy5saW5vZGUuY29tL21lZGlhL2ltYWdlcy9sb2dvcy9zdGFuZGFyZC9saWdodC9saW5vZGUtbG9nb19zdGFuZGFyZF9saWdodF9zbWFsbC5wbmcpXShodHRwczovL3d3dy5saW5vZGUuY29tLykKCihUaGVzZSBzZXJ2aWNlcyBhcmUgYmV0YSBhbmQgZG8gbm90IGhhdmUgYW55IGd1YXJhbnRlZSBvbiBzZXJ2aWNlIGxldmVsKQoKUGxlYXNlIHJlZmVyIHRvIFtvbmxpbmUubWRdKGRvY3Mvb25saW5lLm1kKSBvbiBob3cgdG8gcnVuIGFuZCB1c2UgdGhlIGBvcGVuYXBpLWdlbmVyYXRvci1vbmxpbmVgIC0gYSB3ZWIgc2VydmljZSBmb3IgYG9wZW5hcGktZ2VuZXJhdG9yYC4KCiMjIyBbMy40IC0gTGljZW5zZSBpbmZvcm1hdGlvbiBvbiBHZW5lcmF0ZWQgQ29kZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVGhlIE9wZW5BUEkgR2VuZXJhdG9yIHByb2plY3QgaXMgaW50ZW5kZWQgYXMgYSBiZW5lZml0IGZvciB1c2VycyBvZiB0aGUgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbi4gIFRoZSBwcm9qZWN0IGl0c2VsZiBoYXMgdGhlIFtMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpIGFzIHNwZWNpZmllZC4gSW4gYWRkaXRpb24sIHBsZWFzZSB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgcG9pbnRzOgoKKiBUaGUgdGVtcGxhdGVzIGluY2x1ZGVkIHdpdGggdGhpcyBwcm9qZWN0IGFyZSBzdWJqZWN0IHRvIHRoZSBbTGljZW5zZV0oIzctLS1saWNlbnNlKS4KKiBHZW5lcmF0ZWQgY29kZSBpcyBpbnRlbnRpb25hbGx5IF9ub3RfIHN1YmplY3QgdG8gdGhlIHBhcmVudCBwcm9qZWN0IGxpY2Vuc2UKCldoZW4gY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIHByb2plY3QsIGl0IHNoYWxsIGJlIGNvbnNpZGVyZWQgKipBUyBJUyoqIGFuZCBvd25lZCBieSB0aGUgdXNlciBvZiB0aGUgc29mdHdhcmUuICBUaGVyZSBhcmUgbm8gd2FycmFudGllcy0tZXhwcmVzc2VkIG9yIGltcGxpZWQtLWZvciBnZW5lcmF0ZWQgY29kZS4gIFlvdSBjYW4gZG8gd2hhdCB5b3Ugd2lzaCB3aXRoIGl0LCBhbmQgb25jZSBnZW5lcmF0ZWQsIHRoZSBjb2RlIGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2luZyB0ZXJtcyB0aGF0IHlvdSBkZWVtIGFwcHJvcHJpYXRlLgoKIyMjIFszLjUgLSBJREUgSW50ZWdyYXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKCkhlcmUgaXMgYSBsaXN0IG9mIGNvbW11bml0eS1jb250cmlidXRlZCBJREUgcGx1Zy1pbnMgdGhhdCBpbnRlZ3JhdGUgd2l0aCBPcGVuQVBJIEdlbmVyYXRvcjoKCi0gRWNsaXBzZTogW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHMgZm9yIEVjbGlwc2VdKGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2NvZGV3aW5kL29wZW4tYXBpLXRvb2xzLWZvci1lY2xpcHNlLmh0bWwpIGJ5IFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20pCi0gSW50ZWxsaUogSURFQTogW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vODQzMy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW0ppbSBTY2h1YmVydF0oaHR0cHM6Ly9qaW1zY2h1YmVydC51cy8jLykKLSBJbnRlbGxpSiBJREVBOiBbU2VueWEgRWRpdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vMTA2OTAtc2VueWEtZWRpdG9yKSBieSBbc2VueWEuaW9dKGh0dHBzOi8vc2VueWEuaW8pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS8pCi0gVmlzdWFsIFN0dWRpbzogW1JFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcikgYnkgW0NocmlzdGlhbiBSZXNtYSBIZWxsZV0oaHR0cHM6Ly9jaHJpc3RpYW4taGVsbGUuYmxvZ3Nwb3QuY29tLykKLSBWaXN1YWwgU3R1ZGlvIENvZGU6IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGJ5IFtJQk1dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9wdWJsaXNoZXJzL0lCTSkKCgojIyBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQpIZXJlIGFyZSBzb21lIGNvbXBhbmllcy9wcm9qZWN0cyAoYWxwaGFiZXRpY2FsIG9yZGVyKSB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBpbiBwcm9kdWN0aW9uLiBUbyBhZGQgeW91ciBjb21wYW55L3Byb2plY3QgdG8gdGhlIGxpc3QsIHBsZWFzZSB2aXNpdCBbUkVBRE1FLm1kXShSRUFETUUubWQpIGFuZCBjbGljayBvbiB0aGUgaWNvbiB0byBlZGl0IHRoZSBwYWdlLgoKLSBbQWFsYm9yZyBVbml2ZXJzaXR5XShodHRwczovL3d3dy5hYXUuZGspCi0gW2FjdCBjb2RpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rjb2RpbmcpCi0gW0FkYXB0YW50IFNvbHV0aW9ucyBBR10oaHR0cHM6Ly93d3cuYWRhcHRhbnQuaW8vKQotIFthZGVzc28gU0VdKGh0dHBzOi8vd3d3LmFkZXNzby5kZS8pCi0gW0FkeWVuXShodHRwczovL3d3dy5hZHllbi5jb20vKQotIFtBZ29kYV0oaHR0cHM6Ly93d3cuYWdvZGEuY29tLykKLSBbQWlydGhpbmdzXShodHRwczovL3d3dy5haXJ0aGluZ3MuY29tLykKLSBbQWxlcmkgU29sdXRpb25zIEdtYmhdKGh0dHBzOi8vd3d3LmFsZXJpLmRlLykKLSBbQWxsaWFuel0oaHR0cHM6Ly93d3cuYWxsaWFuei5jb20pCi0gW0FuZ3VsYXIuU2NodWxlXShodHRwczovL2FuZ3VsYXIuc2NodWxlLykKLSBbQXFvdmlhXShodHRwczovL2Fxb3ZpYS5jb20vKQotIFtBdXN0cmFsaWEgYW5kIE5ldyBaZWFsYW5kIEJhbmtpbmcgR3JvdXAgKEFOWildKGh0dHA6Ly93d3cuYW56LmNvbS8pCi0gW0FyZHVpbm9dKGh0dHBzOi8vd3d3LmFyZHVpbm8uY2MvKQotIFtBU0tVTF0oaHR0cHM6Ly93d3cuYXNrdWwuY28uanApCi0gW0FtYXpvbiBXZWIgU2VydmljZXMgKEFXUyldKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vKQotIFtiPD5jb21dKGh0dHBzOi8vYi1jb20uY29tL2VuKQotIFvnmb7luqbokKXplIBdKGh0dHBzOi8vZS5iYWlkdS5jb20pCi0gW0JhbmR3aWR0aF0oaHR0cHM6Ly9kZXYuYmFuZHdpZHRoLmNvbSkKLSBbQmFuemFpIENsb3VkXShodHRwczovL2JhbnphaWNsb3VkLmNvbSkKLSBbQklNRGF0YS5pb10oaHR0cHM6Ly9iaW1kYXRhLmlvKQotIFtCaXRob3N0IEdtYkhdKGh0dHBzOi8vd3d3LmJpdGhvc3QuY2gpCi0gW0Jvc2NoIENvbm5lY3RlZCBJbmR1c3RyeV0oaHR0cHM6Ly93d3cuYm9zY2gtY29ubmVjdGVkLWluZHVzdHJ5LmNvbSkKLSBbQm94ZXZlcl0oaHR0cHM6Ly93d3cuYm94ZXZlci5jb20vKQotIFtCcmV2eV0oaHR0cHM6Ly93d3cuYnJldnkuY29tKQotIFtCdW5rZXIgSG9sZGluZyBHcm91cF0oaHR0cHM6Ly93d3cuYnVua2VyLWhvbGRpbmcuY29tLykKLSBbQ2FsaWZvcm5pYSBTdGF0ZSBVbml2ZXJzaXR5LCBOb3J0aHJpZGdlXShodHRwczovL3d3dy5jc3VuLmVkdSkKLSBbQ0FNXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSBbQ2FtcHRvY2FtcF0oaHR0cHM6Ly93d3cuY2FtcHRvY2FtcC5jb20vZW4pCi0gW0NhcmxzYmVyZyBHcm91cF0oaHR0cHM6Ly93d3cuY2FybHNiZXJnZ3JvdXAuY29tLykKLSBbQ2hyaXN0b3BoZXIgUXVlZW4gQ29uc3VsdGluZ10oaHR0cHM6Ly93d3cuY2hyaXN0b3BoZXJxdWVlbmNvbnN1bHRpbmcuY29tLykKLSBbQ2lzY29dKGh0dHBzOi8vd3d3LmNpc2NvLmNvbS8pCi0gW2NvZGVjZW50cmljIEFHXShodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS8pCi0gW0NvaW5BUEldKGh0dHBzOi8vd3d3LmNvaW5hcGkuaW8vKQotIFtDb21tZW5jaXNdKGh0dHBzOi8vd3d3LmNvbW1lbmNpcy5jb20vKQotIFtDb25maWdDYXRdKGh0dHBzOi8vY29uZmlnY2F0LmNvbS8pCi0gW2Nyb25uIEdtYkhdKGh0dHBzOi8vd3d3LmNyb25uLmRlLykKLSBbQ3Jvc3NvdmVyIEhlYWx0aF0oaHR0cHM6Ly9jcm9zc292ZXJoZWFsdGguY29tLykKLSBbQ3VwaXhdKGh0dHBzOi8vd3d3LmN1cGl4LmNvbS8pCi0gW0RhdGFkb2ddKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20pCi0gW0RCIFN5c3RlbF0oaHR0cHM6Ly93d3cuZGJzeXN0ZWwuZGUpCi0gW0RlZXBvcnV0ZS5haV0oaHR0cHM6Ly93d3cuZGVlcHJvdXRlLmFpLykKLSBbRGV2c3VwcGx5XShodHRwczovL3d3dy5kZXZzdXBwbHkuY29tLykKLSBbZG1URUNIIEdtYkhdKGh0dHBzOi8vd3d3LmRtVEVDSC5kZSkKLSBbRG9jU3ByaW5nXShodHRwczovL2RvY3NwcmluZy5jb20vKQotIFtkd2FuZ29dKGh0dHBzOi8vZHdhbmdvLmNvLmpwLykKLSBbRWRnZSBJbXB1bHNlXShodHRwczovL3d3dy5lZGdlaW1wdWxzZS5jb20vKQotIFtFbGVtZW50IEFJXShodHRwczovL3d3dy5lbGVtZW50YWkuY29tLykKLSBbRW1ib3RpY3NdKGh0dHBzOi8vd3d3LmVtYm90aWNzLmNvbS8pCi0gW2VtaW5lb10oaHR0cHM6Ly93d3cuZW1pbmVvLmNoKQotIFtmYXN0bHldKGh0dHBzOi8vd3d3LmZhc3RseS5jb20vKQotIFtGZW5lcmdvXShodHRwczovL3d3dy5mZW5lcmdvLmNvbS8pCi0gW2ZyZWVlXShodHRwczovL2NvcnAuZnJlZWUuY28uanAvZW4vKQotIFtGcmVzaENlbGxzXShodHRwczovL3d3dy5mcmVzaGNlbGxzLmRlLykKLSBbRnVzZV0oaHR0cHM6Ly93d3cuZnVzZS5uby8pCi0gW0dhbnRuZXJdKGh0dHBzOi8vd3d3LmdhbnRuZXIuY29tKQotIFtHZW5GbG93XShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vR2VuRmxvdykKLSBbR2V0WW91ckd1aWRlXShodHRwczovL3d3dy5nZXR5b3VyZ3VpZGUuY29tLykKLSBbR2xvdm9dKGh0dHBzOi8vZ2xvdm9hcHAuY29tLykKLSBbR01PIFBlcGFib10oaHR0cHM6Ly9wZXBhYm8uY29tL2VuLykKLSBbR29EYWRkeV0oaHR0cHM6Ly9nb2RhZGR5LmNvbSkKLSBbR3VtdHJlZV0oaHR0cHM6Ly9ndW10cmVlLmNvbSkKLSBbSGVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIuaGVyZS5jb20vKQotIFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20vKQotIFtJbnN0YW5hXShodHRwczovL3d3dy5pbnN0YW5hLmNvbSkKLSBbSW50ZXJ4aW9uXShodHRwczovL3d3dy5pbnRlcnhpb24uY29tKQotIFtJbnF1aXNpY29dKGh0dHBzOi8vaW5xdWlzaWNvLmNvbSkKLSBbSnVzdFN0YXJdKGh0dHBzOi8vd3d3Lmp1c3RzdGFyaW5mby5jb20pCi0gW2s2LmlvXShodHRwczovL2s2LmlvLykKLSBbS2xhcm5hXShodHRwczovL3d3dy5rbGFybmEuY29tLykKLSBbS3JvbnNvZnQgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3Lmtyb25zb2Z0LnJvL2hvbWUvKQotIFtLdWJlcm5ldGVzXShodHRwczovL2t1YmVybmV0ZXMuaW8pCi0gW0xhbmRlc2hhdXB0c3RhZHQgTcO8bmNoZW4gLSBpdEBNXShodHRwczovL211ZW5jaGVuLmRpZ2l0YWwvaXQtYXQtbS8pCi0gW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pCi0gW0xvZ2ljZHJvcF0oaHR0cHM6Ly93d3cubG9naWNkcm9wLmNvbSkKLSBbTHVtZXJpc10oaHR0cHM6Ly93d3cubHVtZXJpcy5jb20pCi0gW0xWTSBWZXJzaWNoZXJ1bmdlbl0oaHR0cHM6Ly93d3cubHZtLmRlKQotIFtNYWlsU2x1cnBdKGh0dHBzOi8vd3d3Lm1haWxzbHVycC5jb20pCi0gW01hbnRpY29yZSBTZWFyY2hdKGh0dHBzOi8vbWFudGljb3Jlc2VhcmNoLmNvbSkKLSBbTWFzdGVyY2FyZF0oaHR0cHM6Ly9kZXZlbG9wZXJzLm1hc3RlcmNhcmQuY29tKQotIFtNw6lkaWF2aXNpb25dKGh0dHBzOi8vd3d3Lm1lZGlhdmlzaW9uLmZyLykKLSBbTWV0YXN3aXRjaF0oaHR0cHM6Ly93d3cubWV0YXN3aXRjaC5jb20vKQotIFtNb29uVmlzaW9uXShodHRwczovL3d3dy5tb29udmlzaW9uLmlvLykKLSBbTXl3b3Jrb3V0XShodHRwczovL215d29ya291dC5jb20pCi0gW05hbVNvcl0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8pCi0gW05ldmVyZmFpbF0oaHR0cHM6Ly93d3cubmV2ZXJmYWlsLmNvbS8pCi0gW05ldWVyRW5lcmd5XShodHRwczovL25ldWVyZW5lcmd5LmNvbSkKLSBbTm9raWFdKGh0dHBzOi8vd3d3Lm5va2lhLmNvbS8pCi0gW09uZVNpZ25hbF0oaHR0cHM6Ly93d3cub25lc2lnbmFsLmNvbS8pCi0gW09wdGlvbnMgQ2xlYXJpbmcgQ29ycG9yYXRpb24gKE9DQyldKGh0dHBzOi8vd3d3LnRoZW9jYy5jb20vKQotIFtPcGVuZXRdKGh0dHBzOi8vd3d3Lm9wZW5ldC5jb20vKQotIFtvcGVuVkFMSURBVElPTl0oaHR0cHM6Ly9vcGVudmFsaWRhdGlvbi5pby8pCi0gW09yYWNsZV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS8pCi0gW1BheG9zXShodHRwczovL3d3dy5wYXhvcy5jb20pCi0gW1BsYWlkXShodHRwczovL3BsYWlkLmNvbSkKLSBbUExBSUQsIEluYy5dKGh0dHBzOi8vcGxhaWQuY28uanAvKQotIFtQaW50ZXJlc3RdKGh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20pCi0gW1Bvbmljb2RlXShodHRwczovL3Bvbmljb2RlLmRldi8pCi0gW1ByaWNlZnhdKGh0dHBzOi8vd3d3LnByaWNlZnguY29tLykKLSBbUHJpbnROYW5ueV0oaHR0cHM6Ly93d3cucHJpbnQtbmFubnkuY29tLykKLSBbUHJvbWV0aGV1cy9BbGVydG1hbmFnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2FsZXJ0bWFuYWdlcikKLSBbUWF2YXJdKGh0dHBzOi8vd3d3LnFhdmFyLmNvbSkKLSBbUUVESVRdKGh0dHBzOi8vcWVkLWl0LmNvbSkKLSBbUW92ZXJ5XShodHRwczovL3FvdmVyeS5jb20pCi0gW1F1bGl4IFN5c3RlbXNdKGh0dHBzOi8vd3d3LnF1bGl4LmNvbSkKLSBbUmFrc3VsXShodHRwczovL2NvcnAucmFrc3VsLmNvbSkKLSBbUmFpZmZlaXNlbiBTY2h3ZWl6IEdlbm9zc2Vuc2NoYWZ0XShodHRwczovL3d3dy5yYWlmZmVpc2VuLmNoKQotIFtSZWRIYXRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9zd2FnZ2VyLW9wZW5hcGktY29kZS1nZW5lcmF0aW9uLWFwaS1maXJzdC1taWNyb3NlcnZpY2VzLWVudGVycHJpc2UtZGV2ZWxvcG1lbnQpCi0gW1JFU1QgVW5pdGVkXShodHRwczovL3Jlc3R1bml0ZWQuY29tKQotIFtSb2JvY29ycF0oaHR0cHM6Ly93d3cucm9ib2NvcnAuY29tKQotIFtSb2JvdGluZnJhXShodHRwczovL3d3dy5yb2JvdGluZnJhLmNvbSkKLSBbU2VhcmNoQXBpXShodHRwczovL3d3dy5zZWFyY2hhcGkuaW8vKQotIFtTbWFydEhSXShodHRwczovL3NtYXJ0aHIuY28uanAvKQotIFtTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnRdKGh0dHBzOi8vd3d3LnNpZS5jb20vZW4vaW5kZXguaHRtbCkKLSBbU3BsaXRpdF0oaHR0cHM6Ly93d3cuc3BsaXRpdC5jb20vKQotIFtTdGluZ3JheV0oaHR0cDovL3d3dy5zdGluZ3JheS5jb20pCi0gW1N1dmFdKGh0dHBzOi8vd3d3LnN1dmEuY2gvKQotIFtTdml4XShodHRwczovL3d3dy5zdml4LmNvbS8pCi0gW1RlbHN0cmFdKGh0dHBzOi8vZGV2LnRlbHN0cmEuY29tKQotIFtUZW5jZW50XShodHRwczovL3d3dy50ZW5jZW50LmNvbSkKLSBbVGhlIFVuaXZlcnNpdHkgb2YgQWl6dV0oaHR0cHM6Ly93d3cudS1haXp1LmFjLmpwL2VuLykKLSBbVHJhbnNsdWNlbnQgQXBTXShodHRwczovL3d3dy50cmFuc2x1Y2VudC5kaykKLSBbVHJhdmVsVGltZSBwbGF0Zm9ybV0oaHR0cHM6Ly93d3cudHJhdmVsdGltZXBsYXRmb3JtLmNvbS8pCi0gW1RyaWJhbFNjYWxlXShodHRwczovL3d3dy50cmliYWxzY2FsZS5jb20pCi0gW1RyaWZvcmtdKGh0dHBzOi8vdHJpZm9yay5jb20pCi0gW1RVSSBJbmZvVGVjIEdtYkhdKGh0dHA6Ly93d3cudHVpLWluZm90ZWMuY29tLykKLSBbVHdpbGlvXShodHRwczovL3d3dy50d2lsaW8uY29tLykKLSBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbSkKLSBbdW5ibHUgaW5jLl0oaHR0cHM6Ly93d3cudW5ibHUuY29tLykKLSBbVmVhbWx5XShodHRwczovL3d3dy52ZWFtbHkuY29tLykKLSBbVk1XYXJlXShodHRwczovL3d3dy52bXdhcmUuY29tLykKLSBbd2J0LXNvbHV0aW9uc10oaHR0cHM6Ly93d3cud2J0LXNvbHV0aW9ucy5kZS8pCi0gW1dvbGVldF0oaHR0cHM6Ly93d3cud29sZWV0LmlvLykKLSBbV1NPMl0oaHR0cHM6Ly93c28yLmNvbS8pCi0gW1ZvdWNoZXJ5LmlvXShodHRwczovL3ZvdWNoZXJ5LmlvKQotIFtYZXJvXShodHRwczovL3d3dy54ZXJvLmNvbS8pCi0gW1lhaG9vIEphcGFuXShodHRwczovL3d3dy55YWhvby5jby5qcC8pCi0gW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlLykKLSBbVm9uYWdlXShodHRwczovL3ZvbmFnZS5jb20pCi0gW1lJVFUgVGVjaG5vbG9neV0oaHR0cHM6Ly93d3cueWl0dXRlY2guY29tLykKLSBbWWVscF0oaHR0cHM6Ly93d3cueWVscC5jb20vKQotIFtaYWxhbmRvXShodHRwczovL3d3dy56YWxhbmRvLmNvbSkKLSBbM0RTIE91dHNjYWxlXShodHRwczovL3d3dy5vdXRzY2FsZS5jb20vKQoKIyMgWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCN0YWJsZS1vZi1jb250ZW50cykKCi0gMjAxOC8wNS8xMiAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIGNvbW11bml0eSBkcml2ZW7jgafmiJDplbfjgZnjgovjgrPjg7zjg4njgrjjgqfjg43jg6zjg7zjgr9dKGh0dHBzOi8vYWNraW50b3NoLmdpdGh1Yi5pby9ibG9nLzIwMTgvMDUvMTIvb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIDIwMTgvMDUvMTUgLSBbU3RhcnRpbmcgYSBuZXcgb3Blbi1zb3VyY2UgcHJvamVjdF0oaHR0cDovL2ptaW5pLmdpdGh1Yi5pby9ibG9nLzIwMTgvMjAxOC0wNS0xNV9uZXctb3Blbi1zb3VyY2UtcHJvamVjdC5odG1sKSBieSBbSmVyZW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpCi0gMjAxOC8wNS8xNSAtIFtSRVNUIEFQSeS7leanmOOBi+OCiUFQSeOCr+ODqeOCpOOCouODs+ODiOOChOOCueOCv+ODluOCteODvOODkOOCkuiHquWLleeUn+aIkOOBmeOCi+OAjE9wZW5BUEkgR2VuZXJhdG9y44CN44Kq44O844OX44Oz44K944O844K544Gn5YWs6ZaL44CCU3dhZ2dlciBDb2RlZ2Vu44GL44KJ44Gu44OV44Kp44O844KvXShodHRwczovL3d3dy5wdWJsaWNrZXkxLmpwL2Jsb2cvMTgvcmVzdF9hcGlhcGlvcGVuYXBpX2dlbmVyYXRvcnN3YWdnZXJfZ2VuZXJhdG9yLmh0bWwpIGJ5IFtQdWJsaWNrZXldKGh0dHBzOi8vd3d3LnB1YmxpY2tleTEuanApCi0gMjAxOC8wNi8wOCAtIFtTd2FnZ2VyIENvZGVnZW4gaXMgbm93IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FuZ3VsYXIuc2NodWxlL2Jsb2cvMjAxOC0wNi1zd2FnZ2VyLWNvZGVnZW4taXMtbm93LW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSm9oYW5uZXNIb3BwZV0oaHR0cHM6Ly9naXRodWIuY29tL0pvaGFubmVzSG9wcGUpCi0gMjAxOC8wNi8yMSAtIFtDb25uZWN0IHlvdXIgSkhpcHN0ZXIgYXBwcyB0byB0aGUgd29ybGQgb2YgQVBJcyB3aXRoIE9wZW5BUEkgYW5kIGdSUENdKGh0dHBzOi8vZnIuc2xpZGVzaGFyZS5uZXQvY2hib3JuZXQvamhpcHN0ZXItY29uZi0yMDE4LWNvbm5lY3QteW91ci1qaGlwc3Rlci1hcHBzLXRvLXRoZS13b3JsZC1vZi1hcGlzLXdpdGgtb3BlbmFwaS1hbmQtZ3JwYykgYnkgW0NocmlzdG9waGUgQm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkgYXQgW0pIaXBzdGVyIENvbmYgMjAxOF0oaHR0cHM6Ly9qaGlwc3Rlci1jb25mLmdpdGh1Yi5pby8pCi0gMjAxOC8wNi8yMiAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgR2F0bGluZyBDbGllbnQg44KS55Sf5oiQ44GX44Gm44G/44GfXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMDYvMjIvMDczMDAwKSBhdCBb44K944Oi44K144OzXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tLykKLSAyMDE4LzA2LzI3IC0gW0xlc3NvbnMgTGVhcm5lZCBmcm9tIExlYWRpbmcgYW4gT3Blbi1Tb3VyY2UgUHJvamVjdCBTdXBwb3J0aW5nIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvbGVzc29ucy1sZWFybmVkLWZyb20tbGVhZGluZy1hbi1vcGVuLXNvdXJjZS1wcm9qZWN0LXN1cHBvcnRpbmctMzAtcGx1cy1wcm9ncmFtbWluZy1sYW5ndWFnZXMpIC0gW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbTGludXhDb24gKyBDb250YWluZXJDb24gKyBDbG91ZE9wZW4gQ2hpbmEgMjAxOF0oaHR0cDovL2JpdC5seS8yd2FES0tYKQotIDIwMTgvMDcvMTkgLSBbT3BlbkFQSSBHZW5lcmF0b3IgQ29udHJpYnV0aW9uIFF1aWNrc3RhcnQgLSBSaW5nQ2VudHJhbCBHbyBTREtdKGh0dHBzOi8vbWVkaXVtLmNvbS9yaW5nY2VudHJhbC1kZXZlbG9wZXJzL29wZW5hcGktZ2VuZXJhdG9yLWZvci1nby1jb250cmlidXRpb24tcXVpY2tzdGFydC04Y2M3MmJmMzdiNTMpIGJ5IFtKb2huIFdhbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9ncm9raWZ5KQotIDIwMTgvMDgvMjIgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljga7jg5fjg63jgrjjgqfjgq/jg4jmp4vmiJDjgarjganjga7jg6Hjg6JdKGh0dHBzOi8veWlubS5pbmZvLzIwMTgwODIyLykgYnkgW1l1c3VrZSBJaW51bWFdKGh0dHBzOi8vZ2l0aHViLmNvbS95aW5tKQotIDIwMTgvMDkvMTIgLSBbUmVwcmVaZW4gYW5kIE9wZW5BUEkgMy4wOiBOb3cgaXMgdGhlIFRpbWVdKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL3JlcHJlemVuLW9wZW5hcGktMy4wLXVwZ3JhZGUtbm93LWlzLXRoZS10aW1lKSBieSBbTWlsZXMgRGFmZmluXShodHRwczovL3d3dy5yZXByZXplbi5jb20vYmxvZy9hdXRob3IvbWlsZXMtZGFmZmluKQotIDIwMTgvMTAvMzEgLSBbQSBub2RlIHBhY2thZ2Ugd3JhcHBlciBmb3Igb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9IYXJtb1dhdGNoL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKLSAyMDE4LzExLzAzIC0gW09wZW5BUEkgR2VuZXJhdG9yICsgZ29sYW5nICsgRmx1dHRlciDjgafjgqLjg5fjg6rplovnmbpdKGh0dHA6Ly9yeXVpY2hpMTExc3RkLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMTEvMDMvMjE0MDA1KSBieSBbUnl1aWNoaSBEYWlnb10oaHR0cHM6Ly9naXRodWIuY29tL3J5dWljaGkxMTEpCi0gMjAxOC8xMS8xNSAtIFvln7rkuo5vcGVuYXBpMy4w55qEeWFtbOaWh+S7tueUn+aIkGphdmHku6PnoIHnmoTkuIDmrKHlrp7ot7VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC95enkxOTkzOTEvYXJ0aWNsZS9kZXRhaWxzLzg0MDIzOTgyKSBieSBb54Sx6a2U546LXShodHRwczovL21lLmNzZG4ubmV0L3l6eTE5OTM5MSkKLSAyMDE4LzExLzE4IC0gW0dlbmVyYXRpbmcgUEhQIGxpYnJhcnkgY29kZSBmcm9tIE9wZW5BUEldKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9wb3N0cy8yMDE4L2dlbmVyYXRpbmctcGhwLWxpYnJhcnktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtMb3JuYSBKYW5lXShodHRwczovL2xvcm5hamFuZS5uZXQvKSBhdCBbTE9STkFKQU5FIEJsb2ddKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9ibG9nKQotIDIwMTgvMTEvMTkgLSBbT3BlbkFQSXMgYXJlIGV2ZXJ5d2hlcmVdKGh0dHBzOi8veW91dHUuYmUvLWxEb3Q0WW43RGcpIGJ5IFtKZXJlbWllIEJyZXNzb24gKFVuYmx1KV0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBhdCBbRWNsaXBzZUNvbiBFdXJvcGUgMjAxOF0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOCkKLSAyMDE4LzEyLzA5IC0gW29wZW5hcGktZ2VuZXJhdG9yIOOCkuOCq+OCueOCv+ODnuOCpOOCuuOBmeOCi+aWueazlV0oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvL2l0ZW1zLzA5NjEyODdjMDJlYWM5MjExNTcyKSBieSBbQHdhdGlrb10oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvKQotIDIwMTkvMDEvMDMgLSBbQ2FsbGluZyBhIFN3YWdnZXIgc2VydmljZSBmcm9tIEFwZXggdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbGVra2ltd29ybGQuY29tLzIwMTkvMDEvMDMvY2FsbGluZy1hLXN3YWdnZXItc2VydmljZS1mcm9tLWFwZXgtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbTWlra2VsIEZsaW5kdCBIZWlzdGVyYmVyZ10oaHR0cHM6Ly9sZWtraW13b3JsZC5jb20pCi0gMjAxOS8wMS8xMyAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp1JFU1RmdWwgQVBJ44Gu5a6a576p5pu444GL44KJ6Imy44CF6Ieq5YuV55Sf5oiQ44GZ44KLXShodHRwczovL2t5LXlrLWQuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8wMS8xMy8yMzQxMDgpIGJ5IFtAa3lfeWtfZF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9reV95a19kKQotIDIwMTkvMDEvMjAgLSBbQ29udHJhY3QtRmlyc3QgQVBJIERldmVsb3BtZW50IHdpdGggT3BlbkFQSSBHZW5lcmF0b3IgYW5kIENvbm5leGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL2NvbW1lbmNpcy9jb250cmFjdC1maXJzdC1hcGktZGV2ZWxvcG1lbnQtd2l0aC1vcGVuYXBpLWdlbmVyYXRvci1hbmQtY29ubmV4aW9uLWIyMWJiZjJmOTI0NCkgYnkgW0FuaWwgQ2FuIEF5ZGluXShodHRwczovL2dpdGh1Yi5jb20vYW5sY255ZG4pCi0gMjAxOS8wMS8zMCAtIFtSYXBpZCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBXaXRoIEFQSSBGaXJzdCBBcHByb2FjaCBVc2luZyBPcGVuLUFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL3JhcGlkLWFwaS1kZXZlbG9wbWVudC11c2luZy1vcGVuLWFwaS1nZW5lcmF0b3IpIGJ5IFtNaWxhbiBTb25rYXJdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzgyODMyOS9taWxhbl9zb25rYXIuaHRtbCkKLSAyMDE5LzAyLzAyIC0gW+W5s+mdmeOCkuS/neOBoeOAgeOCs+ODvOODieOCkueUn+aIkOOBm+OCiCDjgJwgT3BlbkFQSSBHZW5lcmF0b3LoqpXnlJ/jga7og4zmma/jgajou4zot6Eg44CcXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9ha2loaXRvX25ha2Fuby9ndW5tYXdlYjM0KSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbR3VubWEud2ViICMzNCDjgrnjgq3jg7zjg57pp4bli5XplovnmbpdKGh0dHBzOi8vZ3VubWF3ZWIuY29ubnBhc3MuY29tL2V2ZW50LzExMzk3NC8pCi0gMjAxOS8wMi8yMCAtIFtBbiBhZHZlbnR1cmUgaW4gT3BlbkFQSSBWMyBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbXV4LmNvbS9ibG9nL2FuLWFkdmVudHVyZS1pbi1vcGVuYXBpLXYzLWFwaS1jb2RlLWdlbmVyYXRpb24vKSBieSBbUGhpbCBDbHVmZl0oaHR0cHM6Ly9tdXguY29tL2Jsb2cvYXV0aG9yL3BoaWxjLykKLSAyMDE5LzAyLzI2IC0gW0J1aWxkaW5nIEFQSSBTZXJ2aWNlczogQSBCZWdpbm5lcuKAmXMgR3VpZGVdKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQvYnVpbGRpbmctYXBpLXNlcnZpY2VzLWEtYmVnaW5uZXJzLWd1aWRlLTcyNzRhZTRjNTQ3ZikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS8wMi8yNiAtIFtCdWlsZGluZyBBUElzIHdpdGggT3BlbkFQSTogQ29udGludWVkXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kvYnVpbGRpbmctYXBpcy13aXRoLW9wZW5hcGktY29udGludWVkLTVkMGZhYWVkMzJlYikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS0wMy0wNyAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgU3ByaW5nIEJvb3Qg44GoIEFuZ3VsYXIg44KS44K/44Kk44OX44K744O844OV44Gr57mL44GQXShodHRwczovL3FpaXRhLmNvbS9jaGliYXRvL2l0ZW1zL2U0YTc0OGRiMTI0MDliNDBjMDJmKSBieSBbVG9tb2Z1bWkgQ2hpYmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaGliYXQpCi0gMjAxOS0wMy0xNiAtIFtBIFF1aWNrIGludHJvZHVjdGlvbiB0byBtYW51YWwgT3BlbkFQSSBWM10oaHR0cHM6Ly92YWRvc3dhcmUuaW8vcG9zdC9xdWljay1pbnRyby10by1tYW51YWwtb3BlbmFwaS12My8pIGJ5IFt2YWRvc10oaHR0cHM6Ly9naXRodWIuY29tL3QzaG1ybWFuKSBhdCBbVkFET1NXQVJFXShodHRwczovL3ZhZG9zd2FyZS5pbykKLSAyMDE5LTAzLTI1IC0gW0FjY2VzcyBhbnkgUkVTVCBzZXJ2aWNlIHdpdGggdGhlIFNBUCBTLzRIQU5BIENsb3VkIFNES10oaHR0cHM6Ly9ibG9ncy5zYXAuY29tLzIwMTkvMDMvMjUvaW50ZWdyYXRlLXNhcC1zNGhhbmEtY2xvdWQtc2RrLXdpdGgtb3Blbi1hcGkvKSBieSBbQWxleGFuZGVyIER1ZW1vbnRdKGh0dHBzOi8vcGVvcGxlLnNhcC5jb20vYWxleGFuZGVyLmR1ZW1vbnQpCi0gMjAxOS0wMy0yNSAtIFtPcGVuQVBJIGdlbmVyYXRvcuOCkuippuOBl+OBpuOBv+OCi10oaHR0cHM6Ly9xaWl0YS5jb20vYW11eWlrYW0vaXRlbXMvZThhNDVkYWFlNTljNjhiZTBmYzgpIGJ5IFtAYW11eWlrYW1dKGh0dHBzOi8vdHdpdHRlci5jb20vYW11eWlrYW0pCi0gMjAxOS0wMy0yNyAtIFtPcGVuQVBJM+OCkuS9v+OBo+OBpuOBv+OCiOOBhu+8gUdv6KiA6Kqe44Gn44Kv44Op44Kk44Ki44Oz44OI44Go44K544K/44OW44Gu6Ieq5YuV55Sf5oiQ44G+44Gn77yBXShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L29wZW5hcGkzL2dvKSBieSBbQGdvbGRfa291XShodHRwczovL3R3aXR0ZXIuY29tL2dvbGRfa291KQotIDIwMTktMDQtMTcgLSBbT3BlbkFQSeOBq+OCiOOCi+OCueOCreODvOODnuODleOCoeODvOOCueODiOmWi+eZuuOBruWun+aWveOCteODs+ODl+ODq+OBqENsb3VkIFJ1buOBq+OBpOOBhOOBpl0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAxOS8wNC8xNy8xNzQwMDApIGJ5IFtAeXVrZXkxMDMxXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2V5MTAzMSkKLSAyMDE5LTA0LTE4IC0gW0hvdyB0byB1c2UgT3BlbkFQSTMgZm9yIEFQSSBkZXZlbG9wZXIgKFJ1YnlLYWlnaSAyMDE5KV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vb3RhNDJ5L2hvdy10by11c2Utb3BlbmFwaTMtZm9yLWFwaS1kZXZlbG9wZXIpIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkgYXQgW1J1YnlLYWlnaSAyMDE5XShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAxOSkKLSAyMDE5LTA0LTI5IC0gW0EgQmVnaW5uZXIncyBHdWlkZSB0byBDb2RlIEdlbmVyYXRpb24gZm9yIFJFU1QgQVBJcyAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkKLSAyMDE5LTA1LTAxIC0gW0Rlc2lnbiBhbmQgZ2VuZXJhdGUgYSBSRVNUIEFQSSBmcm9tIFN3YWdnZXIgLyBPcGVuQVBJIGluIEphdmEsIFB5dGhvbiwgQyMgYW5kIG1vcmVdKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vZGVzaWduLWFuZC1nZW5lcmF0ZS1hcGktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtTaW1wbHkgSG93XShodHRwczovL3NpbXBseS1ob3cuY29tLykKLSAyMDE5LTA1LTE3IC0gW0dlbmVyYXRlIFNwcmluZyBCb290IFJFU1QgQVBJIHVzaW5nIFN3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly93d3cuNDdub3J0aGxhYnMuY29tL2tub3dsZWRnZS1iYXNlL2dlbmVyYXRlLXNwcmluZy1ib290LXJlc3QtYXBpLXVzaW5nLXN3YWdnZXItb3BlbmFwaS8pIGJ5IFtBbnRvbmllIFphZmlyb3ZdKGh0dHBzOi8vd3d3LjQ3bm9ydGhsYWJzLmNvbS9hdXRob3IvYW50b25pZS16YWZpcm92LykKLSAyMDE5LTA1LTIyIC0gW1JFU1QgQVBJc+S7o+eggeeUn+aIkOaMh+WNlyhPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2diKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKQotIDIwMTktMDUtMjQgLSBbUkVTVCBBUEkg5Luj56K855Sf5oiQ5oyH5Y2XIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2JpZzUpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpCi0gMjAxOS0wNi0yNCAtIFtLdWJlcm5ldGVzIENsaWVudHMgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2t1YmVybmV0ZXMtY2xpZW50cy1hbmQtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpIGF0IFtLdWJlcm5ldGVzIENvbnRyaWJ1dG9yIFN1bW1pdHMgU2hhbmdoYWkgMjAxOV0oaHR0cHM6Ly93d3cubGZhc2lhbGxjLmNvbS9ldmVudHMvY29udHJpYnV0b3JzLXN1bW1pdC1jaGluYS0yMDE5LykKLSAyMDE5LTA2LTI4IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvY29kZXdpbmQtb3BlbmFwaS10b29scykgaW4gW0VjbGlwc2UgTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvKSBieSBJQk0KLSAyMDE5LTA2LTI5IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGluIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vKSBieSBJQk0KLSAyMDE5LTA3LTA0IC0gW1JFU1QgQVBJIOOBruOBn+OCgeOBruOCs+ODvOODiOOCmeeUn+aIkOWFpemWgCAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19iaWc1KSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCksIFvlkoznlLDmi5PmnJddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXhwb24pCi0gMjAxOS0wNy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgavjgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjg4jjgZfjgZ/jgonnpL7lkI3jgYzovInjgaPjgZ/oqbHjgIIoQ0FNKSAtIENBTSBURUNIIEJMT0ddKGh0dHBzOi8vdGVjaC5jYW0taW5jLmNvLmpwL2VudHJ5LzIwMTkvMDcvMDgvMTQwMDAwKSBieSBbQ0FNLCBJbmMuXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSAyMDE5LTA3LTE0IC0gW09wZW5BUEkgR2VuZXJhdG9y44GnUHl0aG9u44Gu44Kv44Op44Kk44Ki44Oz44OI44Op44Kk44OW44Op44Oq44KS5L2c5oiQ44GX44GfXShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210L2l0ZW1zL2RmYjkyOTMxNmExMzM1YTE2MWMwKSBieSBbeXVqaTM4a3dtdF0oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdCkKLSAyMDE5LTA3LTE5IC0gW0RldmVsb3BlciBFeHBlcmllbmNlIChEWCkgZm9yIE9wZW4tU291cmNlIFByb2plY3RzOiBIb3cgdG8gRW5nYWdlIERldmVsb3BlcnMgYW5kIEJ1aWxkIGEgR3Jvd2luZyBEZXZlbG9wZXIgQ29tbXVuaXR5XShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2RldmVsb3Blci1leHBlcmllbmNlLWR4LWZvci1vcGVuLXNvdXJjZS1wcm9qZWN0cy1lbmdsaXNoLWphcGFuZXNlKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiAyMDE5XShodHRwczovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9vcGVuLXNvdXJjZS1zdW1taXQtamFwYW4tMjAxOS8pCi0gMjAxOS0wOC0xNCAtIFtPdXIgT3BlbkFQSSBqb3VybmV5IHdpdGggU3RhbmRhcmRpemluZyBTREtzXShodHRwczovL2JpdG1vdmluLmNvbS9vdXItb3BlbmFwaS1qb3VybmV5LXdpdGgtc3RhbmRhcmRpemluZy1zZGtzLykgYnkgW1NlYmFzdGlhbiBCdXJnc3RhbGxlcl0oaHR0cHM6Ly9iaXRtb3Zpbi5jb20vYXV0aG9yL3NidXJnc3RhbGxlci8pIGF0IFtCaXRtb3Zpbl0oaHR0cHM6Ly93d3cuYml0bW92aW4uY29tKQotIDIwMTktMDgtMTUgLSBbQVBJ44Gu44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQ44GV44Gb44Gf44GE44Gg44GR44Gq44KJZ1JQQ+OBp+OBquOBj+OBpuOCguOCiOOBj+OBquOBhD9dKGh0dHBzOi8vd3d3Lm0zdGVjaC5ibG9nL2VudHJ5LzIwMTkvMDgvMTUvMTEwMDAwKSBieSBbTTMsIEluYy5dKGh0dHBzOi8vY29ycG9yYXRlLm0zLmNvbS8pCi0gMjAxOS0wOC0yMiAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgavjgYrjgZHjgotXZWIgQVBJ44K544Kt44O844Oe44Gu566h55CG4pSAIEdyYXBoUUzjgIFnUlBD44CBT3BlbkFQSeOBrueJueW+tOOBqOS9v+OBhOOBqeOBk+OCjV0oaHR0cHM6Ly9lbXBsb3ltZW50LmVuLWphcGFuLmNvbS9lbmdpbmVlcmh1Yi9lbnRyeS8yMDE5LzA4LzIyLzEwMzAwMCkgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDgtMjQgLSBbU3dhZ2dlcuODieOCreODpeODoeODs+ODiOOBi+OCiU9wZW5BUEkgR2VuZXJhdG9y44KS5L2/44Gj44Gm44Oi44OD44Kv44K144O844OQ44O85L2c5oiQXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyL2l0ZW1zLzQ4NDVlNGM3MTVkMDQ1ODdjMTA0KSBieSBb5Z2C5pys5q2j576pXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyKQotIDIwMTktMDgtMjkgLSBbT3BlbkFQSeWIneaOol0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xNDk1OTg2KSBieSBbcGVha3hpZV0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvdXNlci8xMTEzMTUyKSBhdCBb6IW+6K6v5LqR56S+5Yy6XShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3BlcikKLSAyMDE5LTA4LTI5IC0gW+WFqOmdoui/m+WMlu+8mkt1YmVybmV0ZXMgQ1JEIDEuMTYgR0HliY3nnrtdKGh0dHBzOi8vd3d3LnNlcnZpY2VtZXNoZXIuY29tL2Jsb2cva3ViZXJuZXRlcy0xLjE2LWNyZC1nYS1wcmV2aWV3LykgYnkgW01pbiBLaW1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dWU5OTQ0ODgyKSBhdCBbU2VydmljZU1lc2hlciBCbG9nXShodHRwczovL3d3dy5zZXJ2aWNlbWVzaGVyLmNvbS9ibG9nLykKLSAyMDE5LTA5LTAxIC0gW0NyZWF0aW5nIGEgUEhQLVNsaW0gc2VydmVyIHVzaW5nIE9wZW5BUEkgKFlvdXR1YmUgdmlkZW8pXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTVjSnRiSXJzWWtnKSBieSBbRGFuaWVsIFBlcnNzb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNuRy1UTjIzbHN3TzZRYnZXaE10eHBBKQotIDIwMTktMDktMDYgLSBbVmVydC54IGFuZCBPcGVuQVBJXShodHRwczovL3dpc3NlbC5uZXQvYmxvZy8yMDE5LzA5L3ZlcnR4LWFuZC1vcGVuYXBpLmh0bWwpIGJ5IFtTdGVwaGFuIEggV2lzc2VsXShodHRwczovL3R3aXR0ZXIuY29tL25vdGVzc2Vuc2VpKSBhdCBbd2lzc2VsLm5ldCBibG9nXShodHRwczovL3dpc3NlbC5uZXQpCi0gMjAxOS0wOS0wOSAtIFtDbG91ZC1uYXRpdmUgZGV2ZWxvcG1lbnQgLSBDcmVhdGluZyBSRVNUZnVsIG1pY3Jvc2VydmljZXNdKGh0dHBzOi8vY2xvdWQuaWJtLmNvbS9kb2NzL2Nsb3VkLW5hdGl2ZT90b3BpYz1jbG91ZC1uYXRpdmUtcmVzdC1hcGkpIGluIFtJQk0gQ2xvdWQgRG9jc10oaHR0cHM6Ly9jbG91ZC5pYm0uY29tL2RvY3MpCi0gMjAxOS0wOS0xNCAtIFtHZW5lcmF0aW5nIGFuZCBDb25maWd1cmluZyBhIE1hc3RlcmNhcmQgQVBJIENsaWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubWFzdGVyY2FyZC5jb20vcGxhdGZvcm0vZG9jdW1lbnRhdGlvbi9nZW5lcmF0aW5nLWFuZC1jb25maWd1cmluZy1hLW1hc3RlcmNhcmQtYXBpLWNsaWVudC8pIGF0IFtNYXN0ZXJjYXJkIERldmVsb3BlcnMgUGxhdGZvcm1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1hc3RlcmNhcmQuY29tL3BsYXRmb3JtL2RvY3VtZW50YXRpb24vKQotIDIwMTktMDktMTUgLSBbT3BlbkFQSShTd2FnZ2VyKeWwjuWFpeS4i+iqv+OBuV0oaHR0cHM6Ly9xaWl0YS5jb20vU2hvaWNoaUt1cmFva2EvaXRlbXMvZjFmN2EzYzIzNzZmN2NkOWM1NmEpIGJ5IFtTaG9pY2hpIEt1cmFva2FdKGh0dHBzOi8vcWlpdGEuY29tL1Nob2ljaGlLdXJhb2thKQotIDIwMTktMDktMTcgLSBbVHV0b3JpYWw6IERvY3VtZW50aW5nIGh0dHA0ayBBUElzIHdpdGggT3BlbkFwaTNdKGh0dHBzOi8vd3d3Lmh0dHA0ay5vcmcvdHV0b3JpYWxzL2RvY3VtZW50aW5nX2FwaXNfd2l0aF9vcGVuYXBpLykgYnkgW2h0dHA0a10oaHR0cHM6Ly93d3cuaHR0cDRrLm9yZy8pCi0gMjAxOS0wOS0yMiAtIFtPcGVuQVBJIDPjgpLlrozlhajjgavnkIbop6PjgafjgY3jgovmnKxdKGh0dHBzOi8vYm9vdGgucG0vamEvaXRlbXMvMTU3MTkwMikgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDktMjIgLSBbUkVTVGZ1bCBBUElzOiBUdXRvcmlhbCBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AYW1pcm0ubGF2YXNhbmkvcmVzdGZ1bC1hcGlzLXR1dG9yaWFsLW9mLW9wZW5hcGktc3BlY2lmaWNhdGlvbi1lZWFkYTBlMzkwMWQpIGJ5IFtBbWlyIExhdmFzYW5pXShodHRwczovL21lZGl1bS5jb20vQGFtaXJtLmxhdmFzYW5pKQotIDIwMTktMDktMjIgLSBbUmVkZWZpbmluZyBTREtzIGFzIHNvZnR3YXJlIGRpdmVyc2l0eSBraXRzXShodHRwczovL2RldnJlbC5uZXQvZGV2LXJlbC9yZWRlZmluaW5nLXNka3MtYXMtc29mdHdhcmUtZGl2ZXJzaXR5LWtpdHMpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pIGF0IFtEZXZSZWxDb24gU2FuIEZyYW5jaXNjbyAyMDE5XShodHRwczovL3NmMjAxOS5kZXZyZWwubmV0LykKLSAyMDE5LTA5LTIzIC0gW3N3YWdnZXLjgYvjgolPcGVuQXBpIEdlbmVyYXRvcuOBp1NwcmluZ+OBruOCs+ODvOODieOCkuiHquWLleeUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vbGl0dGxlRmVldC9pdGVtcy80OTJkZjJhZDY4YTA3OTlhNWU1ZSkgYnkgW0BsaXR0bGVGZWV0XShodHRwczovL3FpaXRhLmNvbS9saXR0bGVGZWV0KSBhdCBbUWlpdGFdKGh0dHBzOi8vcWlpdGEuY29tLykKLSAyMDE5LTA5LTI0IC0gW0VpbmUgU3R1bmRlIHdhcyBtaXQgQXBpIEZpcnN0IV0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvSmFuV2VpbnNjaGVua2VyL2VpbmUtc3R1bmRlLXdhcy1taXQtYXBpLWZpcnN0KSBieSBbQGphbndlaW5zY2hlbmtlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qYW53ZWluc2NoZW5rZXIpIGF0IFtKYXZhIEZvcnVtIE5vcmRdKGh0dHBzOi8vamF2YWZvcnVtbm9yZC5kZS8pCi0gMjAxOS0xMC0wOSAtIFtvcGVuYXBpLWdlbmVyYXRvciDjgafnlJ/miJDjgZfjgZ8gR28g44Kv44Op44Kk44Ki44Oz44OI44GnIEJlYXJlciDoqo3oqLzjgpLjgZnjgotdKGh0dHBzOi8vYXV0b3BwLXRlY2guaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8xMC8wOS8yMjIwMzkpIGJ5IFtBa2lyYSBUYW5pbXVyYV0oaHR0cHM6Ly9naXRodWIuY29tL2F1dG9wcCkKLSAyMDE5LTEwLTEwIC0gW0F1dG9tYXRpYyBHZW5lcmF0aW9uIG9mIFJFU1QgQ2xpZW50c10oaHR0cHM6Ly93d3cubWVldHVwLmNvbS9mci1GUi9Dcml0ZW8tTGFicy1UZWNoLVRhbGtzL2V2ZW50cy8yNjQ3NzU3NjgvKSBieSBUaG9tYXMgUGV5cmFyZCwgU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyIGF0IENyaXRlbyBpbiBbRnVsbC1TdGFjayBUZWNoIFRhbGtzIChNZWV0dXApXShodHRwczovL3d3dy5tZWV0dXAuY29tL2ZyLUZSL0NyaXRlby1MYWJzLVRlY2gtVGFsa3MvZXZlbnRzLzI2NDc3NTc2OC8pCi0gMjAxOS0xMC0xMiAtIFtPcGVuQXBp6Ieq5Yqo55Sf5oiQY2xpZW50XShodHRwczovL2Jsb2cuY3Nkbi5uZXQvd3hpZDI3OTgyMjYvYXJ0aWNsZS9kZXRhaWxzLzEwMjUyNzQ2NykgYnkgW+mDkeazvea0sl0oaHR0cHM6Ly9tZS5jc2RuLm5ldC93eGlkMjc5ODIyNikKLSAyMDE5LTEwLTE2IC0gW0hvdyB0byBzaGlwIEFQSXMgZmFzdGVyP10oaHR0cHM6Ly9tZWRpdW0uY29tL0BhY2NvdW50c183NjIyNC9ob3ctdG8tc2hpcC1hcGlzLWZhc3Rlci1jYWJlZjJmODE5ZTQpIGJ5IFtTaW1vbiBHdWlsbGlhbXMgQCBQb25pQ29kZV0oaHR0cHM6Ly9wb25pY29kZS5kZXYpCi0gMjAxOS0xMC0yMiAtIFtPcGVuQVBJICsgU3ByaW5nIEJvb3QoS290bGluKeOBp+ODleOCoeOCpOODq+ODgOOCpuODs+ODreODvOODiUFQSeOCkuS9nOaIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vYm9yb25uZ28vaXRlbXMvNGI3OGI5MjUyNjIwOWRhZWFlZTkpIGJ5IFtZdWtpIEZ1cnVrYXdhXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2lfZnVydWthd2E1KQotIDIwMTktMTAtMjQgLSBbTWljcm9wcm9maWxlIE9wZW5BUEkgLSBDb2RlIEZpcnN0IG9yIERlc2lnbiBGaXJzdD9dKGh0dHBzOi8vZ2l0aHViLmNvbS9wZS1zdC9hcGlkb2NzL2Jsb2IvbWFzdGVyL01pY3JvUHJvZmlsZS1PcGVuQVBJLWFsbC1zbGlkZXMucGRmKSBieSBbUGV0ZXIgW3DJm8qDyZldIFN0ZWluZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vcGVzY2hlKSBhdCBbZWNsaXBzZWNvbiBFdXJvcGUgMjAxOV0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOS9zZXNzaW9ucy9taWNyb3Byb2ZpbGUtb3BlbmFwaS1jb2RlLWZpcnN0LW9yLWRlc2lnbi1maXJzdCkKLSAyMDE5LTExLTA2IC0gW0dlbmVyYXRpbmcgQVBJIGNsaWVudHMgYmFzZWQgb24gT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbS9ibG9nL2dlbmVyYXRpbmctYXBpLWNsaWVudHMtYmFzZWQtb24tb3BlbmFwaS12My1zcGVjaWZpY2F0aW9ucykgYnkgW0RvbWluaWsgSmFzdHJ6xJlic2tpIEAgOThlbGVtZW50c10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbSkKLSAyMDE5LTExLTA2IC0gW09wZW5BUEnjgpLliKnnlKjjgZfjgaboh6rliY3jga5BUEnjgrXjg7zjg5Djg7woU2luYXRyYSnjgpLnp7vmpI3jgZfjgZ/mmYLjga7jg6Hjg6JdKGh0dHBzOi8vcWlpdGEuY29tL1lhc3VoaXJvQUJFL2l0ZW1zL2M3MzkyMGVhYjJkOWQ2ZTk3ZmQ5KSBieSBbWWFzdWhpcm8gQUJFXShodHRwczovL3R3aXR0ZXIuY29tL1lhc3VoaXJvQUJFKQotIDIwMTktMTEtMDcgLSBbQVBJIEZpcnN0IGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSAtIFlvdSBzaG91bGQgeW91IHByYWN0aXNlIGl0ICE/XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUY5aUYzYTFaOFk4KSBieSBbTmljayBWYW4gSG9vZl0oaHR0cHM6Ly93d3cubmlja3Zhbmhvb2YuY29tLykgYXQgW0Rldm94eCBCZWxnaXVtIDIwMTldKGh0dHBzOi8vZGV2b3h4LmJlLykKLSAyMDE5LTExLTA4IC0gW0pIaXBzdGVyIGJleW9uZCBDUlVEIC0gQVBJLUZpcnN0IGZvciBFbnRlcnByaXNlcyBieSBFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bTI4SkZvdktRMjApIGJ5IFtFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vdHdpdHRlci5jb20vZW5yaWNvY29zdGFuemkpIGF0IFtKSGlwc3RlciBDb25mIDIwMTkgaW4gUGFyaXNdKGh0dHBzOi8vamhpcHN0ZXItY29uZi5naXRodWIuaW8vKQotIDIwMTktMTEtMTEgLSBbVHlwZVNjcmlwdCBSRVNUIEFQSeOCr+ODqeOCpOOCouODs+ODiF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkL2l0ZW1zLzdiNzRmN2QzYzQzNTQ1ZGFkZDJiKSBieSBbQHVuaHVycmllZF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkKQotIDIwMTktMTEtMTEgLSBbT25lIFNwZWMgdG8gUnVsZSB0aGVtIGFsbCAtIE9wZW5BUEkgaW4gQWN0aW9uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU1NYXlfbmh0OGVjKSBieSBbQW5kcmVhcyBMaXR0XShodHRwczovL2dpdGh1Yi5jb20vbGl0dGxkcikgYXQgW2NvZGUudGFsa3MgMjAxOV0oaHR0cHM6Ly93d3cuY29kZXRhbGtzLmNvbS8pCi0gMjAxOS0xMS0xMyAtIFtPcGVuQVBJIDMuMCBFZGl0b3IgQW5kIEdlbmVyYXRvciBXaXRoIEEgU3ByaW5nIEJvb3QgRXhhbXBsZV0oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS9kZXNpZ24tYW5kLWdlbmVyYXRlLWFwaS1jb2RlLWZyb20tb3BlbmFwaSkgYXQgW1NpbXBseSBIb3ddKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vKQotIDIwMTktMTEtMTcgLSBbT3BlbkFQSSBHZW5lcmF0b3IgWW91VHViZSBwbGF5bGlzdF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTHRKeUhWTWR6ZkY2ZkJrT1VWNVZEVkVyUDIzQ0dnSEl5KSBhdCBbWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20pCi0gMjAxOS0xMS0yMCAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9ub3RpLnN0L2xvcm5hamFuZS9IdkRIN1UvaW50cm9kdWN0aW9uLXRvLW9wZW5hcGkpIGJ5IFtMb3JuYSBNaXRjaGVsbF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9sb3JuYWphbmUpIGF0IFtHT1RPIENvcGVuaGFnZW4gMjAxOV0oaHR0cHM6Ly9nb3RvY3BoLmNvbS8yMDE5LykKLSAyMDE5LTExLTIwIC0gW0hvdyB0byBHZW5lcmF0ZSBBbmd1bGFyIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zXShodHRwczovL2RvdG5ldHRob3VnaHRzLm5ldC9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1jb2RlLWZyb20tb3BlbmFwaS1zcGVjaWZpY2F0aW9ucy8pIGJ5IEFudXJhagotIDIwMTktMTEtMjMgLSBbU3dhZ2dlciDjgafjga/jgarjgYQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMCDjgavjgojjgosgQVBJIOOCteODvOODkOODvOmWi+eZul0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvdGVjaGJsb2d5YWhvby9zd2FnZ2VyLW9wZW5hcGktc3BlY2lmaWNhdGlvbi0zMC1hcGkpIGJ5IFtUZXRzdXlhIE1vcmltb3RvXShodHRwczovL2dpdGh1Yi5jb20vdDJ5KSBhdCBbSkpVRyBDQ0MgMjAxOSBGYWxsXShodHRwczovL2NjYzIwMTlmYWxsLmphdmEtdXNlcnMuanAvKQotIDIwMTktMTEtMjQgLSBbQWNjZWxlcmF0ZSBGbHV0dGVyIGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSBhbmQgRGFydCBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AaXJpbmFzb3V0aHdlbGxfMjIwL2FjY2VsZXJhdGUtZmx1dHRlci1kZXZlbG9wbWVudC13aXRoLW9wZW5hcGktYW5kLWRhcnQtY29kZS1nZW5lcmF0aW9uLTFmMTZmODMyOWE2YSkgYnkgW0lyaW5hIFNvdXRod2VsbF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpcmluYXNvdXRod2VsbF8yMjApCi0gMjAxOS0xMS0yNSAtIFtvcGVuYXBpLWdlbmVyYXRvcuOBp+aJi+i7veOBq+OCueOCv+ODluOCteODvOODkOOBqOOCr+ODqeOCpOOCouODs+ODiOOBrueUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vcG9jaG9wb2NobzEzL2l0ZW1zLzhkYjY2MmUxOTM0ZmIyYjQwOGI4KSBieSBbQHBvY2hvcG9jaG8xM10oaHR0cHM6Ly90d2l0dGVyLmNvbS9wb2Nob3BvY2hvMTMpCi0gMjAxOS0xMS0yNiAtIFtDb3JkYUNvbiAyMDE5IEhpZ2hsaWdodHM6IEJyYWlkIFNlcnZlciBhbmQgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIENvcmRhIENsaWVudCBBUEnigJlzXShodHRwczovL2Jsb2cuYjlsYWIuY29tL2NvcmRhY29uLTIwMTktaGlnaGxpZ2h0cy1icmFpZC1zZXJ2ZXItYW5kLW9wZW5hcGktZ2VuZXJhdG9yLWZvci1jb3JkYS1mbG93cy1hcGktcy1kMjQxNzljY2IyN2MpIGJ5IFtBZGVsIFJ1c3R1bV0oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS9AYWRlbHJlc3RvbSkgYXQgW0I5bGFiXShodHRwczovL2Jsb2cuYjlsYWIuY29tLykKLSAyMDE5LTEyLTAzIC0gW0EgUm9hZCB0byBMZXNzIENvZGluZzogQXV0by1HZW5lcmF0ZSBBUElMaWJyYXJ5XShodHRwczovL3d3dy5jb3JkYS5uZXQvYmxvZy9hLXJvYWQtdG8tbGVzcy1jb2RpbmctYXV0by1nZW5lcmF0ZS1hcGlsaWJyYXJ5LykgYXQgW0NvcmRhIEJsb2ddKGh0dHBzOi8vd3d3LmNvcmRhLm5ldC9ibG9nLykKLSAyMDE5LTEyLTA0IC0gW0FuZ3VsYXLvvItOZXN0SlPvvItPcGVuQVBJ77yIU3dhZ2dlcu+8ieOBp+ODnuOCpOOCr+ODreOCteODvOODk+OCueOCkuimlumHjuOBq+WFpeOCjOOBn+eSsOWig+OCkuiAg+OBiOOCi10oaHR0cHM6Ly9xaWl0YS5jb20vdGVyYWN5NTUvaXRlbXMvMDMyN2M3YTE3MGVjNzcyOTcwYzYpIGJ5IFvjgabjgonjgZfjg7xdKGh0dHBzOi8vdHdpdHRlci5jb20vdGVyYWN5NTUpCi0gMjAxOS0xMi0wNSAtIFtDb2RlIGdlbmVyYXRpb24gb24gdGhlIEphdmEgVk1dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcy9jb2RlLWdlbmVyYXRpb24tb24tdGhlLWphdmEtdm0tMjAxOS0xMi0wNSkgYnkgW1NlYW4gU3VsbGl2YW5dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcykKLSAyMDE5LTEyLTE3IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBPQXV0aDIg44Ki44Kv44K744K544OI44O844Kv44Oz55m66KGM44Gu44Kz44O844OJ44G+44Gn55Sf5oiQ44GX44Gm44G/44KLXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvMjAxOS8xMi8xNy9vcGVuYXBpLWdlbmVyYXRvci1vYXV0aDItYWNjZXNzdG9rZW4vKSBieSBbVEVDSFNDT1JFXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvKQotIDIwMTktMTItMjMgLSBbVXNlIEFkYSBmb3IgWW91ciBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3LmVsZWN0cm9uaWNkZXNpZ24uY29tL3RlY2hub2xvZ2llcy9lbWJlZGRlZC1yZXZvbHV0aW9uL2FydGljbGUvMjExMTkxNzcvdXNlLWFkYS1mb3IteW91ci13ZWItZGV2ZWxvcG1lbnQpIGJ5IFtTdGVwaGFuZSBDYXJyZXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGNhcnJleikKLSAyMDE5LTEyLTIzIC0gW09wZW5BUEnjga7jgrnjgq3jg7zjg57jgpLliIblibLjg7vmp4vpgKDljJbjgZfjgabjgYTjgY/mlrnms5VdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL2FydGljbGVzL3N0cnVjdHVyZWQtb3BlbmFwaS1zY2hlbWEpIGJ5IFvlsI/po6/loZrpgZTkuZ9dKGh0dHBzOi8vZ2l0aHViLmNvbS90Mmg1KSBhdCBbR2lGVCwgSW5jXShodHRwczovL2dpZnQtdGVjaC5jby5qcC8pCi0gMjAyMC0wMS0xNyAtIFtPcGVuQVBJIGRlbW8gZm9yIFB1bHAgMy4wIEdBXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1GQlAtTTBaUGZ3JnQ9MTc4cykgYnkgW1B1bHBdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNJNDNGZnM0VlBEdjdhd1h2dkJKZlJRKSBhdCBbWW91dHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vKQotIDIwMjAtMDEtMTkgLSBbV2h5IGRvY3VtZW50IGEgUkVTVCBBUEkgYXMgY29kZT9dKGh0dHBzOi8vZGV2LnRvL3JvbGZzdHJlZWZrZXJrL3doeS1kb2N1bWVudC1hLXJlc3QtYXBpLWFzLWNvZGUtNWU3cCkgYnkgW1JvbGYgU3RyZWVma2Vya10oaHR0cHM6Ly9naXRodWIuY29tL3Jwc3RyZWVmKSBhdCBbREVWIENvbW11bml0eV0oaHR0cHM6Ly9kZXYudG8pCi0gMjAyMC0wMS0yOCAtIFtHZXQgWW91ciBTZXJ2ZXJsZXNzIFN3YWdnZXIgQmFjayB3aXRoIE9wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlci9nZXQteW91ci1zZXJ2ZXJsZXNzLXN3YWdnZXItYmFjay13aXRoLW9wZW5hcGktNDhnYykgYnkgW01hdHQgVHlsZXJdKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlcikKLSAyMDIwLTAxLTMwIC0gW09wZW5BUEkgR2VuZXJhdG9y44G444Gu44Kz44Oz44OI44Oq44OT44Ol44O844OIXShodHRwczovL3d3dy55dXRha2EwbS53b3JrL2VudHJ5LzIwMjAvMDEvMzAvMTYzOTA1KSBieSBbeXV0YWthMG1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dXRha2EwbSkKLSAyMDIwLTAyLTAxIC0gW1VzaW5nIE9wZW5BUEkgdG8gTWF4aW1pc2UgWW91ciBQdWxwIDMgRXhwZXJpZW5jZV0oaHR0cHM6Ly9mb3NkZW0ub3JnLzIwMjAvc2NoZWR1bGUvZXZlbnQvb3BlbmFwaS8pIGJ5IFtEZW5uaXMgS2xpYmFuXShodHRwczovL2dpdGh1Yi5jb20vZGtsaWJhbi8pIGF0IFtGT1NERU1dKGh0dHBzOi8vZm9zZGVtLm9yZy8pCi0gMjAyMC0wMi0wNyAtIFtXaHkgeW91IHNob3VsZCB1c2UgT3BlbkFQSSBmb3IgeW91ciBBUEkgZGVzaWduXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpoYjd2VUFwTFc4JnQ9OTI3cykgYnkgW05pY2sgVmFuIEhvb2ZdKGh0dHBzOi8vYXBpY29uZmVyZW5jZS5uZXQvc3BlYWtlci9uaWNrLXZhbi1ob29mLykgYXQgW0FQSSBDb25mZXJlbmNlXShodHRwczovL2FwaWNvbmZlcmVuY2UubmV0LykKLSAyMDIwLTAyLTE3IC0gW1J1YnluZXRlczogdXNpbmcgT3BlbkFQSSB0byB2YWxpZGF0ZSBLdWJlcm5ldGVzIGNvbmZpZ3NdKGh0dHBzOi8vd3d3LmJyaWdodGJveC5jb20vYmxvZy8yMDIwLzAyLzE3L3VzaW5nLW9wZW5hcGktdG8tdmFsaWRhdGUta3ViZXJuZXRlcy1jb25maWdzLykgYnkgTmVpbCBXaWxzb24gYXQgW0JyaWdodGJveF0oaHR0cHM6Ly93d3cuYnJpZ2h0Ym94LmNvbS8pCi0gMjAyMC0wMi0yMCAtIFtCdWlsZGluZyBTREtzIGZvciB0aGUgZnV0dXJlXShodHRwczovL2RldmJsb2cueGVyby5jb20vYnVpbGRpbmctc2Rrcy1mb3ItdGhlLWZ1dHVyZS1iNzlmZjcyNmRmZDYpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pCi0gMjAyMC0wMi0yNyAtIFtOdXh05Yip55So44OX44Ot44OA44Kv44OI44GnSUUxMeOBqOS7suiJr+OBj+OBmeOCi+OBn+OCgeOBrkUyRV0oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvZW50cnkvZTJlLWllMTEpIGF0IFtNZWRwZWVyLmNvLmpwIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvKQotIDIwMjAtMDItMjkgLSBbUHJvdmlkaW5nIFN1cHBvcnQgdG8gSW9UIERldmljZXMgRGVwbG95ZWQgaW4gRGlzY29ubmVjdGVkIFJ1cmFsIEVudmlyb25tZW50IChDb25mZXJlbmNlIHBhcGVyKV0oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMwLTQxNDk0LThfMTQpIGJ5IFNlcmdpbyBMYXNvLCBEYW5pZWwgRmxvcmVzLU1hcnTDrW4sIEp1YW4gTHVpcyBIZXJyZXJhQ2FybG9zLCBDYW5hbEp1YW4gTWFudWVsLCBNdXJpbGxvSmF2aWVyIEJlcnJvY2FsCi0gMjAyMC0wMy0wMiAtIFtIb3cgVG8gR2VuZXJhdGUgQW5ndWxhciAmIFNwcmluZyBDb2RlIEZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5tb2trYXBwcy5kZS9ibG9nL2hvdy10by1nZW5lcmF0ZS1hbmd1bGFyLWFuZC1zcHJpbmctY29kZS1mcm9tLW9wZW4tYXBpLXNwZWNpZmljYXRpb24vKSBieSBbTWljaGFlbCBIb2ZmbWFubl0oaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvKQotIDIwMjAtMDMtMDIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgKyBUeXBlU2NyaXB0IOOBp+Wni+OCgeOCi+iHquWLleeUn+aIkOOBruWei+OBq+WuiOOCieOCjOOBn+ixiuOBi+OBquOCr+ODqeOCpOOCouODs+ODiOeUn+a0u10oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItdHlwZXNjcmlwdCkgYnkgW+S6lOeZvuiUtSDnm7TmqLldKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL21lbWJlcnMvbmFva2lpb3JvaSkgYXQgW0dpRlTmoKrlvI/kvJrnpL5dKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwLykKLSAyMDIwLTAzLTEwIC0gW09wZW5BUEkgR2VuZXJhdG9yIE1lZXR1cCAjMV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vYWtpaGl0b19uYWthbm8vb3BlbmFwaS1nZW5lcmF0b3ItbWVldHVwLW51bWJlci0xKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbT3BlbkFQSSBHZW5lcmF0b3IgTWVldHVwICMxXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLW1lZXR1cC5jb25ucGFzcy5jb20vZXZlbnQvMTY4MTg3LykKLSAyMDIwLTAzLTE1IC0gW0xvYWQgVGVzdGluZyBZb3VyIEFQSSB3aXRoIFN3YWdnZXIvT3BlbkFQSSBhbmQgazZdKGh0dHBzOi8vazYuaW8vYmxvZy9sb2FkLXRlc3RpbmcteW91ci1hcGktd2l0aC1zd2FnZ2VyLW9wZW5hcGktYW5kLWs2KQotIDIwMjAtMDQtMTMgLSBb5L+655qE44CQT0FT44CR44Go44Gu5ZCR44GN5ZCI44GE5pa5ICjniIbpgJ/jgadPcGVuQVBJ44Go5Y+L6YGU44Gr44Gq44KN44GGKV0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAyMC8wNC8xMy8xMDAwMDApIGluIFtPUFRpbSBCbG9nXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC8pCi0gMjAyMC0wNC0yMiAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vaW50cm9kdWN0aW9uLXRvLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW0tyaXN0b3BoZXIgU2FuZG92YWxdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vYXV0aG9yL3NhbmRvdmFsZWZmZWN0LykgaW4gW05vcmRpYyBBUElzXShodHRwczovL25vcmRpY2FwaXMuY29tLykKLSAyMDIwLTA0LTI3IC0gW0hvdyB3ZSB1c2UgT3BlbiBBUEkgdjMgc3BlY2lmaWNhdGlvbiB0byBhdXRvLWdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uLCBjb2RlLXNuaXBwZXRzIGFuZCBjbGllbnRzXShodHRwczovL21lZGl1bS5jb20vcGRmLWdlbmVyYXRvci1hcGkvaG93LXdlLXVzZS1vcGVuLWFwaS12My1zcGVjaWZpY2F0aW9uLXRvLWF1dG8tZ2VuZXJhdGUtYXBpLWRvY3VtZW50YXRpb24tY29kZS1zbmlwcGV0cy1hbmQtY2xpZW50cy1kMTI3YTNjZWE3ODQpIGJ5IFtUYW5lbCBUw6RoZXDDtWxkXShodHRwczovL21lZGl1bS5jb20vQHRhbmVsLnRhaGVwb2xkKQotIDIwMjAtMDUtMDkgLSBbT3BlbkFQSeOBp+OBiuaJi+i7veOBq+ODouODg+OCr0FQSeOCteODvOODkOODvOOCkuWLleOBi+OBmV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZS9pdGVtcy85N2NhNmE4ZGQ0NjA1Njk1YzI1YykgYnkgW1NhY2hpZSBLYW1iYV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZSkKLSAyMDIwLTA1LTE4IC0gW1NwcmluZyBCb290IFJFU1Qgd2l0aCBPcGVuQVBJIDNdKGh0dHBzOi8vZGV2LnRvL2FsZm9uemphbmZyaXRoei9zcHJpbmctYm9vdC1yZXN0LXdpdGgtb3BlbmFwaS0zLTU5am0pIGJ5IFtBbGZvbnogSmFuIEZyaXRoel0oaHR0cHM6Ly9kZXYudG8vYWxmb256amFuZnJpdGh6KQotIDIwMjAtMDUtMTkgLSBbRGVhZCBTaW1wbGUgQVBJcyB3aXRoIE9wZW4gQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXNJYVhtUjZ4UkF3KSBieSBbQ2hyaXMgVGFua2Vyc2xleV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYWdvbm1hbnRhbmspIGF0IFtOZXhtb10oaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tLykKLSAyMDIwLTA1LTIyIC0gW1R5cGVTY3JpcHQgUkVTVCBBUEkgQ2xpZW50XShodHRwczovL2Rldi50by91bmh1cnJpZWQvdHlwZXNjcmlwdC1yZXN0LWFwaS1jbGllbnQtNGluMykgYnkgWyJ1bmh1cnJpZWQiXShodHRwczovL2Rldi50by91bmh1cnJpZWQpCi0gMjAyMC0wNS0yOCAtIFvjgJDkvb/nlKggbG90aWZ5ICsgU3dhZ2dlciDlu7rnva7lj6/lhbHnlKjnmoQgTElORSBOb3RpZnkgYm9044CRIC0gI05pSmlhIEAgQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuIOesrCAjMTkg5bCP6IGaXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWFnWVZ6NmR6aDFJKSBieSBbQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDeGVZVXlaTm5IbXBYMjNZTkYtZXd2dykKLSAyMDIwLTA1LTI4IC0gW0J1aWxkaW5nIEFQSXMgd2l0aCBMYXJhdmVsIHVzaW5nIE9wZW5BUEldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eGV4THZRcUFoaUEpIGJ5IFtDaHJpcyBUYW5rZXJzbGV5XShodHRwczovL2dpdGh1Yi5jb20vZHJhZ29ubWFudGFuaykgYXQgW0xhcmFjb24gRVVdKGh0dHBzOi8vbGFyYWNvbi5ldS8pCi0gMjAyMC0wNi0xMiAtIFtJbnRlcm9wZXJhYmlsaXR5IGJ5IGNvbnN0cnVjdGlvbjogY29kZSBnZW5lcmF0aW9uIGZvciBBcnJvd2hlYWQgQ2xpZW50c10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkyNzQ3NDYpIGJ5IE1pY2hlbGUgQWxiYW5vLCBCcmlhbiBOaWVsc2VuIGF0IFsyMDIwIElFRUUgQ29uZmVyZW5jZSBvbiBJbmR1c3RyaWFsIEN5YmVycGh5c2ljYWwgU3lzdGVtcyAoSUNQUyldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85Mjc0NTQ0L3Byb2NlZWRpbmcpCi0gMjAyMC0wNi0yMyAtIFvmlrDopo/jgrXjg7zjg5Djg7zjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgatUeXBlU2NyaXB044KS5o6h55So44GX44Gm44G/44GfXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvMjAyMDA2MjMpIGF0IFtDQU0gVGVjaCBCbG9nXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvdGVjaC1ibG9nLykKLSAyMDIwLTA2LTI5IC0gW0FydGlmYWN0IEFic3RyYWN0OiBEZXBsb3ltZW50IG9mIEFQSXMgb24gQW5kcm9pZCBNb2JpbGUgRGV2aWNlcyBhbmQgTWljcm9jb250cm9sbGVyc10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkxMjczNTMpIGJ5IFtTZXJnaW8gTGFzbyA7IE1hcmlubyBMaW5hamUgOyBKb3NlIEdhcmNpYS1BbG9uc28gOyBKdWFuIE0uIE11cmlsbG8gOyBKYXZpZXIgQmVycm9jYWxdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85MTI3MzUzL2F1dGhvcnMjYXV0aG9ycykgYXQgWzIwMjAgSUVFRSBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gUGVydmFzaXZlIENvbXB1dGluZyBhbmQgQ29tbXVuaWNhdGlvbnMgKFBlckNvbSldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85MTI1NDQ5L3Byb2NlZWRpbmcpCi0gMjAyMC0wNy0wNyAtIFs1IEJlc3QgQVBJIERvY3VtZW50YXRpb24gVG9vbHNdKGh0dHBzOi8vYmxvZy5kcmVhbWZhY3RvcnkuY29tLzUtYmVzdC1hcGktZG9jdW1lbnRhdGlvbi10b29scy8pIGJ5IFN1c2FubmEgQm91c2UgYXQgW0RyZWFtRmFjdG9yeSBCbG9nXShodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS8pCi0gMjAyMC0wNy0xMiAtIFtPcGVuIEFQSSAzLjDjga7lrprnvqnjgYvjgolnb2xhbmfjga7jgrXjg7zjg5DjgrPjg7zjg4njga7jgrnjgrHjg6vjg4jjg7PjgpLkvZzmiJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Byb2Zlc3Nvci9pdGVtcy80Y2JkMDRlYzA4NGQxMzA1N2JjMikgYnkgW0Bwcm9mZXNzb3IgKFFpaXRhIEJsb2cpXShodHRwczovL3FpaXRhLmNvbS9wcm9mZXNzb3IpCi0gMjAyMC0wNy0yMCAtIFtEYXRhZG9nIEFQSSBjbGllbnQgbGlicmFyaWVzIG5vdyBhdmFpbGFibGUgZm9yIEphdmEgYW5kIEdvXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cvamF2YS1nby1saWJyYXJpZXMvKSBieSBKb3JkYW4gT2JleSBhdCBbRGF0YWRvZyBCbG9nXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cpCi0gMjAyMC0wNy0yMyAtIFtHZW5lcmF0ZSBDbGllbnQgU0RLIGZvciAuTkVUIENvcmUgdXNpbmcgT3BlbiBBcGldKGh0dHBzOi8vZGV2LnRvL25vMGxhdzEvZ2VuZXJhdGUtY2xpZW50LXNkay1mb3ItbmV0LWNvcmUtdXNpbmctb3Blbi1hcGktMmRnaCkgYnkgW051bm8gUmVpc10oaHR0cHM6Ly9kZXYudG8vbm8wbGF3MSkKLSAyMDIwLTA3LTI2IC0gW0RhcnTjga5odHRwX2ludGVyY2VwdG9y44Op44Kk44OW44Op44Oq44KS5L2/44GG44Go6YWN5YiX44Gu44Kv44Ko44Oq44OR44Op44Oh44O844K/44GM5raI44GI44Gm44GX44G+44GG5Lu244Gu5b+c5oCl5Yem572uXShodHRwczovL3FpaXRhLmNvbS9neWFtb3RvL2l0ZW1zL2VlZWZmODFiNjc3MDQ4NzMxOWVkKSBieSBbQGd5YW1vdG9dKGh0dHBzOi8vcWlpdGEuY29tL2d5YW1vdG8pCi0gMjAyMC0wOC0wMSAtIFtHZW5lcmF0ZSBBbmd1bGFyIFJlYWN0aXZlRm9ybXMgZnJvbSBTd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlci9nZW5lcmF0ZS1hbmd1bGFyLXJlYWN0aXZlZm9ybXMtZnJvbS1zd2FnZ2VyLW9wZW5hcGktMzVoOSkgYnkgW01hcnRpbiBNY1dob3J0ZXJdKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlcikKLSAyMDIwLTA4LTAzIC0gW0NyaWFuZG8gQmlibGlvdGVjYXMgcGFyYSBBUElzIFJFU1RmdWwgY29tIE9wZW5BUEksIFN3YWdnZXIgRWRpdG9yIGUgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZXZlcmlzQnJhc2lsL2NyaWFuZG8tYmlibGlvdGVjYXMtcGFyYS1hcGlzLXJlc3RmdWwtY29tLW9wZW5hcGktc3dhZ2dlci1lZGl0b3ItZS1vcGVuYXBpLWdlbmVyYXRvci03NTM0OWE2NDIwZmQpIGJ5IFtldmVyaXMgQnJhc2lsIChhbiBOVFQgREFUQSBDb21wYW55KV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BldmVyaXNCcmFzaWwpCi0gMjAyMC0wOC0xOSAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgpLpgKPmkLrjgZfjgabjgb/jgojjgYZdKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hcnRpY2xlLzE3NzA0KSBieSBb5bKh5LqVIOijleefoijjgYrjgYvjgYQg44KG44GG44KEKV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2F1dGhvci8xNzU4OCksIFvms4kg5YudKOOBhOOBmuOBvyDjgb7jgZXjgospXShodHRwczovL3RoaW5raXQuY28uanAvYXV0aG9yLzE3NzA1KSBhdCBbVGhpbmsgSVTvvIjjgrfjg7Pjgq/jgqTjg4Pjg4jvvIldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC8pCi0gMjAyMC0wOC0yNSAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgaggVHlwZVNjcmlwdCDjgaflnovlronlhajjgavjg5Xjg63jg7Pjg4jjgqjjg7Pjg4nplovnmbrjgpLjgZfjgabjgYTjgovoqbFdKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwL2VudHJ5LzIwMjAvMDgvMjUvMTM1NjMxKSBhdCBbU21hcnRIUiBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwLykKLSAyMDIwLTA5LTEwIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJIHdpdGggSW5zdGFuYV0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaS13aXRoLWluc3RhbmEvKSBieSBbQ2VkcmljIFppZWxdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvYXV0aG9yL2NlZHJpY3ppZWwvKSBhdCBbSW5zdGFuYSBCbG9nXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nLykKLSAyMDIwLTA5LTE3IC0gW0dlbmVyYXRlIFBvd2VyU2hlbGxTREsgdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2h1ZnoubGVhcm4vZ2VuZXJhdGUtcG93ZXJzaGVsbHNkay11c2luZy1vcGVuYXBpLWdlbmVyYXRvci0zM2I3MDA4OTFlMzMpIGJ5IFtHaHVmcmFuIFphaGlkaV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnaHVmei5sZWFybikKLSAyMDIwLTA5LTI0IC0gW0hvdyB0byBhdXRvbWF0ZSBBUEkgY29kZSBnZW5lcmF0aW9uIChPcGVuQVBJL1N3YWdnZXIpIGFuZCBib29zdCBwcm9kdWN0aXZpdHkgLSBUdXRvcmlhbCB3aXRoIFJlYWN0IE5hdGl2ZSBmZWF0dXJpbmcgVHlwZVNjcmlwdF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraS9ob3ctdG8tYXV0b21hdGUtYXBpLWNvZGUtZ2VuZXJhdGlvbi1vcGVuYXBpLXN3YWdnZXItYW5kLWJvb3N0LXByb2R1Y3Rpdml0eS0xMTc2YTAwNTZkOGEpIGJ5IFtTYW5qaW4gQ2VsZXNraV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraSkKLSAyMDIwLTA5LTI1IC0gW0dlbmVyYXRlIE9wZW5BUEkgQW5ndWxhciBDbGllbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28vZ2VuZXJhdGUtb3BlbmFwaS1hbmd1bGFyLWNsaWVudC04YzkyODhlOGJiZDQpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28pCi0gMjAyMC0xMC0yNCAtIFtXb3JraW5nIHdpdGggTWljcm9zb2Z0IElkZW50aXR5IC0gUmVhY3QgTmF0aXZlIENsaWVudF0oaHR0cHM6Ly93d3cuam9zZXBoZ3VhZGFnbm8ubmV0LzIwMjAvMTAvMjQvd29ya2luZy13aXRoLW1pY3Jvc29mdC1pZGVudGl0eS1yZWFjdC1uYXRpdmUtY2xpZW50KSBieSBbSm9zZXBoIEd1YWRhZ25vXShodHRwczovL3d3dy5qb3NlcGhndWFkYWduby5uZXQvKQotIDIwMjAtMTAtMzEgLSBbW0IyXSBPcGVuQVBJIFNwZWNpZmljYXRpb27snLzroZwg7YOA7J6FLeyEuOydtO2UhO2VmOqyjCBBUEkg6rCc67Cc7ZWY6riwOiDtnazrp53tjrggVlMg7KCI66ed7Y64XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUo0SkhMRVNBaUZrKSBieSDstZztg5zqsbQgYXQgW0ZFQ29uZiAyMDIwXShodHRwczovLzIwMjAuZmVjb25mLmtyLykKLSAyMDIwLTExLTA1IC0gW0F1dG9tYXRlZCBSRVNULUFwaSBDb2RlIEdlbmVyYXRpb246IFdpZSBJVC1TeXN0ZW1lIG1pdGVpbmFuZGVyIHNwcmVjaGVuXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nL2F1dG9tYXRlZC1yZXN0LWFwaS1jb2RlLWdlbmVyYXRpb24td2llLWl0LXN5c3RlbWUtbWl0ZWluYW5kZXItc3ByZWNoZW4pIGJ5IFN0ZWZhbiBSb3R0ZW5zdGVpbmVyIGF0IFtNQVNTSVZFIEFSVCBCbG9nXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nKQotIDIwMjAtMTItMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadHb+OBrkFQSeOCteODvOODkOODvC/jgq/jg6njgqTjgqLjg7Pjg4jjgrPjg7zjg4njgpLoh6rli5XnlJ/miJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Nha2ktZW5naW5lZXJpbmcvaXRlbXMvYjIwZDhiNjA3NGM0ZGE5NjY0YTUpIGJ5IFtAc2FraS1lbmdpbmVlcmluZ10oaHR0cHM6Ly9xaWl0YS5jb20vc2FraS1lbmdpbmVlcmluZykKLSAyMDIwLTEyLTA0IC0gW1NjYWxpbmcgdGhlIFRlc3QgQ292ZXJhZ2Ugb2YgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N0xrZTlkSFJxVDApIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiArIEF1dG9tb3RpdmUgTGludXggU3VtbWl0IDIwMjBdKGh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvYXJjaGl2ZS8yMDIwL29wZW4tc291cmNlLXN1bW1pdC1qYXBhbi8pIChbU2xpZGVzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L3NjYWxpbmctdGhlLXRlc3QtY292ZXJhZ2Utb2Ytb3BlbmFwaS1nZW5lcmF0b3ItZm9yLTMwLXBsdXMtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzKSkKLSAyMDIwLTEyLTA5IC0gW+ODl+ODreOCuOOCp+OCr+ODiOOBq09wZW5BUEkgR2VuZXJhdG9y44Gn6Ieq5YuV55Sf5oiQ44GV44KM44Gf5Z6L5LuY44GNQVBJIENsaWVudOOCkuWwjuWFpeOBl+OBn+ipsV0oaHR0cHM6Ly9xaWl0YS5jb20veW9zaGlmdWppVC9pdGVtcy85MDVjMTg3MDBlZGUyM2Y0MDg0MCkgYnkgW0B5b3NoaWZ1amlUXShodHRwczovL2dpdGh1Yi5jb20veW9zaGlmdWppVCkKLSAyMDIwLTEyLTE1IC0gW05leHQuanMgKyBOZXN0SlMgKyBHcmFwaFFM44Gn5aSJ5YyW44Gr6L+95b6T44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44G4IOOAnCDjgrfjg6fjg4Pjg5Tjg7PjgrDjgq/jg7zjg53jg7Pjga7kuovkvovntLnku4tdKGh0dHBzOi8vdGVjaGJsb2cueWFob28uY28uanAvZW50cnkvMjAyMDEyMTUzMDA1Mjk1Mi8pIGJ5IFvlsI/lgIkg6Zm4XShodHRwczovL2dpdGh1Yi5jb20vb2d1Z3U5KSBhdCBbWWFob28hIEpBUEFOIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy55YWhvby5jby5qcC8pCi0gMjAyMS0wMS0wOCAtIFtIZWxsbywgTmV3IEFQSSDigJMgUGFydCAxXShodHRwczovL3d3dy5uZ2lueC5jb20vYmxvZy9oZWxsby1uZXctYXBpLXBhcnQtMS8pIGJ5IFtKZXJlbXkgU2NodWxtYW5dKGh0dHBzOi8vd3d3Lm5naW54LmNvbS9wZW9wbGUvamVyZW15LXNjaHVsbWFuLykgYXQgW01ham9yIExlYWd1ZSBCYXNlYmFsbF0oaHR0cHM6Ly93d3cubWxiLmNvbSkKLSAyMDIxLTAxLTE4IC0gW+OAjOOCouODl+ODqumWi+eZuuOBguOCi+OBguOCi+OAjeOCkueWkeOBhuOBk+OBqOOBi+OCieWni+OBvuOBo+OBn+OAgUFQSSBDbGllbnTjgrPjg7zjg4njga7oh6rli5XnlJ/miJDjgJDjg4fjg5bjgrnjg4gyMDIw44CRXShodHRwczovL2NvZGV6aW5lLmpwL2FydGljbGUvZGV0YWlsLzEzNDA2P3A9MikgYnkgW0NvZGVaaW5l57eo6ZuG6YOoXShodHRwczovL2NvZGV6aW5lLmpwL2F1dGhvci8xKQotIDIwMjEtMDItMDUgLSBbUkVTVC1BUEktUm91bmR0cmlwIHdpdGggU3ByaW5nRG9jIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ibG9nLnZpYWRlZS5kZS9lbi9yZXN0LWFwaS1yb3VuZHRyaXApIGJ5IFtCZW5qYW1pbiBLbGF0dF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5rbGF0dCkgYXQgW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlL2VuLykKLSAyMDIxLTAyLTE3IC0gW1JFU1QtQVBJLVJvdW5kdHJpcCB3aXRoIFNwcmluZ0RvYyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9uZXJkLWZvci10ZWNoL3Jlc3QtYXBpLXJvdW5kdHJpcC13aXRoLXNwcmluZ2RvYy1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItMzBiZDI3Y2NmNjk4KSBieSBbY2xvdWQgQHZpYWRlZV0oaHR0cHM6Ly9jbG91ZC12aWFkZWUubWVkaXVtLmNvbS8pCi0gMjAyMS0wMy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDlt6XlhbfnmoTourrlnZHlsJ3or5VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxL2FydGljbGUvZGV0YWlscy8xMTQ1MzE5NzUpIGJ5IFvni6zlrrbpm6jlpKldKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxKSBhdCBbQ1NETuWumOaWueWNmuWuol0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0LykKLSAyMDIxLTAzLTE2IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xODAyNzA0KSBieSBb6auY5qW8WmVlXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci91c2VyLzU4MzYyNTUpIGF0IFvohb7orq/kupHkuJPmoI9dKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2NvbHVtbikKLSAyMDIxLTAzLTI0IC0gW29wZW5hcGktZ2VuZXJhdG9yLWNsaSDjgavjgojjgosgVHlwZVNjcmlwdCDlnovlrprnvqldKGh0dHBzOi8vemVubi5kZXYvdGFrZXBlcGUvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLXRzKSBieSBbVGFrZWZ1bWkgWW9zaGlpXShodHRwczovL3plbm4uZGV2L3Rha2VwZXBlKQotIDIwMjEtMDMtMjggLSBbVHJ5aW5nIG91dCBOZXN0SlMgcGFydCA0OiBHZW5lcmF0ZSBUeXBlc2NyaXB0IGNsaWVudHMgZnJvbSBPcGVuQVBJIGRvY3VtZW50c10oaHR0cHM6Ly9kZXYudG8vYXJuYXVkY29ydGlzc2UvdHJ5aW5nLW91dC1uZXN0anMtcGFydC00LWdlbmVyYXRlLXR5cGVzY3JpcHQtY2xpZW50cy1mcm9tLW9wZW5hcGktZG9jdW1lbnRzLTI4bWspIGJ5IFtBcm5hdWQgQ29ydGlzc2VdKGh0dHBzOi8vZGV2LnRvL2FybmF1ZGNvcnRpc3NlKQotIDIwMjEtMDMtMzEgLSBbT3BlbiBBUEkgU2VydmVyIEltcGxlbWVudGF0aW9uIFVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFtCYWVsZHVuZ10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tLykKLSAyMDIxLTAzLTMxIC0gW+S9v+eUqE9wZW5BUEkgR2VuZXJhdG9y5a+m54++T3BlbiBBUEkgU2VydmVyXShodHRwczovL3d3dy4xanUub3JnL2FydGljbGUvamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFvlhITogZrntrJdKGh0dHBzOi8vd3d3LjFqdS5vcmcvKQotIDIwMjEtMDQtMTkgLSBbSW50cm9kdWNpbmcgVHdpbGlv4oCZcyBPcGVuQVBJIFNwZWNpZmljYXRpb24gQmV0YV0oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2ludHJvZHVjaW5nLXR3aWxpby1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLWJldGEpIGJ5IFtHQVJFVEggUEFVTCBKT05FU10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2F1dGhvci9ncGopIGF0IFtUd2lsaW8gQmxvZ10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nKQotIDIwMjEtMDQtMjIgLSBbTGV2ZXJhZ2luZyBPcGVuQXBpIHN0cmVuZ3RocyBpbiBhIE1pY3JvLVNlcnZpY2UgZW52aXJvbm1lbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS91bmlidWRkeS10ZWNobm9sb2d5LWJsb2cvbGV2ZXJhZ2luZy1vcGVuYXBpLXN0cmVuZ3Rocy1pbi1hLW1pY3JvLXNlcnZpY2UtZW52aXJvbm1lbnQtM2Q3ZjllN2MyNmZmKSBieSBOaWNvbGFzIEplbGxhYiBhdCBbVW5pYnVkZHkgVGVjaG5vbG9neSBCbG9nXShodHRwczovL21lZGl1bS5jb20vdW5pYnVkZHktdGVjaG5vbG9neS1ibG9nKQotIDIwMjEtMDQtMjcgLSBbRnJvbSB6ZXJvIHRvIHB1Ymxpc2hpbmcgUG93ZXJTaGVsbCBBUEkgY2xpZW50cyBpbiBQb3dlclNoZWxsIEdhbGxlcnkgd2l0aGluIG1pbnV0ZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvZnJvbS16ZXJvLXRvLXB1Ymxpc2hpbmctcG93ZXJzaGVsbC1hcGktY2xpZW50cy1pbi1wb3dlcnNoZWxsLWdhbGxlcnktd2l0aGluLW1pbnV0ZXMpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW1Bvd2VyU2hlbGwgKyBEZXZPcHMgR2xvYmFsIFN1bW1pdCAyMDIxXShodHRwczovL2V2ZW50cy5kZXZvcHNjb2xsZWN0aXZlLm9yZy9ldmVudC9wb3dlcnNoZWxsLWRldm9wcy1nbG9iYWwtc3VtbWl0LTIwMjEvKQotIDIwMjEtMDUtMzEgLSBbRmx1dHRlcuOBp09wZW4gQXBpIEdlbmVyYXRvcihTd2FnZ2VyKeOCkuS9v+OBhl0oaHR0cHM6Ly9hYWtpcmEuYXBwL2Jsb2cvMjAyMS8wNS9mbHV0dGVyLW9wZW4tYXBpLykgYnkgW0FBa2lyYV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9fYV9ha2lyYSkKLSAyMDIxLTA2LTIyIC0gW1Jlc3QgQVBJIERvY3VtZW50YXRpb24gYW5kIENsaWVudCBHZW5lcmF0aW9uIFdpdGggT3BlbkFQSV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvcmVzdC1hcGktZG9jdW1lbnRhdGlvbi1hbmQtY2xpZW50LWdlbmVyYXRpb24td2l0aCkgYnkgW1ByYXNhbnRoIEd1bGxhcGFsbGldKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzEwMTE3OTcvcHJhc2FudGhuYXRoLmdAZ21haWwuY29tLmh0bWwpCi0gMjAyMS0wNy0xNiAtIFvpioDooYzkuovmpa3jga7jgrXjg7zjg5Djg7zjgrXjgqTjg4nplovnmbrjgavjgaTjgYTjgaYgLyBMSU5FIOS6rOmDvemWi+eZuuWupCDjgqjjg7Pjgrjjg4vjgqLmjqHnlKjoqqzmmI7kvJpdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WXJyS1FIeExQcFEpIGJ5IOmHjueUsOiqoOS6uiwgUm9iZXJ0IE1pdGNoZWxsCi0gMjAyMS0wNy0xOSAtIFtPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiB3aXRoIGtvdGxpbl0oaHR0cHM6Ly9zeWxoYXJlLmdpdGh1Yi5pby8yMDIxLzA3LzE5L09wZW5hcGktc3dhZ2dlci1jb2RlZ2VuLXdpdGgta290bGluLmh0bWwpIGJ5IFtzeWxoYXJlXShodHRwczovL2dpdGh1Yi5jb20vc3lsaGFyZSkKLSAyMDIxLTA3LTI5IC0gW0hvdyBUbyBSZXdyaXRlIGEgSHVnZSBDb2RlYmFzZV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvaG93LXRvLXJld3JpdGUtYS1odWdlLWNvZGUtYmFzZSkgYnkgW0N1cnRpcyBQb2VdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzQ1NjU0NDYvcHVibGl1c292aWRpdXMuaHRtbCkKLSAyMDIxLTA4LTIxIC0gW0dlbmVyYXRpbmcgQ2xpZW50IEFQSXMgdXNpbmcgU3dhZ2dlciBQYXJ0IDFdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmxvd3NxdWFkL2dlbmVyYXRpbmctY2xpZW50LWFwaXMtdXNpbmctc3dhZ2dlci1wYXJ0LTEtMmQ0NmYxM2Y1ZTkyKSBieSBbRmxvd1NxdWFkLmlvXShodHRwczovL21lZGl1bS5jb20vQGZsb3dzcXVhZCkKLSAyMDIxLTA5LTExIC0gW0ludm9raW5nIEFXUyBQYXJhbGxlbENsdXN0ZXIgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpIGF0IFtBV1MgUGFyYWxsZWxDbHVzdGVyIEFQSSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpCi0gMjAyMS0wOS0yMCAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIFRoZSBCYWJlbCBGaXNoIG9mIHRoZSBBUEkgV29ybGRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9czJ6TXR3ZDVrbGcpIGJ5IFtDbGlmZmFubyBTdWJhZ2lvIChQcmluY2lwYWwgRW5naW5lZXIgYXQgU2hpbmUgU29sdXRpb25zKV0oaHR0cHM6Ly9naXRodWIuY29tL2NsaWZmYW5vKSBhdCBbQXBpZGF5cyBMSVZFIEF1c3RyYWxpYSAyMDIxXShodHRwczovL3d3dy5hcGlkYXlzLmdsb2JhbC9hdXN0cmFsaWEyMDIxLykKLSAyMDIxLTEwLTAyIC0gW0hvdyB0byBXcml0ZSBGZXdlciBMaW5lcyBvZiBDb2RlIHdpdGggdGhlIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2hhY2tlcm5vb24uY29tL2hvdy10by13cml0ZS1mZXdlci1saW5lcy1vZi1jb2RlLXdpdGgtdGhlLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbTWlraGFpbCBBbGZhXShodHRwczovL2hhY2tlcm5vb24uY29tL3UvYWxwaGFtaWtsZSkKLSAyMDIxLTEwLTEyIC0gW09wZW5BUEkgR2VuZXJhdG9yIDogNDAwMCDDqXRvaWxlcyBzdXIgR2l0SHViIGV0IGRlcyBzcGFnaGV0dGlzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTloRXNOQlNxVEZrKSBieSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgYXQgW0Rldm94eCBGUiAyMDIxXShodHRwczovL2NmcC5kZXZveHguZnIvMjAyMS9zcGVha2VyL2plcmVtaWVfYnJlc3NvbikKLSAyMDIxLTEwLTE3IC0gW0dlbmVyYXRlIGEgVHlwZVNjcmlwdCBIVFRQIENsaWVudCBGcm9tIEFuIE9wZW5BUEkgU3BlYyBJbiBEb3RORVQgNV0oaHR0cHM6Ly9yaWNoYXJkd2lsbGlzLmluZm8vYmxvZy9nZW5lcmF0ZS1hLXR5cGUtc2NyaXB0LWh0dHAtY2xpZW50LWZyb20tYW4tb3Blbi1hcGktc3BlYy1pbi1kb3QtbmV0LTUpIGJ5IFtSaWNoYXJkIFdpbGxpc10oaHR0cHM6Ly9naXRodWIuY29tL2JhZHN5bnRheCkKLSAyMDIxLTExLTA2IC0gW+OCueOCv+ODvOODiOOCouODg+ODl+OBrumWi+eZuuOBp+aEj+itmOOBl+OBn+OBk+OBqF0oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vL2FydGljbGVzLzVjYjA5ZjhlMjg5OWFlNzgyYWQxKSBieSBbd29vLW5vb10oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vKQotIDIwMjEtMTEtMDkgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3QvZWZmZWN0aXZlLXNvZnR3YXJlLWRldmVsb3BtZW50LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBBamlsIE9vbW1lCi0gMjAyMS0xMi0wNyAtIFtBbiBJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9iZXR0ZXJwcm9ncmFtbWluZy5wdWIvNC11c2UtY2FzZXMtb2Ytb3BlbmFwaS13aGljaC1hcmUtZ29vZC10by1rbm93LTFhMDQxZjRhZDcxZSkgYnkgW05hJ2FtYW4gSGlyc2NoZmVsZF0oaHR0cHM6Ly9uYWFtYW5oaXJzY2hmZWxkLm1lZGl1bS5jb20vKQotIDIwMjItMDEtMDIgLSBbVG93YXJkcyBhIHNlY3VyZSBBUEkgY2xpZW50IGdlbmVyYXRvciBmb3IgSW9UIGRldmljZXNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjAxLjAwMjcwKSBieSBBbmRlcnMgQWFlbiBTcHJpbmdib3JnLCBNYXJ0aW4gS2FsZGFobCBBbmRlcnNlbiwgS2FhcmUgSG9sbGFuZCBIYXR0ZWwsIE1pY2hlbGUgQWxiYW5vCi0gMjAyMi0wMi0wMiAtIFtVc2UgT3BlbkFwaSBnZW5lcmF0b3IgdG8gc2hhcmUgeW91ciBtb2RlbHMgYmV0d2VlbiBGbHV0dGVyIGFuZCB5b3VyIGJhY2tlbmRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a1BXN2NjdTlZdmspIGJ5IFtHdWlsbGF1bWUgQmVybm9zXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tL3NwZWFrZXJzL2d1aWxsYXVtZV9iZXJub3MpIGF0IFtGbHV0dGVyIFZpa2luZ3MgQ29uZmVyZW5jZSAyMDIyIChIeWJyaWQpXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tLykKLSAyMDIyLTAzLTE1IC0gW09wZW5BUEkgU3BlY+OBp+ODj+OCpOODleODs+WMuuWIh+OCiuOBrkVudW3lgKTjgpJPcGVuQVBJIEdlbmVyYXRvcuOBp+WHuuWKm+OBmeOCi+OBqOOAgeODj+OCpOODleODs+WMuuWIh+OCiuOBruOBvuOBvuWHuuWKm+OBleOCjOOCi10oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdC9pdGVtcy84MjRkNzRkNDg4OTA1NWFiMzdkOCkgYnkgW3l1amkzOGt3bXRdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQpCi0gMjAyMi0wNC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBruOCs+ODvOODieeUn+aIkOOBqFNwcmluZyBGcmFtZXdvcmvjga7jgqvjgrnjgr/jg6Djg4fjg7zjgr/jg5DjgqTjg7Pjg4fjgqPjg7PjgrDjgpLlhbHlrZjjgZXjgZvjgotdKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvY29leGlzdGVuY2Utb2Ytb3BlbmFwaS1hbmQtc3ByaW5nKSBpbiBbWk9aTyBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vKQotIDIwMjItMDQtMDYgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3Qvb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IEFqaWwgT29tbWVuIChTZW5pb3IgRmx1dHRlciBEZXZlbG9wZXIpCi0gMjAyMi0wNS0xMyAtIFtBIFBhdGggRnJvbSBhbiBBUEkgVG8gQ2xpZW50IExpYnJhcmllc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YQzhvVm5fZWZUdykgYnkgW0ZpbGlwIFNybmVjXShodHRwczovL3d3dy5kZXZveHguY28udWsvdGFsay8/aWQ9MTEyMTEpIGF0IEluZm9iaXAKLSAyMDIyLTA2LTAxIC0gW0FQSSBGaXJzdCwgdXNpbmcgT3BlbkFQSSBhbmQgU3ByaW5nIEJvb3RdKGh0dHBzOi8vbWVkaXVtLmNvbS94Z2Vla3MvYXBpLWZpcnN0LXVzaW5nLW9wZW5hcGktYW5kLXNwcmluZy1ib290LTI2MDJjMDRiYjBkMykgYnkgW01pY2FlbCBFc3Ryw6F6dWxhcyBWaWFubmFdKGh0dHBzOi8vZXN0cmF6dWxhcy5tZWRpdW0uY29tLykKLSAyMDIyLTA2LTEwIC0gW0F1dG9nZW5lcmF0aW5nIENsaWVudHMgd2l0aCBGYXN0QVBJIGFuZCBHaXRodWIgQWN0aW9uc10oaHR0cHM6Ly93d3cucHJvcGVsYXV0aC5jb20vcG9zdC9hdXRvZ2VuZXJhdGluZy1jbGllbnRzLXdpdGgtZmFzdGFwaS1hbmQtZ2l0aHViLWFjdGlvbnMpIGJ5IFtBbmRyZXcgSXNyYWVsXShodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS9hdXRob3IvYW5kcmV3KQotIDIwMjItMDYtMTIgLSBbTXVzdGFjaGUgdGVtcGxhdGVzIHdpdGggT3BlbkFQSSBzcGVjc10oaHR0cHM6Ly9tZWRpdW0uY29tL2dlZWtjdWx0dXJlL211c3RhY2hlLXRlbXBsYXRlcy13aXRoLW9wZW5hcGktc3BlY3MtZjI0NzExYzY3ZGVjKSBieSBbQmVwcGUgQ2F0YW5lc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nY2F0YW5lc2UpCi0gMjAyMi0wNy0wMSAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjItMDctMjIgLSBb5L2/55SoT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2lu5byA5Y+RYXBp5LyY5YWI55qEamF2YeWuouaIt+err+WSjOacjeWKoeerr+S7o+eggV0oaHR0cHM6Ly9ibG9nLnJvY2Nvc2hpLnRvcC8yMDIyL2phdmEvb3BlbmFwaS1nZW5lcmF0b3IlRTclOUElODQlRTQlQkQlQkYlRTclOTQlQTgvKSBieSBbTGluY2VzdF0oaHR0cHM6Ly9naXRodWIuY29tL0xpbmNlc3QpCi0gMjAyMi0wOC0wMSAtIFtUdXRvcmlhbDogRXRzeSBPcGVuIEFQSSB2MyAocnVieSldKGh0dHBzOi8vYmxvZy50am95YWwuZGV2L2V0c3ktb3Blbi1hcGktdjMvKSBieSBbVGhpZXJyeSBKb3lhbF0oaHR0cHM6Ly9naXRodWIuY29tL3Rqb3lhbCkKLSAyMDIyLTA5LTAzIC0gW09wZW5BUEkgR2VuZXJhdG9yIEZvciBHbyBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vYmxvZy5rZXZpbmh1Lm1lLzIwMjIvMDkvMDMvMDMtb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbS2V2aW4gSHVdKGh0dHBzOi8vdHdpdHRlci5jb20vT2xkZ3VuaXgpCi0gMjAyMi0xMC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOCkuOCq+OCueOCv+ODnuOCpOOCuuOBl+OBn+OCs+ODvOODieOCkueUn+aIkOOBmeOCi++8iFN3YWdnZXIgQ29kZWdlbuOBqOOBu+OBvOWQjOOBmO+8iV0oaHR0cHM6Ly9uYWluYWlzdGFyLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMjIvMTAvMDMvMTIwMDAwKSBieSBb44GN44KK5Li4XShodHRwczovL3R3aXR0ZXIuY29tL25haW5haXN0YXIpCi0gMjAyMi0xMC0yMSAtIFtLb3RsaW7vvIhTcHJpbmcgQm9vdO+8ieOBriBBUEkg44KSIE9wZW5BUEkgR2VuZXJhdG9yIOOBp+iHquWLleeUn+aIkF0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYXJ0aWNsZXMvMjAyMjEwMjEta290bGluLXNwcmluZy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW21za3NnbV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMi0xMC0yNiAtIFtRdWFya3VzIEluc2lnaHRzICMxMDY6IFF1YXJraXZlcnNlIEV4dGVuc2lvbiBTcG90bGlnaHQ6IE9wZW5BcGkgR2VuZXJhdG9yXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PV9zX2lmNjl0MmlRKSBieSBbUXVhcmt1c2lvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jL1F1YXJrdXNpbykKLSAyMDIyLTExLTI4IC0gW1RoZSBSRVNUIEFQSSBpbXBsZW1lbnRhdGlvbiBmbG93XShodHRwczovL3Rtc3ZyLmNvbS9vcGVuYXBpLWNvZGUtZ2VuZXJhdGlvbi1mb3ItcmVzdC1hcGlzLykgYnkgW0ltcmUgVMO2bcO2c3bDoXJpXShodHRwczovL3Rtc3ZyLmNvbS9hdXRob3IvaW1yZS8pCi0gMjAyMi0xMi0xMyAtIFtBUEktRmlyc3Qgd2l0aCBTcHJpbmcgV2ViRmx1eCBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYm9vdHRlY2hub2xvZ2llcy1jaS5tZWRpdW0uY29tL2FwaS1maXJzdC13aXRoLXNwcmluZy13ZWJmbHV4LWFuZC1vcGVuYXBpLWdlbmVyYXRvci0zOGI3ODA0YzRlZDQpIGJ5IFtFcmljIEFuaWNldF0oaHR0cHM6Ly9ib290dGVjaG5vbG9naWVzLWNpLm1lZGl1bS5jb20vKQotIDIwMjMtMDEtMDYgLSBbTWFqb3IgSW1wcm92ZW1lbnRzIHdpdGggSGVsaWRvbiBhbmQgT3BlbkFQSV0oaHR0cHM6Ly9tZWRpdW0uY29tL2hlbGlkb24vbWFqb3ItaW1wcm92ZW1lbnRzLXdpdGgtaGVsaWRvbi1hbmQtb3BlbmFwaS1mNzZhMDk1MTUwOGUpIGJ5IFtUaW0gUXVpbm5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AdHF1aW5ubzYwMCkKLSAyMDIzLTAyLTAyIC0gW1JlcGxhY2luZyBQb3N0bWFuIHdpdGggdGhlIEpldGJyYWlucyBIVFRQIENsaWVudF0oaHR0cHM6Ly9sZW5ncmFuZC5mci9yZXBsYWNpbmctcG9zdG1hbi1pbi1zZWNvbmRzLXdpdGgtdGhlLWpldGJyYWlucy1odHRwLWNsaWVudC8pIGJ5IFtqdWxpZW4gTGVuZ3JhbmQtTGFtYmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2psZW5ncmFuZCkKLSAyMDIzLTAzLTE1IC0gW09wZW5BUEkgR2VuZXJhdG9y44Gr6YGp44GX44GfT3BlbkFQSeOBruabuOOBjeaWuV0oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9ob3ctdG8td3JpdGUtb3BlbmFwaS1mb3Itb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtaT1pPIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS8pCi0gMjAyMy0wMy0xOSAtIFtFWE9HRU06IEV4dGVuZGluZyBPcGVuQVBJIEdlbmVyYXRvciBmb3IgTW9uaXRvcmluZyBvZiBSRVNUZnVsIEFQSXNdKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMS0yNjUwNy01XzEwKSBieSBEYW5pZWwgRnJpaXMgSG9sdGVibywgSmFubmlrIEx1Y2FzIFNvbW1lciwgTWFnbnVzIE3DuGxnYWFyZCBMdW5kLCBBbGVzc2FuZHJvIFRpYm8sIEp1bmlvciBEb25nbyAmIE1pY2hlbGUgQWxiYW5vIGF0ICJJQ1NPQyAyMDIyOiBTZXJ2aWNlLU9yaWVudGVkIENvbXB1dGluZyDigJMgSUNTT0MgMjAyMiBXb3Jrc2hvcHMiCi0gMjAyMy0wMy0yOCAtIFtBUEktRmlyc3QgRGVzaWduIHdpdGggT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9wdWxzZS9hcGktZmlyc3QtZGVzaWduLW9wZW5hcGktZ2VuZXJhdG9yLWpvbmF0aGFuLW1hbmVyYS8pIGJ5IFtKb25hdGhhbiBNYW5lcmFdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9tYW5lcmFqb25hLykKLSAyMDIzLTAzLTI4IC0gW+ODj+ODs+OCuuOCquODs+OBp+WtpuOBtuOCteODvOODkOODvOOCteOCpOODiSBLb3RsaW7vvIhTcHJpbmcgQm9vdCZBcnJvdyZPcGVuQVBJIEdlbmVyYXRvcu+8iXYxLjAuMV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYm9va3MvaW1wbGVtZW50aW5nLXNlcnZlci1zaWRlLWtvdGxpbi1kZXZlbG9wbWVudCkgYnkgW21za10oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMy0wNC0wMSAtIFtPcGVuQVBJIENsaWVudCBDb2RlIEdlbmVyYXRpb25dKGh0dHBzOi8vdGVzdGluZ2Jvc3MuY29tL2Jsb2cvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdGlvbi8pIGJ5IEt3byBEaW5nCi0gMjAyMy0wNC0yNyAtIFtDcmVhdGUgYW4gQW5ndWxhciBDbGllbnQgdXNpbmcgT3BlbkFQSSBTcGVjaWZpY2F0aW9uc10oQ3JlYXRlIGFuIEFuZ3VsYXIgQ2xpZW50IHVzaW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vcGd1c28ubWVkaXVtLmNvbS8pCi0gMjAyMy0wNS0xNiAtIFtBZHllbiBmb3IgSmF2YSBkZXZlbG9wZXJzXShodHRwczovL3d3dy5hZHllbi5jb20vYmxvZy9hZHllbi1qYXZhLWxpYnJhcnkpIGJ5IFtCZXBwZSBDYXRhbmVzZSwgRGV2ZWxvcGVyIEFkdm9jYXRlLCBBZHllbl0oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZSkKLSAyMDIzLTA1LTE4IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9ibG9nLjUxY3RvLmNvbS91XzE1MTgxNTcyLzYyOTQ5NzQpIGJ5IFvpq5jmpbzvvIhaZWUpXShodHRwczovL2Jsb2cuNTFjdG8uY29tL3VfMTUxODE1NzIpCi0gMjAyMy0wNi0yOCAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjMtMDYtMzAgLSBbR2VuZXJhdGUgQ2xpZW50IFNES3Mgd2l0aCBPcGVuQXBpIEdlbmVyYXRvciBpbiBTcHJpbmdib290XShodHRwczovL21lZGl1bS5jb20vQHJhbWF2YXRodmluYXlhay9nZW5lcmF0ZS1jbGllbnQtc2Rrcy13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLWluLXNwcmluZ2Jvb3QtZjlmMDEyZTczYzBiKSBieSBbVmluYXlhayBSYW1hdmF0aF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYW1hdmF0aHZpbmF5YWspCi0gMjAyMy0xMi0xMCAtIFtVbml0eeOBp09wZW5BUEkgR2VuZXJhdG9y44KS5L2/44GGXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNiTndLVlY1TFJNKSBieSBbU291cCBUb3JpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9Ac291cHRvcmk4NDE3KQotIDIwMjQtMDEtMjQgLSBbQ29tbWVudCBnw6luw6lyZXIgZGVzIHN0dWJzIHdpcmVtb2NrIGF2ZWMgb3BlbmFwaSBnZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MGpoT05mQnJjS3cpIGJ5IFtBbGV4aXMgQ291dnJldXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY291dnJldXIpCi0gMjAyNC0wMy0wNCAtIFtHZW5lcmF0aW5nIFR5cGVTY3JpcHQgVHlwZXMgd2l0aCBPcGVuQVBJIGZvciBSRVNUIEFQSSBDb25zdW1wdGlvbl0oaHR0cHM6Ly93d3cucHVsbHJlcXVlc3QuY29tL2Jsb2cvZ2VuZXJhdGluZy10eXBlc2NyaXB0LXR5cGVzLXdpdGgtb3BlbmFwaS1mb3ItcmVzdC1hcGktY29uc3VtcHRpb24vKSBieSBbUHVsbFJlcXVlc3RdKGh0dHBzOi8vd3d3LnB1bGxyZXF1ZXN0LmNvbS8pCi0gMjAyNC0wMy0wNyAtIFtGdWxseSB0eXBlZCBXZWIgQXBwcyB3aXRoIE9wZW5BUEkgKFBhcnQgMSldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2ZveDE5ODQvZnVsbHktdHlwZWQtd2ViLWFwcHMtd2l0aC1vcGVuYXBpLXBhcnQtMS01OTVkNTU3NjY2NzApIGJ5IFtHdWlsbGF1bWUgUmVuYXJkXShodHRwczovL21lZGl1bS5jb20vQGdmb3gxOTg0KQotIDIwMjQtMDMtMDggLSBbTGFyYXZlbCBPcGVuQVBJ44Gr44KI44KLICLovpvjgY/jgarjgYQiIOOCueOCreODvOODnumnhuWLlemWi+eZul0oaHR0cHM6Ly9mb3J0ZWUuanAvcGhwZXJrYWlnaS0yMDI0L3Byb3Bvc2FsLzllMmU2YzM4LWQwNzgtNGVmYS05OWI0LTgzZWJmOTAzM2IzNCkgYnkgW0tlbnRhcm91VGFrZWRhXShodHRwczovL3R3aXR0ZXIuY29tL0tlbnRhcm91VGFrZWRhKQoKIyMgWzYgLSBBYm91dCBVc10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKV2hhdCdzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBvciBwcmluY2lwbGUgYmVoaW5kIE9wZW5BUEkgR2VuZXJhdG9yPwoKV2UgZm9jdXMgb24gZGV2ZWxvcGVyIGV4cGVyaWVuY2UuIFRoZSBnZW5lcmF0b3JzIHNob3VsZCBwcm9kdWNlIGNvZGUsIGNvbmZpZywgZG9jdW1lbnRhdGlvbiwgYW5kIG1vcmUgdGhhdCBhcmUgZWFzaWx5IHVuZGVyc3RhbmRhYmxlIGFuZCBjb25zdW1hYmxlIGJ5IHVzZXJzLiBXZSBmb2N1c2VkIG9uIHNpbXBsZSB1c2UgY2FzZXMgdG8gc3RhcnQgd2l0aCAoYm90dG9tLXVwIGFwcHJvYWNoKS4gU2luY2UgdGhlbiB0aGUgcHJvamVjdCBhbmQgdGhlIGNvbW11bml0eSBoYXZlIGdyb3duIGEgbG90OiA2MDBrIHdlZWtseSBkb3dubG9hZHMgdmlhIE5QTSBDTEkgd3JhcHBlciwgMzBNIGRvd25sb2FkcyB2aWEgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGRvY2tlciBpbWFnZSBqdXN0IHRvIGhpZ2hsaWdodCBhIGZldy4gV2UndmUgZ3JhZHVhbGx5IHN1cHBvcnRlZCBtb3JlIGZlYXR1cmVzIChlLmcuIG9uZU9mLCBhbnlPZiBpbnRyb2R1Y2VkIGluIE9wZW5BUEkgMy4wKSBpbiB2YXJpb3VzIGdlbmVyYXRvcnMgYW5kIHdlIHdpbGwgY29udGludWUgdGhpcyBhcHByb2FjaCB0byBkZWxpdmVyIHNvbWV0aGluZyBiYXNlZCBvbiBvdXIgdW5kZXJzdGFuZGluZyBvZiB1c2VyIGRlbWFuZCBhbmQgd2hhdCB0aGV5IHdhbnQsIGFuZCBjb250aW51ZSB0byBhZGQgc3VwcG9ydCBvZiBuZXcgZmVhdHVyZXMgaW50cm9kdWNlZCBpbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gKHN1Y2ggYXMgdjMuMSBhbmQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24pLgoKIyMjIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCN0YWJsZS1vZi1jb250ZW50cykKCk9wZW5BUEkgR2VuZXJhdG9yIGNvcmUgdGVhbSBtZW1iZXJzIGFyZSBjb250cmlidXRvcnMgd2hvIGhhdmUgYmVlbiBtYWtpbmcgc2lnbmlmaWNhbnQgY29udHJpYnV0aW9ucyAocmV2aWV3IGlzc3VlcywgZml4IGJ1Z3MsIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMpIHRvIHRoZSBwcm9qZWN0IG9uIGEgcmVndWxhciBiYXNpcy4KCiMjIyMgQ29yZSBUZWFtIE1lbWJlcnMKKiBbQHdpbmczMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSAoMjAxNS8wNykgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiogW0BqaW1zY2h1YmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2ppbXNjaHViZXJ0KSAoMjAxNi8wNSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQoqIFtAY2Jvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpICgyMDE2LzA1KQoqIFtAam1pbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgKDIwMTgvMDQpICBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCiogW0BldGhlcmVhbGpveV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZWFsam95KSAoMjAxOS8wNikKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMjIFRlbXBsYXRlIENyZWF0b3IKCioqTk9URSoqOiBFbWJlZGRlZCB0ZW1wbGF0ZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIF9NdXN0YWNoZV8gZm9ybWF0LiBTdXBwb3J0IGZvciBhbGwgb3RoZXIgZm9ybWF0cyBpcyBleHBlcmltZW50YWwgYW5kIHN1YmplY3QgdG8gY2hhbmdlIGF0IGFueSB0aW1lLgoKSGVyZSBpcyBhIGxpc3Qgb2YgdGVtcGxhdGUgY3JlYXRvcnM6CiAqIEFQSSBDbGllbnRzOgogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQXBleDogQGFzbmVsbGluZwogICAqIEJhc2g6IEBia3J5emEKICAgKiBDOiBAUG93ZXJPZkNyZWF0aW9uIEB6aGVtYW50IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS96aGVtYW50KQogICAqIEMrKyBSRVNUOiBARGFuaWVsa3UxNQogICAqIEMrKyBUaW55OiBAQW5kZXJzU3ByaW5nYm9yZyBAa2FhcmVISCBAbWljaGVsZWFsYmFubyBAbWtha2JhcwogICAqIEMrKyBVRTQ6IEBLYWhuY29kZQogICAqIEMjICguTkVUIDIuMCk6IEB3aG8KICAgKiBDIyAoLk5FVCBTdGFuZGFyZCAxLjMgKTogQEdyb25zYWsKICAgKiBDIyAoLk5FVCA0LjUgcmVmYWN0b3JlZCk6IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogQyMgKEdlbmVyaWNIb3N0KTogQGRldmhsLWxhYnMKICAgKiBDIyAoSHR0cENsaWVudCk6IEBCbGFja2NsYXdzCiAgICogQ2xvanVyZTogQHhoaAogICAqIENyeXN0YWw6IEB3aW5nMzI4CiAgICogRGFydDogQHlpc3NhY2hhcgogICAqIERhcnQgKHJlZmFjdG9yKTogQGpvZXJuYWhyZW5zCiAgICogRGFydCAyOiBAc3dpcGVzaWdodAogICAqIERhcnQgKEphZ3Vhcik6IEBqYXVtYXJkCiAgICogRGFydCAoRGlvKTogQGpvc2gtYnVydG9uCiAgICogRWxpeGlyOiBAbmlrdQogICAqIEVsbTogQGVyaWt0aW0KICAgKiBFaWZmZWw6IEBqdmVsaWxsYQogICAqIEVybGFuZzogQHRzbG91Z2h0ZXIKICAgKiBFcmxhbmcgKFByb3BFcik6IEBqZmFjb3JybyBAcm9iZXJ0b2Fsb2kKICAgKiBHcm9vdnk6IEB2aWN0b3JnaXQKICAgKiBHbzogQHdpbmczMjggWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiAgICogR28gKHJld3JpdHRlbiBpbiAyLjMuMCk6IEBhbnRpaGF4CiAgICogSGFza2VsbCAoaHR0cC1jbGllbnQpOiBAam9uc2Nob25pbmcKICAgKiBKYXZhIChGZWlnbik6IEBkYXZpZGtpc3MKICAgKiBKYXZhIChSZXRyb2ZpdCk6IEAwbGVnZwogICAqIEphdmEgKFJldHJvZml0Mik6IEBlbWlsaWFub2JvbmFzc2kKICAgKiBKYXZhIChKZXJzZXkyKTogQHhoaAogICAqIEphdmEgKG9raHR0cC1nc29uKTogQHhoaAogICAqIEphdmEgKFJlc3RUZW1wbGF0ZSk6IEBuYnJ1bm8KICAgKiBKYXZhIChTcHJpbmcgNSBXZWJDbGllbnQpOiBAZGFvbm9taWMKICAgKiBKYXZhIChTcHJpbmcgNiBSZXN0Q2xpZW50KTogQG5pY2tsYXMyNzUxCiAgICogSmF2YSAoUkVTVEVhc3kpOiBAZ2F5YXRocmlncwogICAqIEphdmEgKFZlcnR4KTogQGxvcGVzbWNjCiAgICogSmF2YSAoR29vZ2xlIEFQSXMgQ2xpZW50IExpYnJhcnkpOiBAY2hhcmxlc2NhcHBzCiAgICogSmF2YSAoUmVzdC1hc3N1cmVkKTogQHZpY2xvdnNreQogICAqIEphdmEgKEphdmEgMTEgTmF0aXZlIEhUVFAgY2xpZW50KTogQGJiZG91Z2xhcwogICAqIEphdmEgKEFwYWNoZSBIdHRwQ2xpZW50IDUueCk6IEBoYXJyeXdoaXRlNCBAYW5kcmV2ZWdhcwogICAqIEphdmEgKEhlbGlkb24pOiBAc3BlcmljYXMgQHRqcXVpbm5vIEB0dmFsbGluCiAgICogSmF2YXNjcmlwdC9Ob2RlSlM6IEBqZmlhbGEKICAgKiBKYXZhU2NyaXB0IChBcG9sbG8gRGF0YVNvdXJjZSk6IEBlcml0aG1ldGljCiAgICogSmF2YVNjcmlwdCAoQ2xvc3VyZS1hbm5vdGF0ZWQgQW5ndWxhcikgQGFjaGV3MjIKICAgKiBKYXZhU2NyaXB0IChGbG93IHR5cGVzKSBAamF5cGVhCiAgICogSmV0YnJhaW5zIEhUVFAgQ2xpZW50IDogQGpsZW5ncmFuZAogICAqIEpNZXRlcjogQGRhdmlka2lzcwogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChNdWx0aVBsYXRmb3JtKTogQGFuZHJld2VtZXJ5CiAgICogS290bGluIChWb2xsZXkpOiBAYWxpc3RlcnMKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctd2ViY2xpZW50KTogQHN0ZWZhbmtvcHBpZXIKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctcmVzdGNsaWVudCk6IEBzdGVmYW5rb3BwaWVyCiAgICogTHVhOiBAZGF1cm5pbWF0b3IKICAgKiBONEpTOiBAbW1ld3MtbjQKICAgKiBOaW06IEBob2thbW90bwogICAqIE9DYW1sOiBAY2dlbnNvdWwKICAgKiBQZXJsOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBQSFAgKEd1enpsZSk6IEBiYWFydG9zegogICAqIFBIUCAod2l0aCBEYXRhIFRyYW5zZmVyKTogQEFydGljdXMKICAgKiBQb3dlclNoZWxsOiBAYmVhdGNyYWNrZXIKICAgKiBQb3dlclNoZWxsIChyZWZhY3RvcmVkIGluIDUuMC4wKTogQHdpbmczMjgKICAgKiBQeXRob246IEBzcGFjZXRoZXIgWzpoZWFydDpdW3NwYWNldGhlciBzcG9uc29yc2hpcF0KICAgKiBQeXRob24tRXhwZXJpbWVudGFsOiBAc3BhY2V0aGVyIFs6aGVhcnQ6XVtzcGFjZXRoZXIgc3BvbnNvcnNoaXBdCiAgICogUHl0aG9uIChyZWZhY3RvcmVkIGluIDcuMC4wKTogQHdpbmczMjgKICAgKiBSOiBAcmFtbm92CiAgICogUnVieSAoRmFyYWRheSk6IEBtZWdhbmVtdXJhIEBka2xpYmFuCiAgICogUnVieSAoSFRUUFgpOiBAaG9uZXlyeWRlcmNodWNrCiAgICogUnVzdDogQGZhcmNhbGxlcgogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBTY2FsYSAoc2NhbGF6ICYgaHR0cDRzKTogQHRicm93bjE5NzkKICAgKiBTY2FsYSAoQWtrYSk6IEBjY2hhZmVyCiAgICogU2NhbGEgKHN0dHApOiBAY2hhbWVsZW9uODIKICAgKiBTY2FsYSAoc3R0cDQpOiBAZmxzaDg2CiAgICogU2NhbGEgKFBla2tvKTogQG1pY2thZWxtYWduaWV6CiAgICogU2NhbGEgKGh0dHA0cyk6IEBKZW5ueUxlYWh5CiAgICogU3dpZnQ6IEB0a3F1Ym8KICAgKiBTd2lmdCAzOiBAaGV4ZWxvbgogICAqIFN3aWZ0IDQ6IEBlaHljaGUKICAgKiBTd2lmdCA1OiBANGJydW51CiAgICogU3dpZnQgNjogQDRicnVudQogICAqIFN3aWZ0IENvbWJpbmU6IEBkeWR1czB4MTQKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyMSk6IEBtaGFyZG9yZgogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXIyKTogQHJvbmktZnJhbnRjaGkKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNik6IEBha2VoaXIKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNyk6IEB0b3BjZQogICAqIFR5cGVTY3JpcHQgKEF4aW9zKTogQG5pY29rb2VuaWcKICAgKiBUeXBlU2NyaXB0IChGZXRjaCk6IEBsZW9ueXUKICAgKiBUeXBlU2NyaXB0IChJbnZlcnNpZnkpOiBAZ3VhbHRpZXJpbQogICAqIFR5cGVTY3JpcHQgKGpRdWVyeSk6IEBiaGVyaWxhCiAgICogVHlwZVNjcmlwdCAoTmVzdGpzKTogQHZmcmFuazY2CiAgICogVHlwZVNjcmlwdCAoTm9kZSk6ICBAbWhhcmRvcmYKICAgKiBUeXBlU2NyaXB0IChSeGpzKTogQGRlbnlvCiAgICogVHlwZVNjcmlwdCAocmVkdXgtcXVlcnkpOiBAcGV0ZWpvaGFuc29ueG8KICAgKiBYb2pvOiBAVG9waGVlZQogICAqIFphcGllcjogQHZhbG1veiwgQGVtYWpvCiAqIFNlcnZlciBTdHVicwogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQyMgQVNQLk5FVCA1OiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEMjIEFTUC5ORVQgQ29yZSAzLjA6IEBBLUpvc2hpCiAgICogQyMgQVBTLk5FVCBDb3JlIDMuMTogQHBoYXRjaGVyCiAgICogQyMgQXp1cmUgZnVuY3Rpb25zOiBAQWJyaG03Nzg2CiAgICogQyMgTmFuY3lGWDogQG1zdGVmYW5pdWsKICAgKiBDKysgKFF0NSBRSHR0cEVuZ2luZSk6IEBldGhlcmVhbGpveQogICAqIEMrKyBQaXN0YWNoZTogQHNlYnltaWFubwogICAqIEMrKyBSZXN0YmVkOiBAc3RrcndvcmsKICAgKiBFcmxhbmcgU2VydmVyOiBAZ2FsYXhpZSBAbmVsc29udmlkZXMKICAgKiBGIyAoR2lyYWZmZSkgU2VydmVyOiBAbm1maXNoZXIKICAgKiBHbyBTZXJ2ZXI6IEBndW9odWFuZwogICAqIEdvIFNlcnZlciAocmVmYWN0b3JlZCBpbiA3LjAuMCk6IEBsd2o1CiAgICogR28gKEVjaG8pIFNlcnZlcjogQHBoNHI1aDRkCiAgICogR28gKEdpbikgU2VydmVyOiBAa2Vtb2tlbW8KICAgKiBHcmFwaFFMIEV4cHJlc3MgU2VydmVyOiBAcmVuZXBhcmRvbgogICAqIEhhc2tlbGwgU2VydmFudDogQGFsZ2FzCiAgICogSGFza2VsbCBZZXNvZDogQHlvdHN1eWEKICAgKiBKYXZhIENhbWVsOiBAY2FybmV2YWxlZ2lhY29tbwogICAqIEphdmEgTVNGNEo6IEBzYW5qZWV3YS1tYWxhbGdvZGEKICAgKiBKYXZhIFNwcmluZyBCb290OiBAZGl5ZnIKICAgKiBKYXZhIFVuZGVydG93OiBAc3RldmVodQogICAqIEphdmEgUGxheSBGcmFtZXdvcms6IEBKRkNvdGUKICAgKiBKYXZhIFBLTVNUOiBAYW5zaHUyMTg1IEBzYW5zaHVtYW4gQHJrdW1hci1wayBAbmlub2RwaWxsYWkKICAgKiBKYXZhIFZlcnQueDogQGx3bGVlMjYwOAogICAqIEphdmEgTWljcm9uYXV0OiBAYW5kcml5LWRteXRydWsKICAgKiBKYXZhIEhlbGlkb246IEBzcGVyaWNhcyBAdGpxdWlubm8gQHR2YWxsaW4KICAgKiBKYXZhIFdpcmVNb2NrOiBbQGFjb3V2cmV1cl0oaHR0cHM6Ly9naXRodWIuY29tL2Fjb3V2cmV1cikKICAgKiBKQVgtUlMgUmVzdEVhc3k6IEBjaGFtZWxlb244MgogICAqIEpBWC1SUyBDWEY6IEBoaXZlc2hpcAogICAqIEpBWC1SUyBDWEYgKENESSk6IEBuaWNrY21heW5hcmQKICAgKiBKQVgtUlMgUmVzdEVhc3kgKEpCb3NzIEVBUCk6IEBqZmlhbGEKICAgKiBKdWxpYTogQHRhbm1heWttCiAgICogS290bGluOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEtvdGxpbiAoU3ByaW5nIEJvb3QpOiBAZHI0a2U2MTYKICAgKiBLb3RsaW4gKFZlcnR4KTogQFdvb3ltZQogICAqIEtvdGxpbiAoSkFYLVJTKTogQGFudHRpbGVwcGEKICAgKiBLb3RsaW4gV2lyZU1vY2s6IEBzdGVmYW5rb3BwaWVyCiAgICogTm9kZUpTIEV4cHJlc3M6IEBZaXNoVGlzaAogICAqIFBIUCBGbGlnaHQ6IEBkYW5pZWwtc2MKICAgKiBQSFAgTGFyYXZlbDogQHJlbmVwYXJkb24KICAgKiBQSFAgTHVtZW46IEBhYmNzdW4KICAgKiBQSFAgTWV6emlvICh3aXRoIFBhdGggSGFuZGxlcik6IEBBcnRpY3VzCiAgICogUEhQIFNsaW06IEBqZmFzdG5hY2h0CiAgICogUEhQIFNsaW00OiBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pCiAgICogUEhQIFN5bWZvbnk6IEBrc20yCiAgICogUEhQIFN5bWZvbnk2OiBAQmVuamFtaW5IYWUKICAgKiBQeXRob24gRmFzdEFQSTogQGtyamFrYnJqYWsKICAgKiBQeXRob24gQUlPSFRUUDoKICAgKiBSdWJ5IG9uIFJhaWxzIDU6IEB6bHgKICAgKiBSdXN0IChydXN0LXNlcnZlcik6IEBtZXRhc3dpdGNoCiAgICogU2NhbGEgQWtrYTogQEJvdWlsbGllCiAgICogU2NhbGEgQ2FzazogQGFhcm9ucAogICAqIFNjYWxhIEZpbmNoOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIFNjYWxhIExhZ29tOiBAZ21rdW1hcjIwMDUKICAgKiBTY2FsYSBQbGF5OiBAYWRpZ2VyYmVyCiAqIERvY3VtZW50YXRpb24KICAgKiBBc2NpaURvYzogQG1hbi1hdC1ob21lCiAgICogSFRNTCBEb2MgMjogQGpoaXRjaGNvY2sKICAgKiBDb25mbHVlbmNlIFdpa2k6IEBqaGl0Y2hjb2NrCiAgICogUGxhbnRVTUw6IEBwYnVybHMKICogQ29uZmlndXJhdGlvbgogICAqIEFwYWNoZTI6IEBzdGtyd29yawogICAqIGs2OiBAbW9zdGFmYQogKiBTY2hlbWEKICAgKiBBdnJvOiBAc2dhZG91YXIKICAgKiBHcmFwaFFMOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBLdG9ybTogQEx1aXotTW9uYWQKICAgKiBNeVNRTDogW0B5YmVsZW5rb10oaHR0cHM6Ly9naXRodWIuY29tL3liZWxlbmtvKQogICAqIFBvc3RtYW4gQ29sbGVjdGlvbjogQGdjYXRhbmVzZQogICAqIFByb3RvY29sIEJ1ZmZlcjogQHdpbmczMjgKICAgKiBXU0RMOiBAYWRlc3NvRHBkCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIyBIb3cgdG8gam9pbiB0aGUgY29yZSB0ZWFtCgpIZXJlIGFyZSB0aGUgcmVxdWlyZW1lbnRzIHRvIGJlY29tZSBhIGNvcmUgdGVhbSBtZW1iZXI6Ci0gcmFuayB3aXRoaW4gdG9wIDUwIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvZ3JhcGhzL2NvbnRyaWJ1dG9ycwogIC0gdG8gY29udHJpYnV0ZSwgaGVyZSBhcmUgc29tZSBnb29kIFtzdGFydGluZyBwb2ludHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUrbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMikKLSByZWd1bGFyIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHByb2plY3QKICAtIGFib3V0IDMgaG91cnMgcGVyIHdlZWsKICAtIGZvciBjb250cmlidXRpb24sIGl0IGNhbiBiZSBhZGRyZXNzaW5nIGlzc3VlcywgcmV2aWV3aW5nIFBScyBzdWJtaXR0ZWQgYnkgb3RoZXJzLCBzdWJtaXR0aW5nIFBSIHRvIGZpeCBidWdzIG9yIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMKICAtIG11c3QgYmUgYWN0aXZlIGluIHRoZSBwYXN0IDMgbW9udGhzIGF0IHRoZSB0aW1lIG9mIGFwcGxpY2F0aW9uCgogVG8gam9pbiB0aGUgY29yZSB0ZWFtLCBwbGVhc2UgcmVhY2ggb3V0IHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiBUbyBiZWNvbWUgYSBUZW1wbGF0ZSBDcmVhdG9yLCBzaW1wbHkgc3VibWl0IGEgUFIgZm9yIG5ldyBBUEkgY2xpZW50IChlLmcuIFJ1c3QsIEVsaXhpcikgb3Igc2VydmVyIHN0dWIgKGUuZy4gUnVieSBHcmFwZSkgZ2VuZXJhdG9yLgoKIyMjIFs2LjIgLSBPcGVuQVBJIEdlbmVyYXRvciBUZWNobmljYWwgQ29tbWl0dGVlXSgjdGFibGUtb2YtY29udGVudHMpCgpNZW1iZXJzIG9mIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0ZWNobmljYWwgY29tbWl0dGVlIHNob3VsZGVyIHRoZSBmb2xsb3dpbmcgcmVzcG9uc2liaWxpdGllczoKCi0gUHJvdmlkZXMgZ3VpZGFuY2UgYW5kIGRpcmVjdGlvbiB0byBvdGhlciB1c2VycwotIFJldmlld3MgcHVsbCByZXF1ZXN0cyBhbmQgaXNzdWVzCi0gSW1wcm92ZXMgdGhlIGdlbmVyYXRvciBieSBtYWtpbmcgZW5oYW5jZW1lbnRzLCBmaXhpbmcgYnVncyBvciB1cGRhdGluZyBkb2N1bWVudGF0aW9ucwotIFNldHMgdGhlIHRlY2huaWNhbCBkaXJlY3Rpb24gb2YgdGhlIGdlbmVyYXRvcgoKV2hvIGlzIGVsaWdpYmxlPyBUaG9zZSB3aG8gd2FudCB0byBqb2luIG11c3QgaGF2ZSBhdCBsZWFzdCAzIFBScyBtZXJnZWQgaW50byBhIGdlbmVyYXRvci4gKEV4Y2VwdGlvbnMgY2FuIGJlIGdyYW50ZWQgdG8gdGVtcGxhdGUgY3JlYXRvcnMgb3IgY29udHJpYnV0b3JzIHdobyBoYXZlIG1hZGUgYSBsb3Qgb2YgY29kZSBjaGFuZ2VzIHdpdGggbGVzcyB0aGFuIDMgbWVyZ2VkIFBScykKCklmIHlvdSB3YW50IHRvIGpvaW4gdGhlIGNvbW1pdHRlZSwgcGxlYXNlIGtpbmRseSBhcHBseSBieSBzZW5kaW5nIGFuIGVtYWlsIHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyB3aXRoIHlvdXIgR2l0aHViIElELgoKIyMjIyBNZW1iZXJzIG9mIFRlY2huaWNhbCBDb21taXR0ZWUKCnwgTGFuZ3VhZ2VzL0dlbmVyYXRvcnMgIHwgTWVtYmVyIChqb2luIGRhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBBY3Rpb25TY3JpcHQgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQWRhICAgICAgICAgICAgICAgICAgIHwgQHN0Y2FycmV6ICgyMDE4LzAyKSBAbWljaGVsZWFsYmFubyAoMjAxOC8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFuZHJvaWQgICAgICAgICAgICAgICB8IEBqYXotYWggKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBcGV4ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQmFzaCAgICAgICAgICAgICAgICAgIHwgQGZyb2wgKDIwMTcvMDcpIEBia3J5emEgKDIwMTcvMDgpIEBrZW5qb25lcy1jaXNjbyAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMgICAgICAgICAgICAgICAgICAgICB8IEB6aGVtYW50ICgyMDE4LzExKSBAaXR5dWh1aSAoMjAxOS8xMikgQG1pY2hlbGVhbGJhbm8gKDIwMjAvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDKysgICAgICAgICAgICAgICAgICAgfCBAcmF2aW5pa2FtICgyMDE3LzA3KSBAc3RrcndvcmsgKDIwMTcvMDcpIEBldGhlcmVhbGpveSAoMjAxOC8wMikgQG1hcnRpbmRlbGlsbGUgKDIwMTgvMDMpIEBtdXR0bGV5eGQgKDIwMTkvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQyMgICAgICAgICAgICAgICAgICAgIHwgQG1hbmRyZWFuICgyMDE3LzA4KSBAc2hpYmF5YW4gKDIwMjAvMDIpIEBCbGFja2NsYXdzICgyMDIxLzAzKSBAbHVjYW1henphbnRpICgyMDIxLzA1KSBAaUJpY2hhICgyMDIzLzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDbG9qdXJlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ3J5c3RhbCAgICAgICAgICAgICAgIHwgQGN5YW5nbGUgKDIwMjEvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IERhcnQgICAgICAgICAgICAgICAgICB8IEBqYXVtYXJkICgyMDE4LzA5KSBAam9zaC1idXJ0b24gKDIwMTkvMTIpIEBhbW9uZG5ldCAoMjAxOS8xMikgQHNidS1XQlQgKDIwMjAvMTIpIEBrdWhucm95YWwgKDIwMjAvMTIpIEBhZ2lsb2IgKDIwMjAvMTIpIEBhaG1lZG5md2VsYSAoMjAyMS8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFaWZmZWwgICAgICAgICAgICAgICAgfCBAanZlbGlsbGEgKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWxpeGlyICAgICAgICAgICAgICAgIHwgQG1ybXN0biAoMjAxOC8xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVsbSAgICAgICAgICAgICAgICAgICB8IEBlcmlrdGltICgyMDE4LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFcmxhbmcgICAgICAgICAgICAgICAgfCBAdHNsb3VnaHRlciAoMjAxNy8xMSkgQGpmYWNvcnJvICgyMDE4LzEwKSBAcm9iZXJ0b2Fsb2kgKDIwMTgvMTApIEBuZWxzb252aWRlcyAoMjAyNC8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRiMgICAgICAgICAgICAgICAgICAgIHwgQG5tZmlzaGVyICgyMDE5LzA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdvICAgICAgICAgICAgICAgICAgICB8IEBhbnRpaGF4ICgyMDE3LzExKSBAZ3Jva2lmeSAoMjAxOC8wNykgQGtlbW9rZW1vICgyMDE4LzA5KSBAamlyaWt1bmNhciAoMjAyMS8wMSkgQHBoNHI1aDRkICgyMDIxLzA0KSBAbHdqNSAoMjAyMy8wNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR3JhcGhRTCAgICAgICAgICAgICAgIHwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdyb292eSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBIYXNrZWxsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmF2YSAgICAgICAgICAgICAgICAgIHwgQGJiZG91Z2xhcyAoMjAxNy8wNykgQHNyZWVzaGFzICgyMDE3LzA4KSBAamZpYWxhICgyMDE3LzA4KSBAbHVrb3lhbm92ICgyMDE3LzA5KSBAY2Jvcm5ldCAoMjAxNy8wOSkgQGplZmY5ZmluZ2VyICgyMDE4LzAxKSBAa2FyaXNtYW5uICgyMDE5LzAzKSBAWm9tem9nICgyMDE5LzA0KSBAbHdsZWUyNjA4ICgyMDE5LzEwKSBAbWFydGluLW1mZyAoMjAyMy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKYXZhIFNwcmluZyAgICAgICAgICAgfCBAY2FjaGVzY3J1YmJlciAoMjAyMi8wMikgQHdlbHNobSAoMjAyMi8wMikgQE1lbGxlRCAoMjAyMi8wMikgQGF0ZXh0b3IgKDIwMjIvMDIpIEBtYW5lZGV2NzkgKDIwMjIvMDIpIEBqYXZpc3N0ICgyMDIyLzAyKSBAYm9yc2NoICgyMDIyLzAyKSBAYmFubGV2ZW50ZSAoMjAyMi8wMikgQFpvbXpvZyAoMjAyMi8wOSkgQG1hcnRpbi1tZmcgKDIwMjMvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEpNZXRlciAgICAgICAgICAgICAgICB8IEBrYW5ua3lvICgyMDIxLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKZXRicmFpbnMgSFRUUCBDbGllbnQgfCBAamxlbmdyYW5kICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSnVsaWEgICAgICAgICAgICAgICAgIHwgQHRhbm1heWttICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEtvdGxpbiAgICAgICAgICAgICAgICB8IEBkcjRrZTYxNiAoMjAxOC8wOCkgQGthcmlzbWFubiAoMjAxOS8wMykgQFpvbXpvZyAoMjAxOS8wNCkgQGFuZHJld2VtZXJ5ICgyMDE5LzEwKSBANGJydW51ICgyMDE5LzExKSBAeXV0YWthMG0gKDIwMjAvMDMpIEBzdGVmYW5rb3BwaWVyICgyMDIyLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEx1YSAgICAgICAgICAgICAgICAgICB8IEBkYXVybmltYXRvciAoMjAxNy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBONEpTICAgICAgICAgICAgICAgICAgfCBAbW1ld3MtbjQgKDIwMjMvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTmltICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE5vZGVKUy9KYXZhc2NyaXB0ICAgICB8IEBDb2RlTmluamFpICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQGNsaWZmYW5vICgyMDE3LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPYmpDICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT0NhbWwgICAgICAgICAgICAgICAgIHwgQGNnZW5zb3VsICgyMDE5LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBlcmwgICAgICAgICAgICAgICAgICB8IEB3aW5nMzI4ICgyMDE3LzA3KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkgQHl1ZTk5NDQ4ODIgKDIwMTkvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQSFAgICAgICAgICAgICAgICAgICAgfCBAamViZW50aWVyICgyMDE3LzA3KSwgQGRrYXJsb3ZpICgyMDE3LzA3KSwgQG1hbmRyZWFuICgyMDE3LzA4KSwgQGpmYXN0bmFjaHQgKDIwMTcvMDkpLCBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pICgyMDE4LzA3KSwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUG93ZXJTaGVsbCAgICAgICAgICAgIHwgQHdpbmczMjggKDIwMjAvMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFB5dGhvbiAgICAgICAgICAgICAgICB8IEBjYm9ybmV0ICgyMDE3LzA5KSBAdG9tcGx1cyAoMjAxOC8xMCkgQGtyamFrYnJqYWsgKDIwMjMvMDIpIEBmYTAzMTEgKDIwMjMvMTApIEBtdWx0YW5pICgyMDIzLzEwKSB8CnwgUiAgICAgICAgICAgICAgICAgICAgIHwgQFJhbWFudGggKDIwMTkvMDcpIEBzYWlnaXJpZGhhcjIxICgyMDE5LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJ1YnkgICAgICAgICAgICAgICAgICB8IEBjbGlmZmFubyAoMjAxNy8wNykgQHpseCAoMjAxNy8wOSkgQGF1dG9wcCAoMjAxOS8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBSdXN0ICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGZhcmNhbGxlciAoMjAxNy8wOCkgQHJpY2hhcmR3aGl1ayAoMjAxOS8wNykgQHBhbGFkaW56aCAoMjAyMC8wNSkgQGphY29iLXBybyAoMjAyMi8xMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU2NhbGEgICAgICAgICAgICAgICAgIHwgQGNsYXNuYWtlICgyMDE3LzA3KSwgQHNoaWppbmt1aSAgKDIwMTgvMDEpLCBAcmFtemltYWFsZWogKDIwMTgvMDMpLCBAY2hhbWVsZW9uODIgKDIwMjAvMDMpLCBAQm91aWxsaWUgKDIwMjAvMDQpIEBmaXNoODYgKDIwMjMvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFN3aWZ0ICAgICAgICAgICAgICAgICB8IEBqZ2F2cmlzICgyMDE3LzA3KSBAZWh5Y2hlICgyMDE3LzA4KSBARWR1Yml0cyAoMjAxNy8wOSkgQGphei1haCAoMjAxNy8wOSkgQDRicnVudSAoMjAxOS8xMSkgQGR5ZHVzMHgxNCAoMjAyMy8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUeXBlU2NyaXB0ICAgICAgICAgICAgfCBAVGlGdSAoMjAxNy8wNykgQHRheHBvbiAoMjAxNy8wNykgQHNlYmFzdGlhbmhhYXMgKDIwMTcvMDcpIEBrZW5pc3Rld2FyZCAoMjAxNy8wNykgQFZyb2xpamt4ICgyMDE3LzA5KSBAbWFjam9obm55ICgyMDE4LzAxKSBAdG9wY2UgKDIwMTgvMTApIEBha2VoaXIgKDIwMTkvMDcpIEBwZXRlam9oYW5zb254byAoMjAxOS8xMSkgQGFtYWtocm92ICgyMDIwLzAyKSBAZGF2aWRnYW1lcm8gKDIwMjIvMDMpIEBta3VzYWthICgyMDIyLzA0KSBAam9zY2hhICgyMDI0LzEwKSAgICB8CnwgWG9qbyAgICAgICAgICAgICAgICAgIHwgQFRvcGhlZWUgKDIwMjMvMDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKClBhc3QgTWVtYmVycyBvZiBUZWNobmljYWwgQ29tbWl0dGVlOgp8IExhbmd1YWdlcy9HZW5lcmF0b3JzICAgICAgICAgfCBNZW1iZXIgKGpvaW4gZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBQeXRob24gICAgICAgICAgICB8IEB0YXhwb24gKDIwMTcvMDcpIEBmcm9sICgyMDE3LzA3KSBAbWJvaGxvb2wgKDIwMTcvMDcpIEBjYm9ybmV0ICgyMDE3LzA5KSBAa2Vuam9uZXMtY2lzY28gKDIwMTcvMTEpIEB0b21wbHVzICgyMDE4LzEwKSBAYXJ1bi1uYWxsYSAoMjAxOS8xMSkgIHwKCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpPcGVuQVBJIEdlbmVyYXRvciBpcyBhIGZvcmsgb2YgW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikuIEluIHZpZXcgb2YgdGhlIGlzc3VlcyB3aXRoIHRoZSBTd2FnZ2VyIENvZGVnZW4gMy4wLjAgKGJldGEpIHJlbGVhc2UgYW5kIHRoZSBkaXNhZ3JlZW1lbnQgb24gdGhlIHByb2plY3QncyBkaXJlY3Rpb24sIG1vcmUgdGhhbiA0MCB0b3AgY29udHJpYnV0b3JzIGFuZCB0ZW1wbGF0ZSBjcmVhdG9ycyBvZiBTd2FnZ2VyIENvZGVnZW4gZGVjaWRlZCB0byBmb3JrIFN3YWdnZXIgQ29kZWdlbiBhbmQgbWFpbnRhaW4gYSBjb21tdW5pdHktZHJpdmVuIHZlcnNpb24gY2FsbGVkICJPcGVuQVBJIEdlbmVyYXRvciIuIFBsZWFzZSByZWZlciB0byB0aGUgW1EmQV0oZG9jcy9xbmEubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIyBGb3VuZGluZyBNZW1iZXJzIChhbHBoYWJldGljYWwgb3JkZXIpOgoKLSBbQWtpaGl0byBOYWthbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpCi0gW0FydGVtIE9jaGVyZWRrb10oaHR0cHM6Ly9naXRodWIuY29tL2dhbGF4aWUpCi0gW0FydGh1ciBNb2dsaWV2XShodHRwczovL2dpdGh1Yi5jb20vQXJ0aWN1cykKLSBbQmFydGVrIEtyeXphXShodHRwczovL2dpdGh1Yi5jb20vYmtyeXphKQotIFtCZW4gV2VsbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9idndlbGxzKQotIFtCZW5qYW1pbiBHaWxsXShodHRwczovL2dpdGh1Yi5jb20vYmpnaWxsKQotIFtDaHJpc3RvcGhlIEJvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpCi0gW0NsaWZmYW5vIFN1YmFnaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9jbGlmZmFubykKLSBbRGFpa2kgTWF0c3VkYXRlXShodHRwczovL2dpdGh1Yi5jb20vZC1kYXRlKQotIFtEYW5pZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9EYW5pZWxrdTE1KQotIFtFbWlsaWFubyBCb25hc3NpXShodHRwczovL2dpdGh1Yi5jb20vZW1pbGlhbm9ib25hc3NpKQotIFtFcmlrIFRpbW1lcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcmlrdGltKQotIFtFc3RlYmFuIEdlaHJpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNqb2hubnkpCi0gW0d1c3Rhdm8gUGF6XShodHRwczovL2dpdGh1Yi5jb20vZ3VzdGF2b2FwYXopCi0gW0phdmllciBWZWxpbGxhXShodHRwczovL2dpdGh1Yi5jb20vanZlbGlsbGEpCi0gW0plYW4tRnJhbsOnb2lzIEPDtHTDqV0oaHR0cHM6Ly9naXRodWIuY29tL0pGQ290ZSkKLSBbSmltIFNjaHViZXJ0XShodHRwczovL2dpdGh1Yi5jb20vamltc2NodWJlcnQpCi0gW0pvbiBTY2hvbmluZ10oaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaG9uaW5nKQotIFtKw6lyw6ltaWUgQnJlc3Nvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCi0gW0rDtnJuIEFocmVuc10oaHR0cHM6Ly9naXRodWIuY29tL2pheWVhcm4pCi0gW0tlbmkgU3Rld2FyZF0oaHR0cHM6Ly9naXRodWIuY29tL2tlbmlzdGV3YXJkKQotIFtNYXJjaW4gU3RlZmFuaXVrXShodHRwczovL2dpdGh1Yi5jb20vbXN0ZWZhbml1aykKLSBbTWFydGluIERlbGlsbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5EZWxpbGxlKQotIFtNYXNhaGlybyBZYW1hdWNoaV0oaHR0cHM6Ly9naXRodWIuY29tL2FsZ2FzKQotIFtNaWNoZWxlIEFsYmFub10oaHR0cHM6Ly9naXRodWIuY29tL21pY2hlbGVhbGJhbm8pCi0gW1JhbXppIE1hYWxlal0oaHR0cHM6Ly9naXRodWIuY29tL3JhbXppbWFhbGVqKQotIFtSYXZpbmRyYSBOaWthbV0oaHR0cHM6Ly9naXRodWIuY29tL3JhdmluaWthbSkKLSBbUmljYXJkbyBDYXJkb25hXShodHRwczovL2dpdGh1Yi5jb20vcmljYXJkb25hKQotIFtTZWJhc3RpYW4gSGFhc10oaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmhhYXMpCi0gW1NlYmFzdGlhbiBNYW5kcmVhbl0oaHR0cHM6Ly9naXRodWIuY29tL21hbmRyZWFuKQotIFtTcmVlbmlkaGkgU3JlZXNoYV0oaHR0cHM6Ly9naXRodWIuY29tL3NyZWVzaGFzKQotIFtTdGVmYW4gS3Jpc21hbm5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGtyd29yaykKLSBbU3RlcGhhbmUgQ2FycmV6XShodHRwczovL2dpdGh1Yi5jb20vc3RjYXJyZXopCi0gW1Rha3VybyBXYWRhXShodHRwczovL2dpdGh1Yi5jb20vdGF4cG9uKQotIFtUb21hc3ogUHJ1c10oaHR0cHM6Ly9naXRodWIuY29tL3RvbXBsdXMpCi0gW1RyaXN0YW4gU2xvdWdodGVyXShodHRwczovL2dpdGh1Yi5jb20vdHNsb3VnaHRlcikKLSBbVmljdG9yIE9ybG92c2t5XShodHRwczovL2dpdGh1Yi5jb20vdmljbG92c2t5KQotIFtWaWN0b3IgVHJha2h0ZW5iZXJnXShodHRwczovL2dpdGh1Yi5jb20vdmljdG9yZ2l0KQotIFtWbGFkIEZyb2xvdl0oaHR0cHM6Ly9naXRodWIuY29tL2Zyb2wpCi0gW1ZsYWRpbWlyIFBvdXphbm92XShodHRwczovL2dpdGh1Yi5jb20vZmFyY2FsbGVyKQotIFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkKLSBbWGluIE1lbmddKGh0dHBzOi8vZ2l0aHViLmNvbS94bWVuZzEpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS91c2VyL292ZXJ2aWV3P3U9MTY0MzUzODUpCi0gW1h1IEh1aSBIdWldKGh0dHBzOi8vZ2l0aHViLmNvbS94aGgpCi0gW2FudGloYXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRpaGF4KQotIFtiZWF0Y3JhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2JlYXRjcmFja2VyKQotIFtkYXVybmltYXRvcl0oaHR0cHM6L2dpdGh1Yi5jb20vZGF1cm5pbWF0b3IpCi0gW2V0aGVyZWFsam95XShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJlYWxqb3kpCi0gW2pmaWFsYV0oaHR0cHM6Ly9naXRodWIuY29tL2pmaWFsYSkKLSBbbHVrb3lhbm92XShodHRwczovL2dpdGh1Yi5jb20vbHVrb3lhbm92KQoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIFs3IC0gTGljZW5zZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQotLS0tLS0tCgpDb3B5cmlnaHQgMjAxOCBPcGVuQVBJLUdlbmVyYXRvciBDb250cmlidXRvcnMgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkKQ29weXJpZ2h0IDIwMTggU21hcnRCZWFyIFNvZnR3YXJlCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgW2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBdKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLS0tCg== - readmeEtag: '"3eeb3148f49e3b2758c1d10d1c0eb6ff45c22141"' - readmeLastModified: Sat, 05 Oct 2024 09:25:17 GMT + PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgR2VuZXJhdG9yPC9oMT4KCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKWyFbU3RhYmxlIHJlbGVhc2VzIGluIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tbWV0YWRhdGEvdi9odHRwcy9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWF2ZW4tbWV0YWRhdGEueG1sLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYXYlN0MxJTdDZyUzQSUyMm9yZy5vcGVuYXBpdG9vbHMlMjIlMjBBTkQlMjBhJTNBJTIyb3BlbmFwaS1nZW5lcmF0b3IlMjIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpClshW09wZW4gQ29sbGVjdGl2ZSBiYWNrZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2JhY2tlcnMvb3BlbmFwaV9nZW5lcmF0b3I/Y29sb3I9b3JhbmdlJmxhYmVsPU9wZW5Db2xsZWN0aXZlJTIwQmFja2VycyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKQpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL3p0LTEyanh4ZDdwMi1YVWVRTX40cHpzVTl4fmVHTFFxWDJnKQpbIVtGb2xsb3cgT3BlbkFQSSBHZW5lcmF0b3IgVHdpdHRlciBhY2NvdW50IHRvIGdldCB0aGUgbGF0ZXN0IHVwZGF0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9vYXNfZ2VuZXJhdG9yLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9Rm9sbG93KV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vYXNfZ2VuZXJhdG9yKQpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQ29uYW4gQ2VudGVyXShodHRwczovL3NoaWVsZHMuaW8vY29uYW4vdi9vcGVuYXBpLWdlbmVyYXRvcildKGh0dHBzOi8vY29uYW4uaW8vY2VudGVyL3JlY2lwZXMvb3BlbmFwaS1nZW5lcmF0b3IpClshW1JldnZlZCB1cCBieSBEZXZlbG9jaXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JldnZlZCUyMHVwJTIwYnktRGV2ZWxvY2l0eS0wNkEwQ0U/bG9nbz1HcmFkbGUmbGFiZWxDb2xvcj0wMjMwM0EpXShodHRwczovL2dlLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gvc2NhbnMpCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCltNYXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpIChgNy4xMC4wYCk6ClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9hcGkudHJhdmlzLWNpLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Iuc3ZnP2JyYW5jaD1tYXN0ZXImc3RhdHVzPXBhc3NlZCldKGh0dHBzOi8vYXBwLnRyYXZpcy1jaS5jb20vZ2l0aHViL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9idWlsZHMpClshW0ludGVncmF0aW9uIFRlc3QyXShodHRwczovL2NpcmNsZWNpLmNvbS9naC9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Iuc3ZnP3N0eWxlPXNoaWVsZCldKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbV2luZG93cyBUZXN0XShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2dpdGh1Yi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3I/YnJhbmNoPW1hc3RlciZzdmc9dHJ1ZSZwYXNzaW5nVGV4dD1XaW5kb3dzJTIwVGVzdCUyMC0lMjBPSyZmYWlsaW5nVGV4dD1XaW5kb3dzJTIwVGVzdCUyMC0lMjBGYWlscyldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvV2lsbGlhbUNoZW5nL29wZW5hcGktZ2VuZXJhdG9yKQpbIVtCaXRyaXNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JpdHJpc2UvNGEyYjEwYTgxOWQxMmI2Ny9tYXN0ZXI/bGFiZWw9Yml0cmlzZSUzQSUyMFN3aWZ0KzQsNSZ0b2tlbj04NTlGTURSOFFId2FiQ3p3dlpLNnZRKV0oaHR0cHM6Ly9hcHAuYml0cmlzZS5pby9hcHAvNGEyYjEwYTgxOWQxMmI2NykKCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCjpzdGFyOjpzdGFyOjpzdGFyOiBJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlLCBwbGVhc2UgcmVmZXIgdG8gW2d1aWRlbGluZXNdKENPTlRSSUJVVElORy5tZCkgYW5kIGEgbGlzdCBvZiBbb3BlbiB0YXNrc10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXM/cT1pcyUzQW9wZW4raXMlM0Fpc3N1ZStsYWJlbCUzQSUyMmhlbHArd2FudGVkJTIyKS4gOnN0YXI6OnN0YXI6OnN0YXI6Cgo6YmFuZ2Jhbmc6IFRvIG1pZ3JhdGUgZnJvbSBTd2FnZ2VyIENvZGVnZW4gdG8gT3BlbkFQSSBHZW5lcmF0b3IsIHBsZWFzZSByZWZlciB0byB0aGUgW21pZ3JhdGlvbiBndWlkZV0oZG9jcy9taWdyYXRpb24tZnJvbS1zd2FnZ2VyLWNvZGVnZW4ubWQpIDpiYW5nYmFuZzoKCjpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6IEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFtXaWtpIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Ivd2lraSkgYW5kIFtGQVFdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Ivd2lraS9GQVEpIDpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6Cgo6bm90ZWJvb2tfd2l0aF9kZWNvcmF0aXZlX2NvdmVyOiBUaGUgZUJvb2sgW0EgQmVnaW5uZXIncyBHdWlkZSB0byBDb2RlIEdlbmVyYXRpb24gZm9yIFJFU1QgQVBJc10oaHR0cHM6Ly9ndW0uY28vb3BlbmFwaV9nZW5lcmF0b3JfZWJvb2spIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYmVnaW5uZXJzIDpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6Cgo6d2FybmluZzogSWYgdGhlIE9wZW5BUEkgc3BlYywgdGVtcGxhdGVzIG9yIGFueSBpbnB1dCAoZS5nLiBvcHRpb25zLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMpIGlzIG9idGFpbmVkIGZyb20gYW4gdW50cnVzdGVkIHNvdXJjZSBvciBlbnZpcm9ubWVudCwgcGxlYXNlIG1ha2Ugc3VyZSB5b3UndmUgcmV2aWV3ZWQgdGhlc2UgaW5wdXRzIGJlZm9yZSB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSB0aGUgQVBJIGNsaWVudCwgc2VydmVyIHN0dWIgb3IgZG9jdW1lbnRhdGlvbiB0byBhdm9pZCBwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWVzIChlLmcuIFtjb2RlIGluamVjdGlvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29kZV9pbmplY3Rpb24pKS4gRm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgcGxlYXNlIGNvbnRhY3QgW3RlYW1Ab3BlbmFwaXRvb2xzLm9yZ10obWFpbHRvOnRlYW1Ab3BlbmFwaXRvb2xzLm9yZykuIDp3YXJuaW5nOgoKOmJhbmdiYW5nOiBCb3RoICJPcGVuQVBJIFRvb2xzIiAoaHR0cHM6Ly9PcGVuQVBJVG9vbHMub3JnIC0gdGhlIHBhcmVudCBvcmdhbml6YXRpb24gb2YgT3BlbkFQSSBHZW5lcmF0b3IpIGFuZCAiT3BlbkFQSSBHZW5lcmF0b3IiIGFyZSBub3QgYWZmaWxpYXRlZCB3aXRoIE9wZW5BUEkgSW5pdGlhdGl2ZSAoT0FJKSA6YmFuZ2Jhbmc6Cgo8L2Rpdj4KCiMjIFNwb25zb3JzCgpJZiB5b3UgZmluZCBPcGVuQVBJIEdlbmVyYXRvciB1c2VmdWwgZm9yIHdvcmssIHBsZWFzZSBjb25zaWRlciBhc2tpbmcgeW91ciBjb21wYW55IHRvIHN1cHBvcnQgdGhpcyBPcGVuIFNvdXJjZSBwcm9qZWN0IGJ5IFtiZWNvbWluZyBhIHNwb25zb3JdKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKS4gWW91IGNhbiBhbHNvIGluZGl2aWR1YWxseSBzcG9uc29yIHRoZSBwcm9qZWN0IGJ5IFtiZWNvbWluZyBhIGJhY2tlcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaV9nZW5lcmF0b3IpLgoKIyMjIyBUaGFuayB5b3UgdG8gb3VyIGJyb256ZSBzcG9uc29ycyEKClshW05hbVNvcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbmFtc29yLnBuZyldKGh0dHBzOi8vd3d3Lm5hbXNvci5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWyFbTGlnaHRCb3ddKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2xpZ2h0Ym93LnBuZyldKGh0dHBzOi8vd3d3LmxpZ2h0Ym93Lm5ldC8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RvY3NwcmluZy5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZG9jc3ByaW5nLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RhdGFkb2cucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2RhdGFkb2docS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy90aGFsZXMuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2NwbC50aGFsZXNncm91cC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9hcGlkZWNrLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYXBpZGVjay5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9wZXhhLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cucGV4YS5jb20uYXUvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9udW1hcnkucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5udW1hcnkuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvb25lc2lnbmFsLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cub25lc2lnbmFsLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3ZpcnR1YWxhbnNvZnR3YXJlLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cudmlydHVhbGFuc29mdHdhcmUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbWVyZ2VkZXYuanBlZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cubWVyZ2UuZGV2Lz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYnVya2VydC5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmJ1cmtlcnQuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZmluYm91cm5lLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuZmluYm91cm5lLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2J1bXBzaC5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vYnVtcC5zaC8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2JpbGV0by5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmJpbGV0by5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9iYWlyZXNkZXYucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5iYWlyZXNkZXYuY29tL3Nwb25zb3Jpbmctb3Blbi1zb3VyY2UtcHJvamVjdHMvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kbXRlY2guanBlZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuZG10ZWNoLmRlLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYWR5ZW4ucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2FkeWVuLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2Zvcm5leC5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZm9ybmV4LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2FsbG95YXV0b21hdGlvbi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vcnVuYWxsb3kuY29tL3NpZ251cD91dG1fc291cmNlPWdpdGh1YiZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj0xNTI0X29wZW5hcGlnZW5lcmF0b3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvc3NzdHdpdHRlci5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vc3NzdHdpdHRlci5jb20vP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvc3ZpeC5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LnN2aXguY29tLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9saXRzbGluay5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vbGl0c2xpbmsuY29tL3NlcnZpY2VzL2FydGlmaWNpYWwtaW50ZWxsaWdlbmNlP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2Rlc2lnbmxpLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9kZXNpZ25saS5jbz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9pdG0ucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL29wZW5zb3VyY2UubXVlbmNoZW4uZGU/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMva29uZy5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8va29uZ2hxLmNvbS9wcm9kdWN0cy9rb25nLWtvbm5lY3Q/dXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fc291cmNlPWdpdGh1YiZ1dG1fY2FtcGFpZ249cGxhdGZvcm0mdXRtX2NvbnRlbnQ9b3BlbmFwaS1nZW5lcmF0b3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvcm91dGU0bWUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3JvdXRlNG1lLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZG0ucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5kb3Rjb20tbW9uaXRvci5jb20vc3BvbnNvcmluZy1vcGVuLXNvdXJjZS1wcm9qZWN0cy8/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCgojIyMjIFRoYW5rIHlvdSBHb0RhZGR5IGZvciBzcG9uc29yaW5nIHRoZSBkb21haW4gbmFtZXMsIExpbm9kZSBmb3Igc3BvbnNvcmluZyB0aGUgVlBTLCBDaGVja2x5IGZvciBzcG9uc29yaW5nIHRoZSBBUEkgbW9uaXRvcmluZyBhbmQgR3JhZGxlIGZvciBzcG9uc29yaW5nIERldmVsb2NpdHkKCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZ29kYWRkeS5wbmciIHdpZHRoPSIxNTAiPl0oaHR0cHM6Ly93d3cuZ29kYWRkeS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWyFbTGlub2RlXShodHRwczovL3d3dy5saW5vZGUuY29tL21lZGlhL2ltYWdlcy9sb2dvcy9zdGFuZGFyZC9saWdodC9saW5vZGUtbG9nb19zdGFuZGFyZF9saWdodF9zbWFsbC5wbmcpXShodHRwczovL3d3dy5saW5vZGUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9lbmNyeXB0ZWQtdGJuMC5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym4lM0FBTmQ5R2NSQWhFWWFkVXlaWXpHVW90WmlTZFhrVk1xcUxHdW9oeWl4TGw0ZVVwVVY2cEFiVVVMTCIgd2lkdGg9IjE1MCI+XShodHRwczovL2NoZWNrbHlocS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL3VwbG9hZC53aWtpbWVkaWEub3JnL3dpa2lwZWRpYS9jb21tb25zL3RodW1iL2MvY2IvR3JhZGxlX2xvZ28ucG5nLzMyMHB4LUdyYWRsZV9sb2dvLnBuZyIgd2lkdGg9IjE1MCI+XShodHRwczovL2dyYWRsZS5vcmc/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQoKIyMgT3ZlcnZpZXcKCk9wZW5BUEkgR2VuZXJhdG9yIGFsbG93cyBnZW5lcmF0aW9uIG9mIEFQSSBjbGllbnQgbGlicmFyaWVzIChTREsgZ2VuZXJhdGlvbiksIHNlcnZlciBzdHVicywgIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gYXV0b21hdGljYWxseSBnaXZlbiBhbiBbT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgKGJvdGggMi4wIGFuZCAzLjAgYXJlIHN1cHBvcnRlZCkuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBsYW5ndWFnZXMvZnJhbWV3b3JrcyBhcmUgc3VwcG9ydGVkOgoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbmd1YWdlcy9GcmFtZXdvcmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICoqQVBJIGNsaWVudHMqKiAgICAgICAgICAgICAgICAgIHwgKipBY3Rpb25TY3JpcHQqKiwgKipBZGEqKiwgKipBcGV4KiosICoqQmFzaCoqLCAqKkMqKiwgKipDIyoqICgubmV0IDIuMCwgMy41IG9yIGxhdGVyLCAuTkVUIFN0YW5kYXJkIDEuMyAtIDIuMSwgLk5FVCBDb3JlIDMuMSwgLk5FVCA1LjAuIExpYnJhcmllczogUmVzdFNoYXJwLCBHZW5lcmljSG9zdCwgSHR0cENsaWVudCksICoqQysrKiogKEFyZHVpbm8sIGNwcC1yZXN0c2RrLCBRdDUsIFRpemVuLCBVbnJlYWwgRW5naW5lIDQpLCAqKkNsb2p1cmUqKiwgKipDcnlzdGFsKiosICoqRGFydCoqLCAqKkVsaXhpcioqLCAqKkVsbSoqLCAqKkVpZmZlbCoqLCAqKkVybGFuZyoqLCAqKkdvKiosICoqR3Jvb3Z5KiosICoqSGFza2VsbCoqIChodHRwLWNsaWVudCwgU2VydmFudCksICoqSmF2YSoqIChBcGFjaGUgSHR0cENsaWVudCA0LngsIEFwYWNoZSBIdHRwQ2xpZW50IDUueCwgSmVyc2V5Mi54LCBPa0h0dHAsIFJldHJvZml0MS54LCBSZXRyb2ZpdDIueCwgRmVpZ24sIFJlc3RUZW1wbGF0ZSwgUkVTVEVhc3ksIFZlcnR4LCBHb29nbGUgQVBJIENsaWVudCBMaWJyYXJ5IGZvciBKYXZhLCBSZXN0LWFzc3VyZWQsIFNwcmluZyA1IFdlYiBDbGllbnQsIFNwcmluZyA2IFJlc3RDbGllbnQsIE1pY3JvUHJvZmlsZSBSZXN0IENsaWVudCwgSGVsaWRvbiksICoqSmV0YnJhaW5zIEhUVFAgQ2xpZW50KiosICoqSnVsaWEqKiwgKiprNioqLCAqKktvdGxpbioqLCAqKkx1YSoqLCAqKk40SlMqKiwgKipOaW0qKiwgKipOb2RlLmpzL0phdmFTY3JpcHQqKiAoRVM1LCBFUzYsIEFuZ3VsYXJKUyB3aXRoIEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyIGFubm90YXRpb25zLCBGbG93IHR5cGVzLCBBcG9sbG8gR3JhcGhRTCBEYXRhU3RvcmUpLCAqKk9iamVjdGl2ZS1DKiosICoqT0NhbWwqKiwgKipQZXJsKiosICoqUEhQKiosICoqUG93ZXJTaGVsbCoqLCAqKlB5dGhvbioqLCAqKlIqKiwgKipSdWJ5KiosICoqUnVzdCoqIChoeXBlciwgcmVxd2VzdCwgcnVzdC1zZXJ2ZXIpLCAqKlNjYWxhKiogKGFra2EsIGh0dHA0cywgc2NhbGF6LCBzdHRwLCBzd2FnZ2VyLWFzeW5jLWh0dHBjbGllbnQsIHBla2tvKSwgKipTd2lmdCoqICgyLngsIDMueCwgNC54LCA1LngsIDYueCksICoqVHlwZXNjcmlwdCoqIChBbmd1bGFySlMsIEFuZ3VsYXIgKDkueCAtIDE4LngpLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgalF1ZXJ5LCBOZXN0anMsIE5vZGUsIHJlZHV4LXF1ZXJ5LCBSeGpzKSwgKipYb0pvKiosICoqWmFwaWVyKiogfAp8ICoqU2VydmVyIHN0dWJzKiogICAgICAgICAgICAgICAgIHwgKipBZGEqKiwgKipDIyoqIChBU1AuTkVUIENvcmUsIEF6dXJlIEZ1bmN0aW9ucyksICoqQysrKiogKFBpc3RhY2hlLCBSZXN0YmVkLCBRdDUgUUhUVFBFbmdpbmUpLCAqKkVybGFuZyoqLCAqKkYjKiogKEdpcmFmZmUpLCAqKkdvKiogKG5ldC9odHRwLCBHaW4sIEVjaG8pLCAqKkhhc2tlbGwqKiAoU2VydmFudCwgWWVzb2QpLCAqKkphdmEqKiAoTVNGNEosIFNwcmluZywgVW5kZXJ0b3csIEpBWC1SUzogQ0RJLCBDWEYsIEluZmxlY3RvciwgSmVyc2V5LCBSZXN0RWFzeSwgUGxheSBGcmFtZXdvcmssIFtQS01TVF0oaHR0cHM6Ly9naXRodWIuY29tL1Byb0thcm1hLUluYy9wa21zdC1nZXR0aW5nLXN0YXJ0ZWQtZXhhbXBsZXMpLCBbVmVydC54XShodHRwczovL3ZlcnR4LmlvLyksIFtBcGFjaGUgQ2FtZWxdKGh0dHBzOi8vY2FtZWwuYXBhY2hlLm9yZy8pLCBbSGVsaWRvbl0oaHR0cHM6Ly9oZWxpZG9uLmlvLykpLCAqKkp1bGlhKiosICoqS290bGluKiogKFNwcmluZyBCb290LCBbS3Rvcl0oaHR0cHM6Ly9naXRodWIuY29tL2t0b3Jpby9rdG9yKSwgW1ZlcnQueF0oaHR0cHM6Ly92ZXJ0eC5pby8pKSwgKipQSFAqKiAoW0ZsaWdodF0oaHR0cHM6Ly9kb2NzLmZsaWdodHBocC5jb20vKSwgTGFyYXZlbCwgTHVtZW4sIFtNZXp6aW8gKGZrYSBaZW5kIEV4cHJlc3NpdmUpXShodHRwczovL2dpdGh1Yi5jb20vbWV6emlvL21lenppbyksIFNsaW0sIFNpbGV4LCBbU3ltZm9ueV0oaHR0cHM6Ly9zeW1mb255LmNvbS8pKSwgKipQeXRob24qKiAoRmFzdEFQSSwgRmxhc2spLCAqKk5vZGVKUyoqLCAqKlJ1YnkqKiAoU2luYXRyYSwgUmFpbHM1KSwgKipSdXN0KiogKFtydXN0LXNlcnZlcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvZ2VuZXJhdG9ycy9ydXN0LXNlcnZlci8pKSwgKipTY2FsYSoqIChBa2thLCBbRmluY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5hZ2xlL2ZpbmNoKSwgW0xhZ29tXShodHRwczovL2dpdGh1Yi5jb20vbGFnb20vbGFnb20pLCBbUGxheV0oaHR0cHM6Ly93d3cucGxheWZyYW1ld29yay5jb20vKSwgW0Nhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb20tbGloYW95aS9jYXNrKSwgU2NhbGF0cmEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKkFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcnMqKiB8ICoqSFRNTCoqLCAqKkNvbmZsdWVuY2UgV2lraSoqLCAqKkFzY2lpZG9jKiosICoqTWFya2Rvd24qKiwgKipQbGFudFVNTCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipDb25maWd1cmF0aW9uIGZpbGVzKiogICAgICAgICAgfCBbKipBcGFjaGUyKipdKGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqT3RoZXJzKiogICAgICAgICAgICAgICAgICAgICAgIHwgKipHcmFwaFFMKiosICoqSk1ldGVyKiosICoqS3Rvcm0qKiwgKipNeVNRTCBTY2hlbWEqKiwgKipQb3N0bWFuIENvbGxlY3Rpb24qKiwgKipQcm90b2NvbCBCdWZmZXIqKiwgKipXU0RMKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgogIC0gW09wZW5BUEkgR2VuZXJhdG9yXSgjb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbT3ZlcnZpZXddKCNvdmVydmlldykKICAtIFtUYWJsZSBvZiBDb250ZW50c10oI3RhYmxlLW9mLWNvbnRlbnRzKQogIC0gWzEgLSBJbnN0YWxsYXRpb25dKCMxLS0taW5zdGFsbGF0aW9uKQogICAgLSBbMS4xIC0gQ29tcGF0aWJpbGl0eV0oIzExLS0tY29tcGF0aWJpbGl0eSkKICAgIC0gWzEuMiAtIEFydGlmYWN0cyBvbiBNYXZlbiBDZW50cmFsXSgjMTItLS1hcnRpZmFjdHMtb24tbWF2ZW4tY2VudHJhbCkKICAgIC0gWzEuMyAtIERvd25sb2FkIEpBUl0oIzEzLS0tZG93bmxvYWQtamFyKQogICAgLSBbMS40IC0gQnVpbGQgUHJvamVjdHNdKCMxNC0tLWJ1aWxkLXByb2plY3RzKQogICAgLSBbMS41IC0gSG9tZWJyZXddKCMxNS0tLWhvbWVicmV3KQogICAgLSBbMS42IC0gRG9ja2VyXSgjMTYtLS1kb2NrZXIpCiAgICAtIFsxLjcgLSBOUE1dKCMxNy0tLW5wbSkKICAtIFsyIC0gR2V0dGluZyBTdGFydGVkXSgjMi0tLWdldHRpbmctc3RhcnRlZCkKICAtIFszIC0gVXNhZ2VdKCMzLS0tdXNhZ2UpCiAgICAtIFszLjEgLSBDdXN0b21pemF0aW9uXSgjMzEtLS1jdXN0b21pemF0aW9uKQogICAgLSBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb25dKCMzMi0tLXdvcmtmbG93LWludGVncmF0aW9uLW1hdmVuLWdyYWRsZS1naXRodWItY2ljZCkKICAgIC0gWzMuMyAtIE9ubGluZSBHZW5lcmF0b3JzXSgjMzMtLS1vbmxpbmUtb3BlbmFwaS1nZW5lcmF0b3IpCiAgICAtIFszLjQgLSBMaWNlbnNlIEluZm9ybWF0aW9uIG9uIEdlbmVyYXRlZCBDb2RlXSgjMzQtLS1saWNlbnNlLWluZm9ybWF0aW9uLW9uLWdlbmVyYXRlZC1jb2RlKQogICAgLSBbMy41IC0gSURFIEludGVncmF0aW9uXSgjMzUtLS1pZGUtaW50ZWdyYXRpb24pCiAgLSBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oIzQtLS1jb21wYW5pZXNwcm9qZWN0cy11c2luZy1vcGVuYXBpLWdlbmVyYXRvcikKICAtIFs1IC0gUHJlc2VudGF0aW9ucy9WaWRlb3MvVHV0b3JpYWxzL0Jvb2tzXSgjNS0tLXByZXNlbnRhdGlvbnN2aWRlb3N0dXRvcmlhbHNib29rcykKICAtIFs2IC0gQWJvdXQgVXNdKCM2LS0tYWJvdXQtdXMpCiAgICAtIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCM2MS0tLW9wZW5hcGktZ2VuZXJhdG9yLWNvcmUtdGVhbSkKICAgIC0gWzYuMiAtIE9wZW5BUEkgR2VuZXJhdG9yIFRlY2huaWNhbCBDb21taXR0ZWVdKCM2Mi0tLW9wZW5hcGktZ2VuZXJhdG9yLXRlY2huaWNhbC1jb21taXR0ZWUpCiAgICAtIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjNjMtLS1oaXN0b3J5LW9mLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzcgLSBMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpCgojIyBbMSAtIEluc3RhbGxhdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjdGFibGUtb2YtY29udGVudHMpCgpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyB1bmRlcmdvbmUgMyByZXZpc2lvbnMgc2luY2UgaW5pdGlhbCBjcmVhdGlvbiBpbiAyMDEwLiAgVGhlIG9wZW5hcGktZ2VuZXJhdG9yIHByb2plY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJpbGl0aWVzIHdpdGggdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKCnwgT3BlbkFQSSBHZW5lcmF0b3IgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVsZWFzZSBEYXRlIHwgTm90ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgNy4xMC4wICh1cGNvbWluZyBtaW5vciByZWxlYXNlKSBbU05BUFNIT1RdKGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZy9jb250ZW50L3JlcG9zaXRvcmllcy9zbmFwc2hvdHMvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy4xMC4wLVNOQVBTSE9ULykgfCAwNy4xMS4yMDI0ICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs3LjkuMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuOC4wKSAobGF0ZXN0IHN0YWJsZSByZWxlYXNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA3LjEwLjIwMjQgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzYuNi4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ni42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEuMDUuMjAyMyAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNS40LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y1LjQuMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMS4wMS4yMDIyICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs0LjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjQuMy4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA2LjA1LjIwMjAgICB8IFBhdGNoIHJlbGVhc2UgKGVuaGFuY2VtZW50cywgYnVnIGZpeGVzLCBldGMpICAgICAgICAgICAgICAgICAgICAgICB8CgpPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eTogMS4wLCAxLjEsIDEuMiwgMi4wLCAzLjAsIDMuMSAoYmV0YSBzdXBwb3J0KQoKKFdlIGRvIG5vdCBwdWJsaXNoIGRhaWx5L25pZ2h0bHkgYnVpbGQuIFBsZWFzZSB1c2UgU05BUFNIT1QgaW5zdGVhZCkKCkZvciBvbGQgcmVsZWFzZXMsIHBsZWFzZSByZWZlciB0byB0aGUgWyoqUmVsZWFzZSoqXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzKSBwYWdlLgoKRm9yIGRlY29taXNzaW9uZWQgZ2VuZXJhdG9ycy9saWJyYXJpZXMvZnJhbWV3b3JrcywgcGxlYXNlIHJlZmVyIHRvIFt0aGUgIkRlY29tbWlzc2lvbiIgbGFiZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9bGFiZWwlM0FEZWNvbW1pc3Npb24raXMlM0FtZXJnZWQrKSBpbiB0aGUgcHVsbCByZXF1ZXN0IHBhZ2UuCgojIyBbMS4yIC0gQXJ0aWZhY3RzIG9uIE1hdmVuIENlbnRyYWxdKCN0YWJsZS1vZi1jb250ZW50cykKCllvdSBjYW4gZmluZCBvdXIgcmVsZWFzZWQgYXJ0aWZhY3RzIG9uIG1hdmVuIGNlbnRyYWw6CgoqKkNvcmU6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipDbGk6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWNsaTwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgClNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItY2xpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipNYXZlbiBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCiogU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW5dKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi9SRUFETUUubWQpCgoqKkdyYWRsZSBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoqIFNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4vUkVBRE1FLmFkb2MpCgojIyMgWzEuMyAtIERvd25sb2FkIEpBUl0oI3RhYmxlLW9mLWNvbnRlbnRzKQo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KSWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24sIHlvdSBjYW4gZ3JhYiBpdCBkaXJlY3RseSBmcm9tIE1hdmVuLm9yZyAoSmF2YSAxMSBydW50aW1lIGF0IGEgbWluaW11bSk6CgpKQVIgbG9jYXRpb246IGBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy45LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOS4wLmphcmAKCkZvciAqKk1hYy9MaW51eCoqIHVzZXJzOgpgYGBzaAp3Z2V0IGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjkuMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy45LjAuamFyIC1PIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIKYGBgCgpGb3IgKipXaW5kb3dzKiogdXNlcnMsIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCBbd2dldF0oaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy93Z2V0Lmh0bSkgb3IgeW91IGNhbiB1c2UgSW52b2tlLVdlYlJlcXVlc3QgaW4gUG93ZXJTaGVsbCAoMy4wKyksIGUuZy4KYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1PdXRGaWxlIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOS4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjkuMC5qYXIKYGBgCgpBZnRlciBkb3dubG9hZGluZyB0aGUgSkFSLCBydW4gYGphdmEgLWphciBvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGhlbHBgIHRvIHNob3cgdGhlIHVzYWdlLgoKRm9yIE1hYyB1c2VycywgcGxlYXNlIG1ha2Ugc3VyZSBKYXZhIDExIGlzIGluc3RhbGxlZCAoVGlwczogcnVuIGBqYXZhIC12ZXJzaW9uYCB0byBjaGVjayB0aGUgdmVyc2lvbiksIGFuZCBleHBvcnQgYEpBVkFfSE9NRWAgaW4gb3JkZXIgdG8gdXNlIHRoZSBzdXBwb3J0ZWQgSmF2YSB2ZXJzaW9uOgpgYGBzaApleHBvcnQgSkFWQV9IT01FPWAvdXNyL2xpYmV4ZWMvamF2YV9ob21lIC12IDEuMTFgCmV4cG9ydCBQQVRIPSR7SkFWQV9IT01FfS9iaW46JFBBVEgKYGBgCgo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CiMjIyBMYXVuY2hlciBTY3JpcHQKCk9uZSBkb3duc2lkZSB0byBtYW51YWwgamFyIGRvd25sb2FkcyBpcyB0aGF0IHlvdSBkb24ndCBrZWVwIHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24uIFdlIGhhdmUgYSBCYXNoIGxhdW5jaGVyIHNjcmlwdCBhdCBbYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLmNsaS5zaF0oLi9iaW4vdXRpbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLnNoKSB3aGljaCByZXNvbHZlcyB0aGlzIGlzc3VlLgoKVG8gaW5zdGFsbCB0aGUgbGF1bmNoZXIgc2NyaXB0LCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgc2NyaXB0IHRvIGEgbG9jYXRpb24gb24geW91ciBwYXRoIGFuZCBtYWtlIHRoZSBzY3JpcHQgZXhlY3V0YWJsZS4KCkFuIGV4YW1wbGUgb2Ygc2V0dGluZyB0aGlzIHVwIChOT1RFOiBBbHdheXMgZXZhbHVhdGUgc2NyaXB0cyBjdXJsZWQgZnJvbSBleHRlcm5hbCBzeXN0ZW1zIGJlZm9yZSBleGVjdXRpbmcgdGhlbSkuCgpgYGAKbWtkaXIgLXAgfi9iaW4vb3BlbmFwaXRvb2xzCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS5zaCA+IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKY2htb2QgdSt4IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKZXhwb3J0IFBBVEg9JFBBVEg6fi9iaW4vb3BlbmFwaXRvb2xzLwpgYGAKCk5vdywgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgaXMgImluc3RhbGxlZCIuIE9uIGludm9jYXRpb24sIGl0IHdpbGwgcXVlcnkgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGZvciB0aGUgbW9zdCByZWNlbnRseSByZWxlYXNlZCB2ZXJzaW9uLiBJZiB0aGlzIG1hdGNoZXMgdGhlIGxhc3QgZG93bmxvYWRlZCBqYXIsCml0IHdpbGwgZXhlY3V0ZSBhcyBub3JtYWwuIElmIGEgbmV3ZXIgdmVyc2lvbiBpcyBmb3VuZCwgdGhlIHNjcmlwdCB3aWxsIGRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZSBhbmQgZXhlY3V0ZSBpdC4KCklmIHlvdSBuZWVkIHRvIGludm9rZSBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBnZW5lcmF0b3IsIHlvdSBjYW4gZGVmaW5lIHRoZSB2YXJpYWJsZSBgT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTmAgZWl0aGVyIGFkIGhvYyBvciBnbG9iYWxseS4gWW91IGNhbiBleHBvcnQgdGhpcyB2YXJpYWJsZSBpZiB5b3UnZCBsaWtlIHRvIHBlcnNpc3QgYSBzcGVjaWZpYyByZWxlYXNlIHZlcnNpb24uCgpFeGFtcGxlczoKCmBgYAojIEV4ZWN1dGUgbGF0ZXN0IHJlbGVhc2VkIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgoKIyBFeGVjdXRlIHZlcnNpb24gNC4xLjAgZm9yIHRoZSBjdXJyZW50IGludm9jYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMS4wLVNOQVBTSE9UIGZvciB0aGUgY3VycmVudCBpbnZvY2F0aW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAtU05BUFNIT1Qgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMC4yIGZvciBldmVyeSBpbnZvY2F0aW9uIGluIHRoZSBjdXJyZW50IHNoZWxsIHNlc3Npb24KZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyA0LjAuMgpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIGFsc28gNC4wLjIKCiMgVG8gImluc3RhbGwiIGEgc3BlY2lmaWMgdmVyc2lvbiwgc2V0IHRoZSB2YXJpYWJsZSBpbiAuYmFzaHJjLy5iYXNoX3Byb2ZpbGUKZWNobyAiZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIiID4+IH4vLmJhc2hyYwpzb3VyY2Ugfi8uYmFzaHJjCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgYWx3YXlzIDQuMC4yLCB1bmxlc3MgYW55IG9mIHRoZSBhYm92ZSBvdmVycmlkZXMgYXJlIGRvbmUgYWQgaG9jCmBgYAoKIyMjIFsxLjQgLSBCdWlsZCBQcm9qZWN0c10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gYnVpbGQgZnJvbSBzb3VyY2UsIHlvdSBuZWVkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgaW4geW91ciBgJFBBVEg6YAoKKiBbSmF2YSAxMV0oaHR0cHM6Ly9hZG9wdGl1bS5uZXQvKQoKKiBbQXBhY2hlIE1hdmVuIDMuOC44IG9yIGdyZWF0ZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy8pIChvcHRpb25hbCkKCkFmdGVyIGNsb25pbmcgdGhlIHByb2plY3QsIHlvdSBjYW4gYnVpbGQgaXQgZnJvbSBzb3VyY2UgdXNpbmcgW21hdmVuIHdyYXBwZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy93cmFwcGVyLyk6CgotIExpbnV4OiBgLi9tdm53IGNsZWFuIGluc3RhbGxgCi0gV2luZG93czogYG12bncuY21kIGNsZWFuIGluc3RhbGxgCgojIyMjIE5peCB1c2VycwoKSWYgeW91J3JlIGEgbml4IHVzZXIsIHlvdSBjYW4gZW50ZXIgT3BlbkFQSSBHZW5lcmF0b3Igc2hlbGwsIGJ5IHR5cGluZzoKYGBgc2gKbml4IGRldmVsb3AKYGBgCkl0IHdpbGwgZW50ZXIgYSBzaGVsbCB3aXRoIEphdmEgMTEgaW5zdGFsbGVkLgoKRGlyZW52IHN1cHBvcnRzIGF1dG9tYXRpY2FsbHkgbG9hZGluZyBvZiB0aGUgbml4IGRldmVsb3BlciBzaGVsbCwgc28gaWYgeW91J3JlIHVzaW5nIGRpcmVudiB0b28sIHR5cGU6CmBgYHNoCmRpcmVudiBhbGxvdwpgYGAKYW5kIGhhdmUgYGphdmFgIGFuZCBgbXZuYCBzZXQgdXAgd2l0aCBjb3JyZWN0IHZlcnNpb25zIGVhY2ggdGltZSB5b3UgZW50ZXIgcHJvamVjdCBkaXJlY3RvcnkuCgpUaGUgZGVmYXVsdCBidWlsZCBjb250YWlucyBtaW5pbWFsIHN0YXRpYyBhbmFseXNpcyAodmlhIENoZWNrU3R5bGUpLiBUbyBydW4geW91ciBidWlsZCB3aXRoIFBNRCBhbmQgU3BvdGJ1Z3MsIHVzZSB0aGUgYHN0YXRpYy1hbmFseXNpc2AgcHJvZmlsZToKCi0gTGludXg6IGAuL212bncgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKLSBXaW5kb3dzOiBgbXZudy5jbWQgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKCiMjIyBbMS41IC0gSG9tZWJyZXddKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGluc3RhbGwsIHJ1biBgYnJldyBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yYAoKSGVyZSBpcyBhbiBleGFtcGxlIHVzYWdlIHRvIGdlbmVyYXRlIGEgUnVieSBjbGllbnQ6CmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHJ1YnkgLW8gL3RtcC90ZXN0LwpgYGAKClRvIHJlaW5zdGFsbCB3aXRoIHRoZSBsYXRlc3QgbWFzdGVyLCBydW4gYGJyZXcgdW5pbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yICYmIGJyZXcgaW5zdGFsbCAtLUhFQUQgb3BlbmFwaS1nZW5lcmF0b3JgCgpUbyBpbnN0YWxsIE9wZW5KREsgKHByZS1yZXF1aXNpdGVzKSwgcGxlYXNlIHJ1bgpgYGBzaApicmV3IHRhcCBBZG9wdE9wZW5KREsvb3BlbmpkawpicmV3IGluc3RhbGwgLS1jYXNrIGFkb3B0b3BlbmpkazExCmV4cG9ydCBKQVZBX0hPTUU9YC91c3IvbGliZXhlYy9qYXZhX2hvbWUgLXYgMS4xMWAKYGBgCgpvciBkb3dubG9hZCBpbnN0YWxsZXIgdmlhIGh0dHBzOi8vYWRvcHRpdW0ubmV0LwoKVG8gaW5zdGFsbCBNYXZlbiAob3B0aW9uYWwpLCBwbGVhc2UgcnVuCmBgYHNoCmJyZXcgaW5zdGFsbCBtYXZlbgpgYGAKCiMjIyBbMS42IC0gRG9ja2VyXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMjIFB1YmxpYyBQcmUtYnVpbHQgRG9ja2VyIGltYWdlcwoKIC0gW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvKSAob2ZmaWNpYWwgQ0xJKQogLSBbaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUvXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW9ubGluZS8pIChvZmZpY2lhbCB3ZWIgc2VydmljZSkKCgojIyMjIE9wZW5BUEkgR2VuZXJhdG9yIENMSSBEb2NrZXIgSW1hZ2UKClRoZSBPcGVuQVBJIEdlbmVyYXRvciBpbWFnZSBhY3RzIGFzIGEgc3RhbmRhbG9uZSBleGVjdXRhYmxlLiBJdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBpbnN0YWxsaW5nIHZpYSBob21lYnJldywgb3IgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB1bmFibGUgdG8gaW5zdGFsbCBKYXZhIG9yIHVwZ3JhZGUgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLgoKVG8gZ2VuZXJhdGUgY29kZSB3aXRoIHRoaXMgaW1hZ2UsIHlvdSdsbCBuZWVkIHRvIG1vdW50IGEgbG9jYWwgbG9jYXRpb24gYXMgYSB2b2x1bWUuCgpFeGFtcGxlOgoKYGBgc2gKZG9ja2VyIHJ1biAtLXJtIC12ICIke1BXRH06L2xvY2FsIiBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIFwKICAgIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIGdvIFwKICAgIC1vIC9sb2NhbC9vdXQvZ28KYGBgCgpUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBiZSBsb2NhdGVkIHVuZGVyIGAuL291dC9nb2AgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKIyMjIyBPcGVuQVBJIEdlbmVyYXRvciBPbmxpbmUgRG9ja2VyIEltYWdlCgpUaGUgb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lIGltYWdlIGNhbiBhY3QgYXMgYSBzZWxmLWhvc3RlZCB3ZWIgYXBwbGljYXRpb24gYW5kIEFQSSBmb3IgZ2VuZXJhdGluZyBjb2RlLiBUaGlzIGNvbnRhaW5lciBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYSBDSSBwaXBlbGluZSwgYW5kIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBIVFRQIHJlcXVlc3RzIGFuZCBzb21lIGRvY2tlciBvcmNoZXN0cmF0aW9uIHRvIGFjY2VzcyBnZW5lcmF0ZWQgY29kZS4KCkV4YW1wbGUgdXNhZ2U6CgpgYGBzaAojIFN0YXJ0IGNvbnRhaW5lciBhdCBwb3J0IDg4ODggYW5kIHNhdmUgdGhlIGNvbnRhaW5lciBpZAo+IENJRD0kKGRvY2tlciBydW4gLWQgLXAgODg4ODo4MDgwIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUpCgojIGFsbG93IGZvciBzdGFydHVwCj4gc2xlZXAgMTAKCiMgR2V0IHRoZSBJUCBvZiB0aGUgcnVubmluZyBjb250YWluZXIgKG9wdGlvbmFsKQpHRU5fSVA9JChkb2NrZXIgaW5zcGVjdCAtLWZvcm1hdCAne3suTmV0d29ya1NldHRpbmdzLklQQWRkcmVzc319JyAgJENJRCkKCiMgRXhlY3V0ZSBhbiBIVFRQIHJlcXVlc3QgdG8gZ2VuZXJhdGUgYSBSdWJ5IGNsaWVudAo+IGN1cmwgLVggUE9TVCAtLWhlYWRlciAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAtLWhlYWRlciAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJyBcCi1kICd7Im9wZW5BUElVcmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwifScgXAonaHR0cDovL2xvY2FsaG9zdDo4ODg4L2FwaS9nZW4vY2xpZW50cy9ydWJ5JwoKeyJjb2RlIjoiYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4IiwibGluayI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOCJ9CgojIERvd25sb2FkIHRoZSBnZW5lcmF0ZWQgemlwIGZpbGUKPiB3Z2V0IGh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBVbnppcCB0aGUgZmlsZQo+IHVuemlwIGMyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBTaHV0ZG93biB0aGUgb3BlbmFwaSBnZW5lcmF0b3IgaW1hZ2UKPiBkb2NrZXIgc3RvcCAkQ0lEICYmIGRvY2tlciBybSAkQ0lECmBgYAoKIyMjIyBEZXZlbG9wbWVudCBpbiBkb2NrZXIKCllvdSBjYW4gdXNlIGBydW4taW4tZG9ja2VyLnNoYCB0byBkbyBhbGwgZGV2ZWxvcG1lbnQuIFRoaXMgc2NyaXB0IG1hcHMgeW91ciBsb2NhbCByZXBvc2l0b3J5IHRvIGAvZ2VuYAppbiB0aGUgZG9ja2VyIGNvbnRhaW5lci4gSXQgYWxzbyBtYXBzIGB+Ly5tMi9yZXBvc2l0b3J5YCB0byB0aGUgYXBwcm9wcmlhdGUgY29udGFpbmVyIGxvY2F0aW9uLgoKVG8gZXhlY3V0ZSBgbXZuIHBhY2thZ2VgOgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9ydW4taW4tZG9ja2VyLnNoIG12biBwYWNrYWdlCmBgYAoKQnVpbGQgYXJ0aWZhY3RzIGFyZSBub3cgYWNjZXNzaWJsZSBpbiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LgoKT25jZSBidWlsdCwgYHJ1bi1pbi1kb2NrZXIuc2hgIHdpbGwgYWN0IGFzIGFuIGV4ZWN1dGFibGUgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS4gVG8gZ2VuZXJhdGUgY29kZSwgeW91J2xsIG5lZWQgdG8gb3V0cHV0IHRvIGEgZGlyZWN0b3J5IHVuZGVyIGAvZ2VuYCAoZS5nLiBgL2dlbi9vdXRgKS4gRm9yIGV4YW1wbGU6CgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggaGVscCAjIEV4ZWN1dGVzICdoZWxwJyBjb21tYW5kIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkKLi9ydW4taW4tZG9ja2VyLnNoIGxpc3QgIyBFeGVjdXRlcyAnbGlzdCcgY29tbWFuZCBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpCi4vcnVuLWluLWRvY2tlci5zaCBnZW5lcmF0ZSAtaSBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgICAtZyBnbyAtbyAvZ2VuL291dC9nby1wZXRzdG9yZSAtcCBwYWNrYWdlTmFtZT1wZXRzdG9yZSAjIGdlbmVyYXRlcyBnbyBjbGllbnQsIG91dHB1dHMgbG9jYWxseSB0byAuL291dC9nby1wZXRzdG9yZQpgYGAKCiMjIyMjIFRyb3VibGVzaG9vdGluZwoKSWYgYW4gZXJyb3IgbGlrZSB0aGlzIG9jY3VycywganVzdCBleGVjdXRlIHRoZSAqKi4vbXZudyBjbGVhbiBpbnN0YWxsIC1VKiogY29tbWFuZDoKCj4gb3JnLmFwYWNoZS5tYXZlbi5saWZlY3ljbGUuTGlmZWN5Y2xlRXhlY3V0aW9uRXhjZXB0aW9uOiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3QgKGRlZmF1bHQtdGVzdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvcjogQSB0eXBlIGluY29tcGF0aWJpbGl0eSBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zOm1hdmVuLXN1cmVmaXJlLXBsdWdpbjoyLjE5LjE6dGVzdDogamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciBjYW5ub3QgYmUgY2FzdCB0byBqYXZhLmlvLklPRXhjZXB0aW9uCgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggLi9tdm53IGNsZWFuIGluc3RhbGwgLVUKYGBgCgo+IEZhaWxlZCB0byBleGVjdXRlIGdvYWwgb3JnLmZvcnRhc29mdDpncmFkbGUtbWF2ZW4tcGx1Z2luOjEuMC44Omludm9rZSAoZGVmYXVsdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luLW12bi13cmFwcGVyOiBvcmcuZ3JhZGxlLnRvb2xpbmcuQnVpbGRFeGNlcHRpb246IENvdWxkIG5vdCBleGVjdXRlIGJ1aWxkIHVzaW5nIEdyYWRsZSBkaXN0cmlidXRpb24gJ2h0dHBzOi8vc2VydmljZXMuZ3JhZGxlLm9yZy9kaXN0cmlidXRpb25zL2dyYWRsZS00LjctYmluLnppcCcKClJpZ2h0IG5vdzogbm8gc29sdXRpb24gZm9yIHRoaXMgb25lIDp8CgojIyMjIFJ1biBEb2NrZXIgaW4gVmFncmFudApQcmVyZXF1aXNpdGU6IGluc3RhbGwgW1ZhZ3JhbnRdKGh0dHBzOi8vd3d3LnZhZ3JhbnR1cC5jb20vZG93bmxvYWRzLmh0bWwpIGFuZCBbVmlydHVhbEJveF0oaHR0cHM6Ly93d3cudmlydHVhbGJveC5vcmcvd2lraS9Eb3dubG9hZHMpLgogYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IuZ2l0CmNkIG9wZW5hcGktZ2VuZXJhdG9yCnZhZ3JhbnQgdXAKdmFncmFudCBzc2gKY2QgL3ZhZ3JhbnQKLi9ydW4taW4tZG9ja2VyLnNoIC4vbXZudyBwYWNrYWdlCmBgYAoKIyMjIFsxLjcgLSBOUE1dKCN0YWJsZS1vZi1jb250ZW50cykKClRoZXJlIGlzIGFsc28gYW4gW05QTSBwYWNrYWdlIHdyYXBwZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSBhdmFpbGFibGUgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMgKGUuZy4gTGludXgsIE1hYywgV2luZG93cykuIChKVk0gaXMgc3RpbGwgcmVxdWlyZWQpClBsZWFzZSBzZWUgdGhlIFtwcm9qZWN0J3MgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgdGhlcmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpJbnN0YWxsIGl0IGdsb2JhbGx5IHRvIGdldCB0aGUgQ0xJIGF2YWlsYWJsZSBvbiB0aGUgY29tbWFuZCBsaW5lOgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLWcKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KYGBgCgo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KVG8gdXNlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiAib3BlbmFwaS1nZW5lcmF0b3ItY2xpIgoKYGBgc2gKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24tbWFuYWdlciBzZXQgNy45LjAKYGBgCgpPciBpbnN0YWxsIGl0IGFzIGRldi1kZXBlbmRlbmN5OgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLUQKYGBgCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KCllvdSBjYW4gdXNlIFtsb2NhbGx5IGJ1aWx0IEpBUnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpP3RhYj1yZWFkbWUtb3YtZmlsZSN1c2UtbG9jYWxseS1idWlsdC1qYXIpIG9yIFtgU05BUFNIT1RgIHZlcnNpb25zXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaT90YWI9cmVhZG1lLW92LWZpbGUjdXNlLW5pZ2h0bHktc25hcHNob3QtYnVpbGQpIGFzIHdlbGwuCgojIyBbMiAtIEdldHRpbmcgU3RhcnRlZF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gZ2VuZXJhdGUgYSBQSFAgY2xpZW50IGZvciBbcGV0c3RvcmUueWFtbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpLCBwbGVhc2UgcnVuIHRoZSBmb2xsb3dpbmcKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9tdm53IGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAtZyBwaHAgXAogICAtbyAvdmFyL3RtcC9waHBfYXBpX2NsaWVudApgYGAKKGlmIHlvdSdyZSBvbiBXaW5kb3dzLCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aCBgamF2YSAtamFyIG1vZHVsZXNcb3BlbmFwaS1nZW5lcmF0b3ItY2xpXHRhcmdldFxvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHBocCAtbyBjOlx0ZW1wXHBocF9hcGlfY2xpZW50YCkKCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpZb3UgY2FuIGFsc28gZG93bmxvYWQgdGhlIEpBUiAobGF0ZXN0IHJlbGVhc2UpIGRpcmVjdGx5IGZyb20gW21hdmVuLm9yZ10oaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOS4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjkuMC5qYXIpCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KClRvIGdldCBhIGxpc3Qgb2YgKipnZW5lcmFsKiogb3B0aW9ucyBhdmFpbGFibGUsIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBoZWxwIGdlbmVyYXRlYAoKVG8gZ2V0IGEgbGlzdCBvZiBQSFAgc3BlY2lmaWVkIG9wdGlvbnMgKHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGdlbmVyYXRvciB3aXRoIGEgY29uZmlnIGZpbGUgdmlhIHRoZSBgLWNgIG9wdGlvbiksIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBjb25maWctaGVscCAtZyBwaHBgCgojIyBbMyAtIFVzYWdlXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMgVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnkKWW91IGNhbiBidWlsZCBhIGNsaWVudCBhZ2FpbnN0IHRoZSBbUGV0c3RvcmUgQVBJXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCkgYXMgZm9sbG93czoKCmBgYHNoCi4vYmluL2dlbmVyYXRlLXNhbXBsZXMuc2ggLi9iaW4vY29uZmlncy9qYXZhLW9raHR0cC1nc29uLnlhbWwKYGBgCgooT24gV2luZG93cywgcGxlYXNlIGluc3RhbGwgW0dJVCBCYXNoIGZvciBXaW5kb3dzXShodHRwczovL2dpdGZvcndpbmRvd3Mub3JnLykgdG8gcnVuIHRoZSBjb21tYW5kIGFib3ZlKQoKVGhpcyBzY3JpcHQgdXNlcyB0aGUgZGVmYXVsdCBsaWJyYXJ5LCB3aGljaCBpcyBgb2todHRwLWdzb25gLiBJdCB3aWxsIHJ1biB0aGUgZ2VuZXJhdG9yIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgc2gKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgLWcgamF2YSBcCiAgLXQgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvSmF2YSBcCiAgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgYXJ0aWZhY3RJZD1wZXRzdG9yZS1va2h0dHAtZ3NvbixoaWRlR2VuZXJhdGlvblRpbWVzdGFtcD10cnVlIFwKICAtbyBzYW1wbGVzL2NsaWVudC9wZXRzdG9yZS9qYXZhL29raHR0cC1nc29uCmBgYAoKd2l0aCBhIG51bWJlciBvZiBvcHRpb25zLiBbVGhlIGphdmEgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBoZXJlLl0oZG9jcy9nZW5lcmF0b3JzL2phdmEubWQpCgpZb3UgY2FuIGFsc28gZ2V0IHRoZSBvcHRpb25zIHdpdGggdGhlIGBoZWxwIGdlbmVyYXRlYCBjb21tYW5kIChiZWxvdyBvbmx5IHNob3dzIHBhcnRpYWwgcmVzdWx0cyk6CgpgYGAKTkFNRQogICAgICAgIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtIEdlbmVyYXRlIGNvZGUgd2l0aCB0aGUgc3BlY2lmaWVkCiAgICAgICAgZ2VuZXJhdG9yLgoKU1lOT1BTSVMKICAgICAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUKICAgICAgICAgICAgICAgIFsoLWEgPGF1dGhvcml6YXRpb24+IHwgLS1hdXRoIDxhdXRob3JpemF0aW9uPildCiAgICAgICAgICAgICAgICBbLS1hcGktbmFtZS1zdWZmaXggPGFwaSBuYW1lIHN1ZmZpeD5dIFstLWFwaS1wYWNrYWdlIDxhcGkgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbLS1hcnRpZmFjdC1pZCA8YXJ0aWZhY3QgaWQ+XSBbLS1hcnRpZmFjdC12ZXJzaW9uIDxhcnRpZmFjdCB2ZXJzaW9uPl0KICAgICAgICAgICAgICAgIFsoLWMgPGNvbmZpZ3VyYXRpb24gZmlsZT4gfCAtLWNvbmZpZyA8Y29uZmlndXJhdGlvbiBmaWxlPildIFstLWRyeS1ydW5dCiAgICAgICAgICAgICAgICBbKC1lIDx0ZW1wbGF0aW5nIGVuZ2luZT4gfCAtLWVuZ2luZSA8dGVtcGxhdGluZyBlbmdpbmU+KV0KICAgICAgICAgICAgICAgIFstLWVuYWJsZS1wb3N0LXByb2Nlc3MtZmlsZV0KICAgICAgICAgICAgICAgIFsoLWcgPGdlbmVyYXRvciBuYW1lPiB8IC0tZ2VuZXJhdG9yLW5hbWUgPGdlbmVyYXRvciBuYW1lPildCiAgICAgICAgICAgICAgICBbLS1nZW5lcmF0ZS1hbGlhcy1hcy1tb2RlbF0gWy0tZ2l0LWhvc3QgPGdpdCBob3N0Pl0KICAgICAgICAgICAgICAgIFstLWdpdC1yZXBvLWlkIDxnaXQgcmVwbyBpZD5dIFstLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD5dCiAgICAgICAgICAgICAgICBbLS1nbG9iYWwtcHJvcGVydHkgPGdsb2JhbCBwcm9wZXJ0aWVzPi4uLl0gWy0tZ3JvdXAtaWQgPGdyb3VwIGlkPl0KICAgICAgICAgICAgICAgIFstLWh0dHAtdXNlci1hZ2VudCA8aHR0cCB1c2VyIGFnZW50Pl0KICAgICAgICAgICAgICAgIFsoLWkgPHNwZWMgZmlsZT4gfCAtLWlucHV0LXNwZWMgPHNwZWMgZmlsZT4pXQogICAgICAgICAgICAgICAgWy0taWdub3JlLWZpbGUtb3ZlcnJpZGUgPGlnbm9yZSBmaWxlIG92ZXJyaWRlIGxvY2F0aW9uPl0KICAgICAgICAgICAgICAgIFstLWltcG9ydC1tYXBwaW5ncyA8aW1wb3J0IG1hcHBpbmdzPi4uLl0KICAgICAgICAgICAgICAgIFstLWluc3RhbnRpYXRpb24tdHlwZXMgPGluc3RhbnRpYXRpb24gdHlwZXM+Li4uXQogICAgICAgICAgICAgICAgWy0taW52b2tlci1wYWNrYWdlIDxpbnZva2VyIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWy0tbGFuZ3VhZ2Utc3BlY2lmaWMtcHJpbWl0aXZlcyA8bGFuZ3VhZ2Ugc3BlY2lmaWMgcHJpbWl0aXZlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1sZWdhY3ktZGlzY3JpbWluYXRvci1iZWhhdmlvcl0gWy0tbGlicmFyeSA8bGlicmFyeT5dCiAgICAgICAgICAgICAgICBbLS1sb2ctdG8tc3RkZXJyXSBbLS1taW5pbWFsLXVwZGF0ZV0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtcHJlZml4IDxtb2RlbCBuYW1lIHByZWZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1uYW1lLXN1ZmZpeCA8bW9kZWwgbmFtZSBzdWZmaXg+XQogICAgICAgICAgICAgICAgWy0tbW9kZWwtcGFja2FnZSA8bW9kZWwgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbKC1vIDxvdXRwdXQgZGlyZWN0b3J5PiB8IC0tb3V0cHV0IDxvdXRwdXQgZGlyZWN0b3J5PildIFsoLXAgPGFkZGl0aW9uYWwgcHJvcGVydGllcz4gfCAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPikuLi5dCiAgICAgICAgICAgICAgICBbLS1wYWNrYWdlLW5hbWUgPHBhY2thZ2UgbmFtZT5dIFstLXJlbGVhc2Utbm90ZSA8cmVsZWFzZSBub3RlPl0KICAgICAgICAgICAgICAgIFstLXJlbW92ZS1vcGVyYXRpb24taWQtcHJlZml4XQogICAgICAgICAgICAgICAgWy0tcmVzZXJ2ZWQtd29yZHMtbWFwcGluZ3MgPHJlc2VydmVkIHdvcmQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWygtcyB8IC0tc2tpcC1vdmVyd3JpdGUpXSBbLS1zZXJ2ZXItdmFyaWFibGVzIDxzZXJ2ZXIgdmFyaWFibGVzPi4uLl0KICAgICAgICAgICAgICAgIFstLXNraXAtdmFsaWRhdGUtc3BlY10gWy0tc3RyaWN0LXNwZWMgPHRydWUvZmFsc2Ugc3RyaWN0IGJlaGF2aW9yPl0KICAgICAgICAgICAgICAgIFsoLXQgPHRlbXBsYXRlIGRpcmVjdG9yeT4gfCAtLXRlbXBsYXRlLWRpciA8dGVtcGxhdGUgZGlyZWN0b3J5PildCiAgICAgICAgICAgICAgICBbLS10eXBlLW1hcHBpbmdzIDx0eXBlIG1hcHBpbmdzPi4uLl0gWygtdiB8IC0tdmVyYm9zZSldCgpPUFRJT05TCiAgICAgICAgLWEgPGF1dGhvcml6YXRpb24+LCAtLWF1dGggPGF1dGhvcml6YXRpb24+CiAgICAgICAgICAgIGFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMKICAgICAgICAgICAgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgbmFtZTpoZWFkZXIgd2l0aCBhIGNvbW1hCiAgICAgICAgICAgIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzCgouLi4uLi4gKHJlc3VsdHMgb21pdHRlZCkKCiAgICAgICAgLXYsIC0tdmVyYm9zZQogICAgICAgICAgICB2ZXJib3NlIG1vZGUKCmBgYAoKWW91IGNhbiB0aGVuIGNvbXBpbGUgYW5kIHJ1biB0aGUgY2xpZW50LCBhcyB3ZWxsIGFzIHVuaXQgdGVzdHMgYWdhaW5zdCBpdDoKCmBgYHNoCmNkIHNhbXBsZXMvY2xpZW50L3BldHN0b3JlL2phdmEvb2todHRwLWdzb24KbXZuIHBhY2thZ2UKYGBgCgpPdGhlciBnZW5lcmF0b3JzIGhhdmUgW3NhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvc2FtcGxlcykgdG9vLgoKIyMjIFszLjEgLSBDdXN0b21pemF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2N1c3RvbWl6YXRpb24ubWRdKGRvY3MvY3VzdG9taXphdGlvbi5tZCkgb24gaG93IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IChlLmcuIHBhY2thZ2UgbmFtZSwgdmVyc2lvbikKCiMjIyBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb24gKE1hdmVuLCBHcmFkbGUsIEdpdGh1YiwgQ0kvQ0QpXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2ludGVncmF0aW9uLm1kXShkb2NzL2ludGVncmF0aW9uLm1kKSBvbiBob3cgdG8gaW50ZWdyYXRlIE9wZW5BUEkgZ2VuZXJhdG9yIHdpdGggTWF2ZW4sIEdyYWRsZSwgc2J0LCBCYXplbCwgR2l0aHViIGFuZCBDSS9DRC4KCiMjIyBbMy4zIC0gT25saW5lIE9wZW5BUEkgZ2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpIZXJlIGFyZSB0aGUgcHVibGljIG9ubGluZSBzZXJ2aWNlczoKCi0gbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uOiBodHRwczovL2FwaS5vcGVuYXBpLWdlbmVyYXRvci50ZWNoCi0gbGF0ZXN0IG1hc3RlcjogaHR0cHM6Ly9hcGktbGF0ZXN0LW1hc3Rlci5vcGVuYXBpLWdlbmVyYXRvci50ZWNoICh1cGRhdGVkIHdpdGggbGF0ZXN0IG1hc3RlciBldmVyeSBob3VyKQoKVGhlIHNlcnZlciBpcyBzcG9uc29yZWQgYnkgW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pIFshW0xpbm9kZSBMb2dvXShodHRwczovL3d3dy5saW5vZGUuY29tL21lZGlhL2ltYWdlcy9sb2dvcy9zdGFuZGFyZC9saWdodC9saW5vZGUtbG9nb19zdGFuZGFyZF9saWdodF9zbWFsbC5wbmcpXShodHRwczovL3d3dy5saW5vZGUuY29tLykKCihUaGVzZSBzZXJ2aWNlcyBhcmUgYmV0YSBhbmQgZG8gbm90IGhhdmUgYW55IGd1YXJhbnRlZSBvbiBzZXJ2aWNlIGxldmVsKQoKUGxlYXNlIHJlZmVyIHRvIFtvbmxpbmUubWRdKGRvY3Mvb25saW5lLm1kKSBvbiBob3cgdG8gcnVuIGFuZCB1c2UgdGhlIGBvcGVuYXBpLWdlbmVyYXRvci1vbmxpbmVgIC0gYSB3ZWIgc2VydmljZSBmb3IgYG9wZW5hcGktZ2VuZXJhdG9yYC4KCiMjIyBbMy40IC0gTGljZW5zZSBpbmZvcm1hdGlvbiBvbiBHZW5lcmF0ZWQgQ29kZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVGhlIE9wZW5BUEkgR2VuZXJhdG9yIHByb2plY3QgaXMgaW50ZW5kZWQgYXMgYSBiZW5lZml0IGZvciB1c2VycyBvZiB0aGUgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbi4gIFRoZSBwcm9qZWN0IGl0c2VsZiBoYXMgdGhlIFtMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpIGFzIHNwZWNpZmllZC4gSW4gYWRkaXRpb24sIHBsZWFzZSB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgcG9pbnRzOgoKKiBUaGUgdGVtcGxhdGVzIGluY2x1ZGVkIHdpdGggdGhpcyBwcm9qZWN0IGFyZSBzdWJqZWN0IHRvIHRoZSBbTGljZW5zZV0oIzctLS1saWNlbnNlKS4KKiBHZW5lcmF0ZWQgY29kZSBpcyBpbnRlbnRpb25hbGx5IF9ub3RfIHN1YmplY3QgdG8gdGhlIHBhcmVudCBwcm9qZWN0IGxpY2Vuc2UKCldoZW4gY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIHByb2plY3QsIGl0IHNoYWxsIGJlIGNvbnNpZGVyZWQgKipBUyBJUyoqIGFuZCBvd25lZCBieSB0aGUgdXNlciBvZiB0aGUgc29mdHdhcmUuICBUaGVyZSBhcmUgbm8gd2FycmFudGllcy0tZXhwcmVzc2VkIG9yIGltcGxpZWQtLWZvciBnZW5lcmF0ZWQgY29kZS4gIFlvdSBjYW4gZG8gd2hhdCB5b3Ugd2lzaCB3aXRoIGl0LCBhbmQgb25jZSBnZW5lcmF0ZWQsIHRoZSBjb2RlIGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2luZyB0ZXJtcyB0aGF0IHlvdSBkZWVtIGFwcHJvcHJpYXRlLgoKIyMjIFszLjUgLSBJREUgSW50ZWdyYXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKCkhlcmUgaXMgYSBsaXN0IG9mIGNvbW11bml0eS1jb250cmlidXRlZCBJREUgcGx1Zy1pbnMgdGhhdCBpbnRlZ3JhdGUgd2l0aCBPcGVuQVBJIEdlbmVyYXRvcjoKCi0gRWNsaXBzZTogW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHMgZm9yIEVjbGlwc2VdKGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2NvZGV3aW5kL29wZW4tYXBpLXRvb2xzLWZvci1lY2xpcHNlLmh0bWwpIGJ5IFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20pCi0gSW50ZWxsaUogSURFQTogW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vODQzMy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW0ppbSBTY2h1YmVydF0oaHR0cHM6Ly9qaW1zY2h1YmVydC51cy8jLykKLSBJbnRlbGxpSiBJREVBOiBbU2VueWEgRWRpdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vMTA2OTAtc2VueWEtZWRpdG9yKSBieSBbc2VueWEuaW9dKGh0dHBzOi8vc2VueWEuaW8pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS8pCi0gVmlzdWFsIFN0dWRpbzogW1JFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcikgYnkgW0NocmlzdGlhbiBSZXNtYSBIZWxsZV0oaHR0cHM6Ly9jaHJpc3RpYW4taGVsbGUuYmxvZ3Nwb3QuY29tLykKLSBWaXN1YWwgU3R1ZGlvIENvZGU6IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGJ5IFtJQk1dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9wdWJsaXNoZXJzL0lCTSkKCgojIyBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQpIZXJlIGFyZSBzb21lIGNvbXBhbmllcy9wcm9qZWN0cyAoYWxwaGFiZXRpY2FsIG9yZGVyKSB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBpbiBwcm9kdWN0aW9uLiBUbyBhZGQgeW91ciBjb21wYW55L3Byb2plY3QgdG8gdGhlIGxpc3QsIHBsZWFzZSB2aXNpdCBbUkVBRE1FLm1kXShSRUFETUUubWQpIGFuZCBjbGljayBvbiB0aGUgaWNvbiB0byBlZGl0IHRoZSBwYWdlLgoKLSBbQWFsYm9yZyBVbml2ZXJzaXR5XShodHRwczovL3d3dy5hYXUuZGspCi0gW2FjdCBjb2RpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rjb2RpbmcpCi0gW0FkYXB0YW50IFNvbHV0aW9ucyBBR10oaHR0cHM6Ly93d3cuYWRhcHRhbnQuaW8vKQotIFthZGVzc28gU0VdKGh0dHBzOi8vd3d3LmFkZXNzby5kZS8pCi0gW0FkeWVuXShodHRwczovL3d3dy5hZHllbi5jb20vKQotIFtBZ29kYV0oaHR0cHM6Ly93d3cuYWdvZGEuY29tLykKLSBbQWlydGhpbmdzXShodHRwczovL3d3dy5haXJ0aGluZ3MuY29tLykKLSBbQWxlcmkgU29sdXRpb25zIEdtYmhdKGh0dHBzOi8vd3d3LmFsZXJpLmRlLykKLSBbQWxsaWFuel0oaHR0cHM6Ly93d3cuYWxsaWFuei5jb20pCi0gW0FuZ3VsYXIuU2NodWxlXShodHRwczovL2FuZ3VsYXIuc2NodWxlLykKLSBbQXFvdmlhXShodHRwczovL2Fxb3ZpYS5jb20vKQotIFtBdXN0cmFsaWEgYW5kIE5ldyBaZWFsYW5kIEJhbmtpbmcgR3JvdXAgKEFOWildKGh0dHA6Ly93d3cuYW56LmNvbS8pCi0gW0FyZHVpbm9dKGh0dHBzOi8vd3d3LmFyZHVpbm8uY2MvKQotIFtBU0tVTF0oaHR0cHM6Ly93d3cuYXNrdWwuY28uanApCi0gW0FtYXpvbiBXZWIgU2VydmljZXMgKEFXUyldKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vKQotIFtiPD5jb21dKGh0dHBzOi8vYi1jb20uY29tL2VuKQotIFvnmb7luqbokKXplIBdKGh0dHBzOi8vZS5iYWlkdS5jb20pCi0gW0JhbmR3aWR0aF0oaHR0cHM6Ly9kZXYuYmFuZHdpZHRoLmNvbSkKLSBbQmFuemFpIENsb3VkXShodHRwczovL2JhbnphaWNsb3VkLmNvbSkKLSBbQklNRGF0YS5pb10oaHR0cHM6Ly9iaW1kYXRhLmlvKQotIFtCaXRob3N0IEdtYkhdKGh0dHBzOi8vd3d3LmJpdGhvc3QuY2gpCi0gW0Jvc2NoIENvbm5lY3RlZCBJbmR1c3RyeV0oaHR0cHM6Ly93d3cuYm9zY2gtY29ubmVjdGVkLWluZHVzdHJ5LmNvbSkKLSBbQm94ZXZlcl0oaHR0cHM6Ly93d3cuYm94ZXZlci5jb20vKQotIFtCcmV2eV0oaHR0cHM6Ly93d3cuYnJldnkuY29tKQotIFtCdW5rZXIgSG9sZGluZyBHcm91cF0oaHR0cHM6Ly93d3cuYnVua2VyLWhvbGRpbmcuY29tLykKLSBbQ2FsaWZvcm5pYSBTdGF0ZSBVbml2ZXJzaXR5LCBOb3J0aHJpZGdlXShodHRwczovL3d3dy5jc3VuLmVkdSkKLSBbQ0FNXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSBbQ2FtcHRvY2FtcF0oaHR0cHM6Ly93d3cuY2FtcHRvY2FtcC5jb20vZW4pCi0gW0NhcmxzYmVyZyBHcm91cF0oaHR0cHM6Ly93d3cuY2FybHNiZXJnZ3JvdXAuY29tLykKLSBbQ2hyaXN0b3BoZXIgUXVlZW4gQ29uc3VsdGluZ10oaHR0cHM6Ly93d3cuY2hyaXN0b3BoZXJxdWVlbmNvbnN1bHRpbmcuY29tLykKLSBbQ2lzY29dKGh0dHBzOi8vd3d3LmNpc2NvLmNvbS8pCi0gW2NvZGVjZW50cmljIEFHXShodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS8pCi0gW0NvaW5BUEldKGh0dHBzOi8vd3d3LmNvaW5hcGkuaW8vKQotIFtDb21tZW5jaXNdKGh0dHBzOi8vd3d3LmNvbW1lbmNpcy5jb20vKQotIFtDb25maWdDYXRdKGh0dHBzOi8vY29uZmlnY2F0LmNvbS8pCi0gW2Nyb25uIEdtYkhdKGh0dHBzOi8vd3d3LmNyb25uLmRlLykKLSBbQ3Jvc3NvdmVyIEhlYWx0aF0oaHR0cHM6Ly9jcm9zc292ZXJoZWFsdGguY29tLykKLSBbQ3VwaXhdKGh0dHBzOi8vd3d3LmN1cGl4LmNvbS8pCi0gW0RhdGFkb2ddKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20pCi0gW0RCIFN5c3RlbF0oaHR0cHM6Ly93d3cuZGJzeXN0ZWwuZGUpCi0gW0RlZXBvcnV0ZS5haV0oaHR0cHM6Ly93d3cuZGVlcHJvdXRlLmFpLykKLSBbRGV2c3VwcGx5XShodHRwczovL3d3dy5kZXZzdXBwbHkuY29tLykKLSBbZG1URUNIIEdtYkhdKGh0dHBzOi8vd3d3LmRtVEVDSC5kZSkKLSBbRG9jU3ByaW5nXShodHRwczovL2RvY3NwcmluZy5jb20vKQotIFtkd2FuZ29dKGh0dHBzOi8vZHdhbmdvLmNvLmpwLykKLSBbRWRnZSBJbXB1bHNlXShodHRwczovL3d3dy5lZGdlaW1wdWxzZS5jb20vKQotIFtFbGVtZW50IEFJXShodHRwczovL3d3dy5lbGVtZW50YWkuY29tLykKLSBbRW1ib3RpY3NdKGh0dHBzOi8vd3d3LmVtYm90aWNzLmNvbS8pCi0gW2VtaW5lb10oaHR0cHM6Ly93d3cuZW1pbmVvLmNoKQotIFtmYXN0bHldKGh0dHBzOi8vd3d3LmZhc3RseS5jb20vKQotIFtGZW5lcmdvXShodHRwczovL3d3dy5mZW5lcmdvLmNvbS8pCi0gW2ZyZWVlXShodHRwczovL2NvcnAuZnJlZWUuY28uanAvZW4vKQotIFtGcmVzaENlbGxzXShodHRwczovL3d3dy5mcmVzaGNlbGxzLmRlLykKLSBbRnVzZV0oaHR0cHM6Ly93d3cuZnVzZS5uby8pCi0gW0dhbnRuZXJdKGh0dHBzOi8vd3d3LmdhbnRuZXIuY29tKQotIFtHZW5GbG93XShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vR2VuRmxvdykKLSBbR2V0WW91ckd1aWRlXShodHRwczovL3d3dy5nZXR5b3VyZ3VpZGUuY29tLykKLSBbR2xvdm9dKGh0dHBzOi8vZ2xvdm9hcHAuY29tLykKLSBbR01PIFBlcGFib10oaHR0cHM6Ly9wZXBhYm8uY29tL2VuLykKLSBbR29EYWRkeV0oaHR0cHM6Ly9nb2RhZGR5LmNvbSkKLSBbR3VtdHJlZV0oaHR0cHM6Ly9ndW10cmVlLmNvbSkKLSBbSGVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIuaGVyZS5jb20vKQotIFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20vKQotIFtJbnN0YW5hXShodHRwczovL3d3dy5pbnN0YW5hLmNvbSkKLSBbSW50ZXJ4aW9uXShodHRwczovL3d3dy5pbnRlcnhpb24uY29tKQotIFtJbnF1aXNpY29dKGh0dHBzOi8vaW5xdWlzaWNvLmNvbSkKLSBbSnVzdFN0YXJdKGh0dHBzOi8vd3d3Lmp1c3RzdGFyaW5mby5jb20pCi0gW2s2LmlvXShodHRwczovL2s2LmlvLykKLSBbS2xhcm5hXShodHRwczovL3d3dy5rbGFybmEuY29tLykKLSBbS3JvbnNvZnQgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3Lmtyb25zb2Z0LnJvL2hvbWUvKQotIFtLdWJlcm5ldGVzXShodHRwczovL2t1YmVybmV0ZXMuaW8pCi0gW0xhbmRlc2hhdXB0c3RhZHQgTcO8bmNoZW4gLSBpdEBNXShodHRwczovL211ZW5jaGVuLmRpZ2l0YWwvaXQtYXQtbS8pCi0gW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pCi0gW0xvZ2ljZHJvcF0oaHR0cHM6Ly93d3cubG9naWNkcm9wLmNvbSkKLSBbTHVtZXJpc10oaHR0cHM6Ly93d3cubHVtZXJpcy5jb20pCi0gW0xWTSBWZXJzaWNoZXJ1bmdlbl0oaHR0cHM6Ly93d3cubHZtLmRlKQotIFtNYWlsU2x1cnBdKGh0dHBzOi8vd3d3Lm1haWxzbHVycC5jb20pCi0gW01hbnRpY29yZSBTZWFyY2hdKGh0dHBzOi8vbWFudGljb3Jlc2VhcmNoLmNvbSkKLSBbTWFzdGVyY2FyZF0oaHR0cHM6Ly9kZXZlbG9wZXJzLm1hc3RlcmNhcmQuY29tKQotIFtNw6lkaWF2aXNpb25dKGh0dHBzOi8vd3d3Lm1lZGlhdmlzaW9uLmZyLykKLSBbTWV0YXN3aXRjaF0oaHR0cHM6Ly93d3cubWV0YXN3aXRjaC5jb20vKQotIFtNb29uVmlzaW9uXShodHRwczovL3d3dy5tb29udmlzaW9uLmlvLykKLSBbTXl3b3Jrb3V0XShodHRwczovL215d29ya291dC5jb20pCi0gW05hbVNvcl0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8pCi0gW05ldmVyZmFpbF0oaHR0cHM6Ly93d3cubmV2ZXJmYWlsLmNvbS8pCi0gW05ldWVyRW5lcmd5XShodHRwczovL25ldWVyZW5lcmd5LmNvbSkKLSBbTm9raWFdKGh0dHBzOi8vd3d3Lm5va2lhLmNvbS8pCi0gW09uZVNpZ25hbF0oaHR0cHM6Ly93d3cub25lc2lnbmFsLmNvbS8pCi0gW09wdGlvbnMgQ2xlYXJpbmcgQ29ycG9yYXRpb24gKE9DQyldKGh0dHBzOi8vd3d3LnRoZW9jYy5jb20vKQotIFtPcGVuZXRdKGh0dHBzOi8vd3d3Lm9wZW5ldC5jb20vKQotIFtvcGVuVkFMSURBVElPTl0oaHR0cHM6Ly9vcGVudmFsaWRhdGlvbi5pby8pCi0gW09yYWNsZV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS8pCi0gW1BheG9zXShodHRwczovL3d3dy5wYXhvcy5jb20pCi0gW1BsYWlkXShodHRwczovL3BsYWlkLmNvbSkKLSBbUExBSUQsIEluYy5dKGh0dHBzOi8vcGxhaWQuY28uanAvKQotIFtQaW50ZXJlc3RdKGh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20pCi0gW1Bvbmljb2RlXShodHRwczovL3Bvbmljb2RlLmRldi8pCi0gW1ByaWNlZnhdKGh0dHBzOi8vd3d3LnByaWNlZnguY29tLykKLSBbUHJpbnROYW5ueV0oaHR0cHM6Ly93d3cucHJpbnQtbmFubnkuY29tLykKLSBbUHJvbWV0aGV1cy9BbGVydG1hbmFnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2FsZXJ0bWFuYWdlcikKLSBbUWF2YXJdKGh0dHBzOi8vd3d3LnFhdmFyLmNvbSkKLSBbUUVESVRdKGh0dHBzOi8vcWVkLWl0LmNvbSkKLSBbUW92ZXJ5XShodHRwczovL3FvdmVyeS5jb20pCi0gW1F1bGl4IFN5c3RlbXNdKGh0dHBzOi8vd3d3LnF1bGl4LmNvbSkKLSBbUmFrc3VsXShodHRwczovL2NvcnAucmFrc3VsLmNvbSkKLSBbUmFpZmZlaXNlbiBTY2h3ZWl6IEdlbm9zc2Vuc2NoYWZ0XShodHRwczovL3d3dy5yYWlmZmVpc2VuLmNoKQotIFtSZWRIYXRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9zd2FnZ2VyLW9wZW5hcGktY29kZS1nZW5lcmF0aW9uLWFwaS1maXJzdC1taWNyb3NlcnZpY2VzLWVudGVycHJpc2UtZGV2ZWxvcG1lbnQpCi0gW1JFU1QgVW5pdGVkXShodHRwczovL3Jlc3R1bml0ZWQuY29tKQotIFtSb2JvY29ycF0oaHR0cHM6Ly93d3cucm9ib2NvcnAuY29tKQotIFtSb2JvdGluZnJhXShodHRwczovL3d3dy5yb2JvdGluZnJhLmNvbSkKLSBbU2VhcmNoQXBpXShodHRwczovL3d3dy5zZWFyY2hhcGkuaW8vKQotIFtTbWFydEhSXShodHRwczovL3NtYXJ0aHIuY28uanAvKQotIFtTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnRdKGh0dHBzOi8vd3d3LnNpZS5jb20vZW4vaW5kZXguaHRtbCkKLSBbU3BsaXRpdF0oaHR0cHM6Ly93d3cuc3BsaXRpdC5jb20vKQotIFtTdGluZ3JheV0oaHR0cDovL3d3dy5zdGluZ3JheS5jb20pCi0gW1N1dmFdKGh0dHBzOi8vd3d3LnN1dmEuY2gvKQotIFtTdml4XShodHRwczovL3d3dy5zdml4LmNvbS8pCi0gW1RlbHN0cmFdKGh0dHBzOi8vZGV2LnRlbHN0cmEuY29tKQotIFtUZW5jZW50XShodHRwczovL3d3dy50ZW5jZW50LmNvbSkKLSBbVGhlIFVuaXZlcnNpdHkgb2YgQWl6dV0oaHR0cHM6Ly93d3cudS1haXp1LmFjLmpwL2VuLykKLSBbVHJhbnNsdWNlbnQgQXBTXShodHRwczovL3d3dy50cmFuc2x1Y2VudC5kaykKLSBbVHJhdmVsVGltZSBwbGF0Zm9ybV0oaHR0cHM6Ly93d3cudHJhdmVsdGltZXBsYXRmb3JtLmNvbS8pCi0gW1RyaWJhbFNjYWxlXShodHRwczovL3d3dy50cmliYWxzY2FsZS5jb20pCi0gW1RyaWZvcmtdKGh0dHBzOi8vdHJpZm9yay5jb20pCi0gW1RVSSBJbmZvVGVjIEdtYkhdKGh0dHA6Ly93d3cudHVpLWluZm90ZWMuY29tLykKLSBbVHdpbGlvXShodHRwczovL3d3dy50d2lsaW8uY29tLykKLSBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbSkKLSBbdW5ibHUgaW5jLl0oaHR0cHM6Ly93d3cudW5ibHUuY29tLykKLSBbVmVhbWx5XShodHRwczovL3d3dy52ZWFtbHkuY29tLykKLSBbVk1XYXJlXShodHRwczovL3d3dy52bXdhcmUuY29tLykKLSBbd2J0LXNvbHV0aW9uc10oaHR0cHM6Ly93d3cud2J0LXNvbHV0aW9ucy5kZS8pCi0gW1dvbGVldF0oaHR0cHM6Ly93d3cud29sZWV0LmlvLykKLSBbV1NPMl0oaHR0cHM6Ly93c28yLmNvbS8pCi0gW1ZvdWNoZXJ5LmlvXShodHRwczovL3ZvdWNoZXJ5LmlvKQotIFtYZXJvXShodHRwczovL3d3dy54ZXJvLmNvbS8pCi0gW1lhaG9vIEphcGFuXShodHRwczovL3d3dy55YWhvby5jby5qcC8pCi0gW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlLykKLSBbVm9uYWdlXShodHRwczovL3ZvbmFnZS5jb20pCi0gW1lJVFUgVGVjaG5vbG9neV0oaHR0cHM6Ly93d3cueWl0dXRlY2guY29tLykKLSBbWWVscF0oaHR0cHM6Ly93d3cueWVscC5jb20vKQotIFtaYWxhbmRvXShodHRwczovL3d3dy56YWxhbmRvLmNvbSkKLSBbM0RTIE91dHNjYWxlXShodHRwczovL3d3dy5vdXRzY2FsZS5jb20vKQoKIyMgWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCN0YWJsZS1vZi1jb250ZW50cykKCi0gMjAxOC8wNS8xMiAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIGNvbW11bml0eSBkcml2ZW7jgafmiJDplbfjgZnjgovjgrPjg7zjg4njgrjjgqfjg43jg6zjg7zjgr9dKGh0dHBzOi8vYWNraW50b3NoLmdpdGh1Yi5pby9ibG9nLzIwMTgvMDUvMTIvb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIDIwMTgvMDUvMTUgLSBbU3RhcnRpbmcgYSBuZXcgb3Blbi1zb3VyY2UgcHJvamVjdF0oaHR0cDovL2ptaW5pLmdpdGh1Yi5pby9ibG9nLzIwMTgvMjAxOC0wNS0xNV9uZXctb3Blbi1zb3VyY2UtcHJvamVjdC5odG1sKSBieSBbSmVyZW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpCi0gMjAxOC8wNS8xNSAtIFtSRVNUIEFQSeS7leanmOOBi+OCiUFQSeOCr+ODqeOCpOOCouODs+ODiOOChOOCueOCv+ODluOCteODvOODkOOCkuiHquWLleeUn+aIkOOBmeOCi+OAjE9wZW5BUEkgR2VuZXJhdG9y44CN44Kq44O844OX44Oz44K944O844K544Gn5YWs6ZaL44CCU3dhZ2dlciBDb2RlZ2Vu44GL44KJ44Gu44OV44Kp44O844KvXShodHRwczovL3d3dy5wdWJsaWNrZXkxLmpwL2Jsb2cvMTgvcmVzdF9hcGlhcGlvcGVuYXBpX2dlbmVyYXRvcnN3YWdnZXJfZ2VuZXJhdG9yLmh0bWwpIGJ5IFtQdWJsaWNrZXldKGh0dHBzOi8vd3d3LnB1YmxpY2tleTEuanApCi0gMjAxOC8wNi8wOCAtIFtTd2FnZ2VyIENvZGVnZW4gaXMgbm93IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FuZ3VsYXIuc2NodWxlL2Jsb2cvMjAxOC0wNi1zd2FnZ2VyLWNvZGVnZW4taXMtbm93LW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSm9oYW5uZXNIb3BwZV0oaHR0cHM6Ly9naXRodWIuY29tL0pvaGFubmVzSG9wcGUpCi0gMjAxOC8wNi8yMSAtIFtDb25uZWN0IHlvdXIgSkhpcHN0ZXIgYXBwcyB0byB0aGUgd29ybGQgb2YgQVBJcyB3aXRoIE9wZW5BUEkgYW5kIGdSUENdKGh0dHBzOi8vZnIuc2xpZGVzaGFyZS5uZXQvY2hib3JuZXQvamhpcHN0ZXItY29uZi0yMDE4LWNvbm5lY3QteW91ci1qaGlwc3Rlci1hcHBzLXRvLXRoZS13b3JsZC1vZi1hcGlzLXdpdGgtb3BlbmFwaS1hbmQtZ3JwYykgYnkgW0NocmlzdG9waGUgQm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkgYXQgW0pIaXBzdGVyIENvbmYgMjAxOF0oaHR0cHM6Ly9qaGlwc3Rlci1jb25mLmdpdGh1Yi5pby8pCi0gMjAxOC8wNi8yMiAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgR2F0bGluZyBDbGllbnQg44KS55Sf5oiQ44GX44Gm44G/44GfXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMDYvMjIvMDczMDAwKSBhdCBb44K944Oi44K144OzXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tLykKLSAyMDE4LzA2LzI3IC0gW0xlc3NvbnMgTGVhcm5lZCBmcm9tIExlYWRpbmcgYW4gT3Blbi1Tb3VyY2UgUHJvamVjdCBTdXBwb3J0aW5nIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvbGVzc29ucy1sZWFybmVkLWZyb20tbGVhZGluZy1hbi1vcGVuLXNvdXJjZS1wcm9qZWN0LXN1cHBvcnRpbmctMzAtcGx1cy1wcm9ncmFtbWluZy1sYW5ndWFnZXMpIC0gW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbTGludXhDb24gKyBDb250YWluZXJDb24gKyBDbG91ZE9wZW4gQ2hpbmEgMjAxOF0oaHR0cDovL2JpdC5seS8yd2FES0tYKQotIDIwMTgvMDcvMTkgLSBbT3BlbkFQSSBHZW5lcmF0b3IgQ29udHJpYnV0aW9uIFF1aWNrc3RhcnQgLSBSaW5nQ2VudHJhbCBHbyBTREtdKGh0dHBzOi8vbWVkaXVtLmNvbS9yaW5nY2VudHJhbC1kZXZlbG9wZXJzL29wZW5hcGktZ2VuZXJhdG9yLWZvci1nby1jb250cmlidXRpb24tcXVpY2tzdGFydC04Y2M3MmJmMzdiNTMpIGJ5IFtKb2huIFdhbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9ncm9raWZ5KQotIDIwMTgvMDgvMjIgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljga7jg5fjg63jgrjjgqfjgq/jg4jmp4vmiJDjgarjganjga7jg6Hjg6JdKGh0dHBzOi8veWlubS5pbmZvLzIwMTgwODIyLykgYnkgW1l1c3VrZSBJaW51bWFdKGh0dHBzOi8vZ2l0aHViLmNvbS95aW5tKQotIDIwMTgvMDkvMTIgLSBbUmVwcmVaZW4gYW5kIE9wZW5BUEkgMy4wOiBOb3cgaXMgdGhlIFRpbWVdKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL3JlcHJlemVuLW9wZW5hcGktMy4wLXVwZ3JhZGUtbm93LWlzLXRoZS10aW1lKSBieSBbTWlsZXMgRGFmZmluXShodHRwczovL3d3dy5yZXByZXplbi5jb20vYmxvZy9hdXRob3IvbWlsZXMtZGFmZmluKQotIDIwMTgvMTAvMzEgLSBbQSBub2RlIHBhY2thZ2Ugd3JhcHBlciBmb3Igb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9IYXJtb1dhdGNoL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKLSAyMDE4LzExLzAzIC0gW09wZW5BUEkgR2VuZXJhdG9yICsgZ29sYW5nICsgRmx1dHRlciDjgafjgqLjg5fjg6rplovnmbpdKGh0dHA6Ly9yeXVpY2hpMTExc3RkLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMTEvMDMvMjE0MDA1KSBieSBbUnl1aWNoaSBEYWlnb10oaHR0cHM6Ly9naXRodWIuY29tL3J5dWljaGkxMTEpCi0gMjAxOC8xMS8xNSAtIFvln7rkuo5vcGVuYXBpMy4w55qEeWFtbOaWh+S7tueUn+aIkGphdmHku6PnoIHnmoTkuIDmrKHlrp7ot7VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC95enkxOTkzOTEvYXJ0aWNsZS9kZXRhaWxzLzg0MDIzOTgyKSBieSBb54Sx6a2U546LXShodHRwczovL21lLmNzZG4ubmV0L3l6eTE5OTM5MSkKLSAyMDE4LzExLzE4IC0gW0dlbmVyYXRpbmcgUEhQIGxpYnJhcnkgY29kZSBmcm9tIE9wZW5BUEldKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9wb3N0cy8yMDE4L2dlbmVyYXRpbmctcGhwLWxpYnJhcnktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtMb3JuYSBKYW5lXShodHRwczovL2xvcm5hamFuZS5uZXQvKSBhdCBbTE9STkFKQU5FIEJsb2ddKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9ibG9nKQotIDIwMTgvMTEvMTkgLSBbT3BlbkFQSXMgYXJlIGV2ZXJ5d2hlcmVdKGh0dHBzOi8veW91dHUuYmUvLWxEb3Q0WW43RGcpIGJ5IFtKZXJlbWllIEJyZXNzb24gKFVuYmx1KV0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBhdCBbRWNsaXBzZUNvbiBFdXJvcGUgMjAxOF0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOCkKLSAyMDE4LzEyLzA5IC0gW29wZW5hcGktZ2VuZXJhdG9yIOOCkuOCq+OCueOCv+ODnuOCpOOCuuOBmeOCi+aWueazlV0oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvL2l0ZW1zLzA5NjEyODdjMDJlYWM5MjExNTcyKSBieSBbQHdhdGlrb10oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvKQotIDIwMTkvMDEvMDMgLSBbQ2FsbGluZyBhIFN3YWdnZXIgc2VydmljZSBmcm9tIEFwZXggdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbGVra2ltd29ybGQuY29tLzIwMTkvMDEvMDMvY2FsbGluZy1hLXN3YWdnZXItc2VydmljZS1mcm9tLWFwZXgtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbTWlra2VsIEZsaW5kdCBIZWlzdGVyYmVyZ10oaHR0cHM6Ly9sZWtraW13b3JsZC5jb20pCi0gMjAxOS8wMS8xMyAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp1JFU1RmdWwgQVBJ44Gu5a6a576p5pu444GL44KJ6Imy44CF6Ieq5YuV55Sf5oiQ44GZ44KLXShodHRwczovL2t5LXlrLWQuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8wMS8xMy8yMzQxMDgpIGJ5IFtAa3lfeWtfZF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9reV95a19kKQotIDIwMTkvMDEvMjAgLSBbQ29udHJhY3QtRmlyc3QgQVBJIERldmVsb3BtZW50IHdpdGggT3BlbkFQSSBHZW5lcmF0b3IgYW5kIENvbm5leGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL2NvbW1lbmNpcy9jb250cmFjdC1maXJzdC1hcGktZGV2ZWxvcG1lbnQtd2l0aC1vcGVuYXBpLWdlbmVyYXRvci1hbmQtY29ubmV4aW9uLWIyMWJiZjJmOTI0NCkgYnkgW0FuaWwgQ2FuIEF5ZGluXShodHRwczovL2dpdGh1Yi5jb20vYW5sY255ZG4pCi0gMjAxOS8wMS8zMCAtIFtSYXBpZCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBXaXRoIEFQSSBGaXJzdCBBcHByb2FjaCBVc2luZyBPcGVuLUFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL3JhcGlkLWFwaS1kZXZlbG9wbWVudC11c2luZy1vcGVuLWFwaS1nZW5lcmF0b3IpIGJ5IFtNaWxhbiBTb25rYXJdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzgyODMyOS9taWxhbl9zb25rYXIuaHRtbCkKLSAyMDE5LzAyLzAyIC0gW+W5s+mdmeOCkuS/neOBoeOAgeOCs+ODvOODieOCkueUn+aIkOOBm+OCiCDjgJwgT3BlbkFQSSBHZW5lcmF0b3LoqpXnlJ/jga7og4zmma/jgajou4zot6Eg44CcXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9ha2loaXRvX25ha2Fuby9ndW5tYXdlYjM0KSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbR3VubWEud2ViICMzNCDjgrnjgq3jg7zjg57pp4bli5XplovnmbpdKGh0dHBzOi8vZ3VubWF3ZWIuY29ubnBhc3MuY29tL2V2ZW50LzExMzk3NC8pCi0gMjAxOS8wMi8yMCAtIFtBbiBhZHZlbnR1cmUgaW4gT3BlbkFQSSBWMyBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbXV4LmNvbS9ibG9nL2FuLWFkdmVudHVyZS1pbi1vcGVuYXBpLXYzLWFwaS1jb2RlLWdlbmVyYXRpb24vKSBieSBbUGhpbCBDbHVmZl0oaHR0cHM6Ly9tdXguY29tL2Jsb2cvYXV0aG9yL3BoaWxjLykKLSAyMDE5LzAyLzI2IC0gW0J1aWxkaW5nIEFQSSBTZXJ2aWNlczogQSBCZWdpbm5lcuKAmXMgR3VpZGVdKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQvYnVpbGRpbmctYXBpLXNlcnZpY2VzLWEtYmVnaW5uZXJzLWd1aWRlLTcyNzRhZTRjNTQ3ZikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS8wMi8yNiAtIFtCdWlsZGluZyBBUElzIHdpdGggT3BlbkFQSTogQ29udGludWVkXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kvYnVpbGRpbmctYXBpcy13aXRoLW9wZW5hcGktY29udGludWVkLTVkMGZhYWVkMzJlYikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS0wMy0wNyAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgU3ByaW5nIEJvb3Qg44GoIEFuZ3VsYXIg44KS44K/44Kk44OX44K744O844OV44Gr57mL44GQXShodHRwczovL3FpaXRhLmNvbS9jaGliYXRvL2l0ZW1zL2U0YTc0OGRiMTI0MDliNDBjMDJmKSBieSBbVG9tb2Z1bWkgQ2hpYmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaGliYXQpCi0gMjAxOS0wMy0xNiAtIFtBIFF1aWNrIGludHJvZHVjdGlvbiB0byBtYW51YWwgT3BlbkFQSSBWM10oaHR0cHM6Ly92YWRvc3dhcmUuaW8vcG9zdC9xdWljay1pbnRyby10by1tYW51YWwtb3BlbmFwaS12My8pIGJ5IFt2YWRvc10oaHR0cHM6Ly9naXRodWIuY29tL3QzaG1ybWFuKSBhdCBbVkFET1NXQVJFXShodHRwczovL3ZhZG9zd2FyZS5pbykKLSAyMDE5LTAzLTI1IC0gW0FjY2VzcyBhbnkgUkVTVCBzZXJ2aWNlIHdpdGggdGhlIFNBUCBTLzRIQU5BIENsb3VkIFNES10oaHR0cHM6Ly9ibG9ncy5zYXAuY29tLzIwMTkvMDMvMjUvaW50ZWdyYXRlLXNhcC1zNGhhbmEtY2xvdWQtc2RrLXdpdGgtb3Blbi1hcGkvKSBieSBbQWxleGFuZGVyIER1ZW1vbnRdKGh0dHBzOi8vcGVvcGxlLnNhcC5jb20vYWxleGFuZGVyLmR1ZW1vbnQpCi0gMjAxOS0wMy0yNSAtIFtPcGVuQVBJIGdlbmVyYXRvcuOCkuippuOBl+OBpuOBv+OCi10oaHR0cHM6Ly9xaWl0YS5jb20vYW11eWlrYW0vaXRlbXMvZThhNDVkYWFlNTljNjhiZTBmYzgpIGJ5IFtAYW11eWlrYW1dKGh0dHBzOi8vdHdpdHRlci5jb20vYW11eWlrYW0pCi0gMjAxOS0wMy0yNyAtIFtPcGVuQVBJM+OCkuS9v+OBo+OBpuOBv+OCiOOBhu+8gUdv6KiA6Kqe44Gn44Kv44Op44Kk44Ki44Oz44OI44Go44K544K/44OW44Gu6Ieq5YuV55Sf5oiQ44G+44Gn77yBXShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L29wZW5hcGkzL2dvKSBieSBbQGdvbGRfa291XShodHRwczovL3R3aXR0ZXIuY29tL2dvbGRfa291KQotIDIwMTktMDQtMTcgLSBbT3BlbkFQSeOBq+OCiOOCi+OCueOCreODvOODnuODleOCoeODvOOCueODiOmWi+eZuuOBruWun+aWveOCteODs+ODl+ODq+OBqENsb3VkIFJ1buOBq+OBpOOBhOOBpl0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAxOS8wNC8xNy8xNzQwMDApIGJ5IFtAeXVrZXkxMDMxXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2V5MTAzMSkKLSAyMDE5LTA0LTE4IC0gW0hvdyB0byB1c2UgT3BlbkFQSTMgZm9yIEFQSSBkZXZlbG9wZXIgKFJ1YnlLYWlnaSAyMDE5KV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vb3RhNDJ5L2hvdy10by11c2Utb3BlbmFwaTMtZm9yLWFwaS1kZXZlbG9wZXIpIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkgYXQgW1J1YnlLYWlnaSAyMDE5XShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAxOSkKLSAyMDE5LTA0LTI5IC0gW0EgQmVnaW5uZXIncyBHdWlkZSB0byBDb2RlIEdlbmVyYXRpb24gZm9yIFJFU1QgQVBJcyAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkKLSAyMDE5LTA1LTAxIC0gW0Rlc2lnbiBhbmQgZ2VuZXJhdGUgYSBSRVNUIEFQSSBmcm9tIFN3YWdnZXIgLyBPcGVuQVBJIGluIEphdmEsIFB5dGhvbiwgQyMgYW5kIG1vcmVdKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vZGVzaWduLWFuZC1nZW5lcmF0ZS1hcGktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtTaW1wbHkgSG93XShodHRwczovL3NpbXBseS1ob3cuY29tLykKLSAyMDE5LTA1LTE3IC0gW0dlbmVyYXRlIFNwcmluZyBCb290IFJFU1QgQVBJIHVzaW5nIFN3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly93d3cuNDdub3J0aGxhYnMuY29tL2tub3dsZWRnZS1iYXNlL2dlbmVyYXRlLXNwcmluZy1ib290LXJlc3QtYXBpLXVzaW5nLXN3YWdnZXItb3BlbmFwaS8pIGJ5IFtBbnRvbmllIFphZmlyb3ZdKGh0dHBzOi8vd3d3LjQ3bm9ydGhsYWJzLmNvbS9hdXRob3IvYW50b25pZS16YWZpcm92LykKLSAyMDE5LTA1LTIyIC0gW1JFU1QgQVBJc+S7o+eggeeUn+aIkOaMh+WNlyhPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2diKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKQotIDIwMTktMDUtMjQgLSBbUkVTVCBBUEkg5Luj56K855Sf5oiQ5oyH5Y2XIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2JpZzUpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpCi0gMjAxOS0wNi0yNCAtIFtLdWJlcm5ldGVzIENsaWVudHMgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2t1YmVybmV0ZXMtY2xpZW50cy1hbmQtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpIGF0IFtLdWJlcm5ldGVzIENvbnRyaWJ1dG9yIFN1bW1pdHMgU2hhbmdoYWkgMjAxOV0oaHR0cHM6Ly93d3cubGZhc2lhbGxjLmNvbS9ldmVudHMvY29udHJpYnV0b3JzLXN1bW1pdC1jaGluYS0yMDE5LykKLSAyMDE5LTA2LTI4IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvY29kZXdpbmQtb3BlbmFwaS10b29scykgaW4gW0VjbGlwc2UgTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvKSBieSBJQk0KLSAyMDE5LTA2LTI5IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGluIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vKSBieSBJQk0KLSAyMDE5LTA3LTA0IC0gW1JFU1QgQVBJIOOBruOBn+OCgeOBruOCs+ODvOODiOOCmeeUn+aIkOWFpemWgCAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19iaWc1KSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCksIFvlkoznlLDmi5PmnJddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXhwb24pCi0gMjAxOS0wNy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgavjgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjg4jjgZfjgZ/jgonnpL7lkI3jgYzovInjgaPjgZ/oqbHjgIIoQ0FNKSAtIENBTSBURUNIIEJMT0ddKGh0dHBzOi8vdGVjaC5jYW0taW5jLmNvLmpwL2VudHJ5LzIwMTkvMDcvMDgvMTQwMDAwKSBieSBbQ0FNLCBJbmMuXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSAyMDE5LTA3LTE0IC0gW09wZW5BUEkgR2VuZXJhdG9y44GnUHl0aG9u44Gu44Kv44Op44Kk44Ki44Oz44OI44Op44Kk44OW44Op44Oq44KS5L2c5oiQ44GX44GfXShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210L2l0ZW1zL2RmYjkyOTMxNmExMzM1YTE2MWMwKSBieSBbeXVqaTM4a3dtdF0oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdCkKLSAyMDE5LTA3LTE5IC0gW0RldmVsb3BlciBFeHBlcmllbmNlIChEWCkgZm9yIE9wZW4tU291cmNlIFByb2plY3RzOiBIb3cgdG8gRW5nYWdlIERldmVsb3BlcnMgYW5kIEJ1aWxkIGEgR3Jvd2luZyBEZXZlbG9wZXIgQ29tbXVuaXR5XShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2RldmVsb3Blci1leHBlcmllbmNlLWR4LWZvci1vcGVuLXNvdXJjZS1wcm9qZWN0cy1lbmdsaXNoLWphcGFuZXNlKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiAyMDE5XShodHRwczovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9vcGVuLXNvdXJjZS1zdW1taXQtamFwYW4tMjAxOS8pCi0gMjAxOS0wOC0xNCAtIFtPdXIgT3BlbkFQSSBqb3VybmV5IHdpdGggU3RhbmRhcmRpemluZyBTREtzXShodHRwczovL2JpdG1vdmluLmNvbS9vdXItb3BlbmFwaS1qb3VybmV5LXdpdGgtc3RhbmRhcmRpemluZy1zZGtzLykgYnkgW1NlYmFzdGlhbiBCdXJnc3RhbGxlcl0oaHR0cHM6Ly9iaXRtb3Zpbi5jb20vYXV0aG9yL3NidXJnc3RhbGxlci8pIGF0IFtCaXRtb3Zpbl0oaHR0cHM6Ly93d3cuYml0bW92aW4uY29tKQotIDIwMTktMDgtMTUgLSBbQVBJ44Gu44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQ44GV44Gb44Gf44GE44Gg44GR44Gq44KJZ1JQQ+OBp+OBquOBj+OBpuOCguOCiOOBj+OBquOBhD9dKGh0dHBzOi8vd3d3Lm0zdGVjaC5ibG9nL2VudHJ5LzIwMTkvMDgvMTUvMTEwMDAwKSBieSBbTTMsIEluYy5dKGh0dHBzOi8vY29ycG9yYXRlLm0zLmNvbS8pCi0gMjAxOS0wOC0yMiAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgavjgYrjgZHjgotXZWIgQVBJ44K544Kt44O844Oe44Gu566h55CG4pSAIEdyYXBoUUzjgIFnUlBD44CBT3BlbkFQSeOBrueJueW+tOOBqOS9v+OBhOOBqeOBk+OCjV0oaHR0cHM6Ly9lbXBsb3ltZW50LmVuLWphcGFuLmNvbS9lbmdpbmVlcmh1Yi9lbnRyeS8yMDE5LzA4LzIyLzEwMzAwMCkgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDgtMjQgLSBbU3dhZ2dlcuODieOCreODpeODoeODs+ODiOOBi+OCiU9wZW5BUEkgR2VuZXJhdG9y44KS5L2/44Gj44Gm44Oi44OD44Kv44K144O844OQ44O85L2c5oiQXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyL2l0ZW1zLzQ4NDVlNGM3MTVkMDQ1ODdjMTA0KSBieSBb5Z2C5pys5q2j576pXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyKQotIDIwMTktMDgtMjkgLSBbT3BlbkFQSeWIneaOol0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xNDk1OTg2KSBieSBbcGVha3hpZV0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvdXNlci8xMTEzMTUyKSBhdCBb6IW+6K6v5LqR56S+5Yy6XShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3BlcikKLSAyMDE5LTA4LTI5IC0gW+WFqOmdoui/m+WMlu+8mkt1YmVybmV0ZXMgQ1JEIDEuMTYgR0HliY3nnrtdKGh0dHBzOi8vd3d3LnNlcnZpY2VtZXNoZXIuY29tL2Jsb2cva3ViZXJuZXRlcy0xLjE2LWNyZC1nYS1wcmV2aWV3LykgYnkgW01pbiBLaW1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dWU5OTQ0ODgyKSBhdCBbU2VydmljZU1lc2hlciBCbG9nXShodHRwczovL3d3dy5zZXJ2aWNlbWVzaGVyLmNvbS9ibG9nLykKLSAyMDE5LTA5LTAxIC0gW0NyZWF0aW5nIGEgUEhQLVNsaW0gc2VydmVyIHVzaW5nIE9wZW5BUEkgKFlvdXR1YmUgdmlkZW8pXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTVjSnRiSXJzWWtnKSBieSBbRGFuaWVsIFBlcnNzb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNuRy1UTjIzbHN3TzZRYnZXaE10eHBBKQotIDIwMTktMDktMDYgLSBbVmVydC54IGFuZCBPcGVuQVBJXShodHRwczovL3dpc3NlbC5uZXQvYmxvZy8yMDE5LzA5L3ZlcnR4LWFuZC1vcGVuYXBpLmh0bWwpIGJ5IFtTdGVwaGFuIEggV2lzc2VsXShodHRwczovL3R3aXR0ZXIuY29tL25vdGVzc2Vuc2VpKSBhdCBbd2lzc2VsLm5ldCBibG9nXShodHRwczovL3dpc3NlbC5uZXQpCi0gMjAxOS0wOS0wOSAtIFtDbG91ZC1uYXRpdmUgZGV2ZWxvcG1lbnQgLSBDcmVhdGluZyBSRVNUZnVsIG1pY3Jvc2VydmljZXNdKGh0dHBzOi8vY2xvdWQuaWJtLmNvbS9kb2NzL2Nsb3VkLW5hdGl2ZT90b3BpYz1jbG91ZC1uYXRpdmUtcmVzdC1hcGkpIGluIFtJQk0gQ2xvdWQgRG9jc10oaHR0cHM6Ly9jbG91ZC5pYm0uY29tL2RvY3MpCi0gMjAxOS0wOS0xNCAtIFtHZW5lcmF0aW5nIGFuZCBDb25maWd1cmluZyBhIE1hc3RlcmNhcmQgQVBJIENsaWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubWFzdGVyY2FyZC5jb20vcGxhdGZvcm0vZG9jdW1lbnRhdGlvbi9nZW5lcmF0aW5nLWFuZC1jb25maWd1cmluZy1hLW1hc3RlcmNhcmQtYXBpLWNsaWVudC8pIGF0IFtNYXN0ZXJjYXJkIERldmVsb3BlcnMgUGxhdGZvcm1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1hc3RlcmNhcmQuY29tL3BsYXRmb3JtL2RvY3VtZW50YXRpb24vKQotIDIwMTktMDktMTUgLSBbT3BlbkFQSShTd2FnZ2VyKeWwjuWFpeS4i+iqv+OBuV0oaHR0cHM6Ly9xaWl0YS5jb20vU2hvaWNoaUt1cmFva2EvaXRlbXMvZjFmN2EzYzIzNzZmN2NkOWM1NmEpIGJ5IFtTaG9pY2hpIEt1cmFva2FdKGh0dHBzOi8vcWlpdGEuY29tL1Nob2ljaGlLdXJhb2thKQotIDIwMTktMDktMTcgLSBbVHV0b3JpYWw6IERvY3VtZW50aW5nIGh0dHA0ayBBUElzIHdpdGggT3BlbkFwaTNdKGh0dHBzOi8vd3d3Lmh0dHA0ay5vcmcvdHV0b3JpYWxzL2RvY3VtZW50aW5nX2FwaXNfd2l0aF9vcGVuYXBpLykgYnkgW2h0dHA0a10oaHR0cHM6Ly93d3cuaHR0cDRrLm9yZy8pCi0gMjAxOS0wOS0yMiAtIFtPcGVuQVBJIDPjgpLlrozlhajjgavnkIbop6PjgafjgY3jgovmnKxdKGh0dHBzOi8vYm9vdGgucG0vamEvaXRlbXMvMTU3MTkwMikgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDktMjIgLSBbUkVTVGZ1bCBBUElzOiBUdXRvcmlhbCBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AYW1pcm0ubGF2YXNhbmkvcmVzdGZ1bC1hcGlzLXR1dG9yaWFsLW9mLW9wZW5hcGktc3BlY2lmaWNhdGlvbi1lZWFkYTBlMzkwMWQpIGJ5IFtBbWlyIExhdmFzYW5pXShodHRwczovL21lZGl1bS5jb20vQGFtaXJtLmxhdmFzYW5pKQotIDIwMTktMDktMjIgLSBbUmVkZWZpbmluZyBTREtzIGFzIHNvZnR3YXJlIGRpdmVyc2l0eSBraXRzXShodHRwczovL2RldnJlbC5uZXQvZGV2LXJlbC9yZWRlZmluaW5nLXNka3MtYXMtc29mdHdhcmUtZGl2ZXJzaXR5LWtpdHMpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pIGF0IFtEZXZSZWxDb24gU2FuIEZyYW5jaXNjbyAyMDE5XShodHRwczovL3NmMjAxOS5kZXZyZWwubmV0LykKLSAyMDE5LTA5LTIzIC0gW3N3YWdnZXLjgYvjgolPcGVuQXBpIEdlbmVyYXRvcuOBp1NwcmluZ+OBruOCs+ODvOODieOCkuiHquWLleeUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vbGl0dGxlRmVldC9pdGVtcy80OTJkZjJhZDY4YTA3OTlhNWU1ZSkgYnkgW0BsaXR0bGVGZWV0XShodHRwczovL3FpaXRhLmNvbS9saXR0bGVGZWV0KSBhdCBbUWlpdGFdKGh0dHBzOi8vcWlpdGEuY29tLykKLSAyMDE5LTA5LTI0IC0gW0VpbmUgU3R1bmRlIHdhcyBtaXQgQXBpIEZpcnN0IV0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvSmFuV2VpbnNjaGVua2VyL2VpbmUtc3R1bmRlLXdhcy1taXQtYXBpLWZpcnN0KSBieSBbQGphbndlaW5zY2hlbmtlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qYW53ZWluc2NoZW5rZXIpIGF0IFtKYXZhIEZvcnVtIE5vcmRdKGh0dHBzOi8vamF2YWZvcnVtbm9yZC5kZS8pCi0gMjAxOS0xMC0wOSAtIFtvcGVuYXBpLWdlbmVyYXRvciDjgafnlJ/miJDjgZfjgZ8gR28g44Kv44Op44Kk44Ki44Oz44OI44GnIEJlYXJlciDoqo3oqLzjgpLjgZnjgotdKGh0dHBzOi8vYXV0b3BwLXRlY2guaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8xMC8wOS8yMjIwMzkpIGJ5IFtBa2lyYSBUYW5pbXVyYV0oaHR0cHM6Ly9naXRodWIuY29tL2F1dG9wcCkKLSAyMDE5LTEwLTEwIC0gW0F1dG9tYXRpYyBHZW5lcmF0aW9uIG9mIFJFU1QgQ2xpZW50c10oaHR0cHM6Ly93d3cubWVldHVwLmNvbS9mci1GUi9Dcml0ZW8tTGFicy1UZWNoLVRhbGtzL2V2ZW50cy8yNjQ3NzU3NjgvKSBieSBUaG9tYXMgUGV5cmFyZCwgU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyIGF0IENyaXRlbyBpbiBbRnVsbC1TdGFjayBUZWNoIFRhbGtzIChNZWV0dXApXShodHRwczovL3d3dy5tZWV0dXAuY29tL2ZyLUZSL0NyaXRlby1MYWJzLVRlY2gtVGFsa3MvZXZlbnRzLzI2NDc3NTc2OC8pCi0gMjAxOS0xMC0xMiAtIFtPcGVuQXBp6Ieq5Yqo55Sf5oiQY2xpZW50XShodHRwczovL2Jsb2cuY3Nkbi5uZXQvd3hpZDI3OTgyMjYvYXJ0aWNsZS9kZXRhaWxzLzEwMjUyNzQ2NykgYnkgW+mDkeazvea0sl0oaHR0cHM6Ly9tZS5jc2RuLm5ldC93eGlkMjc5ODIyNikKLSAyMDE5LTEwLTE2IC0gW0hvdyB0byBzaGlwIEFQSXMgZmFzdGVyP10oaHR0cHM6Ly9tZWRpdW0uY29tL0BhY2NvdW50c183NjIyNC9ob3ctdG8tc2hpcC1hcGlzLWZhc3Rlci1jYWJlZjJmODE5ZTQpIGJ5IFtTaW1vbiBHdWlsbGlhbXMgQCBQb25pQ29kZV0oaHR0cHM6Ly9wb25pY29kZS5kZXYpCi0gMjAxOS0xMC0yMiAtIFtPcGVuQVBJICsgU3ByaW5nIEJvb3QoS290bGluKeOBp+ODleOCoeOCpOODq+ODgOOCpuODs+ODreODvOODiUFQSeOCkuS9nOaIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vYm9yb25uZ28vaXRlbXMvNGI3OGI5MjUyNjIwOWRhZWFlZTkpIGJ5IFtZdWtpIEZ1cnVrYXdhXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2lfZnVydWthd2E1KQotIDIwMTktMTAtMjQgLSBbTWljcm9wcm9maWxlIE9wZW5BUEkgLSBDb2RlIEZpcnN0IG9yIERlc2lnbiBGaXJzdD9dKGh0dHBzOi8vZ2l0aHViLmNvbS9wZS1zdC9hcGlkb2NzL2Jsb2IvbWFzdGVyL01pY3JvUHJvZmlsZS1PcGVuQVBJLWFsbC1zbGlkZXMucGRmKSBieSBbUGV0ZXIgW3DJm8qDyZldIFN0ZWluZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vcGVzY2hlKSBhdCBbZWNsaXBzZWNvbiBFdXJvcGUgMjAxOV0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOS9zZXNzaW9ucy9taWNyb3Byb2ZpbGUtb3BlbmFwaS1jb2RlLWZpcnN0LW9yLWRlc2lnbi1maXJzdCkKLSAyMDE5LTExLTA2IC0gW0dlbmVyYXRpbmcgQVBJIGNsaWVudHMgYmFzZWQgb24gT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbS9ibG9nL2dlbmVyYXRpbmctYXBpLWNsaWVudHMtYmFzZWQtb24tb3BlbmFwaS12My1zcGVjaWZpY2F0aW9ucykgYnkgW0RvbWluaWsgSmFzdHJ6xJlic2tpIEAgOThlbGVtZW50c10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbSkKLSAyMDE5LTExLTA2IC0gW09wZW5BUEnjgpLliKnnlKjjgZfjgaboh6rliY3jga5BUEnjgrXjg7zjg5Djg7woU2luYXRyYSnjgpLnp7vmpI3jgZfjgZ/mmYLjga7jg6Hjg6JdKGh0dHBzOi8vcWlpdGEuY29tL1lhc3VoaXJvQUJFL2l0ZW1zL2M3MzkyMGVhYjJkOWQ2ZTk3ZmQ5KSBieSBbWWFzdWhpcm8gQUJFXShodHRwczovL3R3aXR0ZXIuY29tL1lhc3VoaXJvQUJFKQotIDIwMTktMTEtMDcgLSBbQVBJIEZpcnN0IGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSAtIFlvdSBzaG91bGQgeW91IHByYWN0aXNlIGl0ICE/XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUY5aUYzYTFaOFk4KSBieSBbTmljayBWYW4gSG9vZl0oaHR0cHM6Ly93d3cubmlja3Zhbmhvb2YuY29tLykgYXQgW0Rldm94eCBCZWxnaXVtIDIwMTldKGh0dHBzOi8vZGV2b3h4LmJlLykKLSAyMDE5LTExLTA4IC0gW0pIaXBzdGVyIGJleW9uZCBDUlVEIC0gQVBJLUZpcnN0IGZvciBFbnRlcnByaXNlcyBieSBFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bTI4SkZvdktRMjApIGJ5IFtFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vdHdpdHRlci5jb20vZW5yaWNvY29zdGFuemkpIGF0IFtKSGlwc3RlciBDb25mIDIwMTkgaW4gUGFyaXNdKGh0dHBzOi8vamhpcHN0ZXItY29uZi5naXRodWIuaW8vKQotIDIwMTktMTEtMTEgLSBbVHlwZVNjcmlwdCBSRVNUIEFQSeOCr+ODqeOCpOOCouODs+ODiF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkL2l0ZW1zLzdiNzRmN2QzYzQzNTQ1ZGFkZDJiKSBieSBbQHVuaHVycmllZF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkKQotIDIwMTktMTEtMTEgLSBbT25lIFNwZWMgdG8gUnVsZSB0aGVtIGFsbCAtIE9wZW5BUEkgaW4gQWN0aW9uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU1NYXlfbmh0OGVjKSBieSBbQW5kcmVhcyBMaXR0XShodHRwczovL2dpdGh1Yi5jb20vbGl0dGxkcikgYXQgW2NvZGUudGFsa3MgMjAxOV0oaHR0cHM6Ly93d3cuY29kZXRhbGtzLmNvbS8pCi0gMjAxOS0xMS0xMyAtIFtPcGVuQVBJIDMuMCBFZGl0b3IgQW5kIEdlbmVyYXRvciBXaXRoIEEgU3ByaW5nIEJvb3QgRXhhbXBsZV0oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS9kZXNpZ24tYW5kLWdlbmVyYXRlLWFwaS1jb2RlLWZyb20tb3BlbmFwaSkgYXQgW1NpbXBseSBIb3ddKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vKQotIDIwMTktMTEtMTcgLSBbT3BlbkFQSSBHZW5lcmF0b3IgWW91VHViZSBwbGF5bGlzdF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTHRKeUhWTWR6ZkY2ZkJrT1VWNVZEVkVyUDIzQ0dnSEl5KSBhdCBbWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20pCi0gMjAxOS0xMS0yMCAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9ub3RpLnN0L2xvcm5hamFuZS9IdkRIN1UvaW50cm9kdWN0aW9uLXRvLW9wZW5hcGkpIGJ5IFtMb3JuYSBNaXRjaGVsbF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9sb3JuYWphbmUpIGF0IFtHT1RPIENvcGVuaGFnZW4gMjAxOV0oaHR0cHM6Ly9nb3RvY3BoLmNvbS8yMDE5LykKLSAyMDE5LTExLTIwIC0gW0hvdyB0byBHZW5lcmF0ZSBBbmd1bGFyIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zXShodHRwczovL2RvdG5ldHRob3VnaHRzLm5ldC9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1jb2RlLWZyb20tb3BlbmFwaS1zcGVjaWZpY2F0aW9ucy8pIGJ5IEFudXJhagotIDIwMTktMTEtMjMgLSBbU3dhZ2dlciDjgafjga/jgarjgYQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMCDjgavjgojjgosgQVBJIOOCteODvOODkOODvOmWi+eZul0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvdGVjaGJsb2d5YWhvby9zd2FnZ2VyLW9wZW5hcGktc3BlY2lmaWNhdGlvbi0zMC1hcGkpIGJ5IFtUZXRzdXlhIE1vcmltb3RvXShodHRwczovL2dpdGh1Yi5jb20vdDJ5KSBhdCBbSkpVRyBDQ0MgMjAxOSBGYWxsXShodHRwczovL2NjYzIwMTlmYWxsLmphdmEtdXNlcnMuanAvKQotIDIwMTktMTEtMjQgLSBbQWNjZWxlcmF0ZSBGbHV0dGVyIGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSBhbmQgRGFydCBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AaXJpbmFzb3V0aHdlbGxfMjIwL2FjY2VsZXJhdGUtZmx1dHRlci1kZXZlbG9wbWVudC13aXRoLW9wZW5hcGktYW5kLWRhcnQtY29kZS1nZW5lcmF0aW9uLTFmMTZmODMyOWE2YSkgYnkgW0lyaW5hIFNvdXRod2VsbF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpcmluYXNvdXRod2VsbF8yMjApCi0gMjAxOS0xMS0yNSAtIFtvcGVuYXBpLWdlbmVyYXRvcuOBp+aJi+i7veOBq+OCueOCv+ODluOCteODvOODkOOBqOOCr+ODqeOCpOOCouODs+ODiOOBrueUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vcG9jaG9wb2NobzEzL2l0ZW1zLzhkYjY2MmUxOTM0ZmIyYjQwOGI4KSBieSBbQHBvY2hvcG9jaG8xM10oaHR0cHM6Ly90d2l0dGVyLmNvbS9wb2Nob3BvY2hvMTMpCi0gMjAxOS0xMS0yNiAtIFtDb3JkYUNvbiAyMDE5IEhpZ2hsaWdodHM6IEJyYWlkIFNlcnZlciBhbmQgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIENvcmRhIENsaWVudCBBUEnigJlzXShodHRwczovL2Jsb2cuYjlsYWIuY29tL2NvcmRhY29uLTIwMTktaGlnaGxpZ2h0cy1icmFpZC1zZXJ2ZXItYW5kLW9wZW5hcGktZ2VuZXJhdG9yLWZvci1jb3JkYS1mbG93cy1hcGktcy1kMjQxNzljY2IyN2MpIGJ5IFtBZGVsIFJ1c3R1bV0oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS9AYWRlbHJlc3RvbSkgYXQgW0I5bGFiXShodHRwczovL2Jsb2cuYjlsYWIuY29tLykKLSAyMDE5LTEyLTAzIC0gW0EgUm9hZCB0byBMZXNzIENvZGluZzogQXV0by1HZW5lcmF0ZSBBUElMaWJyYXJ5XShodHRwczovL3d3dy5jb3JkYS5uZXQvYmxvZy9hLXJvYWQtdG8tbGVzcy1jb2RpbmctYXV0by1nZW5lcmF0ZS1hcGlsaWJyYXJ5LykgYXQgW0NvcmRhIEJsb2ddKGh0dHBzOi8vd3d3LmNvcmRhLm5ldC9ibG9nLykKLSAyMDE5LTEyLTA0IC0gW0FuZ3VsYXLvvItOZXN0SlPvvItPcGVuQVBJ77yIU3dhZ2dlcu+8ieOBp+ODnuOCpOOCr+ODreOCteODvOODk+OCueOCkuimlumHjuOBq+WFpeOCjOOBn+eSsOWig+OCkuiAg+OBiOOCi10oaHR0cHM6Ly9xaWl0YS5jb20vdGVyYWN5NTUvaXRlbXMvMDMyN2M3YTE3MGVjNzcyOTcwYzYpIGJ5IFvjgabjgonjgZfjg7xdKGh0dHBzOi8vdHdpdHRlci5jb20vdGVyYWN5NTUpCi0gMjAxOS0xMi0wNSAtIFtDb2RlIGdlbmVyYXRpb24gb24gdGhlIEphdmEgVk1dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcy9jb2RlLWdlbmVyYXRpb24tb24tdGhlLWphdmEtdm0tMjAxOS0xMi0wNSkgYnkgW1NlYW4gU3VsbGl2YW5dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcykKLSAyMDE5LTEyLTE3IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBPQXV0aDIg44Ki44Kv44K744K544OI44O844Kv44Oz55m66KGM44Gu44Kz44O844OJ44G+44Gn55Sf5oiQ44GX44Gm44G/44KLXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvMjAxOS8xMi8xNy9vcGVuYXBpLWdlbmVyYXRvci1vYXV0aDItYWNjZXNzdG9rZW4vKSBieSBbVEVDSFNDT1JFXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvKQotIDIwMTktMTItMjMgLSBbVXNlIEFkYSBmb3IgWW91ciBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3LmVsZWN0cm9uaWNkZXNpZ24uY29tL3RlY2hub2xvZ2llcy9lbWJlZGRlZC1yZXZvbHV0aW9uL2FydGljbGUvMjExMTkxNzcvdXNlLWFkYS1mb3IteW91ci13ZWItZGV2ZWxvcG1lbnQpIGJ5IFtTdGVwaGFuZSBDYXJyZXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGNhcnJleikKLSAyMDE5LTEyLTIzIC0gW09wZW5BUEnjga7jgrnjgq3jg7zjg57jgpLliIblibLjg7vmp4vpgKDljJbjgZfjgabjgYTjgY/mlrnms5VdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL2FydGljbGVzL3N0cnVjdHVyZWQtb3BlbmFwaS1zY2hlbWEpIGJ5IFvlsI/po6/loZrpgZTkuZ9dKGh0dHBzOi8vZ2l0aHViLmNvbS90Mmg1KSBhdCBbR2lGVCwgSW5jXShodHRwczovL2dpZnQtdGVjaC5jby5qcC8pCi0gMjAyMC0wMS0xNyAtIFtPcGVuQVBJIGRlbW8gZm9yIFB1bHAgMy4wIEdBXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1GQlAtTTBaUGZ3JnQ9MTc4cykgYnkgW1B1bHBdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNJNDNGZnM0VlBEdjdhd1h2dkJKZlJRKSBhdCBbWW91dHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vKQotIDIwMjAtMDEtMTkgLSBbV2h5IGRvY3VtZW50IGEgUkVTVCBBUEkgYXMgY29kZT9dKGh0dHBzOi8vZGV2LnRvL3JvbGZzdHJlZWZrZXJrL3doeS1kb2N1bWVudC1hLXJlc3QtYXBpLWFzLWNvZGUtNWU3cCkgYnkgW1JvbGYgU3RyZWVma2Vya10oaHR0cHM6Ly9naXRodWIuY29tL3Jwc3RyZWVmKSBhdCBbREVWIENvbW11bml0eV0oaHR0cHM6Ly9kZXYudG8pCi0gMjAyMC0wMS0yOCAtIFtHZXQgWW91ciBTZXJ2ZXJsZXNzIFN3YWdnZXIgQmFjayB3aXRoIE9wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlci9nZXQteW91ci1zZXJ2ZXJsZXNzLXN3YWdnZXItYmFjay13aXRoLW9wZW5hcGktNDhnYykgYnkgW01hdHQgVHlsZXJdKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlcikKLSAyMDIwLTAxLTMwIC0gW09wZW5BUEkgR2VuZXJhdG9y44G444Gu44Kz44Oz44OI44Oq44OT44Ol44O844OIXShodHRwczovL3d3dy55dXRha2EwbS53b3JrL2VudHJ5LzIwMjAvMDEvMzAvMTYzOTA1KSBieSBbeXV0YWthMG1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dXRha2EwbSkKLSAyMDIwLTAyLTAxIC0gW1VzaW5nIE9wZW5BUEkgdG8gTWF4aW1pc2UgWW91ciBQdWxwIDMgRXhwZXJpZW5jZV0oaHR0cHM6Ly9mb3NkZW0ub3JnLzIwMjAvc2NoZWR1bGUvZXZlbnQvb3BlbmFwaS8pIGJ5IFtEZW5uaXMgS2xpYmFuXShodHRwczovL2dpdGh1Yi5jb20vZGtsaWJhbi8pIGF0IFtGT1NERU1dKGh0dHBzOi8vZm9zZGVtLm9yZy8pCi0gMjAyMC0wMi0wNyAtIFtXaHkgeW91IHNob3VsZCB1c2UgT3BlbkFQSSBmb3IgeW91ciBBUEkgZGVzaWduXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpoYjd2VUFwTFc4JnQ9OTI3cykgYnkgW05pY2sgVmFuIEhvb2ZdKGh0dHBzOi8vYXBpY29uZmVyZW5jZS5uZXQvc3BlYWtlci9uaWNrLXZhbi1ob29mLykgYXQgW0FQSSBDb25mZXJlbmNlXShodHRwczovL2FwaWNvbmZlcmVuY2UubmV0LykKLSAyMDIwLTAyLTE3IC0gW1J1YnluZXRlczogdXNpbmcgT3BlbkFQSSB0byB2YWxpZGF0ZSBLdWJlcm5ldGVzIGNvbmZpZ3NdKGh0dHBzOi8vd3d3LmJyaWdodGJveC5jb20vYmxvZy8yMDIwLzAyLzE3L3VzaW5nLW9wZW5hcGktdG8tdmFsaWRhdGUta3ViZXJuZXRlcy1jb25maWdzLykgYnkgTmVpbCBXaWxzb24gYXQgW0JyaWdodGJveF0oaHR0cHM6Ly93d3cuYnJpZ2h0Ym94LmNvbS8pCi0gMjAyMC0wMi0yMCAtIFtCdWlsZGluZyBTREtzIGZvciB0aGUgZnV0dXJlXShodHRwczovL2RldmJsb2cueGVyby5jb20vYnVpbGRpbmctc2Rrcy1mb3ItdGhlLWZ1dHVyZS1iNzlmZjcyNmRmZDYpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pCi0gMjAyMC0wMi0yNyAtIFtOdXh05Yip55So44OX44Ot44OA44Kv44OI44GnSUUxMeOBqOS7suiJr+OBj+OBmeOCi+OBn+OCgeOBrkUyRV0oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvZW50cnkvZTJlLWllMTEpIGF0IFtNZWRwZWVyLmNvLmpwIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvKQotIDIwMjAtMDItMjkgLSBbUHJvdmlkaW5nIFN1cHBvcnQgdG8gSW9UIERldmljZXMgRGVwbG95ZWQgaW4gRGlzY29ubmVjdGVkIFJ1cmFsIEVudmlyb25tZW50IChDb25mZXJlbmNlIHBhcGVyKV0oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMwLTQxNDk0LThfMTQpIGJ5IFNlcmdpbyBMYXNvLCBEYW5pZWwgRmxvcmVzLU1hcnTDrW4sIEp1YW4gTHVpcyBIZXJyZXJhQ2FybG9zLCBDYW5hbEp1YW4gTWFudWVsLCBNdXJpbGxvSmF2aWVyIEJlcnJvY2FsCi0gMjAyMC0wMy0wMiAtIFtIb3cgVG8gR2VuZXJhdGUgQW5ndWxhciAmIFNwcmluZyBDb2RlIEZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5tb2trYXBwcy5kZS9ibG9nL2hvdy10by1nZW5lcmF0ZS1hbmd1bGFyLWFuZC1zcHJpbmctY29kZS1mcm9tLW9wZW4tYXBpLXNwZWNpZmljYXRpb24vKSBieSBbTWljaGFlbCBIb2ZmbWFubl0oaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvKQotIDIwMjAtMDMtMDIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgKyBUeXBlU2NyaXB0IOOBp+Wni+OCgeOCi+iHquWLleeUn+aIkOOBruWei+OBq+WuiOOCieOCjOOBn+ixiuOBi+OBquOCr+ODqeOCpOOCouODs+ODiOeUn+a0u10oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItdHlwZXNjcmlwdCkgYnkgW+S6lOeZvuiUtSDnm7TmqLldKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL21lbWJlcnMvbmFva2lpb3JvaSkgYXQgW0dpRlTmoKrlvI/kvJrnpL5dKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwLykKLSAyMDIwLTAzLTEwIC0gW09wZW5BUEkgR2VuZXJhdG9yIE1lZXR1cCAjMV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vYWtpaGl0b19uYWthbm8vb3BlbmFwaS1nZW5lcmF0b3ItbWVldHVwLW51bWJlci0xKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbT3BlbkFQSSBHZW5lcmF0b3IgTWVldHVwICMxXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLW1lZXR1cC5jb25ucGFzcy5jb20vZXZlbnQvMTY4MTg3LykKLSAyMDIwLTAzLTE1IC0gW0xvYWQgVGVzdGluZyBZb3VyIEFQSSB3aXRoIFN3YWdnZXIvT3BlbkFQSSBhbmQgazZdKGh0dHBzOi8vazYuaW8vYmxvZy9sb2FkLXRlc3RpbmcteW91ci1hcGktd2l0aC1zd2FnZ2VyLW9wZW5hcGktYW5kLWs2KQotIDIwMjAtMDQtMTMgLSBb5L+655qE44CQT0FT44CR44Go44Gu5ZCR44GN5ZCI44GE5pa5ICjniIbpgJ/jgadPcGVuQVBJ44Go5Y+L6YGU44Gr44Gq44KN44GGKV0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAyMC8wNC8xMy8xMDAwMDApIGluIFtPUFRpbSBCbG9nXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC8pCi0gMjAyMC0wNC0yMiAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vaW50cm9kdWN0aW9uLXRvLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW0tyaXN0b3BoZXIgU2FuZG92YWxdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vYXV0aG9yL3NhbmRvdmFsZWZmZWN0LykgaW4gW05vcmRpYyBBUElzXShodHRwczovL25vcmRpY2FwaXMuY29tLykKLSAyMDIwLTA0LTI3IC0gW0hvdyB3ZSB1c2UgT3BlbiBBUEkgdjMgc3BlY2lmaWNhdGlvbiB0byBhdXRvLWdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uLCBjb2RlLXNuaXBwZXRzIGFuZCBjbGllbnRzXShodHRwczovL21lZGl1bS5jb20vcGRmLWdlbmVyYXRvci1hcGkvaG93LXdlLXVzZS1vcGVuLWFwaS12My1zcGVjaWZpY2F0aW9uLXRvLWF1dG8tZ2VuZXJhdGUtYXBpLWRvY3VtZW50YXRpb24tY29kZS1zbmlwcGV0cy1hbmQtY2xpZW50cy1kMTI3YTNjZWE3ODQpIGJ5IFtUYW5lbCBUw6RoZXDDtWxkXShodHRwczovL21lZGl1bS5jb20vQHRhbmVsLnRhaGVwb2xkKQotIDIwMjAtMDUtMDkgLSBbT3BlbkFQSeOBp+OBiuaJi+i7veOBq+ODouODg+OCr0FQSeOCteODvOODkOODvOOCkuWLleOBi+OBmV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZS9pdGVtcy85N2NhNmE4ZGQ0NjA1Njk1YzI1YykgYnkgW1NhY2hpZSBLYW1iYV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZSkKLSAyMDIwLTA1LTE4IC0gW1NwcmluZyBCb290IFJFU1Qgd2l0aCBPcGVuQVBJIDNdKGh0dHBzOi8vZGV2LnRvL2FsZm9uemphbmZyaXRoei9zcHJpbmctYm9vdC1yZXN0LXdpdGgtb3BlbmFwaS0zLTU5am0pIGJ5IFtBbGZvbnogSmFuIEZyaXRoel0oaHR0cHM6Ly9kZXYudG8vYWxmb256amFuZnJpdGh6KQotIDIwMjAtMDUtMTkgLSBbRGVhZCBTaW1wbGUgQVBJcyB3aXRoIE9wZW4gQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXNJYVhtUjZ4UkF3KSBieSBbQ2hyaXMgVGFua2Vyc2xleV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYWdvbm1hbnRhbmspIGF0IFtOZXhtb10oaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tLykKLSAyMDIwLTA1LTIyIC0gW1R5cGVTY3JpcHQgUkVTVCBBUEkgQ2xpZW50XShodHRwczovL2Rldi50by91bmh1cnJpZWQvdHlwZXNjcmlwdC1yZXN0LWFwaS1jbGllbnQtNGluMykgYnkgWyJ1bmh1cnJpZWQiXShodHRwczovL2Rldi50by91bmh1cnJpZWQpCi0gMjAyMC0wNS0yOCAtIFvjgJDkvb/nlKggbG90aWZ5ICsgU3dhZ2dlciDlu7rnva7lj6/lhbHnlKjnmoQgTElORSBOb3RpZnkgYm9044CRIC0gI05pSmlhIEAgQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuIOesrCAjMTkg5bCP6IGaXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWFnWVZ6NmR6aDFJKSBieSBbQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDeGVZVXlaTm5IbXBYMjNZTkYtZXd2dykKLSAyMDIwLTA1LTI4IC0gW0J1aWxkaW5nIEFQSXMgd2l0aCBMYXJhdmVsIHVzaW5nIE9wZW5BUEldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eGV4THZRcUFoaUEpIGJ5IFtDaHJpcyBUYW5rZXJzbGV5XShodHRwczovL2dpdGh1Yi5jb20vZHJhZ29ubWFudGFuaykgYXQgW0xhcmFjb24gRVVdKGh0dHBzOi8vbGFyYWNvbi5ldS8pCi0gMjAyMC0wNi0xMiAtIFtJbnRlcm9wZXJhYmlsaXR5IGJ5IGNvbnN0cnVjdGlvbjogY29kZSBnZW5lcmF0aW9uIGZvciBBcnJvd2hlYWQgQ2xpZW50c10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkyNzQ3NDYpIGJ5IE1pY2hlbGUgQWxiYW5vLCBCcmlhbiBOaWVsc2VuIGF0IFsyMDIwIElFRUUgQ29uZmVyZW5jZSBvbiBJbmR1c3RyaWFsIEN5YmVycGh5c2ljYWwgU3lzdGVtcyAoSUNQUyldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85Mjc0NTQ0L3Byb2NlZWRpbmcpCi0gMjAyMC0wNi0yMyAtIFvmlrDopo/jgrXjg7zjg5Djg7zjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgatUeXBlU2NyaXB044KS5o6h55So44GX44Gm44G/44GfXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvMjAyMDA2MjMpIGF0IFtDQU0gVGVjaCBCbG9nXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvdGVjaC1ibG9nLykKLSAyMDIwLTA2LTI5IC0gW0FydGlmYWN0IEFic3RyYWN0OiBEZXBsb3ltZW50IG9mIEFQSXMgb24gQW5kcm9pZCBNb2JpbGUgRGV2aWNlcyBhbmQgTWljcm9jb250cm9sbGVyc10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkxMjczNTMpIGJ5IFtTZXJnaW8gTGFzbyA7IE1hcmlubyBMaW5hamUgOyBKb3NlIEdhcmNpYS1BbG9uc28gOyBKdWFuIE0uIE11cmlsbG8gOyBKYXZpZXIgQmVycm9jYWxdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85MTI3MzUzL2F1dGhvcnMjYXV0aG9ycykgYXQgWzIwMjAgSUVFRSBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gUGVydmFzaXZlIENvbXB1dGluZyBhbmQgQ29tbXVuaWNhdGlvbnMgKFBlckNvbSldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85MTI1NDQ5L3Byb2NlZWRpbmcpCi0gMjAyMC0wNy0wNyAtIFs1IEJlc3QgQVBJIERvY3VtZW50YXRpb24gVG9vbHNdKGh0dHBzOi8vYmxvZy5kcmVhbWZhY3RvcnkuY29tLzUtYmVzdC1hcGktZG9jdW1lbnRhdGlvbi10b29scy8pIGJ5IFN1c2FubmEgQm91c2UgYXQgW0RyZWFtRmFjdG9yeSBCbG9nXShodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS8pCi0gMjAyMC0wNy0xMiAtIFtPcGVuIEFQSSAzLjDjga7lrprnvqnjgYvjgolnb2xhbmfjga7jgrXjg7zjg5DjgrPjg7zjg4njga7jgrnjgrHjg6vjg4jjg7PjgpLkvZzmiJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Byb2Zlc3Nvci9pdGVtcy80Y2JkMDRlYzA4NGQxMzA1N2JjMikgYnkgW0Bwcm9mZXNzb3IgKFFpaXRhIEJsb2cpXShodHRwczovL3FpaXRhLmNvbS9wcm9mZXNzb3IpCi0gMjAyMC0wNy0yMCAtIFtEYXRhZG9nIEFQSSBjbGllbnQgbGlicmFyaWVzIG5vdyBhdmFpbGFibGUgZm9yIEphdmEgYW5kIEdvXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cvamF2YS1nby1saWJyYXJpZXMvKSBieSBKb3JkYW4gT2JleSBhdCBbRGF0YWRvZyBCbG9nXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cpCi0gMjAyMC0wNy0yMyAtIFtHZW5lcmF0ZSBDbGllbnQgU0RLIGZvciAuTkVUIENvcmUgdXNpbmcgT3BlbiBBcGldKGh0dHBzOi8vZGV2LnRvL25vMGxhdzEvZ2VuZXJhdGUtY2xpZW50LXNkay1mb3ItbmV0LWNvcmUtdXNpbmctb3Blbi1hcGktMmRnaCkgYnkgW051bm8gUmVpc10oaHR0cHM6Ly9kZXYudG8vbm8wbGF3MSkKLSAyMDIwLTA3LTI2IC0gW0RhcnTjga5odHRwX2ludGVyY2VwdG9y44Op44Kk44OW44Op44Oq44KS5L2/44GG44Go6YWN5YiX44Gu44Kv44Ko44Oq44OR44Op44Oh44O844K/44GM5raI44GI44Gm44GX44G+44GG5Lu244Gu5b+c5oCl5Yem572uXShodHRwczovL3FpaXRhLmNvbS9neWFtb3RvL2l0ZW1zL2VlZWZmODFiNjc3MDQ4NzMxOWVkKSBieSBbQGd5YW1vdG9dKGh0dHBzOi8vcWlpdGEuY29tL2d5YW1vdG8pCi0gMjAyMC0wOC0wMSAtIFtHZW5lcmF0ZSBBbmd1bGFyIFJlYWN0aXZlRm9ybXMgZnJvbSBTd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlci9nZW5lcmF0ZS1hbmd1bGFyLXJlYWN0aXZlZm9ybXMtZnJvbS1zd2FnZ2VyLW9wZW5hcGktMzVoOSkgYnkgW01hcnRpbiBNY1dob3J0ZXJdKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlcikKLSAyMDIwLTA4LTAzIC0gW0NyaWFuZG8gQmlibGlvdGVjYXMgcGFyYSBBUElzIFJFU1RmdWwgY29tIE9wZW5BUEksIFN3YWdnZXIgRWRpdG9yIGUgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZXZlcmlzQnJhc2lsL2NyaWFuZG8tYmlibGlvdGVjYXMtcGFyYS1hcGlzLXJlc3RmdWwtY29tLW9wZW5hcGktc3dhZ2dlci1lZGl0b3ItZS1vcGVuYXBpLWdlbmVyYXRvci03NTM0OWE2NDIwZmQpIGJ5IFtldmVyaXMgQnJhc2lsIChhbiBOVFQgREFUQSBDb21wYW55KV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BldmVyaXNCcmFzaWwpCi0gMjAyMC0wOC0xOSAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgpLpgKPmkLrjgZfjgabjgb/jgojjgYZdKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hcnRpY2xlLzE3NzA0KSBieSBb5bKh5LqVIOijleefoijjgYrjgYvjgYQg44KG44GG44KEKV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2F1dGhvci8xNzU4OCksIFvms4kg5YudKOOBhOOBmuOBvyDjgb7jgZXjgospXShodHRwczovL3RoaW5raXQuY28uanAvYXV0aG9yLzE3NzA1KSBhdCBbVGhpbmsgSVTvvIjjgrfjg7Pjgq/jgqTjg4Pjg4jvvIldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC8pCi0gMjAyMC0wOC0yNSAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgaggVHlwZVNjcmlwdCDjgaflnovlronlhajjgavjg5Xjg63jg7Pjg4jjgqjjg7Pjg4nplovnmbrjgpLjgZfjgabjgYTjgovoqbFdKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwL2VudHJ5LzIwMjAvMDgvMjUvMTM1NjMxKSBhdCBbU21hcnRIUiBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwLykKLSAyMDIwLTA5LTEwIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJIHdpdGggSW5zdGFuYV0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaS13aXRoLWluc3RhbmEvKSBieSBbQ2VkcmljIFppZWxdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvYXV0aG9yL2NlZHJpY3ppZWwvKSBhdCBbSW5zdGFuYSBCbG9nXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nLykKLSAyMDIwLTA5LTE3IC0gW0dlbmVyYXRlIFBvd2VyU2hlbGxTREsgdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2h1ZnoubGVhcm4vZ2VuZXJhdGUtcG93ZXJzaGVsbHNkay11c2luZy1vcGVuYXBpLWdlbmVyYXRvci0zM2I3MDA4OTFlMzMpIGJ5IFtHaHVmcmFuIFphaGlkaV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnaHVmei5sZWFybikKLSAyMDIwLTA5LTI0IC0gW0hvdyB0byBhdXRvbWF0ZSBBUEkgY29kZSBnZW5lcmF0aW9uIChPcGVuQVBJL1N3YWdnZXIpIGFuZCBib29zdCBwcm9kdWN0aXZpdHkgLSBUdXRvcmlhbCB3aXRoIFJlYWN0IE5hdGl2ZSBmZWF0dXJpbmcgVHlwZVNjcmlwdF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraS9ob3ctdG8tYXV0b21hdGUtYXBpLWNvZGUtZ2VuZXJhdGlvbi1vcGVuYXBpLXN3YWdnZXItYW5kLWJvb3N0LXByb2R1Y3Rpdml0eS0xMTc2YTAwNTZkOGEpIGJ5IFtTYW5qaW4gQ2VsZXNraV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraSkKLSAyMDIwLTA5LTI1IC0gW0dlbmVyYXRlIE9wZW5BUEkgQW5ndWxhciBDbGllbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28vZ2VuZXJhdGUtb3BlbmFwaS1hbmd1bGFyLWNsaWVudC04YzkyODhlOGJiZDQpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28pCi0gMjAyMC0xMC0yNCAtIFtXb3JraW5nIHdpdGggTWljcm9zb2Z0IElkZW50aXR5IC0gUmVhY3QgTmF0aXZlIENsaWVudF0oaHR0cHM6Ly93d3cuam9zZXBoZ3VhZGFnbm8ubmV0LzIwMjAvMTAvMjQvd29ya2luZy13aXRoLW1pY3Jvc29mdC1pZGVudGl0eS1yZWFjdC1uYXRpdmUtY2xpZW50KSBieSBbSm9zZXBoIEd1YWRhZ25vXShodHRwczovL3d3dy5qb3NlcGhndWFkYWduby5uZXQvKQotIDIwMjAtMTAtMzEgLSBbW0IyXSBPcGVuQVBJIFNwZWNpZmljYXRpb27snLzroZwg7YOA7J6FLeyEuOydtO2UhO2VmOqyjCBBUEkg6rCc67Cc7ZWY6riwOiDtnazrp53tjrggVlMg7KCI66ed7Y64XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUo0SkhMRVNBaUZrKSBieSDstZztg5zqsbQgYXQgW0ZFQ29uZiAyMDIwXShodHRwczovLzIwMjAuZmVjb25mLmtyLykKLSAyMDIwLTExLTA1IC0gW0F1dG9tYXRlZCBSRVNULUFwaSBDb2RlIEdlbmVyYXRpb246IFdpZSBJVC1TeXN0ZW1lIG1pdGVpbmFuZGVyIHNwcmVjaGVuXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nL2F1dG9tYXRlZC1yZXN0LWFwaS1jb2RlLWdlbmVyYXRpb24td2llLWl0LXN5c3RlbWUtbWl0ZWluYW5kZXItc3ByZWNoZW4pIGJ5IFN0ZWZhbiBSb3R0ZW5zdGVpbmVyIGF0IFtNQVNTSVZFIEFSVCBCbG9nXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nKQotIDIwMjAtMTItMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadHb+OBrkFQSeOCteODvOODkOODvC/jgq/jg6njgqTjgqLjg7Pjg4jjgrPjg7zjg4njgpLoh6rli5XnlJ/miJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Nha2ktZW5naW5lZXJpbmcvaXRlbXMvYjIwZDhiNjA3NGM0ZGE5NjY0YTUpIGJ5IFtAc2FraS1lbmdpbmVlcmluZ10oaHR0cHM6Ly9xaWl0YS5jb20vc2FraS1lbmdpbmVlcmluZykKLSAyMDIwLTEyLTA0IC0gW1NjYWxpbmcgdGhlIFRlc3QgQ292ZXJhZ2Ugb2YgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N0xrZTlkSFJxVDApIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiArIEF1dG9tb3RpdmUgTGludXggU3VtbWl0IDIwMjBdKGh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvYXJjaGl2ZS8yMDIwL29wZW4tc291cmNlLXN1bW1pdC1qYXBhbi8pIChbU2xpZGVzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L3NjYWxpbmctdGhlLXRlc3QtY292ZXJhZ2Utb2Ytb3BlbmFwaS1nZW5lcmF0b3ItZm9yLTMwLXBsdXMtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzKSkKLSAyMDIwLTEyLTA5IC0gW+ODl+ODreOCuOOCp+OCr+ODiOOBq09wZW5BUEkgR2VuZXJhdG9y44Gn6Ieq5YuV55Sf5oiQ44GV44KM44Gf5Z6L5LuY44GNQVBJIENsaWVudOOCkuWwjuWFpeOBl+OBn+ipsV0oaHR0cHM6Ly9xaWl0YS5jb20veW9zaGlmdWppVC9pdGVtcy85MDVjMTg3MDBlZGUyM2Y0MDg0MCkgYnkgW0B5b3NoaWZ1amlUXShodHRwczovL2dpdGh1Yi5jb20veW9zaGlmdWppVCkKLSAyMDIwLTEyLTE1IC0gW05leHQuanMgKyBOZXN0SlMgKyBHcmFwaFFM44Gn5aSJ5YyW44Gr6L+95b6T44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44G4IOOAnCDjgrfjg6fjg4Pjg5Tjg7PjgrDjgq/jg7zjg53jg7Pjga7kuovkvovntLnku4tdKGh0dHBzOi8vdGVjaGJsb2cueWFob28uY28uanAvZW50cnkvMjAyMDEyMTUzMDA1Mjk1Mi8pIGJ5IFvlsI/lgIkg6Zm4XShodHRwczovL2dpdGh1Yi5jb20vb2d1Z3U5KSBhdCBbWWFob28hIEpBUEFOIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy55YWhvby5jby5qcC8pCi0gMjAyMS0wMS0wOCAtIFtIZWxsbywgTmV3IEFQSSDigJMgUGFydCAxXShodHRwczovL3d3dy5uZ2lueC5jb20vYmxvZy9oZWxsby1uZXctYXBpLXBhcnQtMS8pIGJ5IFtKZXJlbXkgU2NodWxtYW5dKGh0dHBzOi8vd3d3Lm5naW54LmNvbS9wZW9wbGUvamVyZW15LXNjaHVsbWFuLykgYXQgW01ham9yIExlYWd1ZSBCYXNlYmFsbF0oaHR0cHM6Ly93d3cubWxiLmNvbSkKLSAyMDIxLTAxLTE4IC0gW+OAjOOCouODl+ODqumWi+eZuuOBguOCi+OBguOCi+OAjeOCkueWkeOBhuOBk+OBqOOBi+OCieWni+OBvuOBo+OBn+OAgUFQSSBDbGllbnTjgrPjg7zjg4njga7oh6rli5XnlJ/miJDjgJDjg4fjg5bjgrnjg4gyMDIw44CRXShodHRwczovL2NvZGV6aW5lLmpwL2FydGljbGUvZGV0YWlsLzEzNDA2P3A9MikgYnkgW0NvZGVaaW5l57eo6ZuG6YOoXShodHRwczovL2NvZGV6aW5lLmpwL2F1dGhvci8xKQotIDIwMjEtMDItMDUgLSBbUkVTVC1BUEktUm91bmR0cmlwIHdpdGggU3ByaW5nRG9jIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ibG9nLnZpYWRlZS5kZS9lbi9yZXN0LWFwaS1yb3VuZHRyaXApIGJ5IFtCZW5qYW1pbiBLbGF0dF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5rbGF0dCkgYXQgW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlL2VuLykKLSAyMDIxLTAyLTE3IC0gW1JFU1QtQVBJLVJvdW5kdHJpcCB3aXRoIFNwcmluZ0RvYyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9uZXJkLWZvci10ZWNoL3Jlc3QtYXBpLXJvdW5kdHJpcC13aXRoLXNwcmluZ2RvYy1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItMzBiZDI3Y2NmNjk4KSBieSBbY2xvdWQgQHZpYWRlZV0oaHR0cHM6Ly9jbG91ZC12aWFkZWUubWVkaXVtLmNvbS8pCi0gMjAyMS0wMy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDlt6XlhbfnmoTourrlnZHlsJ3or5VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxL2FydGljbGUvZGV0YWlscy8xMTQ1MzE5NzUpIGJ5IFvni6zlrrbpm6jlpKldKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxKSBhdCBbQ1NETuWumOaWueWNmuWuol0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0LykKLSAyMDIxLTAzLTE2IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xODAyNzA0KSBieSBb6auY5qW8WmVlXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci91c2VyLzU4MzYyNTUpIGF0IFvohb7orq/kupHkuJPmoI9dKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2NvbHVtbikKLSAyMDIxLTAzLTI0IC0gW29wZW5hcGktZ2VuZXJhdG9yLWNsaSDjgavjgojjgosgVHlwZVNjcmlwdCDlnovlrprnvqldKGh0dHBzOi8vemVubi5kZXYvdGFrZXBlcGUvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLXRzKSBieSBbVGFrZWZ1bWkgWW9zaGlpXShodHRwczovL3plbm4uZGV2L3Rha2VwZXBlKQotIDIwMjEtMDMtMjggLSBbVHJ5aW5nIG91dCBOZXN0SlMgcGFydCA0OiBHZW5lcmF0ZSBUeXBlc2NyaXB0IGNsaWVudHMgZnJvbSBPcGVuQVBJIGRvY3VtZW50c10oaHR0cHM6Ly9kZXYudG8vYXJuYXVkY29ydGlzc2UvdHJ5aW5nLW91dC1uZXN0anMtcGFydC00LWdlbmVyYXRlLXR5cGVzY3JpcHQtY2xpZW50cy1mcm9tLW9wZW5hcGktZG9jdW1lbnRzLTI4bWspIGJ5IFtBcm5hdWQgQ29ydGlzc2VdKGh0dHBzOi8vZGV2LnRvL2FybmF1ZGNvcnRpc3NlKQotIDIwMjEtMDMtMzEgLSBbT3BlbiBBUEkgU2VydmVyIEltcGxlbWVudGF0aW9uIFVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFtCYWVsZHVuZ10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tLykKLSAyMDIxLTAzLTMxIC0gW+S9v+eUqE9wZW5BUEkgR2VuZXJhdG9y5a+m54++T3BlbiBBUEkgU2VydmVyXShodHRwczovL3d3dy4xanUub3JnL2FydGljbGUvamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFvlhITogZrntrJdKGh0dHBzOi8vd3d3LjFqdS5vcmcvKQotIDIwMjEtMDQtMTkgLSBbSW50cm9kdWNpbmcgVHdpbGlv4oCZcyBPcGVuQVBJIFNwZWNpZmljYXRpb24gQmV0YV0oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2ludHJvZHVjaW5nLXR3aWxpby1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLWJldGEpIGJ5IFtHQVJFVEggUEFVTCBKT05FU10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2F1dGhvci9ncGopIGF0IFtUd2lsaW8gQmxvZ10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nKQotIDIwMjEtMDQtMjIgLSBbTGV2ZXJhZ2luZyBPcGVuQXBpIHN0cmVuZ3RocyBpbiBhIE1pY3JvLVNlcnZpY2UgZW52aXJvbm1lbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS91bmlidWRkeS10ZWNobm9sb2d5LWJsb2cvbGV2ZXJhZ2luZy1vcGVuYXBpLXN0cmVuZ3Rocy1pbi1hLW1pY3JvLXNlcnZpY2UtZW52aXJvbm1lbnQtM2Q3ZjllN2MyNmZmKSBieSBOaWNvbGFzIEplbGxhYiBhdCBbVW5pYnVkZHkgVGVjaG5vbG9neSBCbG9nXShodHRwczovL21lZGl1bS5jb20vdW5pYnVkZHktdGVjaG5vbG9neS1ibG9nKQotIDIwMjEtMDQtMjcgLSBbRnJvbSB6ZXJvIHRvIHB1Ymxpc2hpbmcgUG93ZXJTaGVsbCBBUEkgY2xpZW50cyBpbiBQb3dlclNoZWxsIEdhbGxlcnkgd2l0aGluIG1pbnV0ZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvZnJvbS16ZXJvLXRvLXB1Ymxpc2hpbmctcG93ZXJzaGVsbC1hcGktY2xpZW50cy1pbi1wb3dlcnNoZWxsLWdhbGxlcnktd2l0aGluLW1pbnV0ZXMpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW1Bvd2VyU2hlbGwgKyBEZXZPcHMgR2xvYmFsIFN1bW1pdCAyMDIxXShodHRwczovL2V2ZW50cy5kZXZvcHNjb2xsZWN0aXZlLm9yZy9ldmVudC9wb3dlcnNoZWxsLWRldm9wcy1nbG9iYWwtc3VtbWl0LTIwMjEvKQotIDIwMjEtMDUtMzEgLSBbRmx1dHRlcuOBp09wZW4gQXBpIEdlbmVyYXRvcihTd2FnZ2VyKeOCkuS9v+OBhl0oaHR0cHM6Ly9hYWtpcmEuYXBwL2Jsb2cvMjAyMS8wNS9mbHV0dGVyLW9wZW4tYXBpLykgYnkgW0FBa2lyYV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9fYV9ha2lyYSkKLSAyMDIxLTA2LTIyIC0gW1Jlc3QgQVBJIERvY3VtZW50YXRpb24gYW5kIENsaWVudCBHZW5lcmF0aW9uIFdpdGggT3BlbkFQSV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvcmVzdC1hcGktZG9jdW1lbnRhdGlvbi1hbmQtY2xpZW50LWdlbmVyYXRpb24td2l0aCkgYnkgW1ByYXNhbnRoIEd1bGxhcGFsbGldKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzEwMTE3OTcvcHJhc2FudGhuYXRoLmdAZ21haWwuY29tLmh0bWwpCi0gMjAyMS0wNy0xNiAtIFvpioDooYzkuovmpa3jga7jgrXjg7zjg5Djg7zjgrXjgqTjg4nplovnmbrjgavjgaTjgYTjgaYgLyBMSU5FIOS6rOmDvemWi+eZuuWupCDjgqjjg7Pjgrjjg4vjgqLmjqHnlKjoqqzmmI7kvJpdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WXJyS1FIeExQcFEpIGJ5IOmHjueUsOiqoOS6uiwgUm9iZXJ0IE1pdGNoZWxsCi0gMjAyMS0wNy0xOSAtIFtPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiB3aXRoIGtvdGxpbl0oaHR0cHM6Ly9zeWxoYXJlLmdpdGh1Yi5pby8yMDIxLzA3LzE5L09wZW5hcGktc3dhZ2dlci1jb2RlZ2VuLXdpdGgta290bGluLmh0bWwpIGJ5IFtzeWxoYXJlXShodHRwczovL2dpdGh1Yi5jb20vc3lsaGFyZSkKLSAyMDIxLTA3LTI5IC0gW0hvdyBUbyBSZXdyaXRlIGEgSHVnZSBDb2RlYmFzZV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvaG93LXRvLXJld3JpdGUtYS1odWdlLWNvZGUtYmFzZSkgYnkgW0N1cnRpcyBQb2VdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzQ1NjU0NDYvcHVibGl1c292aWRpdXMuaHRtbCkKLSAyMDIxLTA4LTIxIC0gW0dlbmVyYXRpbmcgQ2xpZW50IEFQSXMgdXNpbmcgU3dhZ2dlciBQYXJ0IDFdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmxvd3NxdWFkL2dlbmVyYXRpbmctY2xpZW50LWFwaXMtdXNpbmctc3dhZ2dlci1wYXJ0LTEtMmQ0NmYxM2Y1ZTkyKSBieSBbRmxvd1NxdWFkLmlvXShodHRwczovL21lZGl1bS5jb20vQGZsb3dzcXVhZCkKLSAyMDIxLTA5LTExIC0gW0ludm9raW5nIEFXUyBQYXJhbGxlbENsdXN0ZXIgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpIGF0IFtBV1MgUGFyYWxsZWxDbHVzdGVyIEFQSSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpCi0gMjAyMS0wOS0yMCAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIFRoZSBCYWJlbCBGaXNoIG9mIHRoZSBBUEkgV29ybGRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9czJ6TXR3ZDVrbGcpIGJ5IFtDbGlmZmFubyBTdWJhZ2lvIChQcmluY2lwYWwgRW5naW5lZXIgYXQgU2hpbmUgU29sdXRpb25zKV0oaHR0cHM6Ly9naXRodWIuY29tL2NsaWZmYW5vKSBhdCBbQXBpZGF5cyBMSVZFIEF1c3RyYWxpYSAyMDIxXShodHRwczovL3d3dy5hcGlkYXlzLmdsb2JhbC9hdXN0cmFsaWEyMDIxLykKLSAyMDIxLTEwLTAyIC0gW0hvdyB0byBXcml0ZSBGZXdlciBMaW5lcyBvZiBDb2RlIHdpdGggdGhlIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2hhY2tlcm5vb24uY29tL2hvdy10by13cml0ZS1mZXdlci1saW5lcy1vZi1jb2RlLXdpdGgtdGhlLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbTWlraGFpbCBBbGZhXShodHRwczovL2hhY2tlcm5vb24uY29tL3UvYWxwaGFtaWtsZSkKLSAyMDIxLTEwLTEyIC0gW09wZW5BUEkgR2VuZXJhdG9yIDogNDAwMCDDqXRvaWxlcyBzdXIgR2l0SHViIGV0IGRlcyBzcGFnaGV0dGlzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTloRXNOQlNxVEZrKSBieSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgYXQgW0Rldm94eCBGUiAyMDIxXShodHRwczovL2NmcC5kZXZveHguZnIvMjAyMS9zcGVha2VyL2plcmVtaWVfYnJlc3NvbikKLSAyMDIxLTEwLTE3IC0gW0dlbmVyYXRlIGEgVHlwZVNjcmlwdCBIVFRQIENsaWVudCBGcm9tIEFuIE9wZW5BUEkgU3BlYyBJbiBEb3RORVQgNV0oaHR0cHM6Ly9yaWNoYXJkd2lsbGlzLmluZm8vYmxvZy9nZW5lcmF0ZS1hLXR5cGUtc2NyaXB0LWh0dHAtY2xpZW50LWZyb20tYW4tb3Blbi1hcGktc3BlYy1pbi1kb3QtbmV0LTUpIGJ5IFtSaWNoYXJkIFdpbGxpc10oaHR0cHM6Ly9naXRodWIuY29tL2JhZHN5bnRheCkKLSAyMDIxLTExLTA2IC0gW+OCueOCv+ODvOODiOOCouODg+ODl+OBrumWi+eZuuOBp+aEj+itmOOBl+OBn+OBk+OBqF0oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vL2FydGljbGVzLzVjYjA5ZjhlMjg5OWFlNzgyYWQxKSBieSBbd29vLW5vb10oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vKQotIDIwMjEtMTEtMDkgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3QvZWZmZWN0aXZlLXNvZnR3YXJlLWRldmVsb3BtZW50LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBBamlsIE9vbW1lCi0gMjAyMS0xMi0wNyAtIFtBbiBJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9iZXR0ZXJwcm9ncmFtbWluZy5wdWIvNC11c2UtY2FzZXMtb2Ytb3BlbmFwaS13aGljaC1hcmUtZ29vZC10by1rbm93LTFhMDQxZjRhZDcxZSkgYnkgW05hJ2FtYW4gSGlyc2NoZmVsZF0oaHR0cHM6Ly9uYWFtYW5oaXJzY2hmZWxkLm1lZGl1bS5jb20vKQotIDIwMjItMDEtMDIgLSBbVG93YXJkcyBhIHNlY3VyZSBBUEkgY2xpZW50IGdlbmVyYXRvciBmb3IgSW9UIGRldmljZXNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjAxLjAwMjcwKSBieSBBbmRlcnMgQWFlbiBTcHJpbmdib3JnLCBNYXJ0aW4gS2FsZGFobCBBbmRlcnNlbiwgS2FhcmUgSG9sbGFuZCBIYXR0ZWwsIE1pY2hlbGUgQWxiYW5vCi0gMjAyMi0wMi0wMiAtIFtVc2UgT3BlbkFwaSBnZW5lcmF0b3IgdG8gc2hhcmUgeW91ciBtb2RlbHMgYmV0d2VlbiBGbHV0dGVyIGFuZCB5b3VyIGJhY2tlbmRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a1BXN2NjdTlZdmspIGJ5IFtHdWlsbGF1bWUgQmVybm9zXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tL3NwZWFrZXJzL2d1aWxsYXVtZV9iZXJub3MpIGF0IFtGbHV0dGVyIFZpa2luZ3MgQ29uZmVyZW5jZSAyMDIyIChIeWJyaWQpXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tLykKLSAyMDIyLTAzLTE1IC0gW09wZW5BUEkgU3BlY+OBp+ODj+OCpOODleODs+WMuuWIh+OCiuOBrkVudW3lgKTjgpJPcGVuQVBJIEdlbmVyYXRvcuOBp+WHuuWKm+OBmeOCi+OBqOOAgeODj+OCpOODleODs+WMuuWIh+OCiuOBruOBvuOBvuWHuuWKm+OBleOCjOOCi10oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdC9pdGVtcy84MjRkNzRkNDg4OTA1NWFiMzdkOCkgYnkgW3l1amkzOGt3bXRdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQpCi0gMjAyMi0wNC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBruOCs+ODvOODieeUn+aIkOOBqFNwcmluZyBGcmFtZXdvcmvjga7jgqvjgrnjgr/jg6Djg4fjg7zjgr/jg5DjgqTjg7Pjg4fjgqPjg7PjgrDjgpLlhbHlrZjjgZXjgZvjgotdKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvY29leGlzdGVuY2Utb2Ytb3BlbmFwaS1hbmQtc3ByaW5nKSBpbiBbWk9aTyBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vKQotIDIwMjItMDQtMDYgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3Qvb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IEFqaWwgT29tbWVuIChTZW5pb3IgRmx1dHRlciBEZXZlbG9wZXIpCi0gMjAyMi0wNS0xMyAtIFtBIFBhdGggRnJvbSBhbiBBUEkgVG8gQ2xpZW50IExpYnJhcmllc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YQzhvVm5fZWZUdykgYnkgW0ZpbGlwIFNybmVjXShodHRwczovL3d3dy5kZXZveHguY28udWsvdGFsay8/aWQ9MTEyMTEpIGF0IEluZm9iaXAKLSAyMDIyLTA2LTAxIC0gW0FQSSBGaXJzdCwgdXNpbmcgT3BlbkFQSSBhbmQgU3ByaW5nIEJvb3RdKGh0dHBzOi8vbWVkaXVtLmNvbS94Z2Vla3MvYXBpLWZpcnN0LXVzaW5nLW9wZW5hcGktYW5kLXNwcmluZy1ib290LTI2MDJjMDRiYjBkMykgYnkgW01pY2FlbCBFc3Ryw6F6dWxhcyBWaWFubmFdKGh0dHBzOi8vZXN0cmF6dWxhcy5tZWRpdW0uY29tLykKLSAyMDIyLTA2LTEwIC0gW0F1dG9nZW5lcmF0aW5nIENsaWVudHMgd2l0aCBGYXN0QVBJIGFuZCBHaXRodWIgQWN0aW9uc10oaHR0cHM6Ly93d3cucHJvcGVsYXV0aC5jb20vcG9zdC9hdXRvZ2VuZXJhdGluZy1jbGllbnRzLXdpdGgtZmFzdGFwaS1hbmQtZ2l0aHViLWFjdGlvbnMpIGJ5IFtBbmRyZXcgSXNyYWVsXShodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS9hdXRob3IvYW5kcmV3KQotIDIwMjItMDYtMTIgLSBbTXVzdGFjaGUgdGVtcGxhdGVzIHdpdGggT3BlbkFQSSBzcGVjc10oaHR0cHM6Ly9tZWRpdW0uY29tL2dlZWtjdWx0dXJlL211c3RhY2hlLXRlbXBsYXRlcy13aXRoLW9wZW5hcGktc3BlY3MtZjI0NzExYzY3ZGVjKSBieSBbQmVwcGUgQ2F0YW5lc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nY2F0YW5lc2UpCi0gMjAyMi0wNy0wMSAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjItMDctMjIgLSBb5L2/55SoT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2lu5byA5Y+RYXBp5LyY5YWI55qEamF2YeWuouaIt+err+WSjOacjeWKoeerr+S7o+eggV0oaHR0cHM6Ly9ibG9nLnJvY2Nvc2hpLnRvcC8yMDIyL2phdmEvb3BlbmFwaS1nZW5lcmF0b3IlRTclOUElODQlRTQlQkQlQkYlRTclOTQlQTgvKSBieSBbTGluY2VzdF0oaHR0cHM6Ly9naXRodWIuY29tL0xpbmNlc3QpCi0gMjAyMi0wOC0wMSAtIFtUdXRvcmlhbDogRXRzeSBPcGVuIEFQSSB2MyAocnVieSldKGh0dHBzOi8vYmxvZy50am95YWwuZGV2L2V0c3ktb3Blbi1hcGktdjMvKSBieSBbVGhpZXJyeSBKb3lhbF0oaHR0cHM6Ly9naXRodWIuY29tL3Rqb3lhbCkKLSAyMDIyLTA5LTAzIC0gW09wZW5BUEkgR2VuZXJhdG9yIEZvciBHbyBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vYmxvZy5rZXZpbmh1Lm1lLzIwMjIvMDkvMDMvMDMtb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbS2V2aW4gSHVdKGh0dHBzOi8vdHdpdHRlci5jb20vT2xkZ3VuaXgpCi0gMjAyMi0xMC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOCkuOCq+OCueOCv+ODnuOCpOOCuuOBl+OBn+OCs+ODvOODieOCkueUn+aIkOOBmeOCi++8iFN3YWdnZXIgQ29kZWdlbuOBqOOBu+OBvOWQjOOBmO+8iV0oaHR0cHM6Ly9uYWluYWlzdGFyLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMjIvMTAvMDMvMTIwMDAwKSBieSBb44GN44KK5Li4XShodHRwczovL3R3aXR0ZXIuY29tL25haW5haXN0YXIpCi0gMjAyMi0xMC0yMSAtIFtLb3RsaW7vvIhTcHJpbmcgQm9vdO+8ieOBriBBUEkg44KSIE9wZW5BUEkgR2VuZXJhdG9yIOOBp+iHquWLleeUn+aIkF0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYXJ0aWNsZXMvMjAyMjEwMjEta290bGluLXNwcmluZy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW21za3NnbV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMi0xMC0yNiAtIFtRdWFya3VzIEluc2lnaHRzICMxMDY6IFF1YXJraXZlcnNlIEV4dGVuc2lvbiBTcG90bGlnaHQ6IE9wZW5BcGkgR2VuZXJhdG9yXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PV9zX2lmNjl0MmlRKSBieSBbUXVhcmt1c2lvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jL1F1YXJrdXNpbykKLSAyMDIyLTExLTI4IC0gW1RoZSBSRVNUIEFQSSBpbXBsZW1lbnRhdGlvbiBmbG93XShodHRwczovL3Rtc3ZyLmNvbS9vcGVuYXBpLWNvZGUtZ2VuZXJhdGlvbi1mb3ItcmVzdC1hcGlzLykgYnkgW0ltcmUgVMO2bcO2c3bDoXJpXShodHRwczovL3Rtc3ZyLmNvbS9hdXRob3IvaW1yZS8pCi0gMjAyMi0xMi0xMyAtIFtBUEktRmlyc3Qgd2l0aCBTcHJpbmcgV2ViRmx1eCBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYm9vdHRlY2hub2xvZ2llcy1jaS5tZWRpdW0uY29tL2FwaS1maXJzdC13aXRoLXNwcmluZy13ZWJmbHV4LWFuZC1vcGVuYXBpLWdlbmVyYXRvci0zOGI3ODA0YzRlZDQpIGJ5IFtFcmljIEFuaWNldF0oaHR0cHM6Ly9ib290dGVjaG5vbG9naWVzLWNpLm1lZGl1bS5jb20vKQotIDIwMjMtMDEtMDYgLSBbTWFqb3IgSW1wcm92ZW1lbnRzIHdpdGggSGVsaWRvbiBhbmQgT3BlbkFQSV0oaHR0cHM6Ly9tZWRpdW0uY29tL2hlbGlkb24vbWFqb3ItaW1wcm92ZW1lbnRzLXdpdGgtaGVsaWRvbi1hbmQtb3BlbmFwaS1mNzZhMDk1MTUwOGUpIGJ5IFtUaW0gUXVpbm5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AdHF1aW5ubzYwMCkKLSAyMDIzLTAyLTAyIC0gW1JlcGxhY2luZyBQb3N0bWFuIHdpdGggdGhlIEpldGJyYWlucyBIVFRQIENsaWVudF0oaHR0cHM6Ly9sZW5ncmFuZC5mci9yZXBsYWNpbmctcG9zdG1hbi1pbi1zZWNvbmRzLXdpdGgtdGhlLWpldGJyYWlucy1odHRwLWNsaWVudC8pIGJ5IFtqdWxpZW4gTGVuZ3JhbmQtTGFtYmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2psZW5ncmFuZCkKLSAyMDIzLTAzLTE1IC0gW09wZW5BUEkgR2VuZXJhdG9y44Gr6YGp44GX44GfT3BlbkFQSeOBruabuOOBjeaWuV0oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9ob3ctdG8td3JpdGUtb3BlbmFwaS1mb3Itb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtaT1pPIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS8pCi0gMjAyMy0wMy0xOSAtIFtFWE9HRU06IEV4dGVuZGluZyBPcGVuQVBJIEdlbmVyYXRvciBmb3IgTW9uaXRvcmluZyBvZiBSRVNUZnVsIEFQSXNdKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMS0yNjUwNy01XzEwKSBieSBEYW5pZWwgRnJpaXMgSG9sdGVibywgSmFubmlrIEx1Y2FzIFNvbW1lciwgTWFnbnVzIE3DuGxnYWFyZCBMdW5kLCBBbGVzc2FuZHJvIFRpYm8sIEp1bmlvciBEb25nbyAmIE1pY2hlbGUgQWxiYW5vIGF0ICJJQ1NPQyAyMDIyOiBTZXJ2aWNlLU9yaWVudGVkIENvbXB1dGluZyDigJMgSUNTT0MgMjAyMiBXb3Jrc2hvcHMiCi0gMjAyMy0wMy0yOCAtIFtBUEktRmlyc3QgRGVzaWduIHdpdGggT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9wdWxzZS9hcGktZmlyc3QtZGVzaWduLW9wZW5hcGktZ2VuZXJhdG9yLWpvbmF0aGFuLW1hbmVyYS8pIGJ5IFtKb25hdGhhbiBNYW5lcmFdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9tYW5lcmFqb25hLykKLSAyMDIzLTAzLTI4IC0gW+ODj+ODs+OCuuOCquODs+OBp+WtpuOBtuOCteODvOODkOODvOOCteOCpOODiSBLb3RsaW7vvIhTcHJpbmcgQm9vdCZBcnJvdyZPcGVuQVBJIEdlbmVyYXRvcu+8iXYxLjAuMV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYm9va3MvaW1wbGVtZW50aW5nLXNlcnZlci1zaWRlLWtvdGxpbi1kZXZlbG9wbWVudCkgYnkgW21za10oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMy0wNC0wMSAtIFtPcGVuQVBJIENsaWVudCBDb2RlIEdlbmVyYXRpb25dKGh0dHBzOi8vdGVzdGluZ2Jvc3MuY29tL2Jsb2cvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdGlvbi8pIGJ5IEt3byBEaW5nCi0gMjAyMy0wNC0yNyAtIFtDcmVhdGUgYW4gQW5ndWxhciBDbGllbnQgdXNpbmcgT3BlbkFQSSBTcGVjaWZpY2F0aW9uc10oQ3JlYXRlIGFuIEFuZ3VsYXIgQ2xpZW50IHVzaW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vcGd1c28ubWVkaXVtLmNvbS8pCi0gMjAyMy0wNS0xNiAtIFtBZHllbiBmb3IgSmF2YSBkZXZlbG9wZXJzXShodHRwczovL3d3dy5hZHllbi5jb20vYmxvZy9hZHllbi1qYXZhLWxpYnJhcnkpIGJ5IFtCZXBwZSBDYXRhbmVzZSwgRGV2ZWxvcGVyIEFkdm9jYXRlLCBBZHllbl0oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZSkKLSAyMDIzLTA1LTE4IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9ibG9nLjUxY3RvLmNvbS91XzE1MTgxNTcyLzYyOTQ5NzQpIGJ5IFvpq5jmpbzvvIhaZWUpXShodHRwczovL2Jsb2cuNTFjdG8uY29tL3VfMTUxODE1NzIpCi0gMjAyMy0wNi0yOCAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjMtMDYtMzAgLSBbR2VuZXJhdGUgQ2xpZW50IFNES3Mgd2l0aCBPcGVuQXBpIEdlbmVyYXRvciBpbiBTcHJpbmdib290XShodHRwczovL21lZGl1bS5jb20vQHJhbWF2YXRodmluYXlhay9nZW5lcmF0ZS1jbGllbnQtc2Rrcy13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLWluLXNwcmluZ2Jvb3QtZjlmMDEyZTczYzBiKSBieSBbVmluYXlhayBSYW1hdmF0aF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYW1hdmF0aHZpbmF5YWspCi0gMjAyMy0xMi0xMCAtIFtVbml0eeOBp09wZW5BUEkgR2VuZXJhdG9y44KS5L2/44GGXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNiTndLVlY1TFJNKSBieSBbU291cCBUb3JpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9Ac291cHRvcmk4NDE3KQotIDIwMjQtMDEtMjQgLSBbQ29tbWVudCBnw6luw6lyZXIgZGVzIHN0dWJzIHdpcmVtb2NrIGF2ZWMgb3BlbmFwaSBnZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MGpoT05mQnJjS3cpIGJ5IFtBbGV4aXMgQ291dnJldXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY291dnJldXIpCi0gMjAyNC0wMy0wNCAtIFtHZW5lcmF0aW5nIFR5cGVTY3JpcHQgVHlwZXMgd2l0aCBPcGVuQVBJIGZvciBSRVNUIEFQSSBDb25zdW1wdGlvbl0oaHR0cHM6Ly93d3cucHVsbHJlcXVlc3QuY29tL2Jsb2cvZ2VuZXJhdGluZy10eXBlc2NyaXB0LXR5cGVzLXdpdGgtb3BlbmFwaS1mb3ItcmVzdC1hcGktY29uc3VtcHRpb24vKSBieSBbUHVsbFJlcXVlc3RdKGh0dHBzOi8vd3d3LnB1bGxyZXF1ZXN0LmNvbS8pCi0gMjAyNC0wMy0wNyAtIFtGdWxseSB0eXBlZCBXZWIgQXBwcyB3aXRoIE9wZW5BUEkgKFBhcnQgMSldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2ZveDE5ODQvZnVsbHktdHlwZWQtd2ViLWFwcHMtd2l0aC1vcGVuYXBpLXBhcnQtMS01OTVkNTU3NjY2NzApIGJ5IFtHdWlsbGF1bWUgUmVuYXJkXShodHRwczovL21lZGl1bS5jb20vQGdmb3gxOTg0KQotIDIwMjQtMDMtMDggLSBbTGFyYXZlbCBPcGVuQVBJ44Gr44KI44KLICLovpvjgY/jgarjgYQiIOOCueOCreODvOODnumnhuWLlemWi+eZul0oaHR0cHM6Ly9mb3J0ZWUuanAvcGhwZXJrYWlnaS0yMDI0L3Byb3Bvc2FsLzllMmU2YzM4LWQwNzgtNGVmYS05OWI0LTgzZWJmOTAzM2IzNCkgYnkgW0tlbnRhcm91VGFrZWRhXShodHRwczovL3R3aXR0ZXIuY29tL0tlbnRhcm91VGFrZWRhKQoKIyMgWzYgLSBBYm91dCBVc10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKV2hhdCdzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBvciBwcmluY2lwbGUgYmVoaW5kIE9wZW5BUEkgR2VuZXJhdG9yPwoKV2UgZm9jdXMgb24gZGV2ZWxvcGVyIGV4cGVyaWVuY2UuIFRoZSBnZW5lcmF0b3JzIHNob3VsZCBwcm9kdWNlIGNvZGUsIGNvbmZpZywgZG9jdW1lbnRhdGlvbiwgYW5kIG1vcmUgdGhhdCBhcmUgZWFzaWx5IHVuZGVyc3RhbmRhYmxlIGFuZCBjb25zdW1hYmxlIGJ5IHVzZXJzLiBXZSBmb2N1c2VkIG9uIHNpbXBsZSB1c2UgY2FzZXMgdG8gc3RhcnQgd2l0aCAoYm90dG9tLXVwIGFwcHJvYWNoKS4gU2luY2UgdGhlbiB0aGUgcHJvamVjdCBhbmQgdGhlIGNvbW11bml0eSBoYXZlIGdyb3duIGEgbG90OiA2MDBrIHdlZWtseSBkb3dubG9hZHMgdmlhIE5QTSBDTEkgd3JhcHBlciwgMzBNIGRvd25sb2FkcyB2aWEgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGRvY2tlciBpbWFnZSBqdXN0IHRvIGhpZ2hsaWdodCBhIGZldy4gV2UndmUgZ3JhZHVhbGx5IHN1cHBvcnRlZCBtb3JlIGZlYXR1cmVzIChlLmcuIG9uZU9mLCBhbnlPZiBpbnRyb2R1Y2VkIGluIE9wZW5BUEkgMy4wKSBpbiB2YXJpb3VzIGdlbmVyYXRvcnMgYW5kIHdlIHdpbGwgY29udGludWUgdGhpcyBhcHByb2FjaCB0byBkZWxpdmVyIHNvbWV0aGluZyBiYXNlZCBvbiBvdXIgdW5kZXJzdGFuZGluZyBvZiB1c2VyIGRlbWFuZCBhbmQgd2hhdCB0aGV5IHdhbnQsIGFuZCBjb250aW51ZSB0byBhZGQgc3VwcG9ydCBvZiBuZXcgZmVhdHVyZXMgaW50cm9kdWNlZCBpbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gKHN1Y2ggYXMgdjMuMSBhbmQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24pLgoKIyMjIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCN0YWJsZS1vZi1jb250ZW50cykKCk9wZW5BUEkgR2VuZXJhdG9yIGNvcmUgdGVhbSBtZW1iZXJzIGFyZSBjb250cmlidXRvcnMgd2hvIGhhdmUgYmVlbiBtYWtpbmcgc2lnbmlmaWNhbnQgY29udHJpYnV0aW9ucyAocmV2aWV3IGlzc3VlcywgZml4IGJ1Z3MsIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMpIHRvIHRoZSBwcm9qZWN0IG9uIGEgcmVndWxhciBiYXNpcy4KCiMjIyMgQ29yZSBUZWFtIE1lbWJlcnMKKiBbQHdpbmczMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSAoMjAxNS8wNykgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiogW0BqaW1zY2h1YmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2ppbXNjaHViZXJ0KSAoMjAxNi8wNSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQoqIFtAY2Jvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpICgyMDE2LzA1KQoqIFtAam1pbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgKDIwMTgvMDQpICBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCiogW0BldGhlcmVhbGpveV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZWFsam95KSAoMjAxOS8wNikKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMjIFRlbXBsYXRlIENyZWF0b3IKCioqTk9URSoqOiBFbWJlZGRlZCB0ZW1wbGF0ZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIF9NdXN0YWNoZV8gZm9ybWF0LiBTdXBwb3J0IGZvciBhbGwgb3RoZXIgZm9ybWF0cyBpcyBleHBlcmltZW50YWwgYW5kIHN1YmplY3QgdG8gY2hhbmdlIGF0IGFueSB0aW1lLgoKSGVyZSBpcyBhIGxpc3Qgb2YgdGVtcGxhdGUgY3JlYXRvcnM6CiAqIEFQSSBDbGllbnRzOgogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQXBleDogQGFzbmVsbGluZwogICAqIEJhc2g6IEBia3J5emEKICAgKiBDOiBAUG93ZXJPZkNyZWF0aW9uIEB6aGVtYW50IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS96aGVtYW50KQogICAqIEMrKyBSRVNUOiBARGFuaWVsa3UxNQogICAqIEMrKyBUaW55OiBAQW5kZXJzU3ByaW5nYm9yZyBAa2FhcmVISCBAbWljaGVsZWFsYmFubyBAbWtha2JhcwogICAqIEMrKyBVRTQ6IEBLYWhuY29kZQogICAqIEMjICguTkVUIDIuMCk6IEB3aG8KICAgKiBDIyAoLk5FVCBTdGFuZGFyZCAxLjMgKTogQEdyb25zYWsKICAgKiBDIyAoLk5FVCA0LjUgcmVmYWN0b3JlZCk6IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogQyMgKEdlbmVyaWNIb3N0KTogQGRldmhsLWxhYnMKICAgKiBDIyAoSHR0cENsaWVudCk6IEBCbGFja2NsYXdzCiAgICogQ2xvanVyZTogQHhoaAogICAqIENyeXN0YWw6IEB3aW5nMzI4CiAgICogRGFydDogQHlpc3NhY2hhcgogICAqIERhcnQgKHJlZmFjdG9yKTogQGpvZXJuYWhyZW5zCiAgICogRGFydCAyOiBAc3dpcGVzaWdodAogICAqIERhcnQgKEphZ3Vhcik6IEBqYXVtYXJkCiAgICogRGFydCAoRGlvKTogQGpvc2gtYnVydG9uCiAgICogRWxpeGlyOiBAbmlrdQogICAqIEVsbTogQGVyaWt0aW0KICAgKiBFaWZmZWw6IEBqdmVsaWxsYQogICAqIEVybGFuZzogQHRzbG91Z2h0ZXIKICAgKiBFcmxhbmcgKFByb3BFcik6IEBqZmFjb3JybyBAcm9iZXJ0b2Fsb2kKICAgKiBHcm9vdnk6IEB2aWN0b3JnaXQKICAgKiBHbzogQHdpbmczMjggWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiAgICogR28gKHJld3JpdHRlbiBpbiAyLjMuMCk6IEBhbnRpaGF4CiAgICogSGFza2VsbCAoaHR0cC1jbGllbnQpOiBAam9uc2Nob25pbmcKICAgKiBKYXZhIChGZWlnbik6IEBkYXZpZGtpc3MKICAgKiBKYXZhIChSZXRyb2ZpdCk6IEAwbGVnZwogICAqIEphdmEgKFJldHJvZml0Mik6IEBlbWlsaWFub2JvbmFzc2kKICAgKiBKYXZhIChKZXJzZXkyKTogQHhoaAogICAqIEphdmEgKG9raHR0cC1nc29uKTogQHhoaAogICAqIEphdmEgKFJlc3RUZW1wbGF0ZSk6IEBuYnJ1bm8KICAgKiBKYXZhIChTcHJpbmcgNSBXZWJDbGllbnQpOiBAZGFvbm9taWMKICAgKiBKYXZhIChTcHJpbmcgNiBSZXN0Q2xpZW50KTogQG5pY2tsYXMyNzUxCiAgICogSmF2YSAoUkVTVEVhc3kpOiBAZ2F5YXRocmlncwogICAqIEphdmEgKFZlcnR4KTogQGxvcGVzbWNjCiAgICogSmF2YSAoR29vZ2xlIEFQSXMgQ2xpZW50IExpYnJhcnkpOiBAY2hhcmxlc2NhcHBzCiAgICogSmF2YSAoUmVzdC1hc3N1cmVkKTogQHZpY2xvdnNreQogICAqIEphdmEgKEphdmEgMTEgTmF0aXZlIEhUVFAgY2xpZW50KTogQGJiZG91Z2xhcwogICAqIEphdmEgKEFwYWNoZSBIdHRwQ2xpZW50IDUueCk6IEBoYXJyeXdoaXRlNCBAYW5kcmV2ZWdhcwogICAqIEphdmEgKEhlbGlkb24pOiBAc3BlcmljYXMgQHRqcXVpbm5vIEB0dmFsbGluCiAgICogSmF2YXNjcmlwdC9Ob2RlSlM6IEBqZmlhbGEKICAgKiBKYXZhU2NyaXB0IChBcG9sbG8gRGF0YVNvdXJjZSk6IEBlcml0aG1ldGljCiAgICogSmF2YVNjcmlwdCAoQ2xvc3VyZS1hbm5vdGF0ZWQgQW5ndWxhcikgQGFjaGV3MjIKICAgKiBKYXZhU2NyaXB0IChGbG93IHR5cGVzKSBAamF5cGVhCiAgICogSmV0YnJhaW5zIEhUVFAgQ2xpZW50IDogQGpsZW5ncmFuZAogICAqIEpNZXRlcjogQGRhdmlka2lzcwogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChNdWx0aVBsYXRmb3JtKTogQGFuZHJld2VtZXJ5CiAgICogS290bGluIChWb2xsZXkpOiBAYWxpc3RlcnMKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctd2ViY2xpZW50KTogQHN0ZWZhbmtvcHBpZXIKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctcmVzdGNsaWVudCk6IEBzdGVmYW5rb3BwaWVyCiAgICogTHVhOiBAZGF1cm5pbWF0b3IKICAgKiBONEpTOiBAbW1ld3MtbjQKICAgKiBOaW06IEBob2thbW90bwogICAqIE9DYW1sOiBAY2dlbnNvdWwKICAgKiBQZXJsOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBQSFAgKEd1enpsZSk6IEBiYWFydG9zegogICAqIFBIUCAod2l0aCBEYXRhIFRyYW5zZmVyKTogQEFydGljdXMKICAgKiBQb3dlclNoZWxsOiBAYmVhdGNyYWNrZXIKICAgKiBQb3dlclNoZWxsIChyZWZhY3RvcmVkIGluIDUuMC4wKTogQHdpbmczMjgKICAgKiBQeXRob246IEBzcGFjZXRoZXIgWzpoZWFydDpdW3NwYWNldGhlciBzcG9uc29yc2hpcF0KICAgKiBQeXRob24tRXhwZXJpbWVudGFsOiBAc3BhY2V0aGVyIFs6aGVhcnQ6XVtzcGFjZXRoZXIgc3BvbnNvcnNoaXBdCiAgICogUHl0aG9uIChyZWZhY3RvcmVkIGluIDcuMC4wKTogQHdpbmczMjgKICAgKiBSOiBAcmFtbm92CiAgICogUnVieSAoRmFyYWRheSk6IEBtZWdhbmVtdXJhIEBka2xpYmFuCiAgICogUnVieSAoSFRUUFgpOiBAaG9uZXlyeWRlcmNodWNrCiAgICogUnVzdDogQGZhcmNhbGxlcgogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBTY2FsYSAoc2NhbGF6ICYgaHR0cDRzKTogQHRicm93bjE5NzkKICAgKiBTY2FsYSAoQWtrYSk6IEBjY2hhZmVyCiAgICogU2NhbGEgKHN0dHApOiBAY2hhbWVsZW9uODIKICAgKiBTY2FsYSAoc3R0cDQpOiBAZmxzaDg2CiAgICogU2NhbGEgKFBla2tvKTogQG1pY2thZWxtYWduaWV6CiAgICogU2NhbGEgKGh0dHA0cyk6IEBKZW5ueUxlYWh5CiAgICogU3dpZnQ6IEB0a3F1Ym8KICAgKiBTd2lmdCAzOiBAaGV4ZWxvbgogICAqIFN3aWZ0IDQ6IEBlaHljaGUKICAgKiBTd2lmdCA1OiBANGJydW51CiAgICogU3dpZnQgNjogQDRicnVudQogICAqIFN3aWZ0IENvbWJpbmU6IEBkeWR1czB4MTQKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyMSk6IEBtaGFyZG9yZgogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXIyKTogQHJvbmktZnJhbnRjaGkKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNik6IEBha2VoaXIKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNyk6IEB0b3BjZQogICAqIFR5cGVTY3JpcHQgKEF4aW9zKTogQG5pY29rb2VuaWcKICAgKiBUeXBlU2NyaXB0IChGZXRjaCk6IEBsZW9ueXUKICAgKiBUeXBlU2NyaXB0IChJbnZlcnNpZnkpOiBAZ3VhbHRpZXJpbQogICAqIFR5cGVTY3JpcHQgKGpRdWVyeSk6IEBiaGVyaWxhCiAgICogVHlwZVNjcmlwdCAoTmVzdGpzKTogQHZmcmFuazY2CiAgICogVHlwZVNjcmlwdCAoTm9kZSk6ICBAbWhhcmRvcmYKICAgKiBUeXBlU2NyaXB0IChSeGpzKTogQGRlbnlvCiAgICogVHlwZVNjcmlwdCAocmVkdXgtcXVlcnkpOiBAcGV0ZWpvaGFuc29ueG8KICAgKiBYb2pvOiBAVG9waGVlZQogICAqIFphcGllcjogQHZhbG1veiwgQGVtYWpvCiAqIFNlcnZlciBTdHVicwogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQyMgQVNQLk5FVCA1OiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEMjIEFTUC5ORVQgQ29yZSAzLjA6IEBBLUpvc2hpCiAgICogQyMgQVBTLk5FVCBDb3JlIDMuMTogQHBoYXRjaGVyCiAgICogQyMgQXp1cmUgZnVuY3Rpb25zOiBAQWJyaG03Nzg2CiAgICogQyMgTmFuY3lGWDogQG1zdGVmYW5pdWsKICAgKiBDKysgKFF0NSBRSHR0cEVuZ2luZSk6IEBldGhlcmVhbGpveQogICAqIEMrKyBQaXN0YWNoZTogQHNlYnltaWFubwogICAqIEMrKyBSZXN0YmVkOiBAc3RrcndvcmsKICAgKiBFcmxhbmcgU2VydmVyOiBAZ2FsYXhpZSBAbmVsc29udmlkZXMKICAgKiBGIyAoR2lyYWZmZSkgU2VydmVyOiBAbm1maXNoZXIKICAgKiBHbyBTZXJ2ZXI6IEBndW9odWFuZwogICAqIEdvIFNlcnZlciAocmVmYWN0b3JlZCBpbiA3LjAuMCk6IEBsd2o1CiAgICogR28gKEVjaG8pIFNlcnZlcjogQHBoNHI1aDRkCiAgICogR28gKEdpbikgU2VydmVyOiBAa2Vtb2tlbW8KICAgKiBHcmFwaFFMIEV4cHJlc3MgU2VydmVyOiBAcmVuZXBhcmRvbgogICAqIEhhc2tlbGwgU2VydmFudDogQGFsZ2FzCiAgICogSGFza2VsbCBZZXNvZDogQHlvdHN1eWEKICAgKiBKYXZhIENhbWVsOiBAY2FybmV2YWxlZ2lhY29tbwogICAqIEphdmEgTVNGNEo6IEBzYW5qZWV3YS1tYWxhbGdvZGEKICAgKiBKYXZhIFNwcmluZyBCb290OiBAZGl5ZnIKICAgKiBKYXZhIFVuZGVydG93OiBAc3RldmVodQogICAqIEphdmEgUGxheSBGcmFtZXdvcms6IEBKRkNvdGUKICAgKiBKYXZhIFBLTVNUOiBAYW5zaHUyMTg1IEBzYW5zaHVtYW4gQHJrdW1hci1wayBAbmlub2RwaWxsYWkKICAgKiBKYXZhIFZlcnQueDogQGx3bGVlMjYwOAogICAqIEphdmEgTWljcm9uYXV0OiBAYW5kcml5LWRteXRydWsKICAgKiBKYXZhIEhlbGlkb246IEBzcGVyaWNhcyBAdGpxdWlubm8gQHR2YWxsaW4KICAgKiBKYXZhIFdpcmVNb2NrOiBbQGFjb3V2cmV1cl0oaHR0cHM6Ly9naXRodWIuY29tL2Fjb3V2cmV1cikKICAgKiBKQVgtUlMgUmVzdEVhc3k6IEBjaGFtZWxlb244MgogICAqIEpBWC1SUyBDWEY6IEBoaXZlc2hpcAogICAqIEpBWC1SUyBDWEYgKENESSk6IEBuaWNrY21heW5hcmQKICAgKiBKQVgtUlMgUmVzdEVhc3kgKEpCb3NzIEVBUCk6IEBqZmlhbGEKICAgKiBKdWxpYTogQHRhbm1heWttCiAgICogS290bGluOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEtvdGxpbiAoU3ByaW5nIEJvb3QpOiBAZHI0a2U2MTYKICAgKiBLb3RsaW4gKFZlcnR4KTogQFdvb3ltZQogICAqIEtvdGxpbiAoSkFYLVJTKTogQGFudHRpbGVwcGEKICAgKiBLb3RsaW4gV2lyZU1vY2s6IEBzdGVmYW5rb3BwaWVyCiAgICogTm9kZUpTIEV4cHJlc3M6IEBZaXNoVGlzaAogICAqIFBIUCBGbGlnaHQ6IEBkYW5pZWwtc2MKICAgKiBQSFAgTGFyYXZlbDogQHJlbmVwYXJkb24KICAgKiBQSFAgTHVtZW46IEBhYmNzdW4KICAgKiBQSFAgTWV6emlvICh3aXRoIFBhdGggSGFuZGxlcik6IEBBcnRpY3VzCiAgICogUEhQIFNsaW06IEBqZmFzdG5hY2h0CiAgICogUEhQIFNsaW00OiBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pCiAgICogUEhQIFN5bWZvbnk6IEBrc20yCiAgICogUEhQIFN5bWZvbnk2OiBAQmVuamFtaW5IYWUKICAgKiBQeXRob24gRmFzdEFQSTogQGtyamFrYnJqYWsKICAgKiBQeXRob24gQUlPSFRUUDoKICAgKiBSdWJ5IG9uIFJhaWxzIDU6IEB6bHgKICAgKiBSdXN0IChydXN0LXNlcnZlcik6IEBtZXRhc3dpdGNoCiAgICogU2NhbGEgQWtrYTogQEJvdWlsbGllCiAgICogU2NhbGEgQ2FzazogQGFhcm9ucAogICAqIFNjYWxhIEZpbmNoOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIFNjYWxhIExhZ29tOiBAZ21rdW1hcjIwMDUKICAgKiBTY2FsYSBQbGF5OiBAYWRpZ2VyYmVyCiAqIERvY3VtZW50YXRpb24KICAgKiBBc2NpaURvYzogQG1hbi1hdC1ob21lCiAgICogSFRNTCBEb2MgMjogQGpoaXRjaGNvY2sKICAgKiBDb25mbHVlbmNlIFdpa2k6IEBqaGl0Y2hjb2NrCiAgICogUGxhbnRVTUw6IEBwYnVybHMKICogQ29uZmlndXJhdGlvbgogICAqIEFwYWNoZTI6IEBzdGtyd29yawogICAqIGs2OiBAbW9zdGFmYQogKiBTY2hlbWEKICAgKiBBdnJvOiBAc2dhZG91YXIKICAgKiBHcmFwaFFMOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBLdG9ybTogQEx1aXotTW9uYWQKICAgKiBNeVNRTDogW0B5YmVsZW5rb10oaHR0cHM6Ly9naXRodWIuY29tL3liZWxlbmtvKQogICAqIFBvc3RtYW4gQ29sbGVjdGlvbjogQGdjYXRhbmVzZQogICAqIFByb3RvY29sIEJ1ZmZlcjogQHdpbmczMjgKICAgKiBXU0RMOiBAYWRlc3NvRHBkCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIyBIb3cgdG8gam9pbiB0aGUgY29yZSB0ZWFtCgpIZXJlIGFyZSB0aGUgcmVxdWlyZW1lbnRzIHRvIGJlY29tZSBhIGNvcmUgdGVhbSBtZW1iZXI6Ci0gcmFuayB3aXRoaW4gdG9wIDUwIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvZ3JhcGhzL2NvbnRyaWJ1dG9ycwogIC0gdG8gY29udHJpYnV0ZSwgaGVyZSBhcmUgc29tZSBnb29kIFtzdGFydGluZyBwb2ludHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUrbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMikKLSByZWd1bGFyIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHByb2plY3QKICAtIGFib3V0IDMgaG91cnMgcGVyIHdlZWsKICAtIGZvciBjb250cmlidXRpb24sIGl0IGNhbiBiZSBhZGRyZXNzaW5nIGlzc3VlcywgcmV2aWV3aW5nIFBScyBzdWJtaXR0ZWQgYnkgb3RoZXJzLCBzdWJtaXR0aW5nIFBSIHRvIGZpeCBidWdzIG9yIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMKICAtIG11c3QgYmUgYWN0aXZlIGluIHRoZSBwYXN0IDMgbW9udGhzIGF0IHRoZSB0aW1lIG9mIGFwcGxpY2F0aW9uCgogVG8gam9pbiB0aGUgY29yZSB0ZWFtLCBwbGVhc2UgcmVhY2ggb3V0IHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiBUbyBiZWNvbWUgYSBUZW1wbGF0ZSBDcmVhdG9yLCBzaW1wbHkgc3VibWl0IGEgUFIgZm9yIG5ldyBBUEkgY2xpZW50IChlLmcuIFJ1c3QsIEVsaXhpcikgb3Igc2VydmVyIHN0dWIgKGUuZy4gUnVieSBHcmFwZSkgZ2VuZXJhdG9yLgoKIyMjIFs2LjIgLSBPcGVuQVBJIEdlbmVyYXRvciBUZWNobmljYWwgQ29tbWl0dGVlXSgjdGFibGUtb2YtY29udGVudHMpCgpNZW1iZXJzIG9mIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0ZWNobmljYWwgY29tbWl0dGVlIHNob3VsZGVyIHRoZSBmb2xsb3dpbmcgcmVzcG9uc2liaWxpdGllczoKCi0gUHJvdmlkZXMgZ3VpZGFuY2UgYW5kIGRpcmVjdGlvbiB0byBvdGhlciB1c2VycwotIFJldmlld3MgcHVsbCByZXF1ZXN0cyBhbmQgaXNzdWVzCi0gSW1wcm92ZXMgdGhlIGdlbmVyYXRvciBieSBtYWtpbmcgZW5oYW5jZW1lbnRzLCBmaXhpbmcgYnVncyBvciB1cGRhdGluZyBkb2N1bWVudGF0aW9ucwotIFNldHMgdGhlIHRlY2huaWNhbCBkaXJlY3Rpb24gb2YgdGhlIGdlbmVyYXRvcgoKV2hvIGlzIGVsaWdpYmxlPyBUaG9zZSB3aG8gd2FudCB0byBqb2luIG11c3QgaGF2ZSBhdCBsZWFzdCAzIFBScyBtZXJnZWQgaW50byBhIGdlbmVyYXRvci4gKEV4Y2VwdGlvbnMgY2FuIGJlIGdyYW50ZWQgdG8gdGVtcGxhdGUgY3JlYXRvcnMgb3IgY29udHJpYnV0b3JzIHdobyBoYXZlIG1hZGUgYSBsb3Qgb2YgY29kZSBjaGFuZ2VzIHdpdGggbGVzcyB0aGFuIDMgbWVyZ2VkIFBScykKCklmIHlvdSB3YW50IHRvIGpvaW4gdGhlIGNvbW1pdHRlZSwgcGxlYXNlIGtpbmRseSBhcHBseSBieSBzZW5kaW5nIGFuIGVtYWlsIHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyB3aXRoIHlvdXIgR2l0aHViIElELgoKIyMjIyBNZW1iZXJzIG9mIFRlY2huaWNhbCBDb21taXR0ZWUKCnwgTGFuZ3VhZ2VzL0dlbmVyYXRvcnMgIHwgTWVtYmVyIChqb2luIGRhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBBY3Rpb25TY3JpcHQgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQWRhICAgICAgICAgICAgICAgICAgIHwgQHN0Y2FycmV6ICgyMDE4LzAyKSBAbWljaGVsZWFsYmFubyAoMjAxOC8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFuZHJvaWQgICAgICAgICAgICAgICB8IEBqYXotYWggKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBcGV4ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQmFzaCAgICAgICAgICAgICAgICAgIHwgQGZyb2wgKDIwMTcvMDcpIEBia3J5emEgKDIwMTcvMDgpIEBrZW5qb25lcy1jaXNjbyAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMgICAgICAgICAgICAgICAgICAgICB8IEB6aGVtYW50ICgyMDE4LzExKSBAaXR5dWh1aSAoMjAxOS8xMikgQG1pY2hlbGVhbGJhbm8gKDIwMjAvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDKysgICAgICAgICAgICAgICAgICAgfCBAcmF2aW5pa2FtICgyMDE3LzA3KSBAc3RrcndvcmsgKDIwMTcvMDcpIEBldGhlcmVhbGpveSAoMjAxOC8wMikgQG1hcnRpbmRlbGlsbGUgKDIwMTgvMDMpIEBtdXR0bGV5eGQgKDIwMTkvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQyMgICAgICAgICAgICAgICAgICAgIHwgQG1hbmRyZWFuICgyMDE3LzA4KSBAc2hpYmF5YW4gKDIwMjAvMDIpIEBCbGFja2NsYXdzICgyMDIxLzAzKSBAbHVjYW1henphbnRpICgyMDIxLzA1KSBAaUJpY2hhICgyMDIzLzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDbG9qdXJlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ3J5c3RhbCAgICAgICAgICAgICAgIHwgQGN5YW5nbGUgKDIwMjEvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IERhcnQgICAgICAgICAgICAgICAgICB8IEBqYXVtYXJkICgyMDE4LzA5KSBAam9zaC1idXJ0b24gKDIwMTkvMTIpIEBhbW9uZG5ldCAoMjAxOS8xMikgQHNidS1XQlQgKDIwMjAvMTIpIEBrdWhucm95YWwgKDIwMjAvMTIpIEBhZ2lsb2IgKDIwMjAvMTIpIEBhaG1lZG5md2VsYSAoMjAyMS8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFaWZmZWwgICAgICAgICAgICAgICAgfCBAanZlbGlsbGEgKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWxpeGlyICAgICAgICAgICAgICAgIHwgQG1ybXN0biAoMjAxOC8xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVsbSAgICAgICAgICAgICAgICAgICB8IEBlcmlrdGltICgyMDE4LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFcmxhbmcgICAgICAgICAgICAgICAgfCBAdHNsb3VnaHRlciAoMjAxNy8xMSkgQGpmYWNvcnJvICgyMDE4LzEwKSBAcm9iZXJ0b2Fsb2kgKDIwMTgvMTApIEBuZWxzb252aWRlcyAoMjAyNC8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRiMgICAgICAgICAgICAgICAgICAgIHwgQG5tZmlzaGVyICgyMDE5LzA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdvICAgICAgICAgICAgICAgICAgICB8IEBhbnRpaGF4ICgyMDE3LzExKSBAZ3Jva2lmeSAoMjAxOC8wNykgQGtlbW9rZW1vICgyMDE4LzA5KSBAamlyaWt1bmNhciAoMjAyMS8wMSkgQHBoNHI1aDRkICgyMDIxLzA0KSBAbHdqNSAoMjAyMy8wNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR3JhcGhRTCAgICAgICAgICAgICAgIHwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdyb292eSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBIYXNrZWxsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmF2YSAgICAgICAgICAgICAgICAgIHwgQGJiZG91Z2xhcyAoMjAxNy8wNykgQHNyZWVzaGFzICgyMDE3LzA4KSBAamZpYWxhICgyMDE3LzA4KSBAbHVrb3lhbm92ICgyMDE3LzA5KSBAY2Jvcm5ldCAoMjAxNy8wOSkgQGplZmY5ZmluZ2VyICgyMDE4LzAxKSBAa2FyaXNtYW5uICgyMDE5LzAzKSBAWm9tem9nICgyMDE5LzA0KSBAbHdsZWUyNjA4ICgyMDE5LzEwKSBAbWFydGluLW1mZyAoMjAyMy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKYXZhIFNwcmluZyAgICAgICAgICAgfCBAY2FjaGVzY3J1YmJlciAoMjAyMi8wMikgQHdlbHNobSAoMjAyMi8wMikgQE1lbGxlRCAoMjAyMi8wMikgQGF0ZXh0b3IgKDIwMjIvMDIpIEBtYW5lZGV2NzkgKDIwMjIvMDIpIEBqYXZpc3N0ICgyMDIyLzAyKSBAYm9yc2NoICgyMDIyLzAyKSBAYmFubGV2ZW50ZSAoMjAyMi8wMikgQFpvbXpvZyAoMjAyMi8wOSkgQG1hcnRpbi1tZmcgKDIwMjMvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEpNZXRlciAgICAgICAgICAgICAgICB8IEBrYW5ua3lvICgyMDIxLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKZXRicmFpbnMgSFRUUCBDbGllbnQgfCBAamxlbmdyYW5kICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSnVsaWEgICAgICAgICAgICAgICAgIHwgQHRhbm1heWttICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEtvdGxpbiAgICAgICAgICAgICAgICB8IEBkcjRrZTYxNiAoMjAxOC8wOCkgQGthcmlzbWFubiAoMjAxOS8wMykgQFpvbXpvZyAoMjAxOS8wNCkgQGFuZHJld2VtZXJ5ICgyMDE5LzEwKSBANGJydW51ICgyMDE5LzExKSBAeXV0YWthMG0gKDIwMjAvMDMpIEBzdGVmYW5rb3BwaWVyICgyMDIyLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEx1YSAgICAgICAgICAgICAgICAgICB8IEBkYXVybmltYXRvciAoMjAxNy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBONEpTICAgICAgICAgICAgICAgICAgfCBAbW1ld3MtbjQgKDIwMjMvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTmltICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE5vZGVKUy9KYXZhc2NyaXB0ICAgICB8IEBDb2RlTmluamFpICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQGNsaWZmYW5vICgyMDE3LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPYmpDICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT0NhbWwgICAgICAgICAgICAgICAgIHwgQGNnZW5zb3VsICgyMDE5LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBlcmwgICAgICAgICAgICAgICAgICB8IEB3aW5nMzI4ICgyMDE3LzA3KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkgQHl1ZTk5NDQ4ODIgKDIwMTkvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQSFAgICAgICAgICAgICAgICAgICAgfCBAamViZW50aWVyICgyMDE3LzA3KSwgQGRrYXJsb3ZpICgyMDE3LzA3KSwgQG1hbmRyZWFuICgyMDE3LzA4KSwgQGpmYXN0bmFjaHQgKDIwMTcvMDkpLCBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pICgyMDE4LzA3KSwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUG93ZXJTaGVsbCAgICAgICAgICAgIHwgQHdpbmczMjggKDIwMjAvMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFB5dGhvbiAgICAgICAgICAgICAgICB8IEBjYm9ybmV0ICgyMDE3LzA5KSBAdG9tcGx1cyAoMjAxOC8xMCkgQGtyamFrYnJqYWsgKDIwMjMvMDIpIEBmYTAzMTEgKDIwMjMvMTApIEBtdWx0YW5pICgyMDIzLzEwKSB8CnwgUiAgICAgICAgICAgICAgICAgICAgIHwgQFJhbWFudGggKDIwMTkvMDcpIEBzYWlnaXJpZGhhcjIxICgyMDE5LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJ1YnkgICAgICAgICAgICAgICAgICB8IEBjbGlmZmFubyAoMjAxNy8wNykgQHpseCAoMjAxNy8wOSkgQGF1dG9wcCAoMjAxOS8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBSdXN0ICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGZhcmNhbGxlciAoMjAxNy8wOCkgQHJpY2hhcmR3aGl1ayAoMjAxOS8wNykgQHBhbGFkaW56aCAoMjAyMC8wNSkgQGphY29iLXBybyAoMjAyMi8xMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU2NhbGEgICAgICAgICAgICAgICAgIHwgQGNsYXNuYWtlICgyMDE3LzA3KSwgQHNoaWppbmt1aSAgKDIwMTgvMDEpLCBAcmFtemltYWFsZWogKDIwMTgvMDMpLCBAY2hhbWVsZW9uODIgKDIwMjAvMDMpLCBAQm91aWxsaWUgKDIwMjAvMDQpIEBmaXNoODYgKDIwMjMvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFN3aWZ0ICAgICAgICAgICAgICAgICB8IEBqZ2F2cmlzICgyMDE3LzA3KSBAZWh5Y2hlICgyMDE3LzA4KSBARWR1Yml0cyAoMjAxNy8wOSkgQGphei1haCAoMjAxNy8wOSkgQDRicnVudSAoMjAxOS8xMSkgQGR5ZHVzMHgxNCAoMjAyMy8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUeXBlU2NyaXB0ICAgICAgICAgICAgfCBAVGlGdSAoMjAxNy8wNykgQHRheHBvbiAoMjAxNy8wNykgQHNlYmFzdGlhbmhhYXMgKDIwMTcvMDcpIEBrZW5pc3Rld2FyZCAoMjAxNy8wNykgQFZyb2xpamt4ICgyMDE3LzA5KSBAbWFjam9obm55ICgyMDE4LzAxKSBAdG9wY2UgKDIwMTgvMTApIEBha2VoaXIgKDIwMTkvMDcpIEBwZXRlam9oYW5zb254byAoMjAxOS8xMSkgQGFtYWtocm92ICgyMDIwLzAyKSBAZGF2aWRnYW1lcm8gKDIwMjIvMDMpIEBta3VzYWthICgyMDIyLzA0KSBAam9zY2hhICgyMDI0LzEwKSAgICB8CnwgWG9qbyAgICAgICAgICAgICAgICAgIHwgQFRvcGhlZWUgKDIwMjMvMDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKClBhc3QgTWVtYmVycyBvZiBUZWNobmljYWwgQ29tbWl0dGVlOgp8IExhbmd1YWdlcy9HZW5lcmF0b3JzICAgICAgICAgfCBNZW1iZXIgKGpvaW4gZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBQeXRob24gICAgICAgICAgICB8IEB0YXhwb24gKDIwMTcvMDcpIEBmcm9sICgyMDE3LzA3KSBAbWJvaGxvb2wgKDIwMTcvMDcpIEBjYm9ybmV0ICgyMDE3LzA5KSBAa2Vuam9uZXMtY2lzY28gKDIwMTcvMTEpIEB0b21wbHVzICgyMDE4LzEwKSBAYXJ1bi1uYWxsYSAoMjAxOS8xMSkgIHwKCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpPcGVuQVBJIEdlbmVyYXRvciBpcyBhIGZvcmsgb2YgW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikuIEluIHZpZXcgb2YgdGhlIGlzc3VlcyB3aXRoIHRoZSBTd2FnZ2VyIENvZGVnZW4gMy4wLjAgKGJldGEpIHJlbGVhc2UgYW5kIHRoZSBkaXNhZ3JlZW1lbnQgb24gdGhlIHByb2plY3QncyBkaXJlY3Rpb24sIG1vcmUgdGhhbiA0MCB0b3AgY29udHJpYnV0b3JzIGFuZCB0ZW1wbGF0ZSBjcmVhdG9ycyBvZiBTd2FnZ2VyIENvZGVnZW4gZGVjaWRlZCB0byBmb3JrIFN3YWdnZXIgQ29kZWdlbiBhbmQgbWFpbnRhaW4gYSBjb21tdW5pdHktZHJpdmVuIHZlcnNpb24gY2FsbGVkICJPcGVuQVBJIEdlbmVyYXRvciIuIFBsZWFzZSByZWZlciB0byB0aGUgW1EmQV0oZG9jcy9xbmEubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIyBGb3VuZGluZyBNZW1iZXJzIChhbHBoYWJldGljYWwgb3JkZXIpOgoKLSBbQWtpaGl0byBOYWthbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpCi0gW0FydGVtIE9jaGVyZWRrb10oaHR0cHM6Ly9naXRodWIuY29tL2dhbGF4aWUpCi0gW0FydGh1ciBNb2dsaWV2XShodHRwczovL2dpdGh1Yi5jb20vQXJ0aWN1cykKLSBbQmFydGVrIEtyeXphXShodHRwczovL2dpdGh1Yi5jb20vYmtyeXphKQotIFtCZW4gV2VsbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9idndlbGxzKQotIFtCZW5qYW1pbiBHaWxsXShodHRwczovL2dpdGh1Yi5jb20vYmpnaWxsKQotIFtDaHJpc3RvcGhlIEJvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpCi0gW0NsaWZmYW5vIFN1YmFnaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9jbGlmZmFubykKLSBbRGFpa2kgTWF0c3VkYXRlXShodHRwczovL2dpdGh1Yi5jb20vZC1kYXRlKQotIFtEYW5pZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9EYW5pZWxrdTE1KQotIFtFbWlsaWFubyBCb25hc3NpXShodHRwczovL2dpdGh1Yi5jb20vZW1pbGlhbm9ib25hc3NpKQotIFtFcmlrIFRpbW1lcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcmlrdGltKQotIFtFc3RlYmFuIEdlaHJpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNqb2hubnkpCi0gW0d1c3Rhdm8gUGF6XShodHRwczovL2dpdGh1Yi5jb20vZ3VzdGF2b2FwYXopCi0gW0phdmllciBWZWxpbGxhXShodHRwczovL2dpdGh1Yi5jb20vanZlbGlsbGEpCi0gW0plYW4tRnJhbsOnb2lzIEPDtHTDqV0oaHR0cHM6Ly9naXRodWIuY29tL0pGQ290ZSkKLSBbSmltIFNjaHViZXJ0XShodHRwczovL2dpdGh1Yi5jb20vamltc2NodWJlcnQpCi0gW0pvbiBTY2hvbmluZ10oaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaG9uaW5nKQotIFtKw6lyw6ltaWUgQnJlc3Nvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCi0gW0rDtnJuIEFocmVuc10oaHR0cHM6Ly9naXRodWIuY29tL2pheWVhcm4pCi0gW0tlbmkgU3Rld2FyZF0oaHR0cHM6Ly9naXRodWIuY29tL2tlbmlzdGV3YXJkKQotIFtNYXJjaW4gU3RlZmFuaXVrXShodHRwczovL2dpdGh1Yi5jb20vbXN0ZWZhbml1aykKLSBbTWFydGluIERlbGlsbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5EZWxpbGxlKQotIFtNYXNhaGlybyBZYW1hdWNoaV0oaHR0cHM6Ly9naXRodWIuY29tL2FsZ2FzKQotIFtNaWNoZWxlIEFsYmFub10oaHR0cHM6Ly9naXRodWIuY29tL21pY2hlbGVhbGJhbm8pCi0gW1JhbXppIE1hYWxlal0oaHR0cHM6Ly9naXRodWIuY29tL3JhbXppbWFhbGVqKQotIFtSYXZpbmRyYSBOaWthbV0oaHR0cHM6Ly9naXRodWIuY29tL3JhdmluaWthbSkKLSBbUmljYXJkbyBDYXJkb25hXShodHRwczovL2dpdGh1Yi5jb20vcmljYXJkb25hKQotIFtTZWJhc3RpYW4gSGFhc10oaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmhhYXMpCi0gW1NlYmFzdGlhbiBNYW5kcmVhbl0oaHR0cHM6Ly9naXRodWIuY29tL21hbmRyZWFuKQotIFtTcmVlbmlkaGkgU3JlZXNoYV0oaHR0cHM6Ly9naXRodWIuY29tL3NyZWVzaGFzKQotIFtTdGVmYW4gS3Jpc21hbm5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGtyd29yaykKLSBbU3RlcGhhbmUgQ2FycmV6XShodHRwczovL2dpdGh1Yi5jb20vc3RjYXJyZXopCi0gW1Rha3VybyBXYWRhXShodHRwczovL2dpdGh1Yi5jb20vdGF4cG9uKQotIFtUb21hc3ogUHJ1c10oaHR0cHM6Ly9naXRodWIuY29tL3RvbXBsdXMpCi0gW1RyaXN0YW4gU2xvdWdodGVyXShodHRwczovL2dpdGh1Yi5jb20vdHNsb3VnaHRlcikKLSBbVmljdG9yIE9ybG92c2t5XShodHRwczovL2dpdGh1Yi5jb20vdmljbG92c2t5KQotIFtWaWN0b3IgVHJha2h0ZW5iZXJnXShodHRwczovL2dpdGh1Yi5jb20vdmljdG9yZ2l0KQotIFtWbGFkIEZyb2xvdl0oaHR0cHM6Ly9naXRodWIuY29tL2Zyb2wpCi0gW1ZsYWRpbWlyIFBvdXphbm92XShodHRwczovL2dpdGh1Yi5jb20vZmFyY2FsbGVyKQotIFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkKLSBbWGluIE1lbmddKGh0dHBzOi8vZ2l0aHViLmNvbS94bWVuZzEpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS91c2VyL292ZXJ2aWV3P3U9MTY0MzUzODUpCi0gW1h1IEh1aSBIdWldKGh0dHBzOi8vZ2l0aHViLmNvbS94aGgpCi0gW2FudGloYXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRpaGF4KQotIFtiZWF0Y3JhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2JlYXRjcmFja2VyKQotIFtkYXVybmltYXRvcl0oaHR0cHM6L2dpdGh1Yi5jb20vZGF1cm5pbWF0b3IpCi0gW2V0aGVyZWFsam95XShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJlYWxqb3kpCi0gW2pmaWFsYV0oaHR0cHM6Ly9naXRodWIuY29tL2pmaWFsYSkKLSBbbHVrb3lhbm92XShodHRwczovL2dpdGh1Yi5jb20vbHVrb3lhbm92KQoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIFs3IC0gTGljZW5zZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQotLS0tLS0tCgpDb3B5cmlnaHQgMjAxOCBPcGVuQVBJLUdlbmVyYXRvciBDb250cmlidXRvcnMgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkKQ29weXJpZ2h0IDIwMTggU21hcnRCZWFyIFNvZnR3YXJlCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgW2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBdKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLS0tCg== + readmeEtag: '"923a22ba16a7bdd359ecc6d0faf8c29c11038250"' + readmeLastModified: Tue, 08 Oct 2024 03:21:54 GMT repositoryId: 133134007 description: >- OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3) created: '2018-05-12T09:57:56Z' - updated: '2024-10-07T03:28:34Z' + updated: '2024-10-08T03:22:05Z' language: Java archived: false - stars: 21490 + stars: 21503 watchers: 220 - forks: 6505 + forks: 6507 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"4595b8a0b89ad8c6e708cf826c21f0dfc870f82d55f4d4ce1df1736df5e2507c"' - repoLastModified: Mon, 07 Oct 2024 03:28:34 GMT + repoEtag: '"8397cb442ac0c699f579ada156432a8af1f52aa8b5e5943a5e021517993577ce"' + repoLastModified: Tue, 08 Oct 2024 03:22:05 GMT foundInMaster: true id: 0418f8afcd0196c648d1a46c0c5c20d1 v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083 @@ -1119,17 +1119,17 @@ repositoryId: 323665366 description: OpenAPI based HTTP Client code generator created: '2020-12-22T15:35:49Z' - updated: '2024-10-05T18:30:32Z' + updated: '2024-10-07T22:44:15Z' language: C# archived: false - stars: 2870 + stars: 2876 watchers: 43 - forks: 197 + forks: 198 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"a55dbe402f2d24b774b573337176c214d0874834abc362b297bd44f7aad48d13"' - repoLastModified: Sat, 05 Oct 2024 18:30:32 GMT + repoEtag: '"eb4550f04741a29766e1565048f061b3d2a6f95dcfc76075df93bd9a112d83d6"' + repoLastModified: Mon, 07 Oct 2024 22:44:15 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt @@ -1157,7 +1157,7 @@ repositoryId: 229844927 description: Generates Kotlin Code from OpenApi3 Specifications created: '2019-12-24T00:56:42Z' - updated: '2024-10-06T19:26:04Z' + updated: '2024-10-07T13:31:38Z' language: Kotlin archived: false stars: 153 @@ -1166,8 +1166,8 @@ owner: cjbooms logo: https://avatars.githubusercontent.com/u/868640?v=4 license: Apache-2.0 - repoEtag: '"10200286994176daec7581abb063855b1dc1d3dbdad24c21fdeac31b76fc66f6"' - repoLastModified: Sun, 06 Oct 2024 19:26:04 GMT + repoEtag: '"5d5d059984b2187f0c987357883a7b5ccf70f424506addefc6407e39e2655e0a"' + repoLastModified: Mon, 07 Oct 2024 13:31:38 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -1284,17 +1284,17 @@ repositoryId: 190430086 description: VisualStudio Code OpenAPI tools created: '2019-06-05T16:27:53Z' - updated: '2024-10-04T14:23:57Z' + updated: '2024-10-07T16:23:39Z' language: TypeScript archived: false - stars: 330 + stars: 331 watchers: 11 forks: 41 owner: 42Crunch logo: https://avatars.githubusercontent.com/u/25365245?v=4 license: AGPL-3.0 - repoEtag: '"1ed092a07000507fe71d87614c3bd625c7fb6b734df4dbacd01de77acea7bf33"' - repoLastModified: Fri, 04 Oct 2024 14:23:57 GMT + repoEtag: '"7f89a7d99b779d03afaa9619b2c22b8d708ea78dca72bcde30a029a750eab40f"' + repoLastModified: Mon, 07 Oct 2024 16:23:39 GMT foundInMaster: true id: 782ecbb10f1ff8ac9685e0ed24e52e58 v3_1: false @@ -1359,17 +1359,17 @@ repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' - updated: '2024-10-06T22:02:51Z' + updated: '2024-10-07T15:59:07Z' language: JavaScript archived: false - stars: 8893 + stars: 8896 watchers: 262 forks: 2254 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"e4dbff0a3e7d40251b39b7251f240ad6618efcf0da9ade8aa401fa1d0a8f2543"' - repoLastModified: Sun, 06 Oct 2024 22:02:51 GMT + repoEtag: '"e9f4e755b6369f411985d2b380f27bfb7e1843a1b706a70da74c4a505e1b412a"' + repoLastModified: Mon, 07 Oct 2024 15:59:07 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true @@ -1476,17 +1476,17 @@ repositoryId: 192987405 description: Hackolade(https://hackolade.com) plugin for OpenAPI 3 API documentation created: '2019-06-20T21:05:49Z' - updated: '2024-10-02T15:06:19Z' + updated: '2024-10-07T18:59:02Z' language: JavaScript archived: false - stars: 15 + stars: 16 watchers: 7 forks: 10 owner: hackolade logo: https://avatars.githubusercontent.com/u/20265734?v=4 license: NOASSERTION - repoEtag: '"a633509677fcaffa207d33a987ec46ff80de8f129f57852af45b322ea28bf391"' - repoLastModified: Wed, 02 Oct 2024 15:06:19 GMT + repoEtag: '"2aaedd61c5ea1bcba2290e260086a54855d8c148c7c06cfb737385986d6b1f7b"' + repoLastModified: Mon, 07 Oct 2024 18:59:02 GMT foundInMaster: true id: 0ca14e83c7b680313bbc57c0a56e6c05 v3_1: true @@ -1522,7 +1522,7 @@ owner: Apicurio logo: https://avatars.githubusercontent.com/u/28107283?v=4 license: Apache-2.0 - repoEtag: '"756adc957561c7d47ecb5f0dd03143a577617d0f18efe26941da0e885f49ad46"' + repoEtag: '"15780c74a35c5221e2207fa64a2593ceb6f1a8b36439ac74021ef29226e6f995"' repoLastModified: Wed, 02 Oct 2024 14:58:22 GMT foundInMaster: true homepage: https://github.com/Apicurio/apicurio-studio @@ -1654,17 +1654,17 @@ repositoryId: 266575464 description: A quick and easy tool for generating OpenAPI schemas. created: '2020-05-24T16:00:11Z' - updated: '2024-10-02T23:38:55Z' + updated: '2024-10-08T01:04:36Z' language: PHP archived: false - stars: 85 + stars: 86 watchers: 4 forks: 4 owner: dsuurlant logo: https://avatars.githubusercontent.com/u/4609379?v=4 license: MIT - repoEtag: '"3104ba5a918d94cc52852ea7c26157478a2022504c6373f078239f78699395c4"' - repoLastModified: Wed, 02 Oct 2024 23:38:55 GMT + repoEtag: '"d4b1f0ae20c1f4a4bc60ca42cc54eb46c95f43aeef8260e79c171be03a181568"' + repoLastModified: Tue, 08 Oct 2024 01:04:36 GMT id: ee1da7e4ea9bb6a42233ac4702ceebf7 - source: https://openapi.tools/ name: InducOapi @@ -1772,17 +1772,17 @@ The open source, cloud native tool for API Mocking and Testing. Microcks is a Cloud Native Computing Foundation sandbox project 🚀 created: '2015-02-23T15:46:09Z' - updated: '2024-10-05T14:33:11Z' + updated: '2024-10-07T19:34:03Z' language: Java archived: false - stars: 1364 + stars: 1366 watchers: 22 forks: 213 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 - repoEtag: '"92929aa378b30c9bb8c04e4968c384586015d8733163d59fb4e5e31280a99732"' - repoLastModified: Sat, 05 Oct 2024 14:33:11 GMT + repoEtag: '"f5a79f5e12f1bc83dd9e6dc76a615736dd230dd22a1862c10475dad34f2c58e1"' + repoLastModified: Mon, 07 Oct 2024 19:34:03 GMT foundInMaster: true id: 1c0e918b5a733b0f1726199e3ea101d6 - source: https://openapi.tools/ @@ -1951,17 +1951,17 @@ repositoryId: 61366800 description: Build OpenAPI-compliant REST APIs using TypeScript and Node created: '2016-06-17T10:42:50Z' - updated: '2024-10-05T01:53:14Z' + updated: '2024-10-08T01:22:31Z' language: TypeScript archived: false - stars: 3478 + stars: 3480 watchers: 29 forks: 498 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT - repoEtag: '"d8c77559704f9c9653bff73f02309cb34f53bca1138661127feb7e3d57a1c641"' - repoLastModified: Sat, 05 Oct 2024 01:53:14 GMT + repoEtag: '"3b35392e6af28b8c95fa881005781898122eb0e486c160dc4d6eceb4b93d0bbe"' + repoLastModified: Tue, 08 Oct 2024 01:22:31 GMT foundInMaster: true id: 2529db76d3d9f042b0c624f65b13fc41 - source: @@ -1978,17 +1978,17 @@ repositoryId: 741524414 description: ✨ Turn your OpenAPI specification into a beautiful TypeScript client created: '2024-01-10T15:19:25Z' - updated: '2024-10-07T01:51:17Z' + updated: '2024-10-07T22:15:49Z' language: TypeScript archived: false - stars: 1105 + stars: 1110 watchers: 8 forks: 92 owner: hey-api logo: https://avatars.githubusercontent.com/u/164436240?v=4 license: NOASSERTION - repoEtag: '"a5081cdd893284c4312d2a46c05749a7c937f1fee05d2064bd1c36bd9ef12bd0"' - repoLastModified: Mon, 07 Oct 2024 01:51:17 GMT + repoEtag: '"560d75ca4d475e95148a49a7a4528b4e0148a3fcaf3d0a3637122e33b18ca213"' + repoLastModified: Mon, 07 Oct 2024 22:15:49 GMT category: - Converters - SDK @@ -2024,7 +2024,7 @@ repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' - updated: '2024-10-06T04:26:21Z' + updated: '2024-10-07T21:44:05Z' language: Java archived: false stars: 1108 @@ -2033,8 +2033,8 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"e7048822bcaabff0001441c6a6e04f57e720df85e023f419af9ed0d4ba398728"' - repoLastModified: Sun, 06 Oct 2024 04:26:21 GMT + repoEtag: '"e3850559c1efc853e03feeaca5b8d750b97fe82cc919b3eab5bf1af772ef91a4"' + repoLastModified: Mon, 07 Oct 2024 21:44:05 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 id: 2657bfe401922934e35bc38fbbef6b6d @@ -2071,7 +2071,7 @@ owner: kogosoftwarellc logo: https://avatars.githubusercontent.com/u/15419153?v=4 license: MIT - repoEtag: '"95a9a9115883e96f3dd31c2012e40b7ff9627722e4aef58c11fff76e48b5bcd0"' + repoEtag: '"ce363a02042db48f87c5b8223afdc1f8a649818dbe41732a41ad4f8f071c0686"' repoLastModified: Sun, 29 Sep 2024 11:34:08 GMT foundInMaster: true - source: https://openapi.tools/ @@ -2165,17 +2165,17 @@ 🕸️ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. created: '2015-03-06T21:46:05Z' - updated: '2024-10-06T10:41:47Z' + updated: '2024-10-07T15:42:36Z' language: TypeScript archived: false - stars: 8555 - watchers: 213 + stars: 8556 + watchers: 214 forks: 960 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT - repoEtag: '"489bf898b98c0a95f54b28cb250fbc0acbed29ac48403addfa6679ee888f14bf"' - repoLastModified: Sun, 06 Oct 2024 10:41:47 GMT + repoEtag: '"b78ccd95344b7864b7c71f3aa0ddcab6a3c9f5037d09771cd732001595340614"' + repoLastModified: Mon, 07 Oct 2024 15:42:36 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ @@ -2347,7 +2347,7 @@ repositoryId: 105440153 description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:' created: '2017-10-01T12:20:24Z' - updated: '2024-10-06T13:21:43Z' + updated: '2024-10-07T22:07:56Z' language: TypeScript archived: false stars: 1683 @@ -2356,8 +2356,8 @@ owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT - repoEtag: '"2f31781307e86b1908619cde70b733ed971c9c3165c81155080201c084e0a53c"' - repoLastModified: Sun, 06 Oct 2024 13:21:43 GMT + repoEtag: '"de0f705ee6596171abd6d660065ae3fc9c81a6e0f440a8463faee39d843bd304"' + repoLastModified: Mon, 07 Oct 2024 22:07:56 GMT foundInMaster: true id: 7071babd9853fc901c5decfa9b465b67 - source: @@ -2420,17 +2420,17 @@ repositoryId: 12590052 description: Language-agnostic HTTP API Testing Tool created: '2013-09-04T12:21:35Z' - updated: '2024-10-04T12:23:14Z' + updated: '2024-10-07T08:16:50Z' language: JavaScript archived: false - stars: 4187 + stars: 4188 watchers: 75 forks: 279 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT - repoEtag: '"4136591a07048f4dfa96b78207c0ed99e49a094f0514dcaf6e381310a46f813a"' - repoLastModified: Fri, 04 Oct 2024 12:23:14 GMT + repoEtag: '"d90c7d05a6ac01b2ed573b7ee4e23817fdf3455cc2cf13004a7ab025746e6992"' + repoLastModified: Mon, 07 Oct 2024 08:16:50 GMT foundInMaster: true id: bb2e4b0879fce0d8706dcebfd2c10a4c - source: https://openapi.tools/ @@ -2464,7 +2464,7 @@ owner: maticardenas logo: https://avatars.githubusercontent.com/u/12075970?v=4 license: BSD-3-Clause - repoEtag: '"1637cbb0340400f1543df4b479d1c194cce2292b2bae7300fab519b8ed73140b"' + repoEtag: '"6c8d01ce725e46f9b4fbdbc2dcc52803b481c3355cc0aa8288a08c2b3b6a1bec"' repoLastModified: Wed, 25 Sep 2024 12:43:24 GMT foundInMaster: true - source: @@ -2562,7 +2562,7 @@ Port OpenAPI Specs to Postman Collections, inject test suite and run via Newman 👨🏽‍🚀 created: '2021-05-05T10:42:29Z' - updated: '2024-10-04T15:40:21Z' + updated: '2024-10-07T18:29:12Z' language: TypeScript archived: false stars: 634 @@ -2571,8 +2571,8 @@ owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: Apache-2.0 - repoEtag: '"b15757602f9844cdefd7d9f37159d2857397fc1da69ba8295f0f103fa7b4f367"' - repoLastModified: Fri, 04 Oct 2024 15:40:21 GMT + repoEtag: '"fc5e94c211326d1cf9bd62bfff317d2304323f4b8367110574bf71b50ea674ee"' + repoLastModified: Mon, 07 Oct 2024 18:29:12 GMT foundInMaster: true id: a03cdb329f630a946a946dfe26802c43 - source: https://openapi.tools/ @@ -2600,17 +2600,17 @@ repositoryId: 537500924 description: Automated API Testing and Quality Assurance created: '2022-09-16T14:48:21Z' - updated: '2024-10-07T00:52:57Z' + updated: '2024-10-07T11:58:08Z' language: TypeScript archived: false - stars: 1640 + stars: 1641 watchers: 14 forks: 76 owner: stepci logo: https://avatars.githubusercontent.com/u/61350067?v=4 license: MPL-2.0 - repoEtag: '"5d655dfafe8e2c2ea479fc0d50b0c02c287739cbe55179efc4a9415e40f911fb"' - repoLastModified: Mon, 07 Oct 2024 00:52:57 GMT + repoEtag: '"38e3df06fb4d7ec14f34c1a24aeb2a89d75bb0fc63d2bf52a6033fe5d108bf66"' + repoLastModified: Mon, 07 Oct 2024 11:58:08 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -2681,17 +2681,17 @@ baked in support for OpenAPI (v3.1, v3.0, and v2.0), Arazzo v1.0, as well as AsyncAPI v2.x. created: '2018-08-15T18:43:18Z' - updated: '2024-10-06T10:51:51Z' + updated: '2024-10-07T23:20:37Z' language: TypeScript archived: false - stars: 2480 + stars: 2481 watchers: 34 forks: 233 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"a3888b7107c2114c15160a1b0c124e9af9de545e5e95f52bd1ddf83caa045777"' - repoLastModified: Sun, 06 Oct 2024 10:51:51 GMT + repoEtag: '"4070828ae99b1a7e6b3a9000e13859628a93be232a66921a416ddb2018521a27"' + repoLastModified: Mon, 07 Oct 2024 23:20:37 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ @@ -2725,7 +2725,7 @@ owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"109946d56edc18870f26fdfbd92596ed5273142e6ec5ab69ecc31b193291c365"' + repoEtag: '"03b77579280f46c1dac37022cdd1a6d327a8d956ca0832b7c7f4f3bdd1371a71"' repoLastModified: Thu, 03 Oct 2024 06:59:57 GMT foundInMaster: true id: 30d322c922366df3f6f8fb9c681b2139 @@ -2745,17 +2745,17 @@ repositoryId: 153173690 description: Configurable and extensible validator/linter for OpenAPI documents created: '2018-10-15T19:59:22Z' - updated: '2024-10-03T18:28:58Z' + updated: '2024-10-07T15:37:31Z' language: JavaScript archived: false - stars: 489 + stars: 490 watchers: 22 forks: 88 owner: IBM logo: https://avatars.githubusercontent.com/u/1459110?v=4 license: Apache-2.0 - repoEtag: '"8f9f9b97ab1bfcd6b670187872ef0e2f3751ad4c6cd36b17242fe36305956c06"' - repoLastModified: Thu, 03 Oct 2024 18:28:58 GMT + repoEtag: '"d575d0961bd3b4bddd08ce63eec07b3ad609a8a33695a5c13570be2f153d469b"' + repoLastModified: Mon, 07 Oct 2024 15:37:31 GMT foundInMaster: true id: 0bf7dd29a9d07232135bb00764928296 v3_1: true @@ -2777,17 +2777,17 @@ ⚒️ Redocly CLI makes OpenAPI easy. Lint/validate to any standard, generate beautiful docs, and more. created: '2019-09-10T14:56:25Z' - updated: '2024-10-04T12:09:46Z' + updated: '2024-10-07T11:21:39Z' language: TypeScript archived: false - stars: 913 + stars: 914 watchers: 29 forks: 139 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"6063b1c3a40ce6b6edac19c9f133ce1219e51315291d909cc62c825a0b34a589"' - repoLastModified: Fri, 04 Oct 2024 12:09:46 GMT + repoEtag: '"d48f8bfcee09ee87f8f0786def151a90dbe4805c58e720349063790bf68f37c0"' + repoLastModified: Mon, 07 Oct 2024 11:21:39 GMT category: - Description Validators - Documentation @@ -2895,17 +2895,17 @@ contract-testing against an OpenAPI API description. It makes APIFirst easy and reliable. created: '2019-02-20T09:11:47Z' - updated: '2024-10-03T21:18:22Z' + updated: '2024-10-07T05:14:40Z' language: Ruby archived: false - stars: 115 + stars: 114 watchers: 6 forks: 15 owner: ahx logo: https://avatars.githubusercontent.com/u/8669?v=4 license: MIT - repoEtag: '"9d4ad14d5365ee9e2f96798e8073b52a1e2eb637dba22cbb45b2d698f88a54e9"' - repoLastModified: Thu, 03 Oct 2024 21:18:22 GMT + repoEtag: '"c4d3876f9f049630758e8927312da099773e4bbe36c6556491bc6fd7bd4b2ad2"' + repoLastModified: Mon, 07 Oct 2024 05:14:40 GMT foundInMaster: true category: Data Validators id: d8781910209a542c2f846aa8c740baf2 @@ -2972,17 +2972,17 @@ repositoryId: 18997610 description: Swagger Spec to Java POJOs created: '2014-04-21T16:00:22Z' - updated: '2024-10-04T22:29:51Z' + updated: '2024-10-07T05:55:41Z' language: Java archived: false - stars: 781 + stars: 782 watchers: 46 forks: 527 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"d48996f477c711de5b9a5bf8a2262c175eafb11739c90c663c8045b8f833423b"' - repoLastModified: Fri, 04 Oct 2024 22:29:51 GMT + repoEtag: '"f8cb5892958ca6d4826229e7187e1a5fe9a8b3af6ad29f81496e8b48aa83399d"' + repoLastModified: Mon, 07 Oct 2024 05:55:41 GMT foundInMaster: true id: 45f46a8f7ac698cfe3926303bf3dff9d v3_1_link: https://github.com/swagger-api/swagger-parser/pull/1730 @@ -3001,17 +3001,17 @@ repositoryId: 25453221 description: Swagger 2.0 and OpenAPI 3.0 parser/validator created: '2014-10-20T06:14:51Z' - updated: '2024-10-06T21:05:01Z' + updated: '2024-10-07T18:11:29Z' language: JavaScript archived: false - stars: 1096 - watchers: 18 + stars: 1097 + watchers: 19 forks: 155 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT - repoEtag: '"5a8a2938f632c5e1c497b7072c177e6ab1c7dca7d7ba13d18ef9d3454cbe7318"' - repoLastModified: Sun, 06 Oct 2024 21:05:01 GMT + repoEtag: '"a73919004af1426889c8a090810c7041cc62ef433b4845964b5524a857159e1c"' + repoLastModified: Mon, 07 Oct 2024 18:11:29 GMT category: Parsers foundInMaster: true name: APIDevTools/swagger-parser @@ -3169,17 +3169,17 @@ OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) created: '2017-06-11T20:12:06Z' - updated: '2024-10-04T17:58:45Z' + updated: '2024-10-07T06:55:17Z' language: Go archived: false - stars: 2579 + stars: 2580 watchers: 23 forks: 428 owner: getkin logo: https://avatars.githubusercontent.com/u/40365715?v=4 license: MIT - repoEtag: '"2060c7339c62a5bc16182bd1632ebf7f9d26a943ae0805ee56361d80aa57dcd9"' - repoLastModified: Fri, 04 Oct 2024 17:58:45 GMT + repoEtag: '"a66989d14167f8559d9e4f479db95f1c5eafa4374543d92a2d8a61a9cfc51e15"' + repoLastModified: Mon, 07 Oct 2024 06:55:17 GMT foundInMaster: true v2: true id: f6838ce08e87fa4c3dc813c97193ece3 @@ -3387,7 +3387,7 @@ owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"c3d35c414b786b1f26b1383ba0d03f8318b86abef22de7c8fc0c8048b5a931ae"' + repoEtag: '"93efb5e4f27da62aaa183e19c61822bce3104c4f7d474a267137a6a6134eb2f1"' repoLastModified: Fri, 04 Oct 2024 07:44:13 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 @@ -3585,17 +3585,17 @@ repositoryId: 26726495 description: Swagger 2.0 implementation for go created: '2014-11-16T20:13:15Z' - updated: '2024-10-06T18:02:33Z' + updated: '2024-10-07T16:04:37Z' language: Go archived: false - stars: 9494 + stars: 9495 watchers: 120 forks: 1250 owner: go-swagger logo: https://avatars.githubusercontent.com/u/10362650?v=4 license: Apache-2.0 - repoEtag: '"3e4f171bf821fbce6c4b95967ba0990a9c1464def338dffbe89b8997ff2ec875"' - repoLastModified: Sun, 06 Oct 2024 18:02:33 GMT + repoEtag: '"fcb8ea87efddf4f4819b37b84f83d360122db5750159e91136df452e7fda1d27"' + repoLastModified: Mon, 07 Oct 2024 16:04:37 GMT foundInMaster: true id: ef136df9ffb40bb33ccbd76665d8f5b4 - source: https://openapi.tools/ @@ -3688,17 +3688,17 @@ repositoryId: 41822320 description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ' created: '2015-09-02T19:11:57Z' - updated: '2024-10-06T13:46:59Z' + updated: '2024-10-07T16:45:25Z' language: C# archived: false - stars: 6734 + stars: 6736 watchers: 167 - forks: 1290 + forks: 1291 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT - repoEtag: '"875341ab825dd6570286847357d95da0ab05a5aa4599d9f934d3111cc65d52dd"' - repoLastModified: Sun, 06 Oct 2024 13:46:59 GMT + repoEtag: '"ca1e13be38f2cc95ad1dcf1381868d9a91608d00cc174984cc9abff2d9664989"' + repoLastModified: Mon, 07 Oct 2024 16:45:25 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 - source: https://openapi.tools/ @@ -3761,17 +3761,17 @@ documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. created: '2011-07-06T14:26:48Z' - updated: '2024-10-06T16:45:35Z' + updated: '2024-10-07T23:21:58Z' language: Mustache archived: false - stars: 16940 + stars: 16942 watchers: 413 - forks: 6028 + forks: 6029 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"57ec0a016844c70f69f89398ad9fed2bc7ca56b99b6bcfd86b27e775eb331b27"' - repoLastModified: Sun, 06 Oct 2024 16:45:35 GMT + repoEtag: '"a3ece29d0a42cffd4832129e3f5932d87b1411c4137df15374c616c5d37ee9e2"' + repoLastModified: Mon, 07 Oct 2024 23:21:58 GMT foundInMaster: true id: eda1e66e1b7805496e42f57851791a32 - source: https://openapi.tools/ @@ -3795,17 +3795,17 @@ OpenAPI (f.k.a Swagger) Specification code generator. Supports C#, PowerShell, Go, Java, Node.js, TypeScript, Python created: '2015-02-20T23:02:54Z' - updated: '2024-10-06T11:32:11Z' + updated: '2024-10-07T06:35:23Z' language: TypeScript archived: false - stars: 4603 - watchers: 898 + stars: 4604 + watchers: 899 forks: 734 owner: Azure logo: https://avatars.githubusercontent.com/u/6844498?v=4 license: MIT - repoEtag: '"8f9e5787f7d8ea91967dcbb1f1a72031d7ad663ba769d44e84738c67b75c0409"' - repoLastModified: Sun, 06 Oct 2024 11:32:11 GMT + repoEtag: '"c8cbea5f123c7fc5581978883d3aa222f15ce5799cedcf4cca92505087088972"' + repoLastModified: Mon, 07 Oct 2024 06:35:23 GMT foundInMaster: true id: 648d92bca90bf58cd74407e0bcad2936 - source: https://openapi.tools/ @@ -3862,17 +3862,17 @@ repositoryId: 84146520 description: Comprehensive tooling for working with OpenAPI definitions. created: '2017-03-07T02:46:31Z' - updated: '2024-09-16T17:32:39Z' + updated: '2024-10-07T04:18:46Z' language: TypeScript archived: false - stars: 272 + stars: 273 watchers: 20 forks: 26 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT - repoEtag: '"5ae53485fd38e3fbd013b9db84a71e08fd1ea8b4e673881ae7854c6465c521f0"' - repoLastModified: Mon, 16 Sep 2024 17:32:39 GMT + repoEtag: '"c0a7cc9047325ba04e8b73d795506a9b6d615d41a7411f2279d345609b716873"' + repoLastModified: Mon, 07 Oct 2024 04:18:46 GMT foundInMaster: true id: 362a4b56c90877840a8032f920389bf6 v3_1: true @@ -4230,7 +4230,7 @@ configuration and no coding effort. Tests are self-healing and do not require maintenance. created: '2020-04-02T13:14:39Z' - updated: '2024-10-06T20:07:05Z' + updated: '2024-10-07T19:33:11Z' language: Java archived: false stars: 1175 @@ -4239,8 +4239,8 @@ owner: Endava logo: https://avatars.githubusercontent.com/u/19396140?v=4 license: Apache-2.0 - repoEtag: '"32c2f3c4aa11c801fb2e0b5098ef0531185dd80cc155c366652289dee2a46227"' - repoLastModified: Sun, 06 Oct 2024 20:07:05 GMT + repoEtag: '"26f01adcfce4b88628569bc109c57752511b9f1d86bbd0de32929e5d4c9cb048"' + repoLastModified: Mon, 07 Oct 2024 19:33:11 GMT foundInMaster: true - source: https://openapi.tools/ name: API Insights @@ -4471,16 +4471,16 @@ repositoryId: 491304964 description: Automagically reverse-engineer REST APIs via capturing traffic created: '2022-05-11T23:48:49Z' - updated: '2024-10-07T01:48:17Z' + updated: '2024-10-08T02:05:58Z' language: HTML archived: false - stars: 5046 + stars: 5050 watchers: 23 forks: 219 owner: alufers logo: https://avatars.githubusercontent.com/u/5400940?v=4 - repoEtag: '"06ec5e200580d29fcd7e834718aa3e449ec23a6cc7715de5aba4a2da3a1580dc"' - repoLastModified: Mon, 07 Oct 2024 01:48:17 GMT + repoEtag: '"1afaf61f9c27ee482862df6a581493e1416f8d001140f6e1743832b601c11aae"' + repoLastModified: Tue, 08 Oct 2024 02:05:58 GMT foundInMaster: true - source: https://openapi.tools/ name: OpenApiSpecGeneratorPlugin @@ -4506,17 +4506,17 @@ Dev Proxy is an API simulator that helps you effortlessly test your app beyond the happy path. created: '2022-09-09T18:11:29Z' - updated: '2024-10-07T02:17:34Z' + updated: '2024-10-07T21:08:40Z' language: C# archived: false - stars: 485 + stars: 488 watchers: 16 forks: 57 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"84755762af0207f0b62c3fd53bcc1f3444d0f25f3d4cda0738f20aa32caec4af"' - repoLastModified: Mon, 07 Oct 2024 02:17:34 GMT + repoEtag: '"b0fcd77abb9704679a1740816c91a89889fd0472f6710ea9e0a1b1981368bca5"' + repoLastModified: Mon, 07 Oct 2024 21:08:40 GMT foundInMaster: true - source: https://openapi.tools/ name: har2openapi @@ -4649,17 +4649,17 @@ repositoryId: 709571808 description: Browser extension that generates API specs for any app or website created: '2023-10-25T00:36:06Z' - updated: '2024-10-07T01:48:50Z' + updated: '2024-10-07T21:22:51Z' language: TypeScript archived: false - stars: 3917 + stars: 3919 watchers: 22 forks: 72 owner: AndrewWalsh logo: https://avatars.githubusercontent.com/u/15863952?v=4 license: MIT - repoEtag: '"7f3c3eb455d96cc17ad93d1014befcc83178a0286a4f8530ba1be8cb77dc139c"' - repoLastModified: Mon, 07 Oct 2024 01:48:50 GMT + repoEtag: '"f80d321b8775f42541b85ff357f9eb792850f16071df23ed639bfeecac4e1f26"' + repoLastModified: Mon, 07 Oct 2024 21:22:51 GMT category: - Auto Generators - Documentation @@ -4686,17 +4686,17 @@ repositoryId: 381857226 description: null created: '2021-06-30T23:29:49Z' - updated: '2024-10-06T19:26:20Z' + updated: '2024-10-08T03:16:12Z' language: Java archived: false - stars: 4357 + stars: 4360 watchers: 45 forks: 203 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"4bc73f122ea318560d9269d549e3cd8212ad3695b37b787cc8abb60459a0a918"' - repoLastModified: Sun, 06 Oct 2024 19:26:20 GMT + repoEtag: '"fd177ef0636cf68c1a3318c11d2334d39792f282e727844cfd3b8ebe92b6c5d9"' + repoLastModified: Tue, 08 Oct 2024 03:16:12 GMT category: - Auto Generators - Server Implementations @@ -4773,17 +4773,17 @@ Restish is a CLI for interacting with REST-ish HTTP APIs with some nice features built-in created: '2020-05-15T06:45:59Z' - updated: '2024-10-04T10:34:48Z' + updated: '2024-10-07T15:46:06Z' language: Go archived: false - stars: 900 + stars: 901 watchers: 8 forks: 74 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"d49c286d27f7342d9a1182e99250368bebe3f3c3c72976c6a87fab561e2df1bc"' - repoLastModified: Fri, 04 Oct 2024 10:34:48 GMT + repoEtag: '"01ebb60545fe87f70e69771caae0e7aa70c03cc11fc9b9cc5498a1d54c364811"' + repoLastModified: Mon, 07 Oct 2024 15:46:06 GMT foundInMaster: true id: 22a8c610015b1b9d89af39221beabe66 v3_1: true @@ -4843,17 +4843,17 @@ Plugin for converting OpenAPI 3.0 specs to the Postman Collection (v2) format created: '2018-12-12T10:13:46Z' - updated: '2024-10-05T05:29:45Z' + updated: '2024-10-07T15:49:03Z' language: JavaScript archived: false - stars: 916 + stars: 915 watchers: 22 forks: 196 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 - repoEtag: '"e7b62ab5176edcf9f9e9c53d4154a67161fd2a90aef202ad4cfafb5e9711c7a3"' - repoLastModified: Sat, 05 Oct 2024 05:29:45 GMT + repoEtag: '"74b8830aeefe83f76e1adbb6ccf77ad6af2620488e232abcecbbabc65dec620a"' + repoLastModified: Mon, 07 Oct 2024 15:49:03 GMT foundInMaster: true id: 31b717a2084e3d92f6cda2c33484c789 v3_link: true @@ -4881,7 +4881,7 @@ repositoryId: 345077537 description: Format an OpenAPI document by ordering, formatting and filtering fields. created: '2021-03-06T11:31:52Z' - updated: '2024-10-06T12:30:26Z' + updated: '2024-10-07T17:49:24Z' language: JavaScript archived: false stars: 95 @@ -4890,8 +4890,8 @@ owner: thim81 logo: https://avatars.githubusercontent.com/u/952446?v=4 license: MIT - repoEtag: '"5466ee3667fc1c5f5ffaa1833291204e36aafcb476331798e7d6751df076c2ca"' - repoLastModified: Sun, 06 Oct 2024 12:30:26 GMT + repoEtag: '"5cf7465a3c46a50eb918ae9fc9fda472032a87df40336a3ce600b9383de43ddc"' + repoLastModified: Mon, 07 Oct 2024 17:49:24 GMT foundInMaster: true id: 788dd625de099d0d3403fe30067f3743 v3_1: true @@ -4926,7 +4926,7 @@ owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT - repoEtag: '"ae42543bc95b413e915789a5f7d3ad8440496fd7d527e3732d41dab95ba6c1e4"' + repoEtag: '"9d2561e7d22f640122a19fc35d525dcaa0061bb5c68ab5f52165291f32db3399"' repoLastModified: Sat, 05 Oct 2024 16:14:07 GMT foundInMaster: true id: ec6a7a1e4a69a9beeb95bdebb88cb36d @@ -5020,17 +5020,17 @@ repositoryId: 36817565 description: The ZAP by Checkmarx Core project created: '2015-06-03T16:55:01Z' - updated: '2024-10-06T03:55:45Z' + updated: '2024-10-07T19:00:47Z' language: Java archived: false - stars: 12577 - watchers: 394 + stars: 12581 + watchers: 395 forks: 2249 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 - repoEtag: '"a650bd10d941d9193e0d36f6200a72ea71981f50edbff32e02b7e1fee0a6de99"' - repoLastModified: Sun, 06 Oct 2024 03:55:45 GMT + repoEtag: '"5a66096a5192a4bad7682bd619bcd608e7c018a0b7efb0f94e19e3eec0f7a235"' + repoLastModified: Mon, 07 Oct 2024 19:00:47 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: @@ -5179,25 +5179,25 @@ v3: true repositoryMetadata: base64Readme: >- - IyBPcGVuQVBJIEh0dHBGb3VuZGF0aW9uIFRlc3RpbmcKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbC9waHAtY2xpLWRlbW8vd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RlZWwvcGhwLWNsaS1kZW1vL2FjdGlvbnMpClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nL3YpXSgvL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZykKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nL2xpY2Vuc2UpXSgvL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZykKWyFbRG93bmxvYWRzXShodHRwOi8vcG9zZXIucHVneC5vcmcvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZy9kb3dubG9hZHMpXSgvL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZykKClZhbGlkYXRlIEh0dHBGb3VuZGF0aW9uIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYWdhaW5zdCBPcGVuQVBJICgzKykgZGVmaW5pdGlvbnMuCgpTZWUgW3RoaXMgcG9zdF0oaHR0cHM6Ly90ZWNoLm9zdGVlbC5tZS9wb3N0cy9vcGVuYXBpLWJhY2tlZC1hcGktdGVzdGluZy1pbi1waHAtcHJvamVjdHMtYS1sYXJhdmVsLWV4YW1wbGUgIk9wZW5BUEktYmFja2VkIEFQSSB0ZXN0aW5nIGluIFBIUCBwcm9qZWN0cyDigJMgYSBMYXJhdmVsIGV4YW1wbGUiKSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBbdGhpcyByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZy1sYXJhdmVsLWV4YW1wbGUpIGZvciBhbiBleGFtcGxlIHVzZSBpbiBhIExhcmF2ZWwgcHJvamVjdC4KCj4g8J+SoSBXaGlsZSB5b3UgY2FuIHNhZmVseSB1c2UgdGhpcyBwYWNrYWdlIGZvciB5b3VyIHByb2plY3RzLCBhcyBsb25nIGFzIHZlcnNpb24gYDEuMGAgaGFzIG5vdCBiZWVuIHJlbGVhc2VkICJtaW5vciIgdmVyc2lvbiBwYXRjaGVzIGNhbiBjb250YWluIGJyZWFraW5nIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBjaGVjayB0aGUgW3JlbGVhc2Ugc2VjdGlvbl0oLi4vLi4vcmVsZWFzZXMpIGJlZm9yZSB5b3UgdXBncmFkZS4KCiMjIFdoeT8KCltPcGVuQVBJXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pIGlzIGEgc3BlY2lmaWNhdGlvbiBpbnRlbmRlZCB0byBkZXNjcmliZSBSRVNUZnVsIEFQSXMgaW4gYSB3YXkgdGhhdCBjYW4gYmUgdW5kZXJzdG9vZCBieSBib3RoIGh1bWFucyBhbmQgbWFjaGluZXMuCgpCeSB2YWxpZGF0aW5nIGFuIEFQSSdzIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYWdhaW5zdCB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIHRoYXQgZGVzY3JpYmVzIGl0LCB3ZSBndWFyYW50ZWUgdGhhdCB0aGUgQVBJIGlzIHVzZWQgY29ycmVjdGx5IGFuZCBiZWhhdmVzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZG9jdW1lbnRhdGlvbiB3ZSBwcm92aWRlLCB0aHVzIG1ha2luZyB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLgoKVGhlIFtIdHRwRm91bmRhdGlvbiBjb21wb25lbnRdKGh0dHBzOi8vc3ltZm9ueS5jb20vZG9jL2N1cnJlbnQvY29tcG9uZW50cy9odHRwX2ZvdW5kYXRpb24uaHRtbCkgaXMgZGV2ZWxvcGVkIGFuZCBtYWludGFpbmVkIGFzIHBhcnQgb2YgdGhlIFtTeW1mb255IGZyYW1ld29ya10oaHR0cHM6Ly9zeW1mb255LmNvbS8pLiBJdCBpcyB1c2VkIHRvIGhhbmRsZSBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgaW4gcHJvamVjdHMgc3VjaCBhcyBTeW1mb255LCBMYXJhdmVsLCBEcnVwYWwsIGFuZCBbbWFueSBvdGhlcnNdKGh0dHBzOi8vc3ltZm9ueS5jb20vY29tcG9uZW50cy9IdHRwRm91bmRhdGlvbikuCgojIyBIb3cgZG9lcyBpdCB3b3JrPwoKVGhpcyBwYWNrYWdlIGlzIGJ1aWx0IG9uIHRvcCBvZiBbT3BlbkFQSSBQU1ItNyBNZXNzYWdlIFZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3RoZXBocGxlYWd1ZS9vcGVuYXBpLXBzcjctdmFsaWRhdG9yKSwgd2hpY2ggdmFsaWRhdGVzIFtQU1ItNyBtZXNzYWdlc10oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykgYWdhaW5zdCBPcGVuQVBJIGRlZmluaXRpb25zLgoKSXQgY29udmVydHMgSHR0cEZvdW5kYXRpb24gcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyB0byBQU1ItNyBtZXNzYWdlcyB1c2luZyBTeW1mb255J3MgW1BTUi03IEJyaWRnZV0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL3BzcjcuaHRtbCkgYW5kIFtUb2JpYXMgTnlob2xtXShodHRwczovL2dpdGh1Yi5jb20vTnlob2xtKSdzIFtQU1ItNyBpbXBsZW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL055aG9sbS9wc3I3KSwgYmVmb3JlIHBhc3NpbmcgdGhlbSBvbiB0byBPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yLgoKIyMgSW5zdGFsbGF0aW9uCgo+IPCfkqEgVGhpcyBwYWNrYWdlIGlzIG1vc3RseSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIHBhcnQgb2YgYW4gQVBJIHRlc3Qgc3VpdGUuCgpWaWEgQ29tcG9zZXI6CgpgYGBiYXNoCiQgY29tcG9zZXIgcmVxdWlyZSAtLWRldiBvc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nCmBgYAoKIyMgVXNhZ2UKCkltcG9ydCB0aGUgYnVpbGRlciBjbGFzczoKCmBgYHBocAp1c2UgT3N0ZWVsXE9wZW5BcGlcVGVzdGluZ1xWYWxpZGF0b3JCdWlsZGVyOwpgYGAKClVzZSB0aGUgYnVpbGRlciB0byBjcmVhdGUgYSBbYFxPc3RlZWxcT3BlbkFwaVxUZXN0aW5nXFZhbGlkYXRvcmBdKC9zcmMvVmFsaWRhdG9yLnBocCkgb2JqZWN0LCB1c2luZyBvbmUgb2YgdGhlIGF2YWlsYWJsZSBmYWN0b3J5IG1ldGhvZHMgZm9yIFlBTUwgb3IgSlNPTjoKCmBgYHBocAovLyBGcm9tIGEgZmlsZToKCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbEZpbGUoJHlhbWxGaWxlKS0+Z2V0VmFsaWRhdG9yKCk7CiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tSnNvbkZpbGUoJGpzb25GaWxlKS0+Z2V0VmFsaWRhdG9yKCk7CgovLyBGcm9tIGEgc3RyaW5nOgoKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sU3RyaW5nKCR5YW1sU3RyaW5nKS0+Z2V0VmFsaWRhdG9yKCk7CiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tSnNvblN0cmluZygkanNvblN0cmluZyktPmdldFZhbGlkYXRvcigpOwoKLy8gQXV0b21hdGljIGRldGVjdGlvbiAoc2xvd2VyKToKCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbCgkeWFtbEZpbGVPclN0cmluZyktPmdldFZhbGlkYXRvcigpOwokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbUpzb24oJGpzb25GaWxlT3JTdHJpbmcpLT5nZXRWYWxpZGF0b3IoKTsKYGBgCgo+IPCfkqEgWW91IGNhbiBhbHNvIHVzZSBhIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciB0byBiaW5kIHRoZSBgVmFsaWRhdG9yQnVpbGRlcmAgY2xhc3MgdG8gdGhlIFtgVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZS5waHApIGludGVyZmFjZSBpdCBpbXBsZW1lbnRzIGFuZCBpbmplY3QgdGhlIGludGVyZmFjZSBpbnN0ZWFkLCB3aGljaCB3b3VsZCBhbHNvIGJlIHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgbW9ja2luZy4KCllvdSBjYW4gbm93IHZhbGlkYXRlIGBcU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVxdWVzdGAgYW5kIGBcU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVzcG9uc2VgIG9iamVjdHMgZm9yIGEgZ2l2ZW4gW3BhdGhdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXRocy1vYmplY3QpIGFuZCBtZXRob2Q6CgpgYGBwaHAKJHZhbGlkYXRvci0+dmFsaWRhdGUoJHJlc3BvbnNlLCAnL3VzZXJzJywgJ3Bvc3QnKTsKYGBgCgo+IPCfkqEgRm9yIGNvbnZlbmllbmNlLCBvYmplY3RzIGltcGxlbWVudGluZyBgXFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZWAgb3IgYFxQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlYCBhcmUgYWxzbyBhY2NlcHRlZC4KCkluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSBjaGVjayB0aGF0IHRoZSByZXNwb25zZSBtYXRjaGVzIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gZm9yIGEgYFBPU1RgIHJlcXVlc3Qgb24gdGhlIGAvdXNlcnNgIHBhdGguCgpFYWNoIG9mIE9wZW5BUEkncyBbc3VwcG9ydGVkIEhUVFAgbWV0aG9kc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8gIlBhdGhzIGFuZCBPcGVyYXRpb25zIikgKGBERUxFVEVgLCBgR0VUYCwgYEhFQURgLCBgT1BUSU9OU2AsIGBQQVRDSGAsIGBQT1NUYCwgYFBVVGAgYW5kIGBUUkFDRWApIGFsc28gaGFzIGEgc2hvcnRjdXQgbWV0aG9kIHRoYXQgY2FsbHMgYHZhbGlkYXRlYCB1bmRlciB0aGUgaG9vZCwgbWVhbmluZyB0aGUgbGluZSBhYm92ZSBjb3VsZCBhbHNvIGJlIHdyaXR0ZW4gdGhpcyB3YXk6CgpgYGBwaHAKJHZhbGlkYXRvci0+cG9zdCgkcmVzcG9uc2UsICcvdXNlcnMnKTsKYGBgCgpWYWxpZGF0aW5nIGEgcmVxdWVzdCBvYmplY3Qgd29ya3MgZXhhY3RseSB0aGUgc2FtZSB3YXk6CgpgYGBwaHAKJHZhbGlkYXRvci0+cG9zdCgkcmVxdWVzdCwgJy91c2VycycpOwpgYGAKCkluIHRoZSBleGFtcGxlIGFib3ZlLCB3ZSBjaGVjayB0aGF0IHRoZSByZXF1ZXN0IG1hdGNoZXMgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbiBmb3IgYSBgUE9TVGAgcmVxdWVzdCBvbiB0aGUgYC91c2Vyc2AgcGF0aC4KClRoZSBgdmFsaWRhdGVgIG1ldGhvZCByZXR1cm5zIGB0cnVlYCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGFuZCB0aHJvdyBhIFtgXE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcRXhjZXB0aW9uc1xWYWxpZGF0aW9uRXhjZXB0aW9uYF0oL3NyYy9FeGNlcHRpb25zL1ZhbGlkYXRpb25FeGNlcHRpb24ucGhwKSBleGNlcHRpb24gaW4gY2FzZSBvZiBlcnJvci4KCiMjIENhY2hpbmcKClRoaXMgcGFja2FnZSBzdXBwb3J0cyBjYWNoaW5nIHRvIHNwZWVkIHVwIHRoZSBwYXJzaW5nIG9mIE9wZW5BUEkgZGVmaW5pdGlvbnMuIFNpbXBseSBwYXNzIHlvdXIgW1BTUi02XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTYvKSBvciBbUFNSLTE2XShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE2LykgY2FjaGUgb2JqZWN0IHRvIHRoZSBgc2V0Q2FjaGVgIG1ldGhvZCBvZiB0aGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3MuCgpIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgU3ltZm9ueSdzIFtBcnJheSBDYWNoZSBBZGFwdGVyXShodHRwczovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L2NvbXBvbmVudHMvY2FjaGUvYWRhcHRlcnMvYXJyYXlfY2FjaGVfYWRhcHRlci5odG1sICJBcnJheSBDYWNoZSBBZGFwdGVyIik6CgpgYGBwaHAKdXNlIE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcVmFsaWRhdG9yQnVpbGRlcjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XENhY2hlXEFkYXB0ZXJcQXJyYXlBZGFwdGVyOwoKJGNhY2hlID0gbmV3IEFycmF5QWRhcHRlcigpOwokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSktPnNldENhY2hlKCRjYWNoZSktPmdldFZhbGlkYXRvcigpOwpgYGAKCiMjIEV4dGVuZGluZyB0aGUgcGFja2FnZQoKVGhlcmUgYXJlIHR3byBtYWluIGV4dGVuc2lvbiBwb2ludHMg4oCTIG1lc3NhZ2UgYWRhcHRlcnMgYW5kIGNhY2hlIGFkYXB0ZXJzLgoKIyMjIE1lc3NhZ2UgYWRhcHRlcnMKClRoZSBbYFZhbGlkYXRvckJ1aWxkZXJgXSgvc3JjL1ZhbGlkYXRvckJ1aWxkZXIucGhwKSBjbGFzcyB1c2VzIHRoZSBbYEh0dHBGb3VuZGF0aW9uQWRhcHRlcmBdKC9zcmMvQWRhcHRlcnMvSHR0cEZvdW5kYXRpb25BZGFwdGVyLnBocCkgY2xhc3MgYXMgaXRzIGRlZmF1bHQgSFRUUCBtZXNzYWdlIGFkYXB0ZXIuIFRoaXMgY2xhc3MgY29udmVydHMgSHR0cEZvdW5kYXRpb24gcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyB0byB0aGVpciBQU1ItNyBjb3VudGVycGFydHMuCgpJZiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIGFkYXB0ZXIncyBsb2dpYywgb3IgaWYgeW91IG5lZWQgYSBuZXcgYWRhcHRlciBhbHRvZ2V0aGVyLCBjcmVhdGUgYSBjbGFzcyBpbXBsZW1lbnRpbmcgdGhlIFtgTWVzc2FnZUFkYXB0ZXJJbnRlcmZhY2VgXSgvc3JjL0FkYXB0ZXJzL01lc3NhZ2VBZGFwdGVySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlIGFuZCBwYXNzIGl0IHRvIHRoZSBgc2V0TWVzc2FnZUFkYXB0ZXJgIG1ldGhvZCBvZiB0aGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3M6CgpgYGBwaHAKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpCiAgICAtPnNldE1lc3NhZ2VBZGFwdGVyKCR5b3VyQWRhcHRlcikKICAgIC0+Z2V0VmFsaWRhdG9yKCk7CmBgYAoKIyMjIENhY2hlIGFkYXB0ZXJzCgpUaGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3MgdXNlcyB0aGUgW2BQc3IxNkFkYXB0ZXJgXSgvc3JjL0NhY2hlL1BzcjE2QWRhcHRlci5waHApIGNsYXNzIGFzIGl0cyBkZWZhdWx0IGNhY2hlIGFkYXB0ZXIuIFRoaXMgY2xhc3MgY29udmVydHMgUFNSLTE2IGNhY2hlIG9iamVjdHMgdG8gdGhlaXIgUFNSLTYgY291bnRlcnBhcnRzLgoKSWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBhZGFwdGVyJ3MgbG9naWMsIG9yIGlmIHlvdSBuZWVkIGEgbmV3IGFkYXB0ZXIgYWx0b2dldGhlciwgY3JlYXRlIGEgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBbYENhY2hlQWRhcHRlckludGVyZmFjZWBdKC9zcmMvQ2FjaGUvQ2FjaGVBZGFwdGVySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlIGFuZCBwYXNzIGl0IHRvIHRoZSBgc2V0Q2FjaGVBZGFwdGVyYCBtZXRob2Qgb2YgdGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGNsYXNzOgoKYGBgcGhwCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbEZpbGUoJHlhbWxGaWxlKQogICAgLT5zZXRDYWNoZUFkYXB0ZXIoJHlvdXJBZGFwdGVyKQogICAgLT5nZXRWYWxpZGF0b3IoKTsKYGBgCgojIyMgT3RoZXIgaW50ZXJmYWNlcwoKVGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGFuZCBbYFZhbGlkYXRvcmBdKC9zcmMvVmFsaWRhdG9yLnBocCkgY2xhc3NlcyBhcmUgYGZpbmFsYCBidXQgdGhleSBpbXBsZW1lbnQgdGhlIFtgVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZS5waHApIGFuZCBbYFZhbGlkYXRvckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9ySW50ZXJmYWNlLnBocCkgaW50ZXJmYWNlcyByZXNwZWN0aXZlbHkgZm9yIHdoaWNoIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biBpbXBsZW1lbnRhdGlvbnMgaWYgeW91IG5lZWQgdG8uCgojIyBDaGFuZ2UgbG9nCgpQbGVhc2Ugc2VlIHRoZSBbUmVsZWFzZXMgc2VjdGlvbl0oLi4vLi4vcmVsZWFzZXMpIGZvciBkZXRhaWxzLgoKIyMgQ29udHJpYnV0aW5nCgpQbGVhc2Ugc2VlIFtDT05UUklCVVRJTkddKC8uZ2l0aHViL0NPTlRSSUJVVElORy5tZCkgZm9yIGRldGFpbHMuCgojIyBDcmVkaXRzCgoqKlBlb3BsZSoqCgotIFtZYW5uaWNrIENoZW5vdF0oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbCkKLSBbUGF0cmljayBSb2RhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2xvcmRyaG9kb3MpCi0gW0pvaG5hdGhhbiBNaWNoYWVsIERlbGxdKGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huYXRoYW5tZGVsbCkKLSBbUGF1bCBNaXRjaHVtXShodHRwczovL2dpdGh1Yi5jb20vcGF1bC1tKQotIFtBbGwgQ29udHJpYnV0b3JzXSguLi8uLi9jb250cmlidXRvcnMpCgpTcGVjaWFsIHRoYW5rcyB0byBbUGF2ZWwgQmF0YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL3NjYXl0cmFzZSkgZm9yIGhpcyBhZHZpY2Ugb24gc3RydWN0dXJpbmcgdGhlIHBhY2thZ2UuCgoqKlBhY2thZ2VzKioKCi0gW09wZW5BUEkgUFNSLTcgTWVzc2FnZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKLSBbVGhlIFBTUi03IEJyaWRnZV0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL3BzcjcuaHRtbCkKLSBbUFNSLTcgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0vcHNyNykKCiMjIExpY2Vuc2UKClRoZSBNSVQgTGljZW5zZSAoTUlUKS4gUGxlYXNlIHNlZSBbTGljZW5zZSBGaWxlXShMSUNFTlNFLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4K - readmeEtag: '"8980725d3e3affff512d274c843c68b741dcf6d3"' - readmeLastModified: Fri, 12 Jan 2024 15:41:04 GMT + IyBPcGVuQVBJIEh0dHBGb3VuZGF0aW9uIFRlc3RpbmcKClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3Rpbmcvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nL2FjdGlvbnMpClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3Qvdi9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmcpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2wvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZyldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9vc3RlZWwvb3BlbmFwaS1odHRwZm91bmRhdGlvbi10ZXN0aW5nKQpbIVtEb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcGFja2FnaXN0L2R0L29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvb3N0ZWVsL29wZW5hcGktaHR0cGZvdW5kYXRpb24tdGVzdGluZykKCgpWYWxpZGF0ZSBIdHRwRm91bmRhdGlvbiByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgT3BlbkFQSSAoMyspIGRlZmluaXRpb25zLgoKU2VlIFt0aGlzIHBvc3RdKGh0dHBzOi8vdGVjaC5vc3RlZWwubWUvcG9zdHMvb3BlbmFwaS1iYWNrZWQtYXBpLXRlc3RpbmctaW4tcGhwLXByb2plY3RzLWEtbGFyYXZlbC1leGFtcGxlICJPcGVuQVBJLWJhY2tlZCBBUEkgdGVzdGluZyBpbiBQSFAgcHJvamVjdHMg4oCTIGEgTGFyYXZlbCBleGFtcGxlIikgZm9yIG1vcmUgZGV0YWlscyBhbmQgW3RoaXMgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL29zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmctbGFyYXZlbC1leGFtcGxlKSBmb3IgYW4gZXhhbXBsZSB1c2UgaW4gYSBMYXJhdmVsIHByb2plY3QuCgo+IFshSU1QT1JUQU5UXQo+IFdoaWxlIHlvdSBjYW4gc2FmZWx5IHVzZSB0aGlzIHBhY2thZ2UgZm9yIHlvdXIgcHJvamVjdHMsIGFzIGxvbmcgYXMgdmVyc2lvbiBgMS4wYCBoYXMgbm90IGJlZW4gcmVsZWFzZWQgIm1pbm9yIiB2ZXJzaW9uIHBhdGNoZXMgY2FuIGNvbnRhaW4gYnJlYWtpbmcgY2hhbmdlcy4gTWFrZSBzdXJlIHRvIGNoZWNrIHRoZSBbcmVsZWFzZSBzZWN0aW9uXSguLi8uLi9yZWxlYXNlcykgYmVmb3JlIHlvdSB1cGdyYWRlLgoKIyMgV2h5PwoKW09wZW5BUEldKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLykgaXMgYSBzcGVjaWZpY2F0aW9uIGludGVuZGVkIHRvIGRlc2NyaWJlIFJFU1RmdWwgQVBJcyBpbiBhIHdheSB0aGF0IGNhbiBiZSB1bmRlcnN0b29kIGJ5IGJvdGggaHVtYW5zIGFuZCBtYWNoaW5lcy4KCkJ5IHZhbGlkYXRpbmcgYW4gQVBJJ3MgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhZ2FpbnN0IHRoZSBPcGVuQVBJIGRlZmluaXRpb24gdGhhdCBkZXNjcmliZXMgaXQsIHdlIGd1YXJhbnRlZSB0aGF0IHRoZSBBUEkgaXMgdXNlZCBjb3JyZWN0bHkgYW5kIGJlaGF2ZXMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkb2N1bWVudGF0aW9uIHdlIHByb3ZpZGUsIHRodXMgbWFraW5nIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguCgpUaGUgW0h0dHBGb3VuZGF0aW9uIGNvbXBvbmVudF0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL2h0dHBfZm91bmRhdGlvbi5odG1sKSBpcyBkZXZlbG9wZWQgYW5kIG1haW50YWluZWQgYXMgcGFydCBvZiB0aGUgW1N5bWZvbnkgZnJhbWV3b3JrXShodHRwczovL3N5bWZvbnkuY29tLykuIEl0IGlzIHVzZWQgdG8gaGFuZGxlIEhUVFAgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBpbiBwcm9qZWN0cyBzdWNoIGFzIFN5bWZvbnksIExhcmF2ZWwsIERydXBhbCwgYW5kIFttYW55IG90aGVyc10oaHR0cHM6Ly9zeW1mb255LmNvbS9jb21wb25lbnRzL0h0dHBGb3VuZGF0aW9uKS4KCiMjIEhvdyBkb2VzIGl0IHdvcms/CgpUaGlzIHBhY2thZ2UgaXMgYnVpbHQgb24gdG9wIG9mIFtPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IpLCB3aGljaCB2YWxpZGF0ZXMgW1BTUi03IG1lc3NhZ2VzXShodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvKSBhZ2FpbnN0IE9wZW5BUEkgZGVmaW5pdGlvbnMuCgpJdCBjb252ZXJ0cyBIdHRwRm91bmRhdGlvbiByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIHRvIFBTUi03IG1lc3NhZ2VzIHVzaW5nIFN5bWZvbnkncyBbUFNSLTcgQnJpZGdlXShodHRwczovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L2NvbXBvbmVudHMvcHNyNy5odG1sKSBhbmQgW1RvYmlhcyBOeWhvbG1dKGh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0pJ3MgW1BTUi03IGltcGxlbWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vTnlob2xtL3BzcjcpLCBiZWZvcmUgcGFzc2luZyB0aGVtIG9uIHRvIE9wZW5BUEkgUFNSLTcgTWVzc2FnZSBWYWxpZGF0b3IuCgojIyBJbnN0YWxsYXRpb24KCj4gWyFOT1RFXQo+IFRoaXMgcGFja2FnZSBpcyBtb3N0bHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGFuIEFQSSB0ZXN0IHN1aXRlLgoKVmlhIENvbXBvc2VyOgoKYGBgYmFzaApjb21wb3NlciByZXF1aXJlIC0tZGV2IG9zdGVlbC9vcGVuYXBpLWh0dHBmb3VuZGF0aW9uLXRlc3RpbmcKYGBgCgojIyBVc2FnZQoKSW1wb3J0IHRoZSBidWlsZGVyIGNsYXNzOgoKYGBgcGhwCnVzZSBPc3RlZWxcT3BlbkFwaVxUZXN0aW5nXFZhbGlkYXRvckJ1aWxkZXI7CmBgYAoKVXNlIHRoZSBidWlsZGVyIHRvIGNyZWF0ZSBhIFtgXE9zdGVlbFxPcGVuQXBpXFRlc3RpbmdcVmFsaWRhdG9yYF0oL3NyYy9WYWxpZGF0b3IucGhwKSBvYmplY3QsIHVzaW5nIG9uZSBvZiB0aGUgYXZhaWxhYmxlIGZhY3RvcnkgbWV0aG9kcyBmb3IgWUFNTCBvciBKU09OOgoKYGBgcGhwCi8vIEZyb20gYSBmaWxlOgoKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5nZXRWYWxpZGF0b3IoKTsKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21Kc29uRmlsZSgkanNvbkZpbGUpLT5nZXRWYWxpZGF0b3IoKTsKCi8vIEZyb20gYSBzdHJpbmc6CgokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbVlhbWxTdHJpbmcoJHlhbWxTdHJpbmcpLT5nZXRWYWxpZGF0b3IoKTsKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21Kc29uU3RyaW5nKCRqc29uU3RyaW5nKS0+Z2V0VmFsaWRhdG9yKCk7CgovLyBBdXRvbWF0aWMgZGV0ZWN0aW9uIChzbG93ZXIpOgoKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sKCR5YW1sRmlsZU9yU3RyaW5nKS0+Z2V0VmFsaWRhdG9yKCk7CiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tSnNvbigkanNvbkZpbGVPclN0cmluZyktPmdldFZhbGlkYXRvcigpOwpgYGAKCj4gWyFUSVBdCj4gWW91IGNhbiBhbHNvIHVzZSBhIGRlcGVuZGVuY3kgaW5qZWN0aW9uIGNvbnRhaW5lciB0byBiaW5kIHRoZSBgVmFsaWRhdG9yQnVpbGRlcmAgY2xhc3MgdG8gdGhlIFtgVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZWBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlckludGVyZmFjZS5waHApIGludGVyZmFjZSBpdCBpbXBsZW1lbnRzIGFuZCBpbmplY3QgdGhlIGludGVyZmFjZSBpbnN0ZWFkLCB3aGljaCB3b3VsZCBhbHNvIGJlIHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgbW9ja2luZy4KCllvdSBjYW4gbm93IHZhbGlkYXRlIGBcU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVxdWVzdGAgYW5kIGBcU3ltZm9ueVxDb21wb25lbnRcSHR0cEZvdW5kYXRpb25cUmVzcG9uc2VgIG9iamVjdHMgZm9yIGEgZ2l2ZW4gW3BhdGhdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXRocy1vYmplY3QpIGFuZCBtZXRob2Q6CgpgYGBwaHAKJHZhbGlkYXRvci0+dmFsaWRhdGUoJHJlc3BvbnNlLCAnL3VzZXJzJywgJ3Bvc3QnKTsKYGBgCgo+IFshVElQXQo+IEZvciBjb252ZW5pZW5jZSwgb2JqZWN0cyBpbXBsZW1lbnRpbmcgYFxQc3JcSHR0cFxNZXNzYWdlXFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgIG9yIGBcUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZWAgYXJlIGFsc28gYWNjZXB0ZWQuCgpJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgY2hlY2sgdGhhdCB0aGUgcmVzcG9uc2UgbWF0Y2hlcyB0aGUgT3BlbkFQSSBkZWZpbml0aW9uIGZvciBhIGBQT1NUYCByZXF1ZXN0IG9uIHRoZSBgL3VzZXJzYCBwYXRoLgoKRWFjaCBvZiBPcGVuQVBJJ3MgW3N1cHBvcnRlZCBIVFRQIG1ldGhvZHNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vcGF0aHMtYW5kLW9wZXJhdGlvbnMvICJQYXRocyBhbmQgT3BlcmF0aW9ucyIpIChgREVMRVRFYCwgYEdFVGAsIGBIRUFEYCwgYE9QVElPTlNgLCBgUEFUQ0hgLCBgUE9TVGAsIGBQVVRgIGFuZCBgVFJBQ0VgKSBhbHNvIGhhcyBhIHNob3J0Y3V0IG1ldGhvZCB0aGF0IGNhbGxzIGB2YWxpZGF0ZWAgdW5kZXIgdGhlIGhvb2QsIG1lYW5pbmcgdGhlIGxpbmUgYWJvdmUgY291bGQgYWxzbyBiZSB3cml0dGVuIHRoaXMgd2F5OgoKYGBgcGhwCiR2YWxpZGF0b3ItPnBvc3QoJHJlc3BvbnNlLCAnL3VzZXJzJyk7CmBgYAoKVmFsaWRhdGluZyBhIHJlcXVlc3Qgb2JqZWN0IHdvcmtzIGV4YWN0bHkgdGhlIHNhbWUgd2F5OgoKYGBgcGhwCiR2YWxpZGF0b3ItPnBvc3QoJHJlcXVlc3QsICcvdXNlcnMnKTsKYGBgCgpJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgY2hlY2sgdGhhdCB0aGUgcmVxdWVzdCBtYXRjaGVzIHRoZSBPcGVuQVBJIGRlZmluaXRpb24gZm9yIGEgYFBPU1RgIHJlcXVlc3Qgb24gdGhlIGAvdXNlcnNgIHBhdGguCgpUaGUgYHZhbGlkYXRlYCBtZXRob2QgcmV0dXJucyBgdHJ1ZWAgaW4gY2FzZSBvZiBzdWNjZXNzLCBhbmQgdGhyb3cgYSBbYFxPc3RlZWxcT3BlbkFwaVxUZXN0aW5nXEV4Y2VwdGlvbnNcVmFsaWRhdGlvbkV4Y2VwdGlvbmBdKC9zcmMvRXhjZXB0aW9ucy9WYWxpZGF0aW9uRXhjZXB0aW9uLnBocCkgZXhjZXB0aW9uIGluIGNhc2Ugb2YgZXJyb3IuCgojIyBDYWNoaW5nCgpUaGlzIHBhY2thZ2Ugc3VwcG9ydHMgY2FjaGluZyB0byBzcGVlZCB1cCB0aGUgcGFyc2luZyBvZiBPcGVuQVBJIGRlZmluaXRpb25zLiBTaW1wbHkgcGFzcyB5b3VyIFtQU1ItNl0oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci02Lykgb3IgW1BTUi0xNl0oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci0xNi8pIGNhY2hlIG9iamVjdCB0byB0aGUgYHNldENhY2hlYCBtZXRob2Qgb2YgdGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGNsYXNzLgoKSGVyZSBpcyBhbiBleGFtcGxlIHVzaW5nIFN5bWZvbnkncyBbQXJyYXkgQ2FjaGUgQWRhcHRlcl0oaHR0cHM6Ly9zeW1mb255LmNvbS9kb2MvY3VycmVudC9jb21wb25lbnRzL2NhY2hlL2FkYXB0ZXJzL2FycmF5X2NhY2hlX2FkYXB0ZXIuaHRtbCAiQXJyYXkgQ2FjaGUgQWRhcHRlciIpOgoKYGBgcGhwCnVzZSBPc3RlZWxcT3BlbkFwaVxUZXN0aW5nXFZhbGlkYXRvckJ1aWxkZXI7CnVzZSBTeW1mb255XENvbXBvbmVudFxDYWNoZVxBZGFwdGVyXEFycmF5QWRhcHRlcjsKCiRjYWNoZSA9IG5ldyBBcnJheUFkYXB0ZXIoKTsKJHZhbGlkYXRvciA9IFZhbGlkYXRvckJ1aWxkZXI6OmZyb21ZYW1sRmlsZSgkeWFtbEZpbGUpLT5zZXRDYWNoZSgkY2FjaGUpLT5nZXRWYWxpZGF0b3IoKTsKYGBgCgojIyBFeHRlbmRpbmcgdGhlIHBhY2thZ2UKClRoZXJlIGFyZSB0d28gbWFpbiBleHRlbnNpb24gcG9pbnRzIOKAkyBtZXNzYWdlIGFkYXB0ZXJzIGFuZCBjYWNoZSBhZGFwdGVycy4KCiMjIyBNZXNzYWdlIGFkYXB0ZXJzCgpUaGUgW2BWYWxpZGF0b3JCdWlsZGVyYF0oL3NyYy9WYWxpZGF0b3JCdWlsZGVyLnBocCkgY2xhc3MgdXNlcyB0aGUgW2BIdHRwRm91bmRhdGlvbkFkYXB0ZXJgXSgvc3JjL0FkYXB0ZXJzL0h0dHBGb3VuZGF0aW9uQWRhcHRlci5waHApIGNsYXNzIGFzIGl0cyBkZWZhdWx0IEhUVFAgbWVzc2FnZSBhZGFwdGVyLiBUaGlzIGNsYXNzIGNvbnZlcnRzIEh0dHBGb3VuZGF0aW9uIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgdG8gdGhlaXIgUFNSLTcgY291bnRlcnBhcnRzLgoKSWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBhZGFwdGVyJ3MgbG9naWMsIG9yIGlmIHlvdSBuZWVkIGEgbmV3IGFkYXB0ZXIgYWx0b2dldGhlciwgY3JlYXRlIGEgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBbYE1lc3NhZ2VBZGFwdGVySW50ZXJmYWNlYF0oL3NyYy9BZGFwdGVycy9NZXNzYWdlQWRhcHRlckludGVyZmFjZS5waHApIGludGVyZmFjZSBhbmQgcGFzcyBpdCB0byB0aGUgYHNldE1lc3NhZ2VBZGFwdGVyYCBtZXRob2Qgb2YgdGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGNsYXNzOgoKYGBgcGhwCiR2YWxpZGF0b3IgPSBWYWxpZGF0b3JCdWlsZGVyOjpmcm9tWWFtbEZpbGUoJHlhbWxGaWxlKQogICAgLT5zZXRNZXNzYWdlQWRhcHRlcigkeW91ckFkYXB0ZXIpCiAgICAtPmdldFZhbGlkYXRvcigpOwpgYGAKCiMjIyBDYWNoZSBhZGFwdGVycwoKVGhlIFtgVmFsaWRhdG9yQnVpbGRlcmBdKC9zcmMvVmFsaWRhdG9yQnVpbGRlci5waHApIGNsYXNzIHVzZXMgdGhlIFtgUHNyMTZBZGFwdGVyYF0oL3NyYy9DYWNoZS9Qc3IxNkFkYXB0ZXIucGhwKSBjbGFzcyBhcyBpdHMgZGVmYXVsdCBjYWNoZSBhZGFwdGVyLiBUaGlzIGNsYXNzIGNvbnZlcnRzIFBTUi0xNiBjYWNoZSBvYmplY3RzIHRvIHRoZWlyIFBTUi02IGNvdW50ZXJwYXJ0cy4KCklmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgYWRhcHRlcidzIGxvZ2ljLCBvciBpZiB5b3UgbmVlZCBhIG5ldyBhZGFwdGVyIGFsdG9nZXRoZXIsIGNyZWF0ZSBhIGNsYXNzIGltcGxlbWVudGluZyB0aGUgW2BDYWNoZUFkYXB0ZXJJbnRlcmZhY2VgXSgvc3JjL0NhY2hlL0NhY2hlQWRhcHRlckludGVyZmFjZS5waHApIGludGVyZmFjZSBhbmQgcGFzcyBpdCB0byB0aGUgYHNldENhY2hlQWRhcHRlcmAgbWV0aG9kIG9mIHRoZSBbYFZhbGlkYXRvckJ1aWxkZXJgXSgvc3JjL1ZhbGlkYXRvckJ1aWxkZXIucGhwKSBjbGFzczoKCmBgYHBocAokdmFsaWRhdG9yID0gVmFsaWRhdG9yQnVpbGRlcjo6ZnJvbVlhbWxGaWxlKCR5YW1sRmlsZSkKICAgIC0+c2V0Q2FjaGVBZGFwdGVyKCR5b3VyQWRhcHRlcikKICAgIC0+Z2V0VmFsaWRhdG9yKCk7CmBgYAoKIyMjIE90aGVyIGludGVyZmFjZXMKClRoZSBbYFZhbGlkYXRvckJ1aWxkZXJgXSgvc3JjL1ZhbGlkYXRvckJ1aWxkZXIucGhwKSBhbmQgW2BWYWxpZGF0b3JgXSgvc3JjL1ZhbGlkYXRvci5waHApIGNsYXNzZXMgYXJlIGBmaW5hbGAgYnV0IHRoZXkgaW1wbGVtZW50IHRoZSBbYFZhbGlkYXRvckJ1aWxkZXJJbnRlcmZhY2VgXSgvc3JjL1ZhbGlkYXRvckJ1aWxkZXJJbnRlcmZhY2UucGhwKSBhbmQgW2BWYWxpZGF0b3JJbnRlcmZhY2VgXSgvc3JjL1ZhbGlkYXRvckludGVyZmFjZS5waHApIGludGVyZmFjZXMgcmVzcGVjdGl2ZWx5IGZvciB3aGljaCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24gaW1wbGVtZW50YXRpb25zIGlmIHlvdSBuZWVkIHRvLgoKIyMgQ2hhbmdlIGxvZwoKUGxlYXNlIHNlZSB0aGUgW1JlbGVhc2VzIHNlY3Rpb25dKC4uLy4uL3JlbGVhc2VzKSBmb3IgZGV0YWlscy4KCiMjIENvbnRyaWJ1dGluZwoKUGxlYXNlIHNlZSBbQ09OVFJJQlVUSU5HXSgvLmdpdGh1Yi9DT05UUklCVVRJTkcubWQpIGZvciBkZXRhaWxzLgoKIyMgQ3JlZGl0cwoKKipQZW9wbGUqKgoKLSBbWWFubmljayBDaGVub3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RlZWwpCi0gW1BhdHJpY2sgUm9kYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb3JkcmhvZG9zKQotIFtKb2huYXRoYW4gTWljaGFlbCBEZWxsXShodHRwczovL2dpdGh1Yi5jb20vam9obmF0aGFubWRlbGwpCi0gW1BhdWwgTWl0Y2h1bV0oaHR0cHM6Ly9naXRodWIuY29tL3BhdWwtbSkKLSBbQWxsIENvbnRyaWJ1dG9yc10oLi4vLi4vY29udHJpYnV0b3JzKQoKU3BlY2lhbCB0aGFua3MgdG8gW1BhdmVsIEJhdGFub3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2F5dHJhc2UpIGZvciBoaXMgYWR2aWNlIG9uIHN0cnVjdHVyaW5nIHRoZSBwYWNrYWdlLgoKKipQYWNrYWdlcyoqCgotIFtPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IpCi0gW1RoZSBQU1ItNyBCcmlkZ2VdKGh0dHBzOi8vc3ltZm9ueS5jb20vZG9jL2N1cnJlbnQvY29tcG9uZW50cy9wc3I3Lmh0bWwpCi0gW1BTUi03IGltcGxlbWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vTnlob2xtL3BzcjcpCgojIyBMaWNlbnNlCgpUaGUgTUlUIExpY2Vuc2UgKE1JVCkuIFBsZWFzZSBzZWUgW0xpY2Vuc2UgRmlsZV0oTElDRU5TRS5tZCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCg== + readmeEtag: '"915e8639805c001277abf97aeeec5e062c203d1c"' + readmeLastModified: Mon, 07 Oct 2024 15:35:45 GMT repositoryId: 306618893 description: >- Validate your HttpFoundation requests and responses against OpenAPI (3+) definitions created: '2020-10-23T11:42:16Z' - updated: '2024-10-04T22:48:16Z' + updated: '2024-10-07T15:35:49Z' language: PHP archived: false stars: 101 watchers: 3 - forks: 13 + forks: 14 owner: osteel logo: https://avatars.githubusercontent.com/u/436467?v=4 license: MIT - repoEtag: '"381e4eed68f2fd0472501ad10266eaee426adc039f0d3be3a4ebbda6c298de0d"' - repoLastModified: Fri, 04 Oct 2024 22:48:16 GMT + repoEtag: '"0f1fc366e2155b070929e904eebb22baa5d33684248d7e4aacd780a503c0bf76"' + repoLastModified: Mon, 07 Oct 2024 15:35:49 GMT foundInMaster: true id: 940ce85dbc99fab7a0ea193ac4ade24c v3_1: true @@ -5364,17 +5364,17 @@ repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' - updated: '2024-10-07T02:54:51Z' + updated: '2024-10-07T20:08:01Z' language: Python archived: false stars: 28232 watchers: 628 - forks: 6818 + forks: 6819 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION - repoEtag: '"f8d8ee18e2cda2eae97e274ec5d9207846ffb10149d296c9136cf27c37bc32aa"' - repoLastModified: Mon, 07 Oct 2024 02:54:51 GMT + repoEtag: '"c4dd2e140ad340c40e7841df2bc1c111e3cf0f76b848abd7219a35d6ebeb62b0"' + repoLastModified: Mon, 07 Oct 2024 20:08:01 GMT foundInMaster: true id: fb8994c078a380cc3510b024f6ed1202 category: Server Implementations @@ -5559,17 +5559,17 @@ repositoryId: 240776275 description: Generate modern Python clients from OpenAPI created: '2020-02-15T19:33:46Z' - updated: '2024-10-05T09:38:50Z' + updated: '2024-10-07T23:55:25Z' language: Python archived: false - stars: 1281 + stars: 1282 watchers: 13 forks: 197 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT - repoEtag: '"ac0cedbc330f7e70b4fce10367fd7df5f2ee6fad3f4bc26277ebf0afe8bb4365"' - repoLastModified: Sat, 05 Oct 2024 09:38:50 GMT + repoEtag: '"2ddc3c36f44e1a7d498914ad81e060a44b4c7330a68c6a7a305ed5c6201597b2"' + repoLastModified: Mon, 07 Oct 2024 23:55:25 GMT foundInMaster: true id: 784ec4adac4e47e4211ea74ef36dd5a5 v3_1: true @@ -5599,17 +5599,17 @@ Build beautiful, interactive API Docs with embeddable React or Web Components, powered by OpenAPI and Markdown. created: '2019-05-03T01:05:01Z' - updated: '2024-10-06T18:16:37Z' + updated: '2024-10-07T14:30:18Z' language: TypeScript archived: false - stars: 1738 + stars: 1742 watchers: 18 forks: 202 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"49002c3ce31b6692b9ed2aab7584979ce9728da139b75ae28a68caef6d0e93d5"' - repoLastModified: Sun, 06 Oct 2024 18:16:37 GMT + repoEtag: '"189fe8818e41805208f1848cab47d646752ebee2c4fb9983ee508ee7a78397e6"' + repoLastModified: Mon, 07 Oct 2024 14:30:18 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec - source: @@ -5879,7 +5879,7 @@ repositoryId: 108694147 description: Build your OpenApi3 spec in kotlin! created: '2017-10-29T00:33:35Z' - updated: '2024-10-02T16:47:49Z' + updated: '2024-10-07T21:38:21Z' language: Kotlin archived: false stars: 65 @@ -5888,8 +5888,8 @@ owner: derveloper logo: https://avatars.githubusercontent.com/u/18556?v=4 license: Apache-2.0 - repoEtag: '"949dac623be1078a03796d3022bc5682308756e3407e5930ccbc278870d48161"' - repoLastModified: Wed, 02 Oct 2024 16:47:49 GMT + repoEtag: '"200f0fcc4d148b913c73c809a9b567b643bb77b09715fd02abb826cbc1f4c154"' + repoLastModified: Mon, 07 Oct 2024 21:38:21 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5978,11 +5978,11 @@ archived: false stars: 24 watchers: 2 - forks: 2 + forks: 3 owner: bcoughlan logo: https://avatars.githubusercontent.com/u/421683?v=4 license: MIT - repoEtag: '"8793a29ee390b1946950e3ef7ded10a51cbee3e7476b18f472f603ddc8a9df1e"' + repoEtag: '"f57279b65d43b77d28a49559ceeb8e4436e0e432618690f440c880e67f34d70c"' repoLastModified: Sun, 29 Sep 2024 04:36:08 GMT category: - Code Generators @@ -6011,7 +6011,7 @@ repositoryId: 479515560 description: OpenAPI / Swagger to TypeScript generator and mock server created: '2022-04-08T19:32:15Z' - updated: '2024-10-06T21:05:56Z' + updated: '2024-10-08T00:13:04Z' language: TypeScript archived: false stars: 104 @@ -6020,8 +6020,8 @@ owner: pmcelhaney logo: https://avatars.githubusercontent.com/u/51504?v=4 license: MIT - repoEtag: '"7f76e2aa196ae0360df6efe5576b1f4284f6f24cf5f4c5a219e0e8d595669593"' - repoLastModified: Sun, 06 Oct 2024 21:05:56 GMT + repoEtag: '"c9801bd1f469ef7cde310675c0b58db5d594d0e542e798080ae16849707dc8e6"' + repoLastModified: Tue, 08 Oct 2024 00:13:04 GMT category: - Mock - SDK @@ -6169,17 +6169,17 @@ libopenapi is a fully featured, high performance OpenAPI 3.1, 3.0 and Swagger parser, library, validator and toolkit for golang applications. created: '2022-07-17T19:41:10Z' - updated: '2024-10-06T11:15:58Z' + updated: '2024-10-08T02:08:31Z' language: Go archived: false - stars: 452 + stars: 454 watchers: 7 forks: 59 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"bb4bb4ae68fb421dd1a024220c5e81a73beedcc6457e5dbd4441723b9ed514d4"' - repoLastModified: Sun, 06 Oct 2024 11:15:58 GMT + repoEtag: '"3d7beaa27bd7e82e203b81240a71435dff13192bd47ec4c7879457e64a2ebd31"' + repoLastModified: Tue, 08 Oct 2024 02:08:31 GMT category: Parsers foundInMaster: true name: libopenapi @@ -6289,17 +6289,17 @@ repositoryId: 331034649 description: ABAP OpenAPI Client and Server generator in ABAP created: '2021-01-19T16:03:52Z' - updated: '2024-10-04T13:27:44Z' + updated: '2024-10-07T18:40:44Z' language: ABAP archived: false - stars: 70 + stars: 71 watchers: 11 forks: 8 owner: abap-openapi logo: https://avatars.githubusercontent.com/u/77685491?v=4 license: MIT - repoEtag: '"9f63cfc7f9067163b3ed4e58a3436743e0d0747d9451f075634d8b8f19347e15"' - repoLastModified: Fri, 04 Oct 2024 13:27:44 GMT + repoEtag: '"673773403d57480c3474c60db11196e6f8c58b834da8f1e721951fbe8526cf8f"' + repoLastModified: Mon, 07 Oct 2024 18:40:44 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -6474,7 +6474,7 @@ Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends. created: '2020-03-16T13:33:07Z' - updated: '2024-10-06T20:18:26Z' + updated: '2024-10-07T07:43:09Z' language: Kotlin archived: false stars: 275 @@ -6483,8 +6483,8 @@ owner: znsio logo: https://avatars.githubusercontent.com/u/75619722?v=4 license: MIT - repoEtag: '"c0ea651a040e3ca302e49379f684ae18c95178b2b4b31366f4e07937e24e4e8f"' - repoLastModified: Sun, 06 Oct 2024 20:18:26 GMT + repoEtag: '"959300e653019a35df824f37a0c07ed62f2f2c5163c06a92f4ed11f2fd51b32d"' + repoLastModified: Mon, 07 Oct 2024 07:43:09 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -6503,7 +6503,7 @@ changed between two OpenAPI specs, or a single spec over time. Supports OpenAPI 3.1, 3.0 and Swagger created: '2022-11-28T16:53:14Z' - updated: '2024-10-03T04:43:42Z' + updated: '2024-10-08T02:41:54Z' language: Go archived: false stars: 178 @@ -6512,8 +6512,8 @@ owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"aa1663545914069592a9d22dce8550f3033223bbd5227bd13e03aa1e15932b01"' - repoLastModified: Thu, 03 Oct 2024 04:43:42 GMT + repoEtag: '"5b700121dcb52cf380546a13e47e943660d156ecb4eef28a1f1876c0bcf38f06"' + repoLastModified: Tue, 08 Oct 2024 02:41:54 GMT category: - Data Validators - Testing @@ -6767,7 +6767,7 @@ owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"cae74116565cf5f4ee224e7f0e75e1f19db26620ee9ba5d08f2b364ad88f32a9"' + repoEtag: '"26901e9fa30da6599db6c54a7803a0c2b8a41e9c064943afa47b9d62e07fed12"' repoLastModified: Thu, 03 Oct 2024 23:35:39 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6824,17 +6824,17 @@ repositoryId: 29151578 description: Seamlessly adds a Swagger to Rails-based API's created: '2015-01-12T19:08:10Z' - updated: '2024-10-06T13:29:50Z' + updated: '2024-10-07T23:32:46Z' language: Ruby archived: false - stars: 1974 + stars: 1975 watchers: 28 forks: 428 owner: rswag logo: https://avatars.githubusercontent.com/u/55741034?v=4 license: MIT - repoEtag: '"282438b181648a3e9f403b7ecc394b1b413a0209d883435bcac88b585dd58dbc"' - repoLastModified: Sun, 06 Oct 2024 13:29:50 GMT + repoEtag: '"b40e2d883c6265fe0377cef163d8e7b5e3c823cd8c27f2c8da66e1e84c7451c7"' + repoLastModified: Mon, 07 Oct 2024 23:32:46 GMT foundInMaster: true v3_1_link: https://github.com/rswag/rswag/pull/714 - source: https://openapi.tools/ @@ -6878,17 +6878,17 @@ repositoryId: 476820102 description: Input OpenAPI. Output SDKs and Docs. created: '2022-04-01T17:56:54Z' - updated: '2024-10-07T02:40:03Z' + updated: '2024-10-07T23:52:22Z' language: TypeScript archived: false - stars: 2612 + stars: 2617 watchers: 16 forks: 140 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: Apache-2.0 - repoEtag: '"e0546c7469d6ea33dc3f9ef1fdd584d0e4a4dad8283d5dd40f72b8c724f637e3"' - repoLastModified: Mon, 07 Oct 2024 02:40:03 GMT + repoEtag: '"d6176ce975b762381c2c26c98eb42838151bc79c9482bb24972af908195ef149"' + repoLastModified: Mon, 07 Oct 2024 23:52:22 GMT foundInMaster: true sponsored: true testimonial: > @@ -6938,7 +6938,7 @@ forks: 2 owner: stainless-api logo: https://avatars.githubusercontent.com/u/88061651?v=4 - repoEtag: '"afe9e1cc21541976876242833a32fd80265919e16c3738067ff3fe758ce0100f"' + repoEtag: '"dde62446e05cc71b0c00492d45c35236b82926e518c511e5c5029b2372ce5a8e"' repoLastModified: Wed, 25 Sep 2024 21:52:27 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6992,17 +6992,17 @@ repositoryId: 630566794 description: Generate Swift client and server code from an OpenAPI document. created: '2023-04-20T16:50:53Z' - updated: '2024-10-06T20:45:13Z' + updated: '2024-10-07T22:58:19Z' language: Swift archived: false - stars: 1388 + stars: 1392 watchers: 107 forks: 115 owner: apple logo: https://avatars.githubusercontent.com/u/10639145?v=4 license: Apache-2.0 - repoEtag: '"8f8b46d982cb9cb54c61e38bd86d83e9c76eb5c50b1ac39be6e312b432b4b7d1"' - repoLastModified: Sun, 06 Oct 2024 20:45:13 GMT + repoEtag: '"02e96d34ee82cebbdaa52c4857ea1c2fe55cd4d268bd3ef462ce6511bbbba286"' + repoLastModified: Mon, 07 Oct 2024 22:58:19 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7106,17 +7106,17 @@ repositoryId: 293245471 description: Convert between JSON Schema, TypeScript, GraphQL, Open API and SureType created: '2020-09-06T09:40:04Z' - updated: '2024-10-01T21:08:48Z' + updated: '2024-10-08T00:19:20Z' language: TypeScript archived: false - stars: 419 + stars: 420 watchers: 3 forks: 8 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT - repoEtag: '"c145736ac5f011be68b6a5a013b52fd14f603c800303f2ac96afa792f9af3df9"' - repoLastModified: Tue, 01 Oct 2024 21:08:48 GMT + repoEtag: '"6e86cf3f8bac3d2ccf5fa5197b42590826b12cf77bbc1621f107b8ae371c67cd"' + repoLastModified: Tue, 08 Oct 2024 00:19:20 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7231,17 +7231,17 @@ repositoryId: 706256859 description: Golang Fuego - web framework generating OpenAPI 3 spec from source code created: '2023-10-17T15:36:43Z' - updated: '2024-10-06T11:40:38Z' + updated: '2024-10-07T17:50:31Z' language: Go archived: false - stars: 824 + stars: 825 watchers: 7 forks: 41 owner: go-fuego logo: https://avatars.githubusercontent.com/u/148255240?v=4 license: MIT - repoEtag: '"14ba2e6f9b8f7a748ae130828eb086d07a10699079259f6bc2dce4aed08471cd"' - repoLastModified: Sun, 06 Oct 2024 11:40:38 GMT + repoEtag: '"f2889cb9ff730b2aad6131136ee488bf2485fe245144da3f6deed6a26b7840a5"' + repoLastModified: Mon, 07 Oct 2024 17:50:31 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7257,17 +7257,17 @@ repositoryId: 245763170 description: Huma REST/HTTP API Framework for Golang with OpenAPI 3.1 created: '2020-03-08T06:19:51Z' - updated: '2024-10-07T01:18:36Z' + updated: '2024-10-08T00:58:26Z' language: Go archived: false - stars: 1951 + stars: 1959 watchers: 27 forks: 144 owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"4864dd9cf201245e8ffb9d6957c409e0b8ed4c32ac696eedf24d6cc8820d39b9"' - repoLastModified: Mon, 07 Oct 2024 01:18:36 GMT + repoEtag: '"f7c7ea0f0b120a4a82f81efe04e24cebdc8d58206379062e0e441e660fa6c078"' + repoLastModified: Tue, 08 Oct 2024 00:58:26 GMT foundInMaster: true category: - Auto Generators @@ -7312,11 +7312,11 @@ archived: false stars: 129 watchers: 4 - forks: 25 + forks: 26 owner: robertmassaioli logo: https://avatars.githubusercontent.com/u/149178?v=4 license: MIT - repoEtag: '"2c9445ac01aa438c04d664b8e1a0974b88b6173fb359f1c3014e910194c1d0e3"' + repoEtag: '"e6989d6193f53e82cfbde8a308b79dfafcc26c5459f5856d02c6dedc2ba8117f"' repoLastModified: Thu, 26 Sep 2024 17:21:46 GMT foundInMaster: true - source: https://openapi.tools/ @@ -7334,13 +7334,13 @@ id: ca155f2693c6aa619365c0854c0125f5 repositoryMetadata: base64Readme: >- - PXBvZAoKPWVuY29kaW5nIFVURi04Cgo9aGVhZDEgTkFNRQoKT3BlbkFQSTo6TW9kZXJuIC0gVmFsaWRhdGUgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgYW4gT3BlbkFQSSB2My4xIGRvY3VtZW50Cgo9aGVhZDEgVkVSU0lPTgoKdmVyc2lvbiAwLjA2OQoKPWhlYWQxIFNZTk9QU0lTCgogIG15ICRvcGVuYXBpID0gT3BlbkFQSTo6TW9kZXJuLT5uZXcoCiAgICBvcGVuYXBpX3VyaSA9PiAnL2FwaScsCiAgICBvcGVuYXBpX3NjaGVtYSA9PiBZQU1MOjpQUC0+bmV3KGJvb2xlYW4gPT4gJ0pTT046OlBQJyktPmxvYWRfc3RyaW5nKDw8J1lBTUwnKSk7CiAgb3BlbmFwaTogMy4xLjAKICBpbmZvOgogICAgdGl0bGU6IFRlc3QgQVBJCiAgICB2ZXJzaW9uOiAxLjIuMwogIHBhdGhzOgogICAgL2Zvby97Zm9vX2lkfToKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBmb29faWQKICAgICAgICBpbjogcGF0aAogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcGF0dGVybjogXlthLXpdKyQKICAgICAgcG9zdDoKICAgICAgICBvcGVyYXRpb25JZDogbXlfZm9vX3JlcXVlc3QKICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogTXktUmVxdWVzdC1IZWFkZXIKICAgICAgICAgIGluOiBoZWFkZXIKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGhlbGxvOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgMjAwOgogICAgICAgICAgICBkZXNjcmlwdGlvbjogc3VjY2VzcwogICAgICAgICAgICBoZWFkZXJzOgogICAgICAgICAgICAgIE15LVJlc3BvbnNlLUhlYWRlcjoKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbIHN0YXR1cyBdCiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IG9rCiAgWUFNTAoKICBzYXkgJ3JlcXVlc3Q6JzsKICBteSAkcmVxdWVzdCA9IFBPU1QgJy9mb28vYmFyJywKICAgICdNeS1SZXF1ZXN0LUhlYWRlcicgPT4gJzEyMycsICdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uJywgSG9zdCA9PiAnZXhhbXBsZS5jb20nLAogICAgQ29udGVudCA9PiAneyJoZWxsbyI6IDEyM30nOwogIG15ICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3QoJHJlcXVlc3QpOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCiAgc2F5ICdyZXNwb25zZTonOwogIG15ICRyZXNwb25zZSA9IE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlLT5uZXcoY29kZSA9PiAyMDAsIG1lc3NhZ2UgPT4gJ09LJyk7CiAgJHJlc3BvbnNlLT5oZWFkZXJzLT5jb250ZW50X3R5cGUoJ2FwcGxpY2F0aW9uL2pzb24nKTsKICAkcmVzcG9uc2UtPmhlYWRlcnMtPmhlYWRlcignTXktUmVzcG9uc2UtSGVhZGVyJywgJzEyMycpOwogICRyZXNwb25zZS0+Ym9keSgneyJzdGF0dXMiOiAib2sifScpOwogICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3Jlc3BvbnNlKCRyZXNwb25zZSwgeyByZXF1ZXN0ID0+ICRyZXF1ZXN0IH0pOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCnByaW50czoKCiAgcmVxdWVzdDoKICAnL3JlcXVlc3QvYm9keS9oZWxsbyc6IGdvdCBpbnRlZ2VyLCBub3Qgc3RyaW5nCiAgJy9yZXF1ZXN0L2JvZHknOiBub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkCgogIHsKICAgICJlcnJvcnMiIDogWwogICAgICB7CiAgICAgICAgImFic29sdXRlS2V5d29yZExvY2F0aW9uIiA6ICJodHRwczovL2V4YW1wbGUuY29tL2FwaSMvcGF0aHMvfjFmb29+MSU3QmZvb19pZCU3RC9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMvaGVsbG8vdHlwZSIsCiAgICAgICAgImVycm9yIiA6ICJnb3QgaW50ZWdlciwgbm90IHN0cmluZyIsCiAgICAgICAgImluc3RhbmNlTG9jYXRpb24iIDogIi9yZXF1ZXN0L2JvZHkvaGVsbG8iLAogICAgICAgICJrZXl3b3JkTG9jYXRpb24iIDogIi9wYXRocy9+MWZvb34xe2Zvb19pZH0vcG9zdC9yZXF1ZXN0Qm9keS9jb250ZW50L2FwcGxpY2F0aW9ufjFqc29uL3NjaGVtYS9wcm9wZXJ0aWVzL2hlbGxvL3R5cGUiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWJzb2x1dGVLZXl3b3JkTG9jYXRpb24iIDogImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpIy9wYXRocy9+MWZvb34xJTdCZm9vX2lkJTdEL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEvcHJvcGVydGllcyIsCiAgICAgICAgImVycm9yIiA6ICJub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkIiwKICAgICAgICAiaW5zdGFuY2VMb2NhdGlvbiIgOiAiL3JlcXVlc3QvYm9keSIsCiAgICAgICAgImtleXdvcmRMb2NhdGlvbiIgOiAiL3BhdGhzL34xZm9vfjF7Zm9vX2lkfS9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMiCiAgICAgIH0KICAgIF0sCiAgICAidmFsaWQiIDogZmFsc2UKICB9CgogIHJlc3BvbnNlOgogIHZhbGlkCgogIHsKICAgICJ2YWxpZCIgOiB0cnVlCiAgfQoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIG1vZHVsZSBwcm92aWRlcyB2YXJpb3VzIHRvb2xzIGZvciB3b3JraW5nIHdpdGggYW4KTDxPcGVuQVBJIFNwZWNpZmljYXRpb24gdjMuMSBkb2N1bWVudHxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlbmFwaS1kb2N1bWVudD4gd2l0aGluCnlvdXIgYXBwbGljYXRpb24uIFRoZSBKU09OIFNjaGVtYSBldmFsdWF0b3IgaXMgZnVsbHkgc3BlY2lmaWNhdGlvbi1jb21wbGlhbnQ7IHRoZSBPcGVuQVBJIGV2YWx1YXRvcgphaW1zIHRvIGJlIGJ1dCBzb21lIGZlYXR1cmVzIGFyZSBub3QgeWV0IGF2YWlsYWJsZS4gTXkgYmVsaWVmIGlzIHRoYXQgbWlzc2luZyBmZWF0dXJlcyBhcmUgYmV0dGVyCnRoYW4gZmVhdHVyZXMgdGhhdCBzZWVtIHRvIHdvcmsgYnV0IGFjdHVhbGx5IGN1dCBjb3JuZXJzIGZvciBzaW1wbGljaXR5LgoKPWZvciBQb2Q6OkNvdmVyYWdlIEJVSUxEQVJHUyBUSEFXCgo9Zm9yIHN0b3B3b3JkcyBzY2hlbWFzIGpzb25TY2hlbWFEaWFsZWN0IG1ldGFzY2hlbWEgc3Vic2NoZW1hIHBlcmxpc2ggb3BlcmF0aW9uSWQgb3BlbmFwaSBNb2pvbGljaW91cwoKPWhlYWQxIENPTlNUUlVDVE9SIEFSR1VNRU5UUwoKSWYgY29uc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaXMgbm90IHN1Y2Nlc3NmdWwsIGZvciBleGFtcGxlIHRoZSBkb2N1bWVudCBoYXMgYSBzeW50YXggZXJyb3IsIHRoZQpjYWxsIHRvIEM8bmV3KCk+IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiBCZSBjYXJlZnVsIGFib3V0IGV4YW1pbmluZyB0aGlzIGV4Y2VwdGlvbiwgZm9yIGl0IG1pZ2h0IGJlCmEgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QsIHdoaWNoIGhhcyBhIGJvb2xlYW4gb3ZlcmxvYWQgb2YgZmFsc2Ugd2hlbiBpdCBjb250YWlucwplcnJvcnMhIEJ1dCB5b3UgbmV2ZXIgZG8gQzxpZiAoJEApIHsgLi4uIH0+LCByaWdodD8KCj1oZWFkMiBvcGVuYXBpX3VyaQoKVGhlIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCklnbm9yZWQgaWYgTDwvb3BlbmFwaV9kb2N1bWVudD4gaXMgcHJvdmlkZWQuCgpJdCBpcyB1c2VkIGF0IHJ1bnRpbWUgYXMgdGhlIGJhc2UgZm9yIGFic29sdXRlIFVSSXMgdXNlZCBpbiBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpSZXN1bHQ+IG9iamVjdHMsCmFsb25nIHdpdGggdGhlIHJlcXVlc3QncyBDPEhvc3Q+IGhlYWRlciBhbmQgc2NoZW1lIChlLmcuIEM8aHR0cHM+KSwgd2hlbiBhdmFpbGFibGUuCgo9aGVhZDIgb3BlbmFwaV9zY2hlbWEKClRoZSBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBPcGVuQVBJIHYzLjEgZG9jdW1lbnQgKGFzIHNwZWNpZmllZCBhdApMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4pLiBJZ25vcmVkIGlmIEw8L29wZW5hcGlfZG9jdW1lbnQ+IGlzIHByb3ZpZGVkLgoKPWhlYWQyIG9wZW5hcGlfZG9jdW1lbnQKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQST4gZG9jdW1lbnQgdGhhdCBob2xkcyB0aGUgT3BlbkFQSSBpbmZvcm1hdGlvbiB0byBiZQp1c2VkIGZvciB2YWxpZGF0aW9uLiBJZiBpdCBpcyBub3QgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIGJvdGggTDwvb3BlbmFwaV91cmk+IGFuZApMPC9vcGVuYXBpX3NjaGVtYT4gQjxNVVNUPiBiZSBwcm92aWRlZCwgYW5kIEw8L2V2YWx1YXRvcj4gd2lsbCBhbHNvIGJlIHVzZWQgaWYgcHJvdmlkZWQuCgo9aGVhZDIgZXZhbHVhdG9yCgpUaGUgTDxKU09OOjpTY2hlbWE6Ok1vZGVybj4gb2JqZWN0IHRvIHVzZSBmb3IgYWxsIFVSSSByZXNvbHV0aW9uIGFuZCBKU09OIFNjaGVtYSBldmFsdWF0aW9uLgpJZ25vcmVkIGlmIEw8L29wZW5hcGlfZG9jdW1lbnQ+IGlzIHByb3ZpZGVkLiBPcHRpb25hbC4KCj1oZWFkMSBBQ0NFU1NPUlMvTUVUSE9EUwoKPWhlYWQyIG9wZW5hcGlfdXJpCgpUaGUgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCj1oZWFkMiBvcGVuYXBpX3NjaGVtYQoKVGhlIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIE9wZW5BUEkgZG9jdW1lbnQuIFNlZSBMPHRoZSBzcGVjaWZpY2F0aW9uL2h0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4uCgo9aGVhZDIgb3BlbmFwaV9kb2N1bWVudAoKVGhlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkRvY3VtZW50OjpPcGVuQVBJPiBkb2N1bWVudCB0aGF0IGhvbGRzIHRoZSBPcGVuQVBJIGluZm9ybWF0aW9uIHRvIGJlCnVzZWQgZm9yIHZhbGlkYXRpb24uCgo9aGVhZDIgZG9jdW1lbnRfZ2V0CgogIG15ICRwYXJhbWV0ZXJfZGF0YSA9ICRvcGVuYXBpLT5kb2N1bWVudF9nZXQoJy9wYXRocy9+MWZvb34xe2Zvb19pZH0vZ2V0L3BhcmFtZXRlcnMvMCcpOwoKRmV0Y2hlcyB0aGUgc3Vic2NoZW1hIGF0IHRoZSBwcm92aWRlZCBKU09OIHBvaW50ZXIuClByb3hpZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEkvZ2V0Pi4KVGhpcyBpcyBub3QgcmVjdXJzaXZlIChkb2VzIG5vdCBmb2xsb3cgQzwkcmVmPiBjaGFpbnMpIC0tIGZvciB0aGF0LCB1c2UKQzw8ICRvcGVuYXBpLT5yZWN1cnNpdmVfZ2V0KE1vam86OlVSTC0+bmV3LT5mcmFnbWVudCgkanNvbl9wb2ludGVyKSkgPj4sIHNlZQpMPC9yZWN1cnNpdmVfZ2V0Pi4KCj1oZWFkMiBldmFsdWF0b3IKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuPiBvYmplY3QgdG8gdXNlIGZvciBhbGwgVVJJIHJlc29sdXRpb24gYW5kIEpTT04gU2NoZW1hIGV2YWx1YXRpb24uCgo9aGVhZDIgdmFsaWRhdGVfcmVxdWVzdAoKICAkcmVzdWx0ID0gJG9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3QoCiAgICAkcmVxdWVzdCwKICAgICMgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGNhbiBjb250YWluIGFueSBjb21iaW5hdGlvbiBvZjoKICAgIG15ICRvcHRpb25zID0gewogICAgICBwYXRoX3RlbXBsYXRlID0+ICcvZm9vL3thcmcxfS9iYXIve2FyZzJ9JywKICAgICAgb3BlcmF0aW9uX2lkID0+ICdteV9vcGVyYXRpb25faWQnLAogICAgICBwYXRoX2NhcHR1cmVzID0+IHsgYXJnMSA9PiAxLCBhcmcyID0+IDIgfSwKICAgICAgbWV0aG9kID0+ICdnZXQnLAogICAgfSwKICApOwoKVmFsaWRhdGVzIGFuIEw8SFRUUDo6UmVxdWVzdD4sIEw8UGxhY2s6OlJlcXVlc3Q+LCBMPENhdGFseXN0OjpSZXF1ZXN0PiBvciBMPE1vam86Ok1lc3NhZ2U6OlJlcXVlc3Q+Cm9iamVjdCBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIE9wZW5BUEkgdjMuMSBkb2N1bWVudCwgcmV0dXJuaW5nIGEKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QuCgpBYnNvbHV0ZSBVUklzIGluIHRoZSByZXN1bHQgb2JqZWN0IGFyZSBjb25zdHJ1Y3RlZCBieSByZXNvbHZpbmcgdGhlIG9wZW5hcGkgZG9jdW1lbnQgcGF0aCBhZ2FpbnN0CnRoZSBMPC9vcGVuYXBpX3VyaT4sIGFzIHdlbGwgYXMgdGhlIEM8SG9zdD4gaGVhZGVyIG9mIHRoZSByZXF1ZXN0IGlmIGEgaG9zdCBjb21wb25lbnQgaXMgbm90CmluY2x1ZGVkIGluIHRoZSBMPC9vcGVuYXBpX3VyaT4uCgpUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIGhhc2hyZWYgdGhhdCBjb250YWlucyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdCwKY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWVzIGV4cGVjdGVkIGJ5IEw8L2ZpbmRfcGF0aD4gYmVsb3cuIEl0IGlzIHBvcHVsYXRlZCB3aXRoIHNvbWUgaW5mb3JtYXRpb24KYWJvdXQgdGhlIHJlcXVlc3Q6CnNhdmUgaXQgYW5kIHBhc3MgaXQgdG8gYSBsYXRlciBMPC92YWxpZGF0ZV9yZXNwb25zZT4gKGNvcnJlc3BvbmRpbmcgdG8gYSByZXNwb25zZSBmb3IgdGhpcyByZXF1ZXN0KQp0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgoKPWhlYWQyIHZhbGlkYXRlX3Jlc3BvbnNlCgogICRyZXN1bHQgPSAkb3BlbmFwaS0+dmFsaWRhdGVfcmVzcG9uc2UoCiAgICAkcmVzcG9uc2UsCiAgICB7CiAgICAgIHBhdGhfdGVtcGxhdGUgPT4gJy9mb28ve2FyZzF9L2Jhci97YXJnMn0nLAogICAgICByZXF1ZXN0ID0+ICRyZXF1ZXN0LAogICAgfSwKICApOwoKVmFsaWRhdGVzIGFuIEw8SFRUUDo6UmVzcG9uc2U+LCBMPFBsYWNrOjpSZXNwb25zZT4sIEw8Q2F0YWx5c3Q6OlJlc3BvbnNlPiBvciBMPE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlPgpvYmplY3QgYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBPcGVuQVBJIHYzLjEgZG9jdW1lbnQsIHJldHVybmluZyBhCkw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OlJlc3VsdD4gb2JqZWN0LgoKQWJzb2x1dGUgVVJJcyBpbiB0aGUgcmVzdWx0IG9iamVjdCBhcmUgY29uc3RydWN0ZWQgYnkgcmVzb2x2aW5nIHRoZSBvcGVuYXBpIGRvY3VtZW50IHBhdGggYWdhaW5zdAp0aGUgTDwvb3BlbmFwaV91cmk+LCBhcyB3ZWxsIGFzIHRoZSBDPEhvc3Q+IGhlYWRlciBvZiB0aGUgcmVxdWVzdCBpZiB0aGUgcmVxdWVzdCBpcyBwcm92aWRlZCBhbmQgaWYgYQpob3N0IGNvbXBvbmVudCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIEw8L29wZW5hcGlfdXJpPi4KClRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgaGFzaHJlZiB0aGF0IGNvbnRhaW5zIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0CmNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlc3BvbnNlLCBhcyBpbiBMPC9maW5kX3BhdGg+LgoKQzxyZXF1ZXN0PiBpcyBhbHNvIGFjY2VwdGVkIGFzIGEga2V5IGluIHRoZSBoYXNocmVmLCByZXByZXNlbnRpbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3Qgb2JqZWN0IHRoYXQKY29ycmVzcG9uZHMgdG8gdGhpcyByZXNwb25zZSAoYXMgbm90IGFsbCBIVFRQIGxpYnJhcmllcyBsaW5rIHRvIHRoZSByZXF1ZXN0IGluIHRoZSByZXNwb25zZSBvYmplY3QpLgoKPWhlYWQyIGZpbmRfcGF0aAoKICAkcmVzdWx0ID0gJHNlbGYtPmZpbmRfcGF0aCgkb3B0aW9ucyk7CgpVc2VzIGluZm9ybWF0aW9uIGluIHRoZSByZXF1ZXN0IHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KQzxyZXF1ZXN0PiBzaG91bGQgYmUgcHJvdmlkZWQgaWYgYXZhaWxhYmxlLCBidXQgYWRkaXRpb25hbCBkYXRhIGNhbiBiZSB1c2VkIGluc3RlYWQKKHdoaWNoIGlzIHBvcHVsYXRlZCBieSBlYXJsaWVyIEw8L3ZhbGlkYXRlX3JlcXVlc3Q+IG9yIEw8L2ZpbmRfcGF0aD4gY2FsbHMgdG8gdGhlIHNhbWUgcmVxdWVzdCkuCgpUaGUgc2luZ2xlIGFyZ3VtZW50IGlzIGEgaGFzaHJlZiB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0LiBQb3NzaWJsZSB2YWx1ZXMKaW5jbHVkZToKCj1vdmVyIDQKCj1pdGVtICoKCkM8cmVxdWVzdD46IHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBIVFRQIHJlcXVlc3QuIFNob3VsZCBiZSBwcm92aWRlZCB3aGVuIGF2YWlsYWJsZS4KCj1pdGVtICoKCkM8cGF0aF90ZW1wbGF0ZT46IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdCBVUkksIHdpdGggcGxhY2Vob2xkZXJzIGluIGJyYWNlcyAoZS5nLiBDPC9wZXRzL3twZXRJZH0+KTsgc2VlIEw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhdGhzLW9iamVjdD4uCgo9aXRlbSAqCgpDPG9wZXJhdGlvbl9pZD46IGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEw8b3BlcmF0aW9uSWR8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbi9wYXRocy5odG1sI3RoZS1lbmRwb2ludHMtbGlzdD4gYXQgYSBwYXJ0aWN1bGFyIHBhdGgtdGVtcGxhdGUgYW5kIEhUVFAgbG9jYXRpb24gdW5kZXIgQzwvcGF0aHM+Cgo9aXRlbSAqCgpDPHBhdGhfY2FwdHVyZXM+OiBhIGhhc2hyZWYgbWFwcGluZyBwbGFjZWhvbGRlcnMgaW4gdGhlIHBhdGggdG8gdGhlaXIgYWN0dWFsIHZhbHVlcyBpbiB0aGUgcmVxdWVzdCBVUkkKCj1pdGVtICoKCkM8bWV0aG9kPjogdGhlIEhUVFAgbWV0aG9kIHVzZWQgYnkgdGhlIHJlcXVlc3QgKHVzZWQgY2FzZS1pbnNlbnNpdGl2ZWx5KQoKPWJhY2sKCkFsbCBvZiB0aGVzZSB2YWx1ZXMgYXJlIG9wdGlvbmFsICh1bmxlc3MgQzxyZXF1ZXN0PiBpcyBvbWl0dGVkKSwgYW5kIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZQpyZXF1ZXN0IFVSSSBhcyBuZWVkZWQgKGFsYmVpdCBsZXNzCmVmZmljaWVudGx5IHRoYW4gaWYgdGhleSB3ZXJlIHByb3ZpZGVkKS4gQWxsIHBhc3NlZC1pbiB2YWx1ZXMgTVVTVCBiZSBjb25zaXN0ZW50IHdpdGggZWFjaCBvdGhlciBhbmQKdGhlIHJlcXVlc3QgVVJJLgoKV2hlbiBzdWNjZXNzZnVsLCB0aGUgb3B0aW9ucyBoYXNoIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGgga2V5cyBDPHBhdGhfdGVtcGxhdGU+LCBDPHBhdGhfY2FwdHVyZXM+LApDPG1ldGhvZD4sIGFuZCBDPG9wZXJhdGlvbl9pZD4sCmFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUuCldoZW4gbm90IHN1Y2Nlc3NmdWwsIHRoZSBvcHRpb25zIGhhc2ggd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBrZXkgQzxlcnJvcnM+LCBhbiBhcnJheXJlZiBjb250YWluaW5nCmEgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RXJyb3I+IG9iamVjdCwgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuIE90aGVyIHZhbHVlcyBtYXkgYWxzbyBiZQpwb3B1bGF0ZWQgaWYgdGhleSBjYW4gYmUgc3VjY2Vzc2Z1bGx5IGNhbGN1bGF0ZWQuCgpJbiBhZGRpdGlvbiwgdGhlc2UgdmFsdWVzIGFyZSBwb3B1bGF0ZWQgaW4gdGhlIG9wdGlvbnMgaGFzaCAod2hlbiBhdmFpbGFibGUpOgoKPW92ZXIgNAoKPWl0ZW0gKgoKQzxvcGVyYXRpb25fdXJpPjogYSBVUkkgaW5kaWNhdGluZyB0aGUgZG9jdW1lbnQgbG9jYXRpb24gb2YgdGhlIG9wZXJhdGlvbiBvYmplY3QgZm9yIHRoZSByZXF1ZXN0LCBhZnRlciBmb2xsb3dpbmcgYW55IHJlZmVyZW5jZXMgKHVzdWFsbHkgc29tZXRoaW5nIHVuZGVyIEM8L3BhdGhzLz4sIGJ1dCBtYXkgYmUgaW4gYW5vdGhlciBkb2N1bWVudCkuIFVzZSBDPDwgJG9wZW5hcGktPmV2YWx1YXRvci0+Z2V0KCR1cmkpID4+IHRvIGZldGNoIHRoaXMgY29udGVudCAoc2VlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vZ2V0PikuIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBzYW1lIGFzIEM8PCAkb3BlbmFwaS0+cmVjdXJzaXZlX2dldChNb2pvOjpVUkwtPm5ldy0+ZnJhZ21lbnQoSlNPTjo6U2NoZW1hOjpNb2Rlcm46OlV0aWxpdGllczo6anNvbnAoJy9wYXRocycsICRvcHRpb25zLT57cGF0aF90ZW1wbGF0ZX17JG9wdGlvbnMtPnttZXRob2R9fSkpKSA+Pi4gKFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIGF0IEw8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbi9wYXRocy5odG1sI3RoZS1lbmRwb2ludHMtbGlzdD4gb3IgaW4gdGhlIHNwZWNpZmljYXRpb24gYXQgTDzCpzQuOC4xMCBvZiB0aGUgc3BlY2lmaWNhdGlvbnxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdD4uKQoKPWl0ZW0gKgoKQzxyZXF1ZXN0PiAobm90IG5lY2Vzc2FyaWx5IHdoYXQgd2FzIHBhc3NlZCBpbjogdGhpcyBpcyBhbHdheXMgYSBMPE1vam86Ok1lc3NhZ2U6OlJlcXVlc3Q+KQoKPWJhY2sKCllvdSBjYW4gZmluZCB0aGUgYXNzb2NpYXRlZCBvcGVyYXRpb24gb2JqZWN0IGJ5IHVzaW5nIGVpdGhlciBDPG9wZXJhdGlvbl91cmk+LApvciBieSBjYWxsaW5nIEM8PCAkb3BlbmFwaS0+b3BlbmFwaV9kb2N1bWVudC0+Z2V0X29wZXJhdGlvbklkX3BhdGgoJG9wZXJhdGlvbl9pZCkgPj4KKHNlZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQSS9nZXRfb3BlcmF0aW9uSWRfcGF0aD4pIChub3RlIHRoYXQgdGhlIGxhdHRlciB3aWxsCmJlIHJlbW92ZWQgaW4gYSBzdWJzZXF1ZW50IHJlbGVhc2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb3BlcmF0aW9ucyBleGlzdGluZyBpbiBvdGhlciBkb2N1bWVudHMpLgoKTm90ZSB0aGF0IHRoZSBMPEM8L3NlcnZlcnM+fGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZXJ2ZXItb2JqZWN0PiBzZWN0aW9uIG9mIHRoZQpPcGVuQVBJIGRvY3VtZW50IGlzIG5vdCB1c2VkIGZvciBwYXRoIG1hdGNoaW5nIGF0IHRoaXMgdGltZSwgZm9yIGVpdGhlciBzY2hlbWUgYW5kIGhvc3QgbWF0Y2hpbmcgbm9yCnBhdGggcHJlZml4ZXMuIEZvciBub3csIGlmIHlvdSB1c2UgYSBwYXRoIHByZWZpeCBpbiBDPHNlcnZlcnM+IGVudHJpZXMgeW91IHdpbGwgbmVlZCB0byBhZGQgdGhpcyB0bwp0aGUgcGF0aCB0ZW1wbGF0ZXMgdW5kZXIgYC9wYXRoc2AuCgo9aGVhZDIgcmVjdXJzaXZlX2dldAoKR2l2ZW4gYSB1cmkgb3IgdXJpLXJlZmVyZW5jZSwgZ2V0IHRoZSBkZWZpbml0aW9uIGF0IHRoYXQgbG9jYXRpb24sIGZvbGxvd2luZyBhbnkgQzwkcmVmPnMgYWxvbmcgdGhlCndheS4gSW5jbHVkZSB0aGUgZXhwZWN0ZWQgZGVmaW5pdGlvbiB0eXBlCihvbmUgb2YgQzxzY2hlbWE+LCBDPHJlc3BvbnNlPiwgQzxwYXJhbWV0ZXI+LCBDPGV4YW1wbGU+LCBDPHJlcXVlc3QtYm9keT4sIEM8aGVhZGVyPiwKQzxzZWN1cml0eS1zY2hlbWU+LCBDPGxpbms+LCBDPGNhbGxiYWNrcz4sIG9yIEM8cGF0aC1pdGVtPikKZm9yIHZhbGlkYXRpb24gb2YgdGhlIGVudGlyZSByZWZlcmVuY2UgY2hhaW4uCgpSZXR1cm5zIHRoZSBkYXRhIGluIHNjYWxhciBjb250ZXh0LCBvciBhIHR1cGxlIG9mIHRoZSBkYXRhIGFuZCB0aGUgY2Fub25pY2FsIFVSSSBvZiB0aGUKcmVmZXJlbmNlZCBsb2NhdGlvbiBpbiBsaXN0IGNvbnRleHQuCgpJZiB0aGUgcHJvdmlkZWQgbG9jYXRpb24gaXMgcmVsYXRpdmUsIHRoZSBtYWluIG9wZW5hcGkgZG9jdW1lbnQgaXMgdXNlZCBmb3IgdGhlIGJhc2UgVVJJLgpJZiB5b3UgaGF2ZSBhIGxvY2FsIGpzb24gcG9pbnRlciB5b3Ugd2FudCB0byByZXNvbHZlLCB5b3UgY2FuIHR1cm4gaXQgaW50byBhIHVyaS1yZWZlcmVuY2UgYnkKcHJlcGVuZGluZyBDPCM+LgoKICBteSAkc2NoZW1hID0gJG9wZW5hcGktPnJlY3Vyc2l2ZV9nZXQoJyMvY29tcG9uZW50cy9wYXJhbWV0ZXJzL0NvbnRlbnQtRW5jb2RpbmcnLCAncGFyYW1ldGVyJyk7CgogICMgc3RhcnRzIHdpdGggYSBKU09OOjpTY2hlbWE6Ok1vZGVybiBvYmplY3QgKFRPRE8pCiAgbXkgJHNjaGVtYSA9ICRqcy0+cmVjdXJzaXZlX2dldCgnaHR0cHM6Ly8vb3BlbmFwaV9kb2MueWFtbCMvY29tcG9uZW50cy9zY2hlbWFzL215X29iamVjdCcpCiAgbXkgJHNjaGVtYSA9ICRqcy0+cmVjdXJzaXZlX2dldCgnaHR0cHM6Ly9sb2NhbGhvc3Q6MTIzNC9teV9zcGVjIy8kZGVmcy9teV9vYmplY3QnKQoKPWhlYWQyIGNhbm9uaWNhbF91cmkKCkFuIGFjY2Vzc29yIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkRvY3VtZW50L2Nhbm9uaWNhbF91cmk+LgoKPWhlYWQyIHNjaGVtYQoKQW4gYWNjZXNzb3IgdGhhdCBkZWxlZ2F0ZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQvc2NoZW1hPi4KCj1oZWFkMiBnZXRfbWVkaWFfdHlwZQoKQW4gYWNjZXNzb3IgdGhhdCBkZWxlZ2F0ZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybi9nZXRfbWVkaWFfdHlwZT4uCgo9aGVhZDIgYWRkX21lZGlhX3R5cGUKCkEgc2V0dGVyIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vYWRkX21lZGlhX3R5cGU+LgoKPWhlYWQxIENBQ0hJTkcKCj1mb3Igc3RvcHdvcmRzIHByZWZvcmtpbmcKClZlcnkgbGFyZ2UgT3BlbkFQSSBkb2N1bWVudHMgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRpbWUgdG8gYmUKbG9hZGVkIGFuZCBwYXJzZWQuIFlvdSBjYW4gcmVkdWNlIHRoZSBpbXBhY3QgdG8geW91ciBwcmVmb3JraW5nIGFwcGxpY2F0aW9uIGJ5IGxvYWRpbmcgYWxsIG5lY2Vzc2FyeQpkb2N1bWVudHMgYXQgc3RhcnR1cCwgYW5kIGltcGFjdCBjYW4gYmUgZnVydGhlciByZWR1Y2VkIGJ5IHNhdmluZyBvYmplY3RzIHRvIGNhY2hlIGFuZCB0aGVuCnJlbG9hZGluZyB0aGVtIChwZXJoYXBzIGJ5IHVzaW5nIGEgdGltZXN0YW1wIG9yIGNoZWNrc3VtIHRvIGRldGVybWluZSBpZiBhIGZyZXNoIHJlbG9hZCBpcyBuZWVkZWQpLgoKICBzdWIgZ2V0X29wZW5hcGkgKC4uLikgewogICAgbXkgJHNlcmlhbGl6ZWRfZmlsZSA9IFBhdGg6OlRpbnk6OnBhdGgoJHNlcmlhbGl6ZWRfZmlsZW5hbWUpOwogICAgbXkgJG9wZW5hcGlfZmlsZSA9IFBhdGg6OlRpbnk6OnBhdGgoJG9wZW5hcGlfZmlsZW5hbWUpOwogICAgbXkgJG9wZW5hcGk7CiAgICBpZiAoJHNlcmlhbGl6ZWRfZmlsZS0+c3RhdC0+bXRpbWUgPCAkb3BlbmFwaV9maWxlLT5zdGF0LT5tdGltZSkpIHsKICAgICAgJG9wZW5hcGkgPSBPcGVuQVBJOjpNb2Rlcm4tPm5ldygKICAgICAgICBvcGVuYXBpX3VyaSA9PiAnL2FwaScsCiAgICAgICAgb3BlbmFwaV9zY2hlbWEgPT4gZGVjb2RlX2pzb24oJG9wZW5hcGlfZmlsZS0+c2x1cnBfcmF3KSwgIyB5b3VyIG9wZW5hcGkgZG9jdW1lbnQKICAgICAgKTsKICAgICAgJG9wZW5hcGktPmV2YWx1YXRvci0+YWRkX3NjaGVtYShkZWNvZGVfanNvbiguLi4pKTsgICMgYW55IG90aGVyIG5lZWRlZCBzY2hlbWFzCiAgICAgIG15ICRmcm96ZW4gPSBTZXJlYWw6OkVuY29kZXItPm5ldyh7IGZyZWV6ZV9jYWxsYmFja3MgPT4gMSB9KS0+ZW5jb2RlKCRvcGVuYXBpKTsKICAgICAgJHNlcmlhbGl6ZWRfZmlsZS0+c3Bld19yYXcoJGZyb3plbik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgbXkgJGZyb3plbiA9ICRzZXJpYWxpemVkX2ZpbGUtPnNsdXJwX3JhdzsKICAgICAgJG9wZW5hcGkgPSBTZXJlYWw6OkRlY29kZXItPm5ldy0+ZGVjb2RlKCRmcm96ZW4pOwogICAgfQoKICAgICMgYWRkIGN1c3RvbSBmb3JtYXQgdmFsaWRhdGlvbnMsIG1lZGlhIHR5cGVzIGFuZCBlbmNvZGluZ3MgaGVyZQogICAgJG9wZW5hcGktPmV2YWx1YXRvci0+YWRkX21lZGlhX3R5cGUoLi4uKTsKCiAgICByZXR1cm4gJG9wZW5hcGk7CiAgfQoKU2VlIGFsc28gTDxKU09OOjpTY2hlbWE6Ok1vZGVybi9DQUNISU5HPi4KCj1oZWFkMSBPTiBUSEUgVVNFIE9GIEpTT04gU0NIRU1BUwoKRW1iZWRkZWQgSlNPTiBTY2hlbWFzLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIEM8c2NoZW1hPiBrZXl3b3JkLCBhcmUgZnVsbHkgZHJhZnQyMDIwLTEyLWNvbXBsaWFudCwKYXMgcGVyIHRoZSBzcGVjLCBhbmQgaW1wbGVtZW50ZWQgd2l0aCBMPEpTT046OlNjaGVtYTo6TW9kZXJuPi4gVW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgdXNlIG9mIHRoZQpMPGpzb25TY2hlbWFEaWFsZWN0fGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzcGVjaWZ5aW5nLXNjaGVtYS1kaWFsZWN0cz4ga2V5d29yZCwgdGhlaXIKbWV0YXNjaGVtYSBpcyBMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzLzMuMS9kaWFsZWN0L2Jhc2U+LCB3aGljaCBhbGxvd3MgZm9yIHVzZSBvZiB0aGUKT3BlbkFQSS1zcGVjaWZpYyBrZXl3b3JkcyAoQzxkaXNjcmltaW5hdG9yPiwgQzx4bWw+LCBDPGV4dGVybmFsRG9jcz4sIGFuZCBDPGV4YW1wbGU+KSwgYXMgZGVmaW5lZCBpbgpMPHRoZSBzcGVjaWZpY2F0aW9uL2h0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzY2hlbWEtb2JqZWN0Pi4gRm9ybWF0IHZhbGlkYXRpb24gaXMgdHVybmVkCkI8b24+LCBhbmQgdGhlIHVzZSBvZiBjb250ZW50KiBrZXl3b3JkcyBpcyBvZmYgKHNlZQpMPEpTT046OlNjaGVtYTo6TW9kZXJuL3ZhbGlkYXRlX2NvbnRlbnRfc2NoZW1hcz4pLgoKUmVmZXJlbmNlcyAod2l0aCB0aGUgQzwkcmVmPikga2V5d29yZCBtYXkgcmVmZXJlbmNlIGFueSBwb3NpdGlvbiB3aXRoaW4gdGhlIGVudGlyZSBPcGVuQVBJIGRvY3VtZW50OwphcyBzdWNoLCBqc29uIHBvaW50ZXJzIGFyZSByZWxhdGl2ZSB0byB0aGUgQjxyb290PiBvZiB0aGUgZG9jdW1lbnQsIG5vdCB0aGUgcm9vdCBvZiB0aGUgc3Vic2NoZW1hCml0c2VsZi4gUmVmZXJlbmNlcyB0byBvdGhlciBkb2N1bWVudHMgYXJlIGFsc28gcGVybWl0dGVkLCBwcm92aWRlZCB0aG9zZSBkb2N1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZAppbnRvIHRoZSBldmFsdWF0b3IgaW4gYWR2YW5jZSAoc2VlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vYWRkX3NjaGVtYT4pLgoKVmFsdWVzIGFyZSBnZW5lcmFsbHkgdHJlYXRlZCBhcyBzdHJpbmdzIGZvciB0aGUgcHVycG9zZSBvZiBzY2hlbWEgZXZhbHVhdGlvbi4gSG93ZXZlciwgaWYgdGhlIHRvcApsZXZlbCBvZiB0aGUgc2NoZW1hIGNvbnRhaW5zIEM8InR5cGUiOiAibnVtYmVyIj4gb3IgQzwidHlwZSI6ICJpbnRlZ2VyIj4sIHRoZW4gdGhlIHZhbHVlIHdpbGwgYmUKKGF0dGVtcHRlZCB0byBiZSkgY29lcmNlZCBpbnRvIGEgbnVtYmVyIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gdGhlIEpTT04gU2NoZW1hIGV2YWx1YXRvci4KVHlwZSBjb2VyY2lvbiB3aWxsIEI8bm90PiBiZSBkb25lIGlmIHRoZSBDPHR5cGU+IGtleXdvcmQgaXMgb21pdHRlZC4KVGhpcyBsZXRzIHlvdSB1c2UgbnVtZXJpYyBrZXl3b3JkcyBzdWNoIGFzIEM8bWF4aW11bT4gYW5kIEM8bXVsdGlwbGVPZj4gaW4geW91ciBzY2hlbWFzLgpJdCBhbHNvIHJlc29sdmVzIGluY29uc2lzdGVuY2llcyB0aGF0IGNhbiBhcmlzZSB3aGVuIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgYXJlIGNyZWF0ZWQKbWFudWFsbHkgaW4gYSB0ZXN0IGVudmlyb25tZW50IChhcyBvcHBvc2VkIHRvIGJlaW5nIHBhcnNlZCBmcm9tIGluY29taW5nIG5ldHdvcmsgdHJhZmZpYykgYW5kIGNhbgp0aGVyZWZvcmUgaW5hZHZlcnRlbnRseSBjb250YWluIHBlcmxpc2ggbnVtYmVycyByYXRoZXIgdGhhbiBzdHJpbmdzLgoKPWhlYWQxIExJTUlUQVRJT05TCgpBbGwgbWVzc2FnZSB2YWxpZGF0aW9uIGlzIGRvbmUgdXNpbmcgTDxNb2pvbGljaW91cz4gb2JqZWN0cyAoTDxNb2pvOjpNZXNzYWdlOjpSZXF1ZXN0PiBhbmQKTDxNb2pvOjpNZXNzYWdlOjpSZXNwb25zZT4pLiBJZiBtZXNzYWdlcyBvZiBvdGhlciB0eXBlcyBhcmUgcGFzc2VkLCBjb252ZXJzaW9uIGlzIGRvbmUgb24gYQpiZXN0LWVmZm9ydCBiYXNpcywgYnV0IHNpbmNlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIGFkaGVyZW5jZSB0byB0aGUgUkZDCnNwZWNzLCBzb21lIHZhbGlkYXRpb24gZXJyb3JzIG1heSBvY2N1ciBlLmcuIGlmIGEgY2VydGFpbiByZXF1aXJlZCBoZWFkZXIgaXMgbWlzc2luZyBvbiB0aGUKb3JpZ2luYWwuIEZvciBiZXN0IHJlc3VsdHMgaW4gdmFsaWRhdGluZyByZWFsIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmssIHBhcnNlIHRoZW0gZGlyZWN0bHkgaW50bwpNb2pvbGljaW91cyBtZXNzYWdlcyAoc2VlIEw8TW9qbzo6TWVzc2FnZS9wYXJzZT4pLgoKT25seSBjZXJ0YWluIHBlcm11dGF0aW9ucyBvZiBPcGVuQVBJIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIGF0IHRoaXMgdGltZToKCj1vdmVyIDQKCj1pdGVtICoKCmZvciBwYXRoIHBhcmFtZXRlcnMsIG9ubHkgQzxzdHlsZTogc2ltcGxlPiBhbmQgQzxleHBsb2RlOiBmYWxzZT4gaXMgc3VwcG9ydGVkCgo9aXRlbSAqCgpmb3IgcXVlcnkgcGFyYW1ldGVycywgb25seSBDPHN0eWxlOiBmb3JtPiBhbmQgQzxleHBsb2RlOiB0cnVlPiBpcyBzdXBwb3J0ZWQsIG9ubHkgdGhlIGZpcnN0IHZhbHVlIG9mIGVhY2ggcGFyYW1ldGVyIG5hbWUgaXMgY29uc2lkZXJlZCwgYW5kIEM8YWxsb3dFbXB0eVZhbHVlPiBhbmQgQzxhbGxvd1Jlc2VydmVkPiBhcmUgbm90IGNoZWNrZWQKCj1pdGVtICoKCmNvb2tpZSBwYXJhbWV0ZXJzIGFyZSBub3QgY2hlY2tlZCBhdCBhbGwgeWV0Cgo9aXRlbSAqCgpDPGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZD4gYW5kIEM8bXVsdGlwYXJ0Lyo+IG1lc3NhZ2VzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAoKPWl0ZW0gKgoKQzxzZXJ2ZXI+IGZpZWxkcyBpbiBkZWZpbml0aW9ucyBhcmUgY29tcGxldGVseSBpZ25vcmVkLCBhbmQgbm90IGNvbnNpZGVyZWQgd2hlbiBwYXJzaW5nIHJlcXVlc3QgVVJJcy4KCj1pdGVtICoKCk9wZW5BUEkgZGVzY3JpcHRpb25zIG11c3QgYmUgY29udGFpbmVkIGluIGEgc2luZ2xlIGRvY3VtZW50OyBDPCRyZWY+ZXJlbmNlcyB0byBvdGhlciBkb2N1bWVudHMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgoKPWl0ZW0gKgoKVGhlIHVzZSBvZiBDPCRyZWY+IHdpdGhpbiBhIHBhdGgtaXRlbSBvYmplY3QgaXMgbm90IHBlcm1pdHRlZC4KCj1pdGVtICoKClNlY3VyaXR5IHNjaGVtZXMgaW4gdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24sIGFuZCB0aGUgdXNlIG9mIGFueSBDPEF1dGhvcml6YXRpb24+IGhlYWRlcnMgaW4gcmVxdWVzdHMsIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KCj1iYWNrCgo9aGVhZDEgU0VFIEFMU08KCj1vdmVyIDQKCj1pdGVtICoKCkw8TW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxUZXN0OjpNb2pvOjpSb2xlOjpPcGVuQVBJOjpNb2Rlcm4+Cgo9aXRlbSAqCgpMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQST4KCj1pdGVtICoKCkw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4+Cgo9aXRlbSAqCgpMPGh0dHBzOi8vanNvbi1zY2hlbWEub3JnPgoKPWl0ZW0gKgoKTDxodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvPgoKPWl0ZW0gKgoKTDxodHRwczovL2xlYXJuLm9wZW5hcGlzLm9yZy8+Cgo9aXRlbSAqCgpMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4KCj1iYWNrCgo9aGVhZDEgU1VQUE9SVAoKQnVncyBtYXkgYmUgc3VibWl0dGVkIHRocm91Z2ggTDxodHRwczovL2dpdGh1Yi5jb20va2FyZW5ldGhlcmlkZ2UvT3BlbkFQSS1Nb2Rlcm4vaXNzdWVzPi4KCkkgYW0gYWxzbyB1c3VhbGx5IGFjdGl2ZSBvbiBpcmMsIGFzICdldGhlcicgYXQgQzxpcmMucGVybC5vcmc+IGFuZCBDPGlyYy5saWJlcmEuY2hhdD4uCgo9Zm9yIHN0b3B3b3JkcyBPcGVuQVBJCgpZb3UgY2FuIGFsc28gZmluZCBtZSBvbiB0aGUgTDxKU09OIFNjaGVtYSBTbGFjayBzZXJ2ZXJ8aHR0cHM6Ly9qc29uLXNjaGVtYS5zbGFjay5jb20+IGFuZCBMPE9wZW5BUEkKU2xhY2sgc2VydmVyfGh0dHBzOi8vb3Blbi1hcGkuc2xhY2suY29tPiwgd2hpY2ggYXJlIGFsc28gZ3JlYXQgcmVzb3VyY2VzIGZvciBmaW5kaW5nIGhlbHAuCgo9aGVhZDEgQVVUSE9SCgpLYXJlbiBFdGhlcmlkZ2UgPGV0aGVyQGNwYW4ub3JnPgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgTElDRU5DRQoKVGhpcyBzb2Z0d2FyZSBpcyBjb3B5cmlnaHQgKGMpIDIwMjEgYnkgS2FyZW4gRXRoZXJpZGdlLgoKVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCnRoZSBzYW1lIHRlcm1zIGFzIHRoZSBQZXJsIDUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugc3lzdGVtIGl0c2VsZi4KClNvbWUgc2NoZW1hIGZpbGVzIGhhdmUgdGhlaXIgb3duIGxpY2VuY2UsIGluIHNoYXJlL29hcy9MSUNFTlNFLgoKPWN1dAo= - readmeEtag: '"8bd38691ba801c1b6cc556d022a8c13d18e6c33f"' - readmeLastModified: Sat, 28 Sep 2024 23:35:22 GMT + PXBvZAoKPWVuY29kaW5nIFVURi04Cgo9aGVhZDEgTkFNRQoKT3BlbkFQSTo6TW9kZXJuIC0gVmFsaWRhdGUgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIGFnYWluc3QgYW4gT3BlbkFQSSB2My4xIGRvY3VtZW50Cgo9aGVhZDEgVkVSU0lPTgoKdmVyc2lvbiAwLjA3MAoKPWhlYWQxIFNZTk9QU0lTCgogIG15ICRvcGVuYXBpID0gT3BlbkFQSTo6TW9kZXJuLT5uZXcoCiAgICBvcGVuYXBpX3VyaSA9PiAnL2FwaScsCiAgICBvcGVuYXBpX3NjaGVtYSA9PiBZQU1MOjpQUC0+bmV3KGJvb2xlYW4gPT4gJ0pTT046OlBQJyktPmxvYWRfc3RyaW5nKDw8J1lBTUwnKSk7CiAgb3BlbmFwaTogMy4xLjAKICBpbmZvOgogICAgdGl0bGU6IFRlc3QgQVBJCiAgICB2ZXJzaW9uOiAxLjIuMwogIHBhdGhzOgogICAgL2Zvby97Zm9vX2lkfToKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBmb29faWQKICAgICAgICBpbjogcGF0aAogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcGF0dGVybjogXlthLXpdKyQKICAgICAgcG9zdDoKICAgICAgICBvcGVyYXRpb25JZDogbXlfZm9vX3JlcXVlc3QKICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgIC0gbmFtZTogTXktUmVxdWVzdC1IZWFkZXIKICAgICAgICAgIGluOiBoZWFkZXIKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZQogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgIGhlbGxvOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgMjAwOgogICAgICAgICAgICBkZXNjcmlwdGlvbjogc3VjY2VzcwogICAgICAgICAgICBoZWFkZXJzOgogICAgICAgICAgICAgIE15LVJlc3BvbnNlLUhlYWRlcjoKICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgIHBhdHRlcm46IF5bMC05XSskCiAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBbIHN0YXR1cyBdCiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IG9rCiAgWUFNTAoKICBzYXkgJ3JlcXVlc3Q6JzsKICBteSAkcmVxdWVzdCA9IFBPU1QgJy9mb28vYmFyJywKICAgICdNeS1SZXF1ZXN0LUhlYWRlcicgPT4gJzEyMycsICdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uJywgSG9zdCA9PiAnZXhhbXBsZS5jb20nLAogICAgQ29udGVudCA9PiAneyJoZWxsbyI6IDEyM30nOwogIG15ICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3QoJHJlcXVlc3QpOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCiAgc2F5ICdyZXNwb25zZTonOwogIG15ICRyZXNwb25zZSA9IE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlLT5uZXcoY29kZSA9PiAyMDAsIG1lc3NhZ2UgPT4gJ09LJyk7CiAgJHJlc3BvbnNlLT5oZWFkZXJzLT5jb250ZW50X3R5cGUoJ2FwcGxpY2F0aW9uL2pzb24nKTsKICAkcmVzcG9uc2UtPmhlYWRlcnMtPmhlYWRlcignTXktUmVzcG9uc2UtSGVhZGVyJywgJzEyMycpOwogICRyZXNwb25zZS0+Ym9keSgneyJzdGF0dXMiOiAib2sifScpOwogICRyZXN1bHRzID0gJG9wZW5hcGktPnZhbGlkYXRlX3Jlc3BvbnNlKCRyZXNwb25zZSwgeyByZXF1ZXN0ID0+ICRyZXF1ZXN0IH0pOwogIHNheSAkcmVzdWx0czsKICBzYXkgJyc7ICMgbmV3bGluZQogIHNheSBKU09OOjpNYXliZVhTLT5uZXcoY29udmVydF9ibGVzc2VkID0+IDEsIGNhbm9uaWNhbCA9PiAxLCBwcmV0dHkgPT4gMSwgaW5kZW50X2xlbmd0aCA9PiAyKS0+ZW5jb2RlKCRyZXN1bHRzKTsKCnByaW50czoKCiAgcmVxdWVzdDoKICAnL3JlcXVlc3QvYm9keS9oZWxsbyc6IGdvdCBpbnRlZ2VyLCBub3Qgc3RyaW5nCiAgJy9yZXF1ZXN0L2JvZHknOiBub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkCgogIHsKICAgICJlcnJvcnMiIDogWwogICAgICB7CiAgICAgICAgImFic29sdXRlS2V5d29yZExvY2F0aW9uIiA6ICJodHRwczovL2V4YW1wbGUuY29tL2FwaSMvcGF0aHMvfjFmb29+MSU3QmZvb19pZCU3RC9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMvaGVsbG8vdHlwZSIsCiAgICAgICAgImVycm9yIiA6ICJnb3QgaW50ZWdlciwgbm90IHN0cmluZyIsCiAgICAgICAgImluc3RhbmNlTG9jYXRpb24iIDogIi9yZXF1ZXN0L2JvZHkvaGVsbG8iLAogICAgICAgICJrZXl3b3JkTG9jYXRpb24iIDogIi9wYXRocy9+MWZvb34xe2Zvb19pZH0vcG9zdC9yZXF1ZXN0Qm9keS9jb250ZW50L2FwcGxpY2F0aW9ufjFqc29uL3NjaGVtYS9wcm9wZXJ0aWVzL2hlbGxvL3R5cGUiCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAiYWJzb2x1dGVLZXl3b3JkTG9jYXRpb24iIDogImh0dHBzOi8vZXhhbXBsZS5jb20vYXBpIy9wYXRocy9+MWZvb34xJTdCZm9vX2lkJTdEL3Bvc3QvcmVxdWVzdEJvZHkvY29udGVudC9hcHBsaWNhdGlvbn4xanNvbi9zY2hlbWEvcHJvcGVydGllcyIsCiAgICAgICAgImVycm9yIiA6ICJub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkIiwKICAgICAgICAiaW5zdGFuY2VMb2NhdGlvbiIgOiAiL3JlcXVlc3QvYm9keSIsCiAgICAgICAgImtleXdvcmRMb2NhdGlvbiIgOiAiL3BhdGhzL34xZm9vfjF7Zm9vX2lkfS9wb3N0L3JlcXVlc3RCb2R5L2NvbnRlbnQvYXBwbGljYXRpb25+MWpzb24vc2NoZW1hL3Byb3BlcnRpZXMiCiAgICAgIH0KICAgIF0sCiAgICAidmFsaWQiIDogZmFsc2UKICB9CgogIHJlc3BvbnNlOgogIHZhbGlkCgogIHsKICAgICJ2YWxpZCIgOiB0cnVlCiAgfQoKPWhlYWQxIERFU0NSSVBUSU9OCgpUaGlzIG1vZHVsZSBwcm92aWRlcyB2YXJpb3VzIHRvb2xzIGZvciB3b3JraW5nIHdpdGggYW4KTDxPcGVuQVBJIFNwZWNpZmljYXRpb24gdjMuMSBkb2N1bWVudHxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlbmFwaS1kb2N1bWVudD4gd2l0aGluCnlvdXIgYXBwbGljYXRpb24uIFRoZSBKU09OIFNjaGVtYSBldmFsdWF0b3IgaXMgZnVsbHkgc3BlY2lmaWNhdGlvbi1jb21wbGlhbnQ7IHRoZSBPcGVuQVBJIGV2YWx1YXRvcgphaW1zIHRvIGJlIGJ1dCBzb21lIGZlYXR1cmVzIGFyZSBub3QgeWV0IGF2YWlsYWJsZS4gTXkgYmVsaWVmIGlzIHRoYXQgbWlzc2luZyBmZWF0dXJlcyBhcmUgYmV0dGVyCnRoYW4gZmVhdHVyZXMgdGhhdCBzZWVtIHRvIHdvcmsgYnV0IGFjdHVhbGx5IGN1dCBjb3JuZXJzIGZvciBzaW1wbGljaXR5LgoKPWZvciBQb2Q6OkNvdmVyYWdlIEJVSUxEQVJHUyBUSEFXCgo9Zm9yIHN0b3B3b3JkcyBzY2hlbWFzIGpzb25TY2hlbWFEaWFsZWN0IG1ldGFzY2hlbWEgc3Vic2NoZW1hIHBlcmxpc2ggb3BlcmF0aW9uSWQgb3BlbmFwaSBNb2pvbGljaW91cwoKPWhlYWQxIENPTlNUUlVDVE9SIEFSR1VNRU5UUwoKSWYgY29uc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaXMgbm90IHN1Y2Nlc3NmdWwsIGZvciBleGFtcGxlIHRoZSBkb2N1bWVudCBoYXMgYSBzeW50YXggZXJyb3IsIHRoZQpjYWxsIHRvIEM8bmV3KCk+IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiBCZSBjYXJlZnVsIGFib3V0IGV4YW1pbmluZyB0aGlzIGV4Y2VwdGlvbiwgZm9yIGl0IG1pZ2h0IGJlCmEgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QsIHdoaWNoIGhhcyBhIGJvb2xlYW4gb3ZlcmxvYWQgb2YgZmFsc2Ugd2hlbiBpdCBjb250YWlucwplcnJvcnMhIEJ1dCB5b3UgbmV2ZXIgZG8gQzxpZiAoJEApIHsgLi4uIH0+LCByaWdodD8KCj1oZWFkMiBvcGVuYXBpX3VyaQoKVGhlIFVSSSB0aGF0IGlkZW50aWZpZXMgdGhlIE9wZW5BUEkgZG9jdW1lbnQuCklnbm9yZWQgaWYgTDwvb3BlbmFwaV9kb2N1bWVudD4gaXMgcHJvdmlkZWQuCgpJdCBpcyB1c2VkIGF0IHJ1bnRpbWUgYXMgdGhlIGJhc2UgZm9yIGFic29sdXRlIFVSSXMgdXNlZCBpbiBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpSZXN1bHQ+IG9iamVjdHMsCmFsb25nIHdpdGggdGhlIHJlcXVlc3QncyBDPEhvc3Q+IGhlYWRlciBhbmQgc2NoZW1lIChlLmcuIEM8aHR0cHM+KSwgd2hlbiBhdmFpbGFibGUuCgo9aGVhZDIgb3BlbmFwaV9zY2hlbWEKClRoZSBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBPcGVuQVBJIHYzLjEgZG9jdW1lbnQgKGFzIHNwZWNpZmllZCBhdApMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4pLiBJZ25vcmVkIGlmIEw8L29wZW5hcGlfZG9jdW1lbnQ+IGlzIHByb3ZpZGVkLgoKPWhlYWQyIG9wZW5hcGlfZG9jdW1lbnQKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQST4gZG9jdW1lbnQgdGhhdCBob2xkcyB0aGUgT3BlbkFQSSBpbmZvcm1hdGlvbiB0byBiZQp1c2VkIGZvciB2YWxpZGF0aW9uLiBJZiBpdCBpcyBub3QgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCB0aGVuIGJvdGggTDwvb3BlbmFwaV91cmk+IGFuZApMPC9vcGVuYXBpX3NjaGVtYT4gQjxNVVNUPiBiZSBwcm92aWRlZCwgYW5kIEw8L2V2YWx1YXRvcj4gd2lsbCBhbHNvIGJlIHVzZWQgaWYgcHJvdmlkZWQuCgo9aGVhZDIgZXZhbHVhdG9yCgpUaGUgTDxKU09OOjpTY2hlbWE6Ok1vZGVybj4gb2JqZWN0IHRvIHVzZSBmb3IgYWxsIFVSSSByZXNvbHV0aW9uIGFuZCBKU09OIFNjaGVtYSBldmFsdWF0aW9uLgpJZ25vcmVkIGlmIEw8L29wZW5hcGlfZG9jdW1lbnQ+IGlzIHByb3ZpZGVkLiBPcHRpb25hbC4KCj1oZWFkMSBBQ0NFU1NPUlMvTUVUSE9EUwoKPWhlYWQyIG9wZW5hcGlfdXJpCgpUaGUgVVJJIHRoYXQgaWRlbnRpZmllcyB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCj1oZWFkMiBvcGVuYXBpX3NjaGVtYQoKVGhlIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIE9wZW5BUEkgZG9jdW1lbnQuIFNlZSBMPHRoZSBzcGVjaWZpY2F0aW9uL2h0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4uCgo9aGVhZDIgb3BlbmFwaV9kb2N1bWVudAoKVGhlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkRvY3VtZW50OjpPcGVuQVBJPiBkb2N1bWVudCB0aGF0IGhvbGRzIHRoZSBPcGVuQVBJIGluZm9ybWF0aW9uIHRvIGJlCnVzZWQgZm9yIHZhbGlkYXRpb24uCgo9aGVhZDIgZG9jdW1lbnRfZ2V0CgogIG15ICRwYXJhbWV0ZXJfZGF0YSA9ICRvcGVuYXBpLT5kb2N1bWVudF9nZXQoJy9wYXRocy9+MWZvb34xe2Zvb19pZH0vZ2V0L3BhcmFtZXRlcnMvMCcpOwoKRmV0Y2hlcyB0aGUgc3Vic2NoZW1hIGF0IHRoZSBwcm92aWRlZCBKU09OIHBvaW50ZXIuClByb3hpZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQ6Ok9wZW5BUEkvZ2V0Pi4KVGhpcyBpcyBub3QgcmVjdXJzaXZlIChkb2VzIG5vdCBmb2xsb3cgQzwkcmVmPiBjaGFpbnMpIC0tIGZvciB0aGF0LCB1c2UKQzw8ICRvcGVuYXBpLT5yZWN1cnNpdmVfZ2V0KE1vam86OlVSTC0+bmV3LT5mcmFnbWVudCgkanNvbl9wb2ludGVyKSkgPj4sIHNlZQpMPC9yZWN1cnNpdmVfZ2V0Pi4KCj1oZWFkMiBldmFsdWF0b3IKClRoZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuPiBvYmplY3QgdG8gdXNlIGZvciBhbGwgVVJJIHJlc29sdXRpb24gYW5kIEpTT04gU2NoZW1hIGV2YWx1YXRpb24uCgo9aGVhZDIgdmFsaWRhdGVfcmVxdWVzdAoKICAkcmVzdWx0ID0gJG9wZW5hcGktPnZhbGlkYXRlX3JlcXVlc3QoCiAgICAkcmVxdWVzdCwKICAgICMgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IGNhbiBjb250YWluIGFueSBjb21iaW5hdGlvbiBvZjoKICAgIG15ICRvcHRpb25zID0gewogICAgICBwYXRoX3RlbXBsYXRlID0+ICcvZm9vL3thcmcxfS9iYXIve2FyZzJ9JywKICAgICAgb3BlcmF0aW9uX2lkID0+ICdteV9vcGVyYXRpb25faWQnLAogICAgICBwYXRoX2NhcHR1cmVzID0+IHsgYXJnMSA9PiAxLCBhcmcyID0+IDIgfSwKICAgICAgbWV0aG9kID0+ICdnZXQnLAogICAgfSwKICApOwoKVmFsaWRhdGVzIGFuIEw8SFRUUDo6UmVxdWVzdD4sIEw8UGxhY2s6OlJlcXVlc3Q+LCBMPENhdGFseXN0OjpSZXF1ZXN0PiBvciBMPE1vam86Ok1lc3NhZ2U6OlJlcXVlc3Q+Cm9iamVjdCBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIE9wZW5BUEkgdjMuMSBkb2N1bWVudCwgcmV0dXJuaW5nIGEKTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6UmVzdWx0PiBvYmplY3QuCgpBYnNvbHV0ZSBVUklzIGluIHRoZSByZXN1bHQgb2JqZWN0IGFyZSBjb25zdHJ1Y3RlZCBieSByZXNvbHZpbmcgdGhlIG9wZW5hcGkgZG9jdW1lbnQgcGF0aCBhZ2FpbnN0CnRoZSBMPC9vcGVuYXBpX3VyaT4sIGFzIHdlbGwgYXMgdGhlIEM8SG9zdD4gaGVhZGVyIG9mIHRoZSByZXF1ZXN0IGlmIGEgaG9zdCBjb21wb25lbnQgaXMgbm90CmluY2x1ZGVkIGluIHRoZSBMPC9vcGVuYXBpX3VyaT4uCgpUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIGhhc2hyZWYgdGhhdCBjb250YWlucyBleHRyYSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVxdWVzdCwKY29ycmVzcG9uZGluZyB0byB0aGUgdmFsdWVzIGV4cGVjdGVkIGJ5IEw8L2ZpbmRfcGF0aD4gYmVsb3cuIEl0IGlzIHBvcHVsYXRlZCB3aXRoIHNvbWUgaW5mb3JtYXRpb24KYWJvdXQgdGhlIHJlcXVlc3Q6CnNhdmUgaXQgYW5kIHBhc3MgaXQgdG8gYSBsYXRlciBMPC92YWxpZGF0ZV9yZXNwb25zZT4gKGNvcnJlc3BvbmRpbmcgdG8gYSByZXNwb25zZSBmb3IgdGhpcyByZXF1ZXN0KQp0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgoKPWhlYWQyIHZhbGlkYXRlX3Jlc3BvbnNlCgogICRyZXN1bHQgPSAkb3BlbmFwaS0+dmFsaWRhdGVfcmVzcG9uc2UoCiAgICAkcmVzcG9uc2UsCiAgICB7CiAgICAgIHBhdGhfdGVtcGxhdGUgPT4gJy9mb28ve2FyZzF9L2Jhci97YXJnMn0nLAogICAgICByZXF1ZXN0ID0+ICRyZXF1ZXN0LAogICAgfSwKICApOwoKVmFsaWRhdGVzIGFuIEw8SFRUUDo6UmVzcG9uc2U+LCBMPFBsYWNrOjpSZXNwb25zZT4sIEw8Q2F0YWx5c3Q6OlJlc3BvbnNlPiBvciBMPE1vam86Ok1lc3NhZ2U6OlJlc3BvbnNlPgpvYmplY3QgYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBPcGVuQVBJIHYzLjEgZG9jdW1lbnQsIHJldHVybmluZyBhCkw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OlJlc3VsdD4gb2JqZWN0LgoKQWJzb2x1dGUgVVJJcyBpbiB0aGUgcmVzdWx0IG9iamVjdCBhcmUgY29uc3RydWN0ZWQgYnkgcmVzb2x2aW5nIHRoZSBvcGVuYXBpIGRvY3VtZW50IHBhdGggYWdhaW5zdAp0aGUgTDwvb3BlbmFwaV91cmk+LCBhcyB3ZWxsIGFzIHRoZSBDPEhvc3Q+IGhlYWRlciBvZiB0aGUgcmVxdWVzdCBpZiB0aGUgcmVxdWVzdCBpcyBwcm92aWRlZCBhbmQgaWYgYQpob3N0IGNvbXBvbmVudCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIEw8L29wZW5hcGlfdXJpPi4KClRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgaGFzaHJlZiB0aGF0IGNvbnRhaW5zIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0CmNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlc3BvbnNlLCBhcyBpbiBMPC9maW5kX3BhdGg+LgoKQzxyZXF1ZXN0PiBpcyBhbHNvIGFjY2VwdGVkIGFzIGEga2V5IGluIHRoZSBoYXNocmVmLCByZXByZXNlbnRpbmcgdGhlIG9yaWdpbmFsIHJlcXVlc3Qgb2JqZWN0IHRoYXQKY29ycmVzcG9uZHMgdG8gdGhpcyByZXNwb25zZSAoYXMgbm90IGFsbCBIVFRQIGxpYnJhcmllcyBsaW5rIHRvIHRoZSByZXF1ZXN0IGluIHRoZSByZXNwb25zZSBvYmplY3QpLgoKPWhlYWQyIGZpbmRfcGF0aAoKICAkcmVzdWx0ID0gJHNlbGYtPmZpbmRfcGF0aCgkb3B0aW9ucyk7CgpVc2VzIGluZm9ybWF0aW9uIGluIHRoZSByZXF1ZXN0IHRvIGRldGVybWluZSB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KQzxyZXF1ZXN0PiBzaG91bGQgYmUgcHJvdmlkZWQgaWYgYXZhaWxhYmxlLCBidXQgYWRkaXRpb25hbCBkYXRhIGNhbiBiZSB1c2VkIGluc3RlYWQKKHdoaWNoIGlzIHBvcHVsYXRlZCBieSBlYXJsaWVyIEw8L3ZhbGlkYXRlX3JlcXVlc3Q+IG9yIEw8L2ZpbmRfcGF0aD4gY2FsbHMgdG8gdGhlIHNhbWUgcmVxdWVzdCkuCgpUaGUgc2luZ2xlIGFyZ3VtZW50IGlzIGEgaGFzaHJlZiB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0LiBQb3NzaWJsZSB2YWx1ZXMKaW5jbHVkZToKCj1vdmVyIDQKCj1pdGVtICoKCkM8cmVxdWVzdD46IHRoZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBIVFRQIHJlcXVlc3QuIFNob3VsZCBiZSBwcm92aWRlZCB3aGVuIGF2YWlsYWJsZS4KCj1pdGVtICoKCkM8cGF0aF90ZW1wbGF0ZT46IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdCBVUkksIHdpdGggcGxhY2Vob2xkZXJzIGluIGJyYWNlcyAoZS5nLiBDPC9wZXRzL3twZXRJZH0+KTsgc2VlIEw8aHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhdGhzLW9iamVjdD4uCgo9aXRlbSAqCgpDPG9wZXJhdGlvbl9pZD46IGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEw8b3BlcmF0aW9uSWR8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbi9wYXRocy5odG1sI3RoZS1lbmRwb2ludHMtbGlzdD4gYXQgYSBwYXJ0aWN1bGFyIHBhdGgtdGVtcGxhdGUgYW5kIEhUVFAgbG9jYXRpb24gdW5kZXIgQzwvcGF0aHM+Cgo9aXRlbSAqCgpDPHBhdGhfY2FwdHVyZXM+OiBhIGhhc2hyZWYgbWFwcGluZyBwbGFjZWhvbGRlcnMgaW4gdGhlIHBhdGggdG8gdGhlaXIgYWN0dWFsIHZhbHVlcyBpbiB0aGUgcmVxdWVzdCBVUkkKCj1pdGVtICoKCkM8bWV0aG9kPjogdGhlIEhUVFAgbWV0aG9kIHVzZWQgYnkgdGhlIHJlcXVlc3QgKHVzZWQgY2FzZS1pbnNlbnNpdGl2ZWx5KQoKPWJhY2sKCkFsbCBvZiB0aGVzZSB2YWx1ZXMgYXJlIG9wdGlvbmFsICh1bmxlc3MgQzxyZXF1ZXN0PiBpcyBvbWl0dGVkKSwgYW5kIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZQpyZXF1ZXN0IFVSSSBhcyBuZWVkZWQgKGFsYmVpdCBsZXNzCmVmZmljaWVudGx5IHRoYW4gaWYgdGhleSB3ZXJlIHByb3ZpZGVkKS4gQWxsIHBhc3NlZC1pbiB2YWx1ZXMgTVVTVCBiZSBjb25zaXN0ZW50IHdpdGggZWFjaCBvdGhlciBhbmQKdGhlIHJlcXVlc3QgVVJJLgoKV2hlbiBzdWNjZXNzZnVsLCB0aGUgb3B0aW9ucyBoYXNoIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGgga2V5cyBDPHBhdGhfdGVtcGxhdGU+LCBDPHBhdGhfY2FwdHVyZXM+LApDPG1ldGhvZD4sIGFuZCBDPG9wZXJhdGlvbl9pZD4sCmFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUuCldoZW4gbm90IHN1Y2Nlc3NmdWwsIHRoZSBvcHRpb25zIGhhc2ggd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBrZXkgQzxlcnJvcnM+LCBhbiBhcnJheXJlZiBjb250YWluaW5nCmEgTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RXJyb3I+IG9iamVjdCwgYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuIE90aGVyIHZhbHVlcyBtYXkgYWxzbyBiZQpwb3B1bGF0ZWQgaWYgdGhleSBjYW4gYmUgc3VjY2Vzc2Z1bGx5IGNhbGN1bGF0ZWQuCgpJbiBhZGRpdGlvbiwgdGhlc2UgdmFsdWVzIGFyZSBwb3B1bGF0ZWQgaW4gdGhlIG9wdGlvbnMgaGFzaCAod2hlbiBhdmFpbGFibGUpOgoKPW92ZXIgNAoKPWl0ZW0gKgoKQzxvcGVyYXRpb25fdXJpPjogYSBVUkkgaW5kaWNhdGluZyB0aGUgZG9jdW1lbnQgbG9jYXRpb24gb2YgdGhlIG9wZXJhdGlvbiBvYmplY3QgZm9yIHRoZSByZXF1ZXN0LCBhZnRlciBmb2xsb3dpbmcgYW55IHJlZmVyZW5jZXMgKHVzdWFsbHkgc29tZXRoaW5nIHVuZGVyIEM8L3BhdGhzLz4sIGJ1dCBtYXkgYmUgaW4gYW5vdGhlciBkb2N1bWVudCkuIFVzZSBDPDwgJG9wZW5hcGktPmV2YWx1YXRvci0+Z2V0KCR1cmkpID4+IHRvIGZldGNoIHRoaXMgY29udGVudCAoc2VlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vZ2V0PikuIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSBzYW1lIGFzIEM8PCAkb3BlbmFwaS0+cmVjdXJzaXZlX2dldChNb2pvOjpVUkwtPm5ldy0+ZnJhZ21lbnQoSlNPTjo6U2NoZW1hOjpNb2Rlcm46OlV0aWxpdGllczo6anNvbnAoJy9wYXRocycsICRvcHRpb25zLT57cGF0aF90ZW1wbGF0ZX17JG9wdGlvbnMtPnttZXRob2R9fSkpKSA+Pi4gKFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIGF0IEw8aHR0cHM6Ly9sZWFybi5vcGVuYXBpcy5vcmcvc3BlY2lmaWNhdGlvbi9wYXRocy5odG1sI3RoZS1lbmRwb2ludHMtbGlzdD4gb3IgaW4gdGhlIHNwZWNpZmljYXRpb24gYXQgTDzCpzQuOC4xMCBvZiB0aGUgc3BlY2lmaWNhdGlvbnxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdD4uKQoKPWl0ZW0gKgoKQzxyZXF1ZXN0PiAobm90IG5lY2Vzc2FyaWx5IHdoYXQgd2FzIHBhc3NlZCBpbjogdGhpcyBpcyBhbHdheXMgYSBMPE1vam86Ok1lc3NhZ2U6OlJlcXVlc3Q+KQoKPWJhY2sKCllvdSBjYW4gZmluZCB0aGUgYXNzb2NpYXRlZCBvcGVyYXRpb24gb2JqZWN0IGJ5IHVzaW5nIGVpdGhlciBDPG9wZXJhdGlvbl91cmk+LApvciBieSBjYWxsaW5nIEM8PCAkb3BlbmFwaS0+b3BlbmFwaV9kb2N1bWVudC0+Z2V0X29wZXJhdGlvbklkX3BhdGgoJG9wZXJhdGlvbl9pZCkgPj4KKHNlZSBMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQSS9nZXRfb3BlcmF0aW9uSWRfcGF0aD4pIChub3RlIHRoYXQgdGhlIGxhdHRlciB3aWxsCmJlIHJlbW92ZWQgaW4gYSBzdWJzZXF1ZW50IHJlbGVhc2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb3BlcmF0aW9ucyBleGlzdGluZyBpbiBvdGhlciBkb2N1bWVudHMpLgoKTm90ZSB0aGF0IHRoZSBMPEM8L3NlcnZlcnM+fGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZXJ2ZXItb2JqZWN0PiBzZWN0aW9uIG9mIHRoZQpPcGVuQVBJIGRvY3VtZW50IGlzIG5vdCB1c2VkIGZvciBwYXRoIG1hdGNoaW5nIGF0IHRoaXMgdGltZSwgZm9yIGVpdGhlciBzY2hlbWUgYW5kIGhvc3QgbWF0Y2hpbmcgbm9yCnBhdGggcHJlZml4ZXMuIEZvciBub3csIGlmIHlvdSB1c2UgYSBwYXRoIHByZWZpeCBpbiBDPHNlcnZlcnM+IGVudHJpZXMgeW91IHdpbGwgbmVlZCB0byBhZGQgdGhpcyB0bwp0aGUgcGF0aCB0ZW1wbGF0ZXMgdW5kZXIgYC9wYXRoc2AuCgo9aGVhZDIgcmVjdXJzaXZlX2dldAoKR2l2ZW4gYSB1cmkgb3IgdXJpLXJlZmVyZW5jZSwgZ2V0IHRoZSBkZWZpbml0aW9uIGF0IHRoYXQgbG9jYXRpb24sIGZvbGxvd2luZyBhbnkgQzwkcmVmPnMgYWxvbmcgdGhlCndheS4gSW5jbHVkZSB0aGUgZXhwZWN0ZWQgZGVmaW5pdGlvbiB0eXBlCihvbmUgb2YgQzxzY2hlbWE+LCBDPHJlc3BvbnNlPiwgQzxwYXJhbWV0ZXI+LCBDPGV4YW1wbGU+LCBDPHJlcXVlc3QtYm9keT4sIEM8aGVhZGVyPiwKQzxzZWN1cml0eS1zY2hlbWU+LCBDPGxpbms+LCBDPGNhbGxiYWNrcz4sIG9yIEM8cGF0aC1pdGVtPikKZm9yIHZhbGlkYXRpb24gb2YgdGhlIGVudGlyZSByZWZlcmVuY2UgY2hhaW4uCgpSZXR1cm5zIHRoZSBkYXRhIGluIHNjYWxhciBjb250ZXh0LCBvciBhIHR1cGxlIG9mIHRoZSBkYXRhIGFuZCB0aGUgY2Fub25pY2FsIFVSSSBvZiB0aGUKcmVmZXJlbmNlZCBsb2NhdGlvbiBpbiBsaXN0IGNvbnRleHQuCgpJZiB0aGUgcHJvdmlkZWQgbG9jYXRpb24gaXMgcmVsYXRpdmUsIHRoZSBtYWluIG9wZW5hcGkgZG9jdW1lbnQgaXMgdXNlZCBmb3IgdGhlIGJhc2UgVVJJLgpJZiB5b3UgaGF2ZSBhIGxvY2FsIGpzb24gcG9pbnRlciB5b3Ugd2FudCB0byByZXNvbHZlLCB5b3UgY2FuIHR1cm4gaXQgaW50byBhIHVyaS1yZWZlcmVuY2UgYnkKcHJlcGVuZGluZyBDPCM+LgoKICBteSAkc2NoZW1hID0gJG9wZW5hcGktPnJlY3Vyc2l2ZV9nZXQoJyMvY29tcG9uZW50cy9wYXJhbWV0ZXJzL0NvbnRlbnQtRW5jb2RpbmcnLCAncGFyYW1ldGVyJyk7CgogICMgc3RhcnRzIHdpdGggYSBKU09OOjpTY2hlbWE6Ok1vZGVybiBvYmplY3QgKFRPRE8pCiAgbXkgJHNjaGVtYSA9ICRqcy0+cmVjdXJzaXZlX2dldCgnaHR0cHM6Ly8vb3BlbmFwaV9kb2MueWFtbCMvY29tcG9uZW50cy9zY2hlbWFzL215X29iamVjdCcpCiAgbXkgJHNjaGVtYSA9ICRqcy0+cmVjdXJzaXZlX2dldCgnaHR0cHM6Ly9sb2NhbGhvc3Q6MTIzNC9teV9zcGVjIy8kZGVmcy9teV9vYmplY3QnKQoKPWhlYWQyIGNhbm9uaWNhbF91cmkKCkFuIGFjY2Vzc29yIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm46OkRvY3VtZW50L2Nhbm9uaWNhbF91cmk+LgoKPWhlYWQyIHNjaGVtYQoKQW4gYWNjZXNzb3IgdGhhdCBkZWxlZ2F0ZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybjo6RG9jdW1lbnQvc2NoZW1hPi4KCj1oZWFkMiBnZXRfbWVkaWFfdHlwZQoKQW4gYWNjZXNzb3IgdGhhdCBkZWxlZ2F0ZXMgdG8gTDxKU09OOjpTY2hlbWE6Ok1vZGVybi9nZXRfbWVkaWFfdHlwZT4uCgo9aGVhZDIgYWRkX21lZGlhX3R5cGUKCkEgc2V0dGVyIHRoYXQgZGVsZWdhdGVzIHRvIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vYWRkX21lZGlhX3R5cGU+LgoKPWhlYWQxIENBQ0hJTkcKCj1mb3Igc3RvcHdvcmRzIHByZWZvcmtpbmcKClZlcnkgbGFyZ2UgT3BlbkFQSSBkb2N1bWVudHMgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRpbWUgdG8gYmUKbG9hZGVkIGFuZCBwYXJzZWQuIFlvdSBjYW4gcmVkdWNlIHRoZSBpbXBhY3QgdG8geW91ciBwcmVmb3JraW5nIGFwcGxpY2F0aW9uIGJ5IGxvYWRpbmcgYWxsIG5lY2Vzc2FyeQpkb2N1bWVudHMgYXQgc3RhcnR1cCwgYW5kIGltcGFjdCBjYW4gYmUgZnVydGhlciByZWR1Y2VkIGJ5IHNhdmluZyBvYmplY3RzIHRvIGNhY2hlIGFuZCB0aGVuCnJlbG9hZGluZyB0aGVtIChwZXJoYXBzIGJ5IHVzaW5nIGEgdGltZXN0YW1wIG9yIGNoZWNrc3VtIHRvIGRldGVybWluZSBpZiBhIGZyZXNoIHJlbG9hZCBpcyBuZWVkZWQpLgoKICBzdWIgZ2V0X29wZW5hcGkgKC4uLikgewogICAgbXkgJHNlcmlhbGl6ZWRfZmlsZSA9IFBhdGg6OlRpbnk6OnBhdGgoJHNlcmlhbGl6ZWRfZmlsZW5hbWUpOwogICAgbXkgJG9wZW5hcGlfZmlsZSA9IFBhdGg6OlRpbnk6OnBhdGgoJG9wZW5hcGlfZmlsZW5hbWUpOwogICAgbXkgJG9wZW5hcGk7CiAgICBpZiAoJHNlcmlhbGl6ZWRfZmlsZS0+c3RhdC0+bXRpbWUgPCAkb3BlbmFwaV9maWxlLT5zdGF0LT5tdGltZSkpIHsKICAgICAgJG9wZW5hcGkgPSBPcGVuQVBJOjpNb2Rlcm4tPm5ldygKICAgICAgICBvcGVuYXBpX3VyaSA9PiAnL2FwaScsCiAgICAgICAgb3BlbmFwaV9zY2hlbWEgPT4gZGVjb2RlX2pzb24oJG9wZW5hcGlfZmlsZS0+c2x1cnBfcmF3KSwgIyB5b3VyIG9wZW5hcGkgZG9jdW1lbnQKICAgICAgKTsKICAgICAgJG9wZW5hcGktPmV2YWx1YXRvci0+YWRkX3NjaGVtYShkZWNvZGVfanNvbiguLi4pKTsgICMgYW55IG90aGVyIG5lZWRlZCBzY2hlbWFzCiAgICAgIG15ICRmcm96ZW4gPSBTZXJlYWw6OkVuY29kZXItPm5ldyh7IGZyZWV6ZV9jYWxsYmFja3MgPT4gMSB9KS0+ZW5jb2RlKCRvcGVuYXBpKTsKICAgICAgJHNlcmlhbGl6ZWRfZmlsZS0+c3Bld19yYXcoJGZyb3plbik7CiAgICB9CiAgICBlbHNlIHsKICAgICAgbXkgJGZyb3plbiA9ICRzZXJpYWxpemVkX2ZpbGUtPnNsdXJwX3JhdzsKICAgICAgJG9wZW5hcGkgPSBTZXJlYWw6OkRlY29kZXItPm5ldy0+ZGVjb2RlKCRmcm96ZW4pOwogICAgfQoKICAgICMgYWRkIGN1c3RvbSBmb3JtYXQgdmFsaWRhdGlvbnMsIG1lZGlhIHR5cGVzIGFuZCBlbmNvZGluZ3MgaGVyZQogICAgJG9wZW5hcGktPmV2YWx1YXRvci0+YWRkX21lZGlhX3R5cGUoLi4uKTsKCiAgICByZXR1cm4gJG9wZW5hcGk7CiAgfQoKU2VlIGFsc28gTDxKU09OOjpTY2hlbWE6Ok1vZGVybi9DQUNISU5HPi4KCj1oZWFkMSBPTiBUSEUgVVNFIE9GIEpTT04gU0NIRU1BUwoKRW1iZWRkZWQgSlNPTiBTY2hlbWFzLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIEM8c2NoZW1hPiBrZXl3b3JkLCBhcmUgZnVsbHkgZHJhZnQyMDIwLTEyLWNvbXBsaWFudCwKYXMgcGVyIHRoZSBzcGVjLCBhbmQgaW1wbGVtZW50ZWQgd2l0aCBMPEpTT046OlNjaGVtYTo6TW9kZXJuPi4gVW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgdXNlIG9mIHRoZQpMPGpzb25TY2hlbWFEaWFsZWN0fGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzcGVjaWZ5aW5nLXNjaGVtYS1kaWFsZWN0cz4ga2V5d29yZCwgdGhlaXIKbWV0YXNjaGVtYSBpcyBMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzLzMuMS9kaWFsZWN0L2Jhc2U+LCB3aGljaCBhbGxvd3MgZm9yIHVzZSBvZiB0aGUKT3BlbkFQSS1zcGVjaWZpYyBrZXl3b3JkcyAoQzxkaXNjcmltaW5hdG9yPiwgQzx4bWw+LCBDPGV4dGVybmFsRG9jcz4sIGFuZCBDPGV4YW1wbGU+KSwgYXMgZGVmaW5lZCBpbgpMPHRoZSBzcGVjaWZpY2F0aW9uL2h0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzY2hlbWEtb2JqZWN0Pi4gRm9ybWF0IHZhbGlkYXRpb24gaXMgdHVybmVkCkI8b24+LCBhbmQgdGhlIHVzZSBvZiBjb250ZW50KiBrZXl3b3JkcyBpcyBvZmYgKHNlZQpMPEpTT046OlNjaGVtYTo6TW9kZXJuL3ZhbGlkYXRlX2NvbnRlbnRfc2NoZW1hcz4pLgoKUmVmZXJlbmNlcyAod2l0aCB0aGUgQzwkcmVmPikga2V5d29yZCBtYXkgcmVmZXJlbmNlIGFueSBwb3NpdGlvbiB3aXRoaW4gdGhlIGVudGlyZSBPcGVuQVBJIGRvY3VtZW50OwphcyBzdWNoLCBqc29uIHBvaW50ZXJzIGFyZSByZWxhdGl2ZSB0byB0aGUgQjxyb290PiBvZiB0aGUgZG9jdW1lbnQsIG5vdCB0aGUgcm9vdCBvZiB0aGUgc3Vic2NoZW1hCml0c2VsZi4gUmVmZXJlbmNlcyB0byBvdGhlciBkb2N1bWVudHMgYXJlIGFsc28gcGVybWl0dGVkLCBwcm92aWRlZCB0aG9zZSBkb2N1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZAppbnRvIHRoZSBldmFsdWF0b3IgaW4gYWR2YW5jZSAoc2VlIEw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4vYWRkX3NjaGVtYT4pLgoKVmFsdWVzIGFyZSBnZW5lcmFsbHkgdHJlYXRlZCBhcyBzdHJpbmdzIGZvciB0aGUgcHVycG9zZSBvZiBzY2hlbWEgZXZhbHVhdGlvbi4gSG93ZXZlciwgaWYgdGhlIHRvcApsZXZlbCBvZiB0aGUgc2NoZW1hIGNvbnRhaW5zIEM8InR5cGUiOiAibnVtYmVyIj4gb3IgQzwidHlwZSI6ICJpbnRlZ2VyIj4sIHRoZW4gdGhlIHZhbHVlIHdpbGwgYmUKKGF0dGVtcHRlZCB0byBiZSkgY29lcmNlZCBpbnRvIGEgbnVtYmVyIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gdGhlIEpTT04gU2NoZW1hIGV2YWx1YXRvci4KVHlwZSBjb2VyY2lvbiB3aWxsIEI8bm90PiBiZSBkb25lIGlmIHRoZSBDPHR5cGU+IGtleXdvcmQgaXMgb21pdHRlZC4KVGhpcyBsZXRzIHlvdSB1c2UgbnVtZXJpYyBrZXl3b3JkcyBzdWNoIGFzIEM8bWF4aW11bT4gYW5kIEM8bXVsdGlwbGVPZj4gaW4geW91ciBzY2hlbWFzLgpJdCBhbHNvIHJlc29sdmVzIGluY29uc2lzdGVuY2llcyB0aGF0IGNhbiBhcmlzZSB3aGVuIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMgYXJlIGNyZWF0ZWQKbWFudWFsbHkgaW4gYSB0ZXN0IGVudmlyb25tZW50IChhcyBvcHBvc2VkIHRvIGJlaW5nIHBhcnNlZCBmcm9tIGluY29taW5nIG5ldHdvcmsgdHJhZmZpYykgYW5kIGNhbgp0aGVyZWZvcmUgaW5hZHZlcnRlbnRseSBjb250YWluIHBlcmxpc2ggbnVtYmVycyByYXRoZXIgdGhhbiBzdHJpbmdzLgoKPWhlYWQxIExJTUlUQVRJT05TCgpBbGwgbWVzc2FnZSB2YWxpZGF0aW9uIGlzIGRvbmUgdXNpbmcgTDxNb2pvbGljaW91cz4gb2JqZWN0cyAoTDxNb2pvOjpNZXNzYWdlOjpSZXF1ZXN0PiBhbmQKTDxNb2pvOjpNZXNzYWdlOjpSZXNwb25zZT4pLiBJZiBtZXNzYWdlcyBvZiBvdGhlciB0eXBlcyBhcmUgcGFzc2VkLCBjb252ZXJzaW9uIGlzIGRvbmUgb24gYQpiZXN0LWVmZm9ydCBiYXNpcywgYnV0IHNpbmNlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIGFkaGVyZW5jZSB0byB0aGUgUkZDCnNwZWNzLCBzb21lIHZhbGlkYXRpb24gZXJyb3JzIG1heSBvY2N1ciBlLmcuIGlmIGEgY2VydGFpbiByZXF1aXJlZCBoZWFkZXIgaXMgbWlzc2luZyBvbiB0aGUKb3JpZ2luYWwuIEZvciBiZXN0IHJlc3VsdHMgaW4gdmFsaWRhdGluZyByZWFsIG1lc3NhZ2VzIGZyb20gdGhlIG5ldHdvcmssIHBhcnNlIHRoZW0gZGlyZWN0bHkgaW50bwpNb2pvbGljaW91cyBtZXNzYWdlcyAoc2VlIEw8TW9qbzo6TWVzc2FnZS9wYXJzZT4pLgoKT25seSBjZXJ0YWluIHBlcm11dGF0aW9ucyBvZiBPcGVuQVBJIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIGF0IHRoaXMgdGltZToKCj1vdmVyIDQKCj1pdGVtICoKCmZvciBwYXRoIHBhcmFtZXRlcnMsIG9ubHkgQzxzdHlsZTogc2ltcGxlPiBhbmQgQzxleHBsb2RlOiBmYWxzZT4gaXMgc3VwcG9ydGVkCgo9aXRlbSAqCgpmb3IgcXVlcnkgcGFyYW1ldGVycywgb25seSBDPHN0eWxlOiBmb3JtPiBhbmQgQzxleHBsb2RlOiB0cnVlPiBpcyBzdXBwb3J0ZWQsIG9ubHkgdGhlIGZpcnN0IHZhbHVlIG9mIGVhY2ggcGFyYW1ldGVyIG5hbWUgaXMgY29uc2lkZXJlZCwgYW5kIEM8YWxsb3dFbXB0eVZhbHVlPiBhbmQgQzxhbGxvd1Jlc2VydmVkPiBhcmUgbm90IGNoZWNrZWQKCj1pdGVtICoKCmNvb2tpZSBwYXJhbWV0ZXJzIGFyZSBub3QgY2hlY2tlZCBhdCBhbGwgeWV0Cgo9aXRlbSAqCgpDPGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZD4gYW5kIEM8bXVsdGlwYXJ0Lyo+IG1lc3NhZ2VzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAoKPWl0ZW0gKgoKQzxzZXJ2ZXI+IGZpZWxkcyBpbiBkZWZpbml0aW9ucyBhcmUgY29tcGxldGVseSBpZ25vcmVkLCBhbmQgbm90IGNvbnNpZGVyZWQgd2hlbiBwYXJzaW5nIHJlcXVlc3QgVVJJcy4KCj1pdGVtICoKCk9wZW5BUEkgZGVzY3JpcHRpb25zIG11c3QgYmUgY29udGFpbmVkIGluIGEgc2luZ2xlIGRvY3VtZW50OyBDPCRyZWY+ZXJlbmNlcyB0byBvdGhlciBkb2N1bWVudHMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgoKPWl0ZW0gKgoKVGhlIHVzZSBvZiBDPCRyZWY+IHdpdGhpbiBhIHBhdGgtaXRlbSBvYmplY3QgaXMgbm90IHBlcm1pdHRlZC4KCj1pdGVtICoKClNlY3VyaXR5IHNjaGVtZXMgaW4gdGhlIE9wZW5BUEkgZGVzY3JpcHRpb24sIGFuZCB0aGUgdXNlIG9mIGFueSBDPEF1dGhvcml6YXRpb24+IGhlYWRlcnMgaW4gcmVxdWVzdHMsIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KCj1iYWNrCgo9aGVhZDEgU0VFIEFMU08KCj1vdmVyIDQKCj1pdGVtICoKCkw8TW9qb2xpY2lvdXM6OlBsdWdpbjo6T3BlbkFQSTo6TW9kZXJuPgoKPWl0ZW0gKgoKTDxUZXN0OjpNb2pvOjpSb2xlOjpPcGVuQVBJOjpNb2Rlcm4+Cgo9aXRlbSAqCgpMPEpTT046OlNjaGVtYTo6TW9kZXJuOjpEb2N1bWVudDo6T3BlbkFQST4KCj1pdGVtICoKCkw8SlNPTjo6U2NoZW1hOjpNb2Rlcm4+Cgo9aXRlbSAqCgpMPGh0dHBzOi8vanNvbi1zY2hlbWEub3JnPgoKPWl0ZW0gKgoKTDxodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvPgoKPWl0ZW0gKgoKTDxodHRwczovL2xlYXJuLm9wZW5hcGlzLm9yZy8+Cgo9aXRlbSAqCgpMPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4KCj1iYWNrCgo9aGVhZDEgU1VQUE9SVAoKQnVncyBtYXkgYmUgc3VibWl0dGVkIHRocm91Z2ggTDxodHRwczovL2dpdGh1Yi5jb20va2FyZW5ldGhlcmlkZ2UvT3BlbkFQSS1Nb2Rlcm4vaXNzdWVzPi4KCkkgYW0gYWxzbyB1c3VhbGx5IGFjdGl2ZSBvbiBpcmMsIGFzICdldGhlcicgYXQgQzxpcmMucGVybC5vcmc+IGFuZCBDPGlyYy5saWJlcmEuY2hhdD4uCgo9Zm9yIHN0b3B3b3JkcyBPcGVuQVBJCgpZb3UgY2FuIGFsc28gZmluZCBtZSBvbiB0aGUgTDxKU09OIFNjaGVtYSBTbGFjayBzZXJ2ZXJ8aHR0cHM6Ly9qc29uLXNjaGVtYS5zbGFjay5jb20+IGFuZCBMPE9wZW5BUEkKU2xhY2sgc2VydmVyfGh0dHBzOi8vb3Blbi1hcGkuc2xhY2suY29tPiwgd2hpY2ggYXJlIGFsc28gZ3JlYXQgcmVzb3VyY2VzIGZvciBmaW5kaW5nIGhlbHAuCgo9aGVhZDEgQVVUSE9SCgpLYXJlbiBFdGhlcmlkZ2UgPGV0aGVyQGNwYW4ub3JnPgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgTElDRU5DRQoKVGhpcyBzb2Z0d2FyZSBpcyBjb3B5cmlnaHQgKGMpIDIwMjEgYnkgS2FyZW4gRXRoZXJpZGdlLgoKVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCnRoZSBzYW1lIHRlcm1zIGFzIHRoZSBQZXJsIDUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugc3lzdGVtIGl0c2VsZi4KClNvbWUgc2NoZW1hIGZpbGVzIGhhdmUgdGhlaXIgb3duIGxpY2VuY2UsIGluIHNoYXJlL29hcy9MSUNFTlNFLgoKPWN1dAo= + readmeEtag: '"3368e7cf235202cab2ab8a70ed3044fafbf3e29e"' + readmeLastModified: Mon, 07 Oct 2024 20:58:06 GMT repositoryId: 422955010 description: Validate HTTP requests and responses against an OpenAPI v3.1 document created: '2021-10-30T18:01:46Z' - updated: '2024-10-01T17:04:52Z' + updated: '2024-10-07T20:58:11Z' language: Perl archived: false stars: 5 @@ -7349,8 +7349,8 @@ owner: karenetheridge logo: https://avatars.githubusercontent.com/u/303051?v=4 license: NOASSERTION - repoEtag: '"3fad6184742b107dbd907d329f1b034427255dd7b2edf77c393e2caef0e48b09"' - repoLastModified: Tue, 01 Oct 2024 17:04:52 GMT + repoEtag: '"4e0c3807d15441c15e5948fafb63e8deb23268bb0585fb8ff54146327b59276b"' + repoLastModified: Mon, 07 Oct 2024 20:58:11 GMT foundInMaster: true - source: https://openapi.tools/ name: OpenAPI Qraft @@ -7441,17 +7441,17 @@ OpenAPI / Swagger, AsyncAPI & Semoasa definitions to (re)Slate compatible markdown created: '2016-10-05T23:09:13Z' - updated: '2024-10-03T14:42:22Z' + updated: '2024-10-07T10:14:01Z' language: JavaScript archived: false - stars: 1484 + stars: 1485 watchers: 17 forks: 320 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"c772586ffa3413d8fd70567ede642ee6fbb96514f0f2accdadf3a85d84fdffb4"' - repoLastModified: Thu, 03 Oct 2024 14:42:22 GMT + repoEtag: '"5fc6ebeedcf97b674c80c71f15ba89181349cb8072601448794088788c0d78ab"' + repoLastModified: Mon, 07 Oct 2024 10:14:01 GMT foundInMaster: true homepage: https://github.com/Mermade/widdershins id: ab4fb414065011325683c7b582a9e582 @@ -7476,17 +7476,17 @@ repositoryId: 843437350 description: Framework for building high quality, interactive API documentation. created: '2024-08-16T14:09:50Z' - updated: '2024-10-07T03:32:42Z' + updated: '2024-10-07T18:01:20Z' language: TypeScript archived: false - stars: 64 - watchers: 3 + stars: 66 + watchers: 4 forks: 3 owner: zuplo logo: https://avatars.githubusercontent.com/u/85497839?v=4 license: MIT - repoEtag: '"553bd23a504702918ab7d5b7632babb9a4d41d68c5964955ce4ee2b4ae4f49cb"' - repoLastModified: Mon, 07 Oct 2024 03:32:42 GMT + repoEtag: '"3240142f0311ce071efa77189301434206120d779e9acfa35d707e2fbc49fc67"' + repoLastModified: Mon, 07 Oct 2024 18:01:20 GMT foundInMaster: true - source: openapi3 tags name: FastAPI @@ -7508,17 +7508,17 @@ FastAPI framework, high performance, easy to learn, fast to code, ready for production created: '2018-12-08T08:21:47Z' - updated: '2024-10-07T03:24:57Z' + updated: '2024-10-08T02:24:52Z' language: Python archived: false - stars: 76290 - watchers: 678 - forks: 6433 + stars: 76322 + watchers: 679 + forks: 6437 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT - repoEtag: '"42731d1a7d7965749de1c141fdd245dd0851f3c49c26c1cffa3865bb302ec582"' - repoLastModified: Mon, 07 Oct 2024 03:24:57 GMT + repoEtag: '"1d8c7d29ddd346f1f82780899af0a19feb9da8627cc625ebb06a0e05d7242ceb"' + repoLastModified: Tue, 08 Oct 2024 02:24:52 GMT foundInMaster: true id: 01f8d446752c39de698f67e8d2352229 oldLocations: @@ -7538,17 +7538,17 @@ Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API. created: '2011-07-15T22:56:39Z' - updated: '2024-10-07T03:07:20Z' + updated: '2024-10-08T00:54:07Z' language: JavaScript archived: false - stars: 26418 + stars: 26422 watchers: 650 - forks: 8927 + forks: 8929 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"457f46ec23b93a0c40f55682364b39cc155fccf9ea9b3ed5b4c07ea951b46dfd"' - repoLastModified: Mon, 07 Oct 2024 03:07:20 GMT + repoEtag: '"bb896dc3a6a83797583eae2caff78bee61cfa456649925129342308e4f018369"' + repoLastModified: Tue, 08 Oct 2024 00:54:07 GMT foundInMaster: true name: swagger-ui homepage: https://github.com/swagger-api/swagger-UI @@ -7581,17 +7581,17 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2024-10-07T02:51:20Z' + updated: '2024-10-08T00:19:58Z' language: TypeScript archived: false - stars: 23390 - watchers: 297 + stars: 23397 + watchers: 295 forks: 2292 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"3d8e3b33bf3135be1a261c40f3aae4c222bad24ee0ce10fe23b5fa5503e70864"' - repoLastModified: Mon, 07 Oct 2024 02:51:20 GMT + repoEtag: '"0f707d64eb6f1f6467fcfe1aaab7da0297e5c35c93f2320c3ec3969061971601"' + repoLastModified: Tue, 08 Oct 2024 00:19:58 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 @@ -7610,7 +7610,7 @@ Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API created: '2011-07-05T23:44:11Z' - updated: '2024-10-06T16:45:42Z' + updated: '2024-10-07T12:26:55Z' language: Java archived: false stars: 7375 @@ -7619,8 +7619,8 @@ owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"7f0573778954ddecb1e3c31dfd8a0724b4e9cdf2c24ef804d8ab84b37d4967b3"' - repoLastModified: Sun, 06 Oct 2024 16:45:42 GMT + repoEtag: '"47e2f9e57421c0d7e4a715089642377c4dac81efadfa206e2a79f0df5cf09360"' + repoLastModified: Mon, 07 Oct 2024 12:26:55 GMT foundInMaster: true category: Code Generators id: 2093f5c5f56617123b73ae823791176d @@ -7637,17 +7637,17 @@ Mockoon is the easiest and quickest way to run mock APIs locally. No remote deployment, no account required, open source. created: '2017-07-17T13:19:16Z' - updated: '2024-10-07T01:39:27Z' + updated: '2024-10-07T22:48:23Z' language: TypeScript archived: false - stars: 6311 + stars: 6314 watchers: 60 forks: 378 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"6e992d43ce7e29d4e583c954470275472fad3c73b202314ebb79583a3a671f4f"' - repoLastModified: Mon, 07 Oct 2024 01:39:27 GMT + repoEtag: '"8eed0edd3ba2913817af26bb129e3cacaa2e6974f77a978b043ccc4081af5e6f"' + repoLastModified: Mon, 07 Oct 2024 22:48:23 GMT foundInMaster: true category: Testing id: 8728dfca2c1908dbecdcddd31597fad4 @@ -7670,17 +7670,17 @@ repositoryId: 173009358 description: Generate Go client and server boilerplate from OpenAPI 3 specifications created: '2019-02-27T23:59:59Z' - updated: '2024-10-07T03:12:59Z' + updated: '2024-10-08T02:48:21Z' language: Go archived: false - stars: 6120 + stars: 6127 watchers: 36 - forks: 845 + forks: 846 owner: oapi-codegen logo: https://avatars.githubusercontent.com/u/142752710?v=4 license: Apache-2.0 - repoEtag: '"ca07d9046b924939db5ac44de52815d9d3b6df6994b540cd9a460b3693d42181"' - repoLastModified: Mon, 07 Oct 2024 03:12:59 GMT + repoEtag: '"95dfbfdd054521c0006b64aa80226304d8618e1b4cf7d83fdd6bacd5dadd6b84"' + repoLastModified: Tue, 08 Oct 2024 02:48:21 GMT foundInMaster: true id: 770a221110cc4ef0e399089f5caf8694 oldLocations: @@ -7709,17 +7709,17 @@ repositoryId: 161691324 description: Generate TypeScript types from OpenAPI 3 specs created: '2018-12-13T20:28:01Z' - updated: '2024-10-07T01:12:43Z' + updated: '2024-10-07T22:51:52Z' language: TypeScript archived: false - stars: 5652 + stars: 5657 watchers: 25 forks: 455 owner: openapi-ts logo: https://avatars.githubusercontent.com/u/172838200?v=4 license: MIT - repoEtag: '"8d17aff031a5ea94575719f1da1d5b5ac4554183905dfe4d4f4ade80ac09e5ef"' - repoLastModified: Mon, 07 Oct 2024 01:12:43 GMT + repoEtag: '"c8cdaf906ebb80f5f2eccd004bfe3e7f4052e5cfbc72aa2f5c9b44876e26b325"' + repoLastModified: Mon, 07 Oct 2024 22:51:52 GMT foundInMaster: true oldLocations: - https://github.com/drwpow/openapi-typescript @@ -7735,17 +7735,17 @@ repositoryId: 88701696 description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution created: '2017-04-19T04:44:28Z' - updated: '2024-10-05T13:45:41Z' + updated: '2024-10-07T13:01:14Z' language: HTML archived: false - stars: 4094 + stars: 4095 watchers: 74 forks: 615 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 - repoEtag: '"4db624f6f04910362440daaa4fa316bf3382f09e31ad40ded72adc06b4ef947d"' - repoLastModified: Sat, 05 Oct 2024 13:45:41 GMT + repoEtag: '"ffb02b7897c50b1d4f8672022e06bfd515d21ddba5ae60833bb3acaab3c0eb7b"' + repoLastModified: Mon, 07 Oct 2024 13:01:14 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -7770,7 +7770,7 @@ owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: CC0-1.0 - repoEtag: '"a64ba130085d8a53a1cac6c66d1627fb7b23bdaf45cbd793123d2809e7c8cb76"' + repoEtag: '"ab32f777a764486c07efeb9fa4a661e5e0ca5c5b686cb8921e9d760408dc35ca"' repoLastModified: Mon, 07 Oct 2024 02:37:36 GMT foundInMaster: true category: SDK @@ -7804,7 +7804,7 @@ owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 - repoEtag: '"d27b3196694a5b994e3176989a716fb148a5836c4009228b66612f8d83bfa196"' + repoEtag: '"d48adeab412d11be4328eb012741fb0f6d317e170bbf137ea0db93fdf2364188"' repoLastModified: Sun, 06 Oct 2024 20:24:20 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 @@ -7821,17 +7821,17 @@ Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python with performance auto-tuning. created: '2019-01-04T17:33:29Z' - updated: '2024-10-06T19:15:39Z' + updated: '2024-10-07T13:26:49Z' language: Python archived: false - stars: 2697 + stars: 2698 watchers: 23 forks: 333 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"362b1c40ea085c834b6b7035969eb6be2647aa2058933a466021b9ead5147f26"' - repoLastModified: Sun, 06 Oct 2024 19:15:39 GMT + repoEtag: '"682decaf3e36a900d38e5b8d166d0a3c098c1b599c89bad15e3e12d2a4e8ca57"' + repoLastModified: Mon, 07 Oct 2024 13:26:49 GMT foundInMaster: true category: Server Implementations id: d0f3fc0bd35fcadacc8ed2c531780739 @@ -7850,7 +7850,7 @@ Javascript library to connect to swagger-enabled APIs via browser or nodejs created: '2012-02-16T00:08:43Z' - updated: '2024-10-06T16:45:56Z' + updated: '2024-10-07T23:23:51Z' language: JavaScript archived: false stars: 2622 @@ -7859,8 +7859,8 @@ owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"ff0930e842b76913d72cba0c7c0c162ad9c55cb3ba0e72da8ee5604b6286b5b3"' - repoLastModified: Sun, 06 Oct 2024 16:45:56 GMT + repoEtag: '"f1c3ff045941ce40df2591c31eafac8080b7dfc3c34244c471b8b96a14028358"' + repoLastModified: Mon, 07 Oct 2024 23:23:51 GMT foundInMaster: true category: Code Generators id: 5f98b79464c0723b688cff46ee3500c6 @@ -7876,17 +7876,17 @@ repositoryId: 244234763 description: Sane and flexible OpenAPI 3 schema generation for Django REST framework. created: '2020-03-01T22:36:54Z' - updated: '2024-10-06T17:35:11Z' + updated: '2024-10-07T16:24:53Z' language: Python archived: false - stars: 2343 + stars: 2344 watchers: 12 forks: 260 owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause - repoEtag: '"c0ece01f680f8490f925e5be48827a5935024480c696e6064b6fe25dba14d125"' - repoLastModified: Sun, 06 Oct 2024 17:35:11 GMT + repoEtag: '"9bf600adf5ea8e40c14e6196fa26b43f9228156a1a3a918ab71c99c3918fc848"' + repoLastModified: Mon, 07 Oct 2024 16:24:53 GMT foundInMaster: true category: Server Implementations id: 520f5c66c3e42a7b3fbface4f156c1dc @@ -7904,17 +7904,17 @@ A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML created: '2021-01-26T02:53:57Z' - updated: '2024-10-07T01:37:35Z' + updated: '2024-10-07T09:58:52Z' language: Python archived: false - stars: 2297 + stars: 2299 watchers: 19 forks: 67 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause - repoEtag: '"436892af034276837c6920aab0ec081da1fafec11ba3b6140b7981b717d7d5bb"' - repoLastModified: Mon, 07 Oct 2024 01:37:35 GMT + repoEtag: '"4794190f8aa4d0a09ae49f0b4b06ad615891e81c08e68ca4658d4d145e1375a7"' + repoLastModified: Mon, 07 Oct 2024 09:58:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7942,11 +7942,11 @@ archived: false stars: 2252 watchers: 21 - forks: 159 + forks: 161 owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT - repoEtag: '"c99297877e235e2a969865cf27cc027237a3571597c688eefe1564370342b049"' + repoEtag: '"a50a628abcf04ee698245ac1f6104ecb3074090416ee80025584ec840f3a593a"' repoLastModified: Sun, 06 Oct 2024 07:02:06 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 @@ -7965,17 +7965,17 @@ A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks. created: '2016-11-15T19:21:53Z' - updated: '2024-10-03T13:58:50Z' + updated: '2024-10-08T03:24:46Z' language: Go archived: false - stars: 2084 + stars: 2085 watchers: 38 forks: 247 owner: google logo: https://avatars.githubusercontent.com/u/1342004?v=4 license: Apache-2.0 - repoEtag: '"2514f009a91966b6209047fe7a6d04bfbdeac292d6c6d9368a01fd1bb2deac79"' - repoLastModified: Thu, 03 Oct 2024 13:58:50 GMT + repoEtag: '"e8f6b6bb40712bbe34261ddf4996be89d53ad89bd8ac3fbe35cd6242be0c16dc"' + repoLastModified: Tue, 08 Oct 2024 03:24:46 GMT foundInMaster: true category: Converters id: 46e070512676eb0fd196ee199e6a0b34 @@ -7992,17 +7992,17 @@ repositoryId: 165951750 description: RapiDoc -WebComponent for OpenAPI Spec created: '2019-01-16T01:29:58Z' - updated: '2024-10-06T19:54:04Z' + updated: '2024-10-07T23:08:54Z' language: JavaScript archived: false - stars: 1655 + stars: 1658 watchers: 12 forks: 277 owner: rapi-doc logo: https://avatars.githubusercontent.com/u/104180085?v=4 license: MIT - repoEtag: '"c9f120ae5ffb84b566e41d8da260d6f9afa8a408af623dae1e40cc59c6e23791"' - repoLastModified: Sun, 06 Oct 2024 19:54:04 GMT + repoEtag: '"31e56d2739915d3b7edb7831f8d319f554c4f1b2b8be7419b79c5fa8a9cce0f0"' + repoLastModified: Mon, 07 Oct 2024 23:08:54 GMT foundInMaster: true category: - Documentation @@ -8032,7 +8032,7 @@ owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"ea9878dbb7990e52f2d4af1ff07ec7fbdb8d749f7bdb17f2b4831595c5c7effd"' + repoEtag: '"7dd5396ef6729b1b7492b568b31745e0ac3097590d41ca9a7f081ce8213b970c"' repoLastModified: Sat, 05 Oct 2024 14:49:45 GMT foundInMaster: true category: @@ -8082,17 +8082,17 @@ repositoryId: 372032505 description: OpenAPI v3 code generator for go created: '2021-05-29T17:25:48Z' - updated: '2024-10-06T20:45:46Z' + updated: '2024-10-07T20:11:50Z' language: Go archived: false - stars: 1338 + stars: 1337 watchers: 16 forks: 76 owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 - repoEtag: '"79b351de2b055bbe06fa30972841c3f74108ff562964cbefa591cd3893dbbc4f"' - repoLastModified: Sun, 06 Oct 2024 20:45:46 GMT + repoEtag: '"47b2682955eab7f9eee3693a0732c9ba43ccebf9325a93949698eab9e2e41438"' + repoLastModified: Mon, 07 Oct 2024 20:11:50 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8108,7 +8108,7 @@ A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).. created: '2014-10-18T23:48:49Z' - updated: '2024-10-01T18:51:43Z' + updated: '2024-10-07T12:28:15Z' language: Python archived: false stars: 1171 @@ -8117,8 +8117,8 @@ owner: marshmallow-code logo: https://avatars.githubusercontent.com/u/10334301?v=4 license: MIT - repoEtag: '"6be3014704889fd82abea1952bbccf92077a89a88afef63ae2280ebd337458f4"' - repoLastModified: Tue, 01 Oct 2024 18:51:43 GMT + repoEtag: '"804e296c7df6679abb8ad17b1fa4496d5bee2a6fe7262cfebf8a47d5c66359bd"' + repoLastModified: Mon, 07 Oct 2024 12:28:15 GMT foundInMaster: true category: Parsers id: c1528764f05dd585ca47886dd6dabb86 @@ -8134,7 +8134,7 @@ repositoryId: 329190167 description: A lightweight Python web API framework. created: '2021-01-13T04:08:48Z' - updated: '2024-10-04T23:22:12Z' + updated: '2024-10-07T18:55:18Z' language: Python archived: false stars: 1023 @@ -8143,8 +8143,8 @@ owner: apiflask logo: https://avatars.githubusercontent.com/u/78075725?v=4 license: MIT - repoEtag: '"cbe2c8bd568a4ad11b1adacfe44dda95c7114226c33f7bbf8c7bd084ce9793c5"' - repoLastModified: Fri, 04 Oct 2024 23:22:12 GMT + repoEtag: '"1d2a44e23b5b361a0ab70df521897bd9f3081952ec0f86fa955a5dab172115cc"' + repoLastModified: Mon, 07 Oct 2024 18:55:18 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -8161,17 +8161,17 @@ repositoryId: 481579846 description: A library that generates OpenAPI (Swagger) docs from Zod schemas created: '2022-04-14T11:32:57Z' - updated: '2024-10-06T18:43:57Z' + updated: '2024-10-07T09:55:00Z' language: TypeScript archived: false - stars: 920 + stars: 921 watchers: 10 forks: 57 owner: asteasolutions logo: https://avatars.githubusercontent.com/u/5244095?v=4 license: MIT - repoEtag: '"4a059b87d4f4ac0842045eff905217bd78914938d3099e95f83da5f3f6c9987f"' - repoLastModified: Sun, 06 Oct 2024 18:43:57 GMT + repoEtag: '"7cf0a26ae2d6416488af3dc51aae96d498f2648d0cfeb85f4ea2e0278fbe3391"' + repoLastModified: Mon, 07 Oct 2024 09:55:00 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8187,17 +8187,17 @@ A fast Java JSON schema validator that supports draft V4, V6, V7, V2019-09 and V2020-12 created: '2016-09-15T12:24:16Z' - updated: '2024-09-28T08:20:19Z' + updated: '2024-10-07T09:17:20Z' language: Java archived: false - stars: 836 + stars: 837 watchers: 43 forks: 324 owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"6f6c175a80e10754dbebd0e08a95f722699671677649e8635b8817209d9b8985"' - repoLastModified: Sat, 28 Sep 2024 08:20:19 GMT + repoEtag: '"161e3f377014b287e204fe8f5273af3bd3bbc72b47015b61a46472b8eca8207e"' + repoLastModified: Mon, 07 Oct 2024 09:17:20 GMT foundInMaster: true category: Parsers id: 69c6f349899d198b4045edb7ffa3fb74 @@ -8212,17 +8212,17 @@ repositoryId: 113924383 description: Utility for comparing two OpenAPI specifications. created: '2017-12-12T00:39:30Z' - updated: '2024-10-05T14:19:22Z' + updated: '2024-10-08T01:06:53Z' language: Java archived: false - stars: 812 + stars: 813 watchers: 19 forks: 154 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"75bc615b77f3743cadcaaa6367541bf27c8248416bc597a111b010c29d53decc"' - repoLastModified: Sat, 05 Oct 2024 14:19:22 GMT + repoEtag: '"aee260143d1dcc29e509a5296c2936012a88b1b92dda52e352e59d469bff0a1b"' + repoLastModified: Tue, 08 Oct 2024 01:06:53 GMT foundInMaster: true category: Parsers id: c128907e9d949a67c1bda0e0ceda755a @@ -8239,17 +8239,17 @@ repositoryId: 192797744 description: The modern editor for API Design and Technical Writing. created: '2019-06-19T20:09:49Z' - updated: '2024-10-03T14:51:00Z' + updated: '2024-10-07T05:01:19Z' language: null archived: false - stars: 807 + stars: 808 watchers: 30 forks: 50 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: NOASSERTION - repoEtag: '"468588532f9abda7d173c523afc94f62eca6fe3c9c8001d489c55d8135fb80c5"' - repoLastModified: Thu, 03 Oct 2024 14:51:00 GMT + repoEtag: '"9739688255a3ef1de121cee8c0babaee5a9bc57875703befbf90d9ad618f4847"' + repoLastModified: Mon, 07 Oct 2024 05:01:19 GMT foundInMaster: true category: - Description Validators @@ -8337,17 +8337,17 @@ A collection of Editors, Linters, Parsers, Code Generators, Documentation, Testing created: '2017-12-15T22:51:00Z' - updated: '2024-10-03T10:39:49Z' + updated: '2024-10-07T11:29:35Z' language: HTML archived: false - stars: 677 + stars: 678 watchers: 30 forks: 320 owner: apisyouwonthate logo: https://avatars.githubusercontent.com/u/35378327?v=4 license: MIT - repoEtag: '"0918fa44b9d20229be117d23cba40685878bf045bb80ba6c99b44b1bf5f0f75b"' - repoLastModified: Thu, 03 Oct 2024 10:39:49 GMT + repoEtag: '"7c8c3c1e1733f9622f01dead23f41fb779571e285bd4fc5f7c4f2529fe9e3beb"' + repoLastModified: Mon, 07 Oct 2024 11:29:35 GMT foundInMaster: true category: Description Validators id: bf8b6a3a6298d701eabc857d42d5c371 @@ -8507,17 +8507,17 @@ Query, provision and operate Cloud and SaaS resources and APIs using an extensible SQL based framework created: '2022-01-03T08:20:06Z' - updated: '2024-10-04T04:16:22Z' + updated: '2024-10-07T12:57:33Z' language: Go archived: false - stars: 513 + stars: 512 watchers: 12 forks: 47 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 license: MIT - repoEtag: '"a9e34fddba3ae26e9e25d2f2d11d8e2f9d2df0613c1df00e79349795252e9565"' - repoLastModified: Fri, 04 Oct 2024 04:16:22 GMT + repoEtag: '"185df7a398546ae0e2a0ccc7bb8cf1f3391ac42690a89f09b9757bf33f3b9e98"' + repoLastModified: Mon, 07 Oct 2024 12:57:33 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -8531,17 +8531,17 @@ repositoryId: 273958287 description: 🦕 OpenAPI plugin for generating API reference docs in Docusaurus v2. created: '2020-06-21T18:06:52Z' - updated: '2024-10-05T02:53:36Z' + updated: '2024-10-07T23:20:36Z' language: TypeScript archived: false - stars: 498 + stars: 499 watchers: 9 forks: 82 owner: cloud-annotations logo: https://avatars.githubusercontent.com/u/47490031?v=4 license: MIT - repoEtag: '"303bb6984bd954d117504c0614294da119a606970179f29365be09235add1e10"' - repoLastModified: Sat, 05 Oct 2024 02:53:36 GMT + repoEtag: '"1bd58840a21a1e4ac460bfa5b3edb04982729ce1311323cef7de2a7355b3b5b4"' + repoLastModified: Mon, 07 Oct 2024 23:20:36 GMT foundInMaster: true category: SDK id: 5acf9bbe5338a800925f2b0e23eca0a1 @@ -8589,7 +8589,7 @@ forks: 79 owner: oazapfts logo: https://avatars.githubusercontent.com/u/119607625?v=4 - repoEtag: '"0cf31e440acbae93df2df797f449803d0a756e60e58a368c5b0d46cf161a06a9"' + repoEtag: '"91b25b51b279d33fad720106959acf7adc1ddab638c8a741d5a8bcc4adef16e4"' repoLastModified: Sat, 05 Oct 2024 17:30:46 GMT category: Parsers foundInMaster: true @@ -8639,17 +8639,17 @@ response status codes and parameters. At the end, it generates the .json file containing the Swagger format specification. created: '2020-04-13T01:37:33Z' - updated: '2024-10-02T14:49:43Z' + updated: '2024-10-07T17:17:52Z' language: JavaScript archived: false - stars: 456 + stars: 457 watchers: 5 forks: 64 owner: swagger-autogen logo: https://avatars.githubusercontent.com/u/137681762?v=4 license: MIT - repoEtag: '"ea1509b7e53034327bab32c5fb8b60f5ab7fa76ebc5525e0faa16079b3b39833"' - repoLastModified: Wed, 02 Oct 2024 14:49:43 GMT + repoEtag: '"d2ca5d64c6aa78dab23be8dca386cf29aa0678d7202298d898d6dcd69a965d64"' + repoLastModified: Mon, 07 Oct 2024 17:17:52 GMT category: Parsers foundInMaster: true oldLocations: @@ -8717,17 +8717,17 @@ repositoryId: 293245471 description: Convert between JSON Schema, TypeScript, GraphQL, Open API and SureType created: '2020-09-06T09:40:04Z' - updated: '2024-10-01T21:08:48Z' + updated: '2024-10-08T00:19:20Z' language: TypeScript archived: false - stars: 419 + stars: 420 watchers: 3 forks: 8 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT - repoEtag: '"c145736ac5f011be68b6a5a013b52fd14f603c800303f2ac96afa792f9af3df9"' - repoLastModified: Tue, 01 Oct 2024 21:08:48 GMT + repoEtag: '"6e86cf3f8bac3d2ccf5fa5197b42590826b12cf77bbc1621f107b8ae371c67cd"' + repoLastModified: Tue, 08 Oct 2024 00:19:20 GMT foundInMaster: true category: Parsers id: 31c759927a7f06228ec927500d9722c5 @@ -8908,17 +8908,17 @@ repositoryId: 306110879 description: Web services with OpenAPI and JSON Schema done quick in Go created: '2020-10-21T18:16:16Z' - updated: '2024-10-06T10:49:49Z' + updated: '2024-10-08T00:38:45Z' language: Go archived: false - stars: 362 + stars: 363 watchers: 5 forks: 17 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"8b628216f18b7dd1c9129b72cbae1d5a7f6186f75fd99ad493b96b61782c1364"' - repoLastModified: Sun, 06 Oct 2024 10:49:49 GMT + repoEtag: '"ec523d70a8db5c45e0225c5a0c7e8814ac0aa7ab487922aa4a5b5ab6c2745d4a"' + repoLastModified: Tue, 08 Oct 2024 00:38:45 GMT foundInMaster: true id: ecd2fef7bb4079bda209503f9fb9820b - source: openapi3 tags @@ -9024,17 +9024,17 @@ repositoryId: 202613633 description: Collection of RESTful APIs provided by Ethereum Beacon nodes created: '2019-08-15T21:27:12Z' - updated: '2024-10-05T10:18:58Z' + updated: '2024-10-07T20:41:15Z' language: HTML archived: false - stars: 333 + stars: 334 watchers: 36 forks: 169 owner: ethereum logo: https://avatars.githubusercontent.com/u/6250754?v=4 license: CC0-1.0 - repoEtag: '"9a270c12929f545ec7532fb7bec4b6d7eecf33191fd583dd0b6d317a9ebfd603"' - repoLastModified: Sat, 05 Oct 2024 10:18:58 GMT + repoEtag: '"0523e054073255a699906898a622f42e57c065c218b8a50918765ef1c35251df"' + repoLastModified: Mon, 07 Oct 2024 20:41:15 GMT foundInMaster: true category: - Documentation @@ -9134,17 +9134,17 @@ Esmerald framework - Highly scalable, performant, easy to learn, easy to code and for every sizeable and complex application created: '2022-10-18T11:50:26Z' - updated: '2024-10-04T18:11:07Z' + updated: '2024-10-07T04:54:44Z' language: Python archived: false - stars: 301 + stars: 302 watchers: 8 forks: 18 owner: dymmond logo: https://avatars.githubusercontent.com/u/65982469?v=4 license: MIT - repoEtag: '"000ede05971e1db3b193c3f72dcd6b1ce44bb40fba7d92599e1f949e5e1a0821"' - repoLastModified: Fri, 04 Oct 2024 18:11:07 GMT + repoEtag: '"501904bd7bdc3a623213d619d2ffa9b95bf6d34810836a37e7e5439835e6cc0b"' + repoLastModified: Mon, 07 Oct 2024 04:54:44 GMT category: Server Implementations foundInMaster: true - source: @@ -9241,23 +9241,23 @@ id: c86edd8c7126bca7973ca68a5b5bd9e1 repositoryMetadata: base64Readme: >- - PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9InpvZC1vcGVuYXBpLnN2ZyIgd2lkdGg9IjIwMHB4IiBhbGlnbj0iY2VudGVyIiBhbHQ9InpvZC1vcGVuYXBpIGxvZ28iIC8+CiAgPGgxIGFsaWduPSJjZW50ZXIiPnpvZC1vcGVuYXBpPC9oMT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KQSBUeXBlc2NyaXB0IGxpYnJhcnkgdG8gdXNlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZCI+Wm9kPC9hPiBTY2hlbWFzIHRvIGNyZWF0ZSBPcGVuQVBJIHYzLnggZG9jdW1lbnRhdGlvbgo8L3A+CjxkaXYgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3pvZC1vcGVuYXBpIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi96b2Qtb3BlbmFwaSIvPjxhPgo8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96b2Qtb3BlbmFwaSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3pvZC1vcGVuYXBpIi8+PGE+CjxhIGhyZWY9Imh0dHBzOi8vbm9kZWpzLm9yZy9lbi8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL25vZGUtJTNFJTNEJTIwMTgtYnJpZ2h0Z3JlZW4iLz48YT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NhbWNodW5neS96b2Qtb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnIi8+PGE+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvcmVsZWFzZS55bWwiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L3pvZC1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3JlbGVhc2UueW1sL2JhZGdlLnN2ZyIvPjxhPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2Vlay1vc3Mvc2t1YmEiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL/CfpL8lMjBza3ViYS1wb3dlcmVkLTAwOURDNCIvPjxhPgo8L2Rpdj4KPGJyPgoKIyMgSW5zdGFsbAoKSW5zdGFsbCB2aWEgYG5wbWAsIGB5YXJuYCBvciBgcG5wbWA6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIHpvZCB6b2Qtb3BlbmFwaQojIyBvcgp5YXJuIGFkZCB6b2Qgem9kLW9wZW5hcGkKIyMgb3IKcG5wbSBpbnN0YWxsIHpvZCB6b2Qtb3BlbmFwaQpgYGAKCiMjIFVzYWdlCgojIyMgRXh0ZW5kIFpvZAoKVGhpcyBtdXRhdGVzIFpvZCB0byBhZGQgYW4gZXh0cmEgYC5vcGVuYXBpKClgIG1ldGhvZC4gQ2FsbCB0aGlzIGF0IHRoZSB0b3Agb2YgeW91ciBlbnRyeSBwb2ludChzKS4gWW91IGNhbiBhY2hpZXZlIHRoaXMgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgb24geW91ciBwcmVmZXJlbmNlLgoKIyMjIyBTdWJwYXRoIEltcG9ydAoKYGBgdHMKaW1wb3J0ICd6b2Qtb3BlbmFwaS9leHRlbmQnOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKCnouc3RyaW5nKCkub3BlbmFwaSh7IGRlc2NyaXB0aW9uOiAnaGVsbG8gd29ybGQhJywgZXhhbXBsZTogJ2hlbGxvIHdvcmxkJyB9KTsKYGBgCgojIyMjIE1hbnVhbCBFeHRlbnNpb24KClRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGEgc3BlY2lmaWMgaW5zdGFuY2Ugb2YgWm9kIG9yIGEgWm9kIGluc3RhbmNlIGZyb20gYW5vdGhlciBsaWJyYXJ5IHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gdGFyZ2V0LgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKaW1wb3J0IHsgZXh0ZW5kWm9kV2l0aE9wZW5BcGkgfSBmcm9tICd6b2Qtb3BlbmFwaSc7CgpleHRlbmRab2RXaXRoT3BlbkFwaSh6KTsKCnouc3RyaW5nKCkub3BlbmFwaSh7IGRlc2NyaXB0aW9uOiAnaGVsbG8gd29ybGQhJywgZXhhbXBsZTogJ2hlbGxvIHdvcmxkJyB9KTsKYGBgCgojIyMjIGAub3BlbmFwaSgpYAoKVXNlIHRoZSBgLm9wZW5hcGkoKWAgbWV0aG9kIHRvIGFkZCBtZXRhZGF0YSB0byBhIHNwZWNpZmljIFpvZCB0eXBlLiBUaGUgYC5vcGVuYXBpKClgIG1ldGhvZCB0YWtlcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Cgp8ICAgICBPcHRpb24gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwKfCBPcGVuQVBJIE9wdGlvbnMgfCAgICAgICAgICAgICAgVGhpcyB3aWxsIHRha2UgYW55IG9wdGlvbiB5b3Ugd291bGQgcHV0IG9uIGEgW1NjaGVtYU9iamVjdF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9kYXRhLXR5cGVzLykuICAgICAgICAgICAgICAgfAp8ICBgZWZmZWN0VHlwZWAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0byBvdmVycmlkZSB0aGUgY3JlYXRpb24gdHlwZSBmb3IgYSBbWm9kIEVmZmVjdF0oI3pvZC1lZmZlY3RzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYGhlYWRlcmAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRvIHByb3ZpZGUgbWV0YWRhdGEgZm9yIFtyZXNwb25zZSBoZWFkZXJzXSgjcmVzcG9uc2UtaGVhZGVycykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgYHBhcmFtYCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0byBwcm92aWRlIG1ldGFkYXRhIGZvciBbcmVxdWVzdCBwYXJhbWV0ZXJzXSgjcGFyYW1ldGVycykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgYHJlZmAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHRvIFthdXRvIHJlZ2lzdGVyIGEgc2NoZW1hIGFzIGEgcmUtdXNhYmxlIGNvbXBvbmVudF0oI2NyZWF0aW5nLWNvbXBvbmVudHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYHJlZlR5cGVgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgdG8gc2V0IHRoZSBjcmVhdGlvbiB0eXBlIGZvciBhIGNvbXBvbmVudCB3aGljaCBpcyBub3QgcmVmZXJlbmNlZCBpbiB0aGUgZG9jdW1lbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgYHR5cGVgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHRvIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgdHlwZS4gSWYgdGhpcyBpcyBwcm92aWRlZCBubyBtZXRhZGF0YSB3aWxsIGJlIGdlbmVyYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICBgdW5pb25PbmVPZmAgICB8IFNldCB0byBgdHJ1ZWAgdG8gZm9yY2UgYSBzaW5nbGUgWm9kVW5pb24gdG8gb3V0cHV0IGBvbmVPZmAgaW5zdGVhZCBvZiBgYWxsT2ZgLiBTZWUgW0NyZWF0ZURvY3VtZW50T3B0aW9uc10oI0NyZWF0ZURvY3VtZW50T3B0aW9ucykgZm9yIGEgZ2xvYmFsIG9wdGlvbiB8CgojIyMgYGNyZWF0ZURvY3VtZW50YAoKQ3JlYXRlcyBhbiBPcGVuQVBJIGRvY3VtZW50YXRpb24gb2JqZWN0CgpgYGB0eXBlc2NyaXB0CmltcG9ydCAnem9kLW9wZW5hcGkvZXh0ZW5kJzsKaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7CmltcG9ydCB7IGNyZWF0ZURvY3VtZW50IH0gZnJvbSAnem9kLW9wZW5hcGknOwoKY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBqb2InLAogIGV4YW1wbGU6ICcxMjM0NScsCiAgcmVmOiAnam9iSWQnLAp9KTsKCmNvbnN0IHRpdGxlID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiB0aXRsZScsCiAgZXhhbXBsZTogJ015IGpvYicsCn0pOwoKY29uc3QgZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCh7CiAgb3BlbmFwaTogJzMuMS4wJywKICBpbmZvOiB7CiAgICB0aXRsZTogJ015IEFQSScsCiAgICB2ZXJzaW9uOiAnMS4wLjAnLAogIH0sCiAgcGF0aHM6IHsKICAgICcvam9icy97am9iSWR9JzogewogICAgICBwdXQ6IHsKICAgICAgICByZXF1ZXN0UGFyYW1zOiB7IHBhdGg6IHoub2JqZWN0KHsgam9iSWQgfSkgfSwKICAgICAgICByZXF1ZXN0Qm9keTogewogICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiB6Lm9iamVjdCh7IHRpdGxlIH0pIH0sCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAnMjAwJzogewogICAgICAgICAgICBkZXNjcmlwdGlvbjogJzIwMCBPSycsCiAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiB6Lm9iamVjdCh7IGpvYklkLCB0aXRsZSB9KSB9LAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DcmVhdGVzIHRoZSBmb2xsb3dpbmcgb2JqZWN0Ojwvc3VtbWFyeT4KICAKICBgYGBqc29uCiAgewogICAgIm9wZW5hcGkiOiAiMy4xLjAiLAogICAgImluZm8iOiB7CiAgICAgICJ0aXRsZSI6ICJNeSBBUEkiLAogICAgICAidmVyc2lvbiI6ICIxLjAuMCIKICAgIH0sCiAgICAicGF0aHMiOiB7CiAgICAgICIvam9icy97am9iSWR9IjogewogICAgICAgICJwdXQiOiB7CiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgICAibmFtZSI6ICJqb2JJZCIsCiAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iSWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJlcXVlc3RCb2R5IjogewogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSm9iIHRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICJleGFtcGxlIjogIk15IGpvYiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IFsidGl0bGUiXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIjIwMCBPSyIsCiAgICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICAgImpvYklkIjogewogICAgICAgICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9qb2JJZCIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAidGl0bGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJKb2IgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbImpvYklkIiwgInRpdGxlIl0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJjb21wb25lbnRzIjogewogICAgICAic2NoZW1hcyI6IHsKICAgICAgICAiam9iSWQiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAgICJleGFtcGxlIjogIjEyMzQ1IgogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICBgYGAKPC9kZXRhaWxzPgoKIyMjIyBDcmVhdGVEb2N1bWVudE9wdGlvbnMKCmBjcmVhdGVEb2N1bWVudGAgdGFrZXMgYW4gb3B0aW9uYWwgYENyZWF0ZURvY3VtZW50T3B0aW9uc2AgYXJndW1lbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGhvdyB0aGUgZG9jdW1lbnQgaXMgY3JlYXRlZC4KCmBgYHR5cGVzY3JpcHQKY29uc3QgZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudChkZXRhaWxzLCB7CiAgZGVmYXVsdERhdGVTY2hlbWE6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2RhdGUtdGltZScgfSwgLy8gZGVmYXVsdHMgdG8geyB0eXBlOiAnc3RyaW5nJyB9CiAgdW5pb25PbmVPZjogdHJ1ZSwgLy8gZGVmYXVsdHMgdG8gZmFsc2UuIEZvcmNlcyBhbGwgWm9kVW5pb25zIHRvIG91dHB1dCBgdHJ1ZWAKfSk7CmBgYAoKIyMjIGBjcmVhdGVTY2hlbWFgCgpDcmVhdGVzIGFuIE9wZW5BUEkgU2NoZW1hIE9iamVjdCBhbG9uZyB3aXRoIGFueSByZWdpc3RlcmVkIGNvbXBvbmVudHMuIE9wZW5BUEkgMy4xLjAgU2NoZW1hIE9iamVjdHMgYXJlIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBKU09OIFNjaGVtYS4KCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICd6b2Qtb3BlbmFwaS9leHRlbmQnOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKaW1wb3J0IHsgY3JlYXRlU2NoZW1hIH0gZnJvbSAnem9kLW9wZW5hcGknOwoKY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBqb2InLAogIGV4YW1wbGU6ICcxMjM0NScsCiAgcmVmOiAnam9iSWQnLAp9KTsKCmNvbnN0IHRpdGxlID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiB0aXRsZScsCiAgZXhhbXBsZTogJ015IGpvYicsCn0pOwoKY29uc3Qgam9iID0gei5vYmplY3QoewogIGpvYklkLAogIHRpdGxlLAp9KTsKCmNvbnN0IHsgc2NoZW1hLCBjb21wb25lbnRzIH0gPSBjcmVhdGVTY2hlbWEoam9iKTsKYGBgCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DcmVhdGVzIHRoZSBmb2xsb3dpbmcgb2JqZWN0Ojwvc3VtbWFyeT4KICAKICBgYGBqc29uCiAgewogICAgInNjaGVtYSI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgImpvYklkIjogewogICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iSWQiCiAgICAgICAgfSwKICAgICAgICAidGl0bGUiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkpvYiB0aXRsZSIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiOiBbImpvYklkIiwgInRpdGxlIl0KICAgIH0sCiAgICAiY29tcG9uZW50cyI6IHsKICAgICAgImpvYklkIjogewogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAiZXhhbXBsZSI6ICIxMjM0NSIKICAgICAgfQogICAgfQogIH0KICBgYGAKPC9kZXRhaWxzPgoKIyMjIyBDcmVhdGVTY2hlbWFPcHRpb25zCgpgY3JlYXRlU2NoZW1hYCB0YWtlcyBhbiBvcHRpb25hbCBgQ3JlYXRlU2NoZW1hT3B0aW9uc2AgcGFyYW1ldGVyIHdoaWNoIGNhbiBhbHNvIHRha2UgdGhlIHNhbWUgb3B0aW9ucyBhcyBbQ3JlYXRlRG9jdW1lbnRPcHRpb25zXSgjY3JlYXRlZG9jdW1lbnRvcHRpb25zKSBhbG9uZyB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKCmBgYHR5cGVzY3JpcHQKY29uc3QgeyBzY2hlbWEsIGNvbXBvbmVudHMgfSA9IGNyZWF0ZVNjaGVtYShqb2IsIHsKICBzY2hlbWFUeXBlOiAnaW5wdXQnOyAvLyBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhpcyBzaG91bGQgYmUgcmVuZGVyZWQgYXMgYSByZXF1ZXN0IChgaW5wdXRgKSBvciByZXNwb25zZSAoYG91dHB1dGApLiBEZWZhdWx0cyB0byBgb3V0cHV0YAogIG9wZW5hcGk6ICczLjAuMCc7IC8vIE9wZW5BUEkgdmVyc2lvbiB0byB1c2UsIGRlZmF1bHRzIHRvIGAnMy4xLjAnYAogIGNvbXBvbmVudHM6IHsgam9iSWQ6IHouc3RyaW5nKCkgfSAvLyBBZGRpdGlvbmFsIGNvbXBvbmVudHMgdG8gdXNlIGFuZCBjcmVhdGUgd2hpbGUgcmVuZGVyaW5nIHRoZSBzY2hlbWEKfSkKYGBgCgojIyMgUmVxdWVzdCBQYXJhbWV0ZXJzCgpRdWVyeSwgUGF0aCwgSGVhZGVyICYgQ29va2llIHBhcmFtZXRlcnMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGByZXF1ZXN0UGFyYW1zYCBrZXkgdW5kZXIgdGhlIGBtZXRob2RgIGtleSBhcyBmb2xsb3dzOgoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icy97YX0nOiB7CiAgICAgIHB1dDogewogICAgICAgIHJlcXVlc3RQYXJhbXM6IHsKICAgICAgICAgIHBhdGg6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIHF1ZXJ5OiB6Lm9iamVjdCh7IGI6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICBjb29raWU6IHoub2JqZWN0KHsgY29va2llOiB6LnN0cmluZygpIH0pLAogICAgICAgICAgaGVhZGVyOiB6Lm9iamVjdCh7ICdjdXN0b20taGVhZGVyJzogei5zdHJpbmcoKSB9KSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgpJZiB5b3Ugd291bGQgbGlrZSB0byBkZWNsYXJlIHBhcmFtZXRlcnMgaW4gYSBtb3JlIHRyYWRpdGlvbmFsIHdheSB5b3UgbWF5IGFsc28gZGVjbGFyZSB0aGVtIHVzaW5nIHRoZSBbcGFyYW1ldGVyc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXBhcmFtZXRlcnMvKSBrZXkuIFRoZSBkZWZpbml0aW9ucyB3aWxsIHRoZW4gYWxsIGJlIGNvbWJpbmVkLgoKYGBgdHMKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2F9JzogewogICAgICBwdXQ6IHsKICAgICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgICB6LnN0cmluZygpLm9wZW5hcGkoewogICAgICAgICAgICBwYXJhbTogewogICAgICAgICAgICAgIG5hbWU6ICdqb2ItaGVhZGVyJywKICAgICAgICAgICAgICBpbjogJ2hlYWRlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KSwKICAgICAgICBdLAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgUmVxdWVzdCBCb2R5CgpXaGVyZSB5b3Ugd291bGQgbm9ybWFsbHkgZGVjbGFyZSB0aGUgW21lZGlhIHR5cGVdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vbWVkaWEtdHlwZXMvKSwgc2V0IHRoZSBgc2NoZW1hYCBhcyB5b3VyIFpvZCBTY2hlbWEgYXMgZm9sbG93cy4KCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMnOiB7CiAgICAgIGdldDogewogICAgICAgIHJlcXVlc3RCb2R5OiB7CiAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgpJZiB5b3Ugd2lzaCB0byB1c2UgT3BlbkFQSSBzeW50YXggZm9yIHlvdXIgc2NoZW1hcywgc2ltcGx5IGFkZCBhbiBPcGVuQVBJIHNjaGVtYSB0byB0aGUgYHNjaGVtYWAgZmllbGQgaW5zdGVhZC4KCiMjIyBSZXNwb25zZXMKClNpbWlsYXJseSB0byB0aGUgW1JlcXVlc3QgQm9keV0oI3JlcXVlc3QtYm9keSksIHNpbXBseSBzZXQgdGhlIGBzY2hlbWFgIGFzIHlvdXIgWm9kIFNjaGVtYSBhcyBmb2xsb3dzLiBZb3UgY2FuIHNldCB0aGUgcmVzcG9uc2UgaGVhZGVycyB1c2luZyB0aGUgYGhlYWRlcnNgIGtleS4KCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMnOiB7CiAgICAgIGdldDogewogICAgICAgIHJlc3BvbnNlczogewogICAgICAgICAgMjAwOiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBoZWFkZXJzOiB6Lm9iamVjdCh7CiAgICAgICAgICAgICAgJ2hlYWRlci1rZXknOiB6LnN0cmluZygpLAogICAgICAgICAgICB9KSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIENhbGxiYWNrcwoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icyc6IHsKICAgICAgZ2V0OiB7CiAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICBvbkRhdGE6IHsKICAgICAgICAgICAgJ3skcmVxdWVzdC5xdWVyeS5jYWxsYmFja1VybH0vZGF0YSc6IHsKICAgICAgICAgICAgICBwb3N0OiB7CiAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keTogewogICAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pIH0sCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAgICAgICAgIDIwMDogewogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyBDcmVhdGluZyBDb21wb25lbnRzCgpPcGVuQVBJIGFsbG93cyB5b3UgdG8gZGVmaW5lIHJldXNhYmxlIFtjb21wb25lbnRzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2NvbXBvbmVudHMvKSBhbmQgdGhpcyBsaWJyYXJ5IGFsbG93cyB5b3UgdG8gcmVwbGljYXRlIHRoYXQgaW4gdHdvIHNlcGFyYXRlIHdheXMuCgoxLiBBdXRvIHJlZ2lzdGVyaW5nIHNjaGVtYQoyLiBNYW51YWxseSByZWdpc3RlcmluZyBzY2hlbWEKCiMjIyMgU2NoZW1hCgpJZiB3ZSB0YWtlIHRoZSBleGFtcGxlIGluIGBjcmVhdGVEb2N1bWVudGAgYW5kIGluc3RlYWQgY3JlYXRlIGB0aXRsZWAgYXMgZm9sbG93cwoKIyMjIyMgQXV0byBSZWdpc3RlcmluZyBTY2hlbWEKCmBgYHR5cGVzY3JpcHQKY29uc3QgdGl0bGUgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnSm9iIHRpdGxlJywKICBleGFtcGxlOiAnTXkgam9iJywKICByZWY6ICdqb2JUaXRsZScsIC8vIDwtIG5ldyBmaWVsZAp9KTsKYGBgCgpXaGVyZXZlciBgdGl0bGVgIGlzIHVzZWQgaW4gc2NoZW1hcyBhY3Jvc3MgdGhlIGRvY3VtZW50LCBpdCB3aWxsIGluc3RlYWQgYmUgY3JlYXRlZCBhcyBhIHJlZmVyZW5jZS4KCmBgYGpzb24KeyAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9qb2JUaXRsZSIgfQpgYGAKCmB0aXRsZWAgd2lsbCB0aGVuIGJlIG91dHB1dHRlZCBhcyBhIHNjaGVtYSB3aXRoaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KCmBgYGpzb24KewogICJjb21wb25lbnRzIjogewogICAgInNjaGVtYXMiOiB7CiAgICAgICJqb2JUaXRsZSI6IHsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJKb2IgdGl0bGUiLAogICAgICAgICJleGFtcGxlIjogIk15IGpvYiIKICAgICAgfQogICAgfQogIH0KfQpgYGAKClRoaXMgY2FuIGJlIGFuIGV4dHJlbWVseSBwb3dlcmZ1bCB3YXkgdG8gY3JlYXRlIGxlc3MgcmVwZXRpdGl2ZSBPcGVuIEFQSSBkb2N1bWVudGF0aW9uLiBUaGVyZSBhcmUgc29tZSBPcGVuIEFQSSBmZWF0dXJlcyBsaWtlIFtkaXNjcmltaW5hdG9yIG1hcHBpbmddKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvaW5oZXJpdGFuY2UtYW5kLXBvbHltb3JwaGlzbS8pIHdoaWNoIHJlcXVpcmUgYWxsIHNjaGVtYXMgaW4gdGhlIHVuaW9uIHRvIGNvbnRhaW4gYSByZWYuCgojIyMjIyBNYW51YWxseSBSZWdpc3RlcmluZyBTY2hlbWEKCkFub3RoZXIgd2F5IHRvIHJlZ2lzdGVyIHNjaGVtYSBpbnN0ZWFkIG9mIGFkZGluZyBhIGByZWZgIGlzIHRvIGFkZCBpdCB0byB0aGUgY29tcG9uZW50cyBkaXJlY3RseS4gVGhpcyB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIHNhbWUgd2F5IGFzIGByZWZgLiBTbyB3aGVuZXZlciB3ZSBydW4gaW50byB0aGF0IFpvZCB0eXBlIHdlIHdpbGwgcmVwbGFjZSBpdCB3aXRoIGEgcmVmZXJlbmNlLgoKZWcuCgpgYGB0eXBlc2NyaXB0CmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBzY2hlbWFzOiB7CiAgICAgIGpvYlRpdGxlOiB0aXRsZSwgLy8gdGhpcyB3aWxsIHJlZ2lzdGVyIHRoaXMgWm9kIFNjaGVtYSBhcyBqb2JUaXRsZSB1bmxlc3MgYHJlZmAgaW4gYC5vcGVuYXBpKClgIGlzIHNwZWNpZmllZCBvbiB0aGUgdHlwZQogICAgfSwKICB9LAp9KTsKYGBgCgojIyMjIyBab2QgRWZmZWN0cwoKYC50cmFuc2Zvcm0oKWAsIGAuZGVmYXVsdCgpYCBhbmQgYC5waXBlKClgIGFyZSBjb21wbGljYXRlZCBiZWNhdXNlIHRoZXkgdGVjaG5pY2FsbHkgY29tcHJpc2Ugb2YgdHdvIHR5cGVzIChpbnB1dCAmIG91dHB1dCkuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggdHlwZSB5b3UgYXJlIGNyZWF0aW5nLiBJbiBwYXJ0aWN1bGFyIHdpdGggdHJhbnNmb3JtIGl0IGlzIHZlcnkgZGlmZmljdWx0IHRvIGluZmVyIHRoZSBvdXRwdXQgdHlwZS4gVGhpcyBsaWJyYXJ5IHdpbGwgYXV0b21hdGljYWxseSBzZWxlY3Qgd2hpY2ggX3R5cGVfIHRvIHVzZSBieSBjaGVja2luZyBob3cgdGhlIHNjaGVtYSBpcyB1c2VkIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcnVsZXM6CgpfSW5wdXRfOiBSZXF1ZXN0IEJvZGllcywgUmVxdWVzdCBQYXJhbWV0ZXJzLCBIZWFkZXJzCgpfT3V0cHV0XzogUmVzcG9uc2VzLCBSZXNwb25zZSBIZWFkZXJzCgpJZiBhIHJlZ2lzdGVyZWQgc2NoZW1hIHdpdGggYSB0cmFuc2Zvcm0gb3IgcGlwZWxpbmUgaXMgdXNlZCBpbiBib3RoIGEgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc2NoZW1hIHlvdSB3aWxsIHJlY2VpdmUgYW4gZXJyb3IgYmVjYXVzZSB0aGUgY3JlYXRlZCBzY2hlbWEgZm9yIGVhY2ggd2lsbCBiZSBkaWZmZXJlbnQuIFRvIG92ZXJyaWRlIHRoZSBjcmVhdGlvbiB0eXBlIGZvciBhIHNwZWNpZmljIFpvZEVmZmVjdCwgYWRkIGFuIGAub3BlbmFwaSgpYCBmaWVsZCBvbiBpdCBhbmQgc2V0IHRoZSBgZWZmZWN0VHlwZWAgZmllbGQgdG8gYGlucHV0YCwgYG91dHB1dGAgb3IgYHNhbWVgLiBUaGlzIHdpbGwgZm9yY2UgdGhpcyBsaWJyYXJ5IHRvIGFsd2F5cyBnZW5lcmF0ZSB0aGUgaW5wdXQvb3V0cHV0IHR5cGUgZXZlbiBpZiB3ZSBhcmUgY3JlYXRpbmcgYSByZXNwb25zZSAob3V0cHV0KSBvciByZXF1ZXN0IChpbnB1dCkgdHlwZS4gWW91IHR5cGljYWxseSB3YW50IHRvIHNldCB0aGlzIHdoZW4geW91IGtub3cgdGhlIHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGluIHRoZSB0cmFuc2Zvcm0uIGBzYW1lYCBpcyB0aGUgcmVjb21tZW5kZWQgY2hvaWNlIGFzIGl0IHdpbGwgZ2VuZXJhdGUgYSBUeXBlU2NyaXB0IGNvbXBpbGVyIGVycm9yIGlmIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHR5cGVzIGluIHRoZSB0cmFuc2Zvcm0gZHJpZnQuCgpgLnByZXByb2Nlc3MoKWAgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBgb3V0cHV0YCB0eXBlIGV2ZW4gaWYgd2UgYXJlIGNyZWF0aW5nIGFuIGlucHV0IHNjaGVtYS4gSWYgYSBkaWZmZXJlbnQgaW5wdXQgdHlwZSBpcyByZXF1aXJlZCB5b3UgY2FuIGFjaGlldmUgdGhpcyB3aXRoIGEgYC50cmFuc2Zvcm0oKWAgY29tYmluZWQgd2l0aCBhIGAucGlwZSgpYCBvciBzaW1wbHkgZGVjbGFyZSBhIG1hbnVhbCBgdHlwZWAgaW4gYC5vcGVuYXBpKClgLgoKSWYgeW91IGFyZSBhZGRpbmcgYSBab2RTY2hlbWEgZGlyZWN0bHkgdG8gdGhlIGBjb21wb25lbnRzYCBzZWN0aW9uIHdoaWNoIGlzIG5vdCByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSBkb2N1bWVudCwgYWRkaXRpb25hbCBjb250ZXh0IG1heSBiZSByZXF1aXJlZCB0byBjcmVhdGUgZWl0aGVyIGFuIGlucHV0IG9yIG91dHB1dCBzY2hlbWEuIFlvdSBjYW4gZG8gdGhpcyBieSBzZXR0aW5nIHRoZSBgcmVmVHlwZWAgZmllbGQgdG8gYGlucHV0YCBvciBgb3V0cHV0YCBpbiBgLm9wZW5hcGkoKWAuIFRoaXMgZGVmYXVsdHMgdG8gYG91dHB1dGAgYnkgZGVmYXVsdC4KCiMjIyMgUGFyYW1ldGVycwoKUXVlcnksIFBhdGgsIEhlYWRlciAmIENvb2tpZSBwYXJhbWV0ZXJzIGNhbiBiZSBzaW1pbGFybHkgcmVnaXN0ZXJlZDoKCmBgYHR5cGVzY3JpcHQKLy8gRWFzeSBhdXRvIHJlZ2lzdHJhdGlvbgpjb25zdCBqb2JJZCA9IHouc3RyaW5nKCkub3BlbmFwaSh7CiAgZGVzY3JpcHRpb246ICdKb2IgSUQnLAogIGV4YW1wbGU6ICcxMjM0JywKICBwYXJhbTogeyByZWY6ICdqb2JSZWYnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcmVxdWVzdFBhcmFtczogewogICAgICAgICAgaGVhZGVyOiB6Lm9iamVjdCh7CiAgICAgICAgICAgIGpvYklkLAogICAgICAgICAgfSksCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBvciBtb3JlIHZlcmJvc2UgYXV0byByZWdpc3RyYXRpb24KY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnSm9iIElEJywKICBleGFtcGxlOiAnMTIzNCcsCiAgcGFyYW06IHsgaW46ICdoZWFkZXInLCBuYW1lOiAnam9iSWQnLCByZWY6ICdqb2JSZWYnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcGFyYW1ldGVyczogW2pvYklkXSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBvciBtYW51YWwgcmVnaXN0ZXJhdGlvbgpjb25zdCBvdGhlckpvYklkID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAogIHBhcmFtOiB7IGluOiAnaGVhZGVyJywgbmFtZTogJ2pvYklkJyB9LAp9KTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBwYXJhbWV0ZXJzOiB7CiAgICAgIGpvYlJlZjogam9iSWQsCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyMgUmVzcG9uc2UgSGVhZGVycwoKUmVzcG9uc2UgaGVhZGVycyBjYW4gYmUgc2ltaWxhcmx5IHJlZ2lzdGVyZWQ6CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGhlYWRlciA9IHouc3RyaW5nKCkub3BlbmFwaSh7CiAgZGVzY3JpcHRpb246ICdKb2IgSUQnLAogIGV4YW1wbGU6ICcxMjM0JywKICBoZWFkZXI6IHsgcmVmOiAnc29tZS1oZWFkZXInIH0sCn0pOwoKLy8gb3IKCmNvbnN0IGpvYklkSGVhZGVyID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAp9KTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBoZWFkZXJzOiB7CiAgICAgIHNvbWVIZWFkZXJSZWY6IGpvYklkSGVhZGVyLAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMjIFJlc3BvbnNlcwoKRW50aXJlIFJlc3BvbnNlcyBjYW4gYWxzbyBiZSByZWdpc3RlcmVkCgpgYGB0eXBlc2NyaXB0CmNvbnN0IHJlc3BvbnNlOiBab2RPcGVuQXBpUmVzcG9uc2VPYmplY3QgPSB7CiAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogIGNvbnRlbnQ6IHsKICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgIH0sCiAgfSwKICByZWY6ICdzb21lLXJlc3BvbnNlJywKfTsKCi8vb3IKCmNvbnN0IHJlc3BvbnNlOiBab2RPcGVuQXBpUmVzcG9uc2VPYmplY3QgPSB7CiAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogIGNvbnRlbnQ6IHsKICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgIH0sCiAgfSwKfTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgJ3NvbWUtcmVzcG9uc2UnOiByZXNwb25zZSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBDYWxsYmFja3MKCkNhbGxiYWNrcyBjYW4gYWxzbyBiZSByZWdpc3RlcmVkCgpgYGB0eXBlc2NyaXB0CmNvbnN0IGNhbGxiYWNrOiBab2RPcGVuQXBpQ2FsbGJhY2tPYmplY3QgPSB7CiAgcmVmOiAnc29tZS1jYWxsYmFjaycKICBwb3N0OiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgMjAwOiB7CiAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfTsKCi8vb3IKCmNvbnN0IGNhbGxiYWNrOiBab2RPcGVuQXBpQ2FsbGJhY2tPYmplY3QgPSB7CiAgcG9zdDogewogICAgcmVzcG9uc2VzOiB7CiAgICAgIDIwMDogewogICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsKICAgICAgICAgICAgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn07CgpjcmVhdGVEb2N1bWVudCh7CiAgY29tcG9uZW50czogewogICAgY2FsbGJhY2tzOiB7CiAgICAgICdzb21lLWNhbGxiYWNrJzogY2FsbGJhY2ssCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIFN1cHBvcnRlZCBPcGVuQVBJIFZlcnNpb25zCgpDdXJyZW50bHkgdGhlIGZvbGxvd2luZyB2ZXJzaW9ucyBvZiBPcGVuQVBJIGFyZSBzdXBwb3J0ZWQKCi0gYDMuMC4wYAotIGAzLjAuMWAKLSBgMy4wLjJgCi0gYDMuMC4zYAotIGAzLjEuMGAKClNldHRpbmcgdGhlIGBvcGVuYXBpYCBmaWVsZCB3aWxsIGNoYW5nZSBob3cgdGhlIHNvbWUgb2YgdGhlIGNvbXBvbmVudHMgYXJlIHJlbmRlcmVkLgoKYGBgdHMKY3JlYXRlRG9jdW1lbnQoewogIG9wZW5hcGk6ICczLjEuMCcsCn0pOwpgYGAKCkZvciBleGFtcGxlIGluIGB6LnN0cmluZygpLm51bGxhYmxlKClgIHdpbGwgYmUgcmVuZGVyZWQgZGlmZmVyZW50bHkKCmAzLjAuMGAKCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgIm51bGxhYmxlIjogdHJ1ZQp9CmBgYAoKYDMuMS4wYAoKYGBganNvbgp7CiAgInR5cGUiOiBbInN0cmluZyIsICJudWxsIl0KfQpgYGAKCiMjIFN1cHBvcnRlZCBab2QgU2NoZW1hCgotIFpvZEFueQotIFpvZEFycmF5CiAgLSBgbWluSXRlbXNgL2BtYXhJdGVtc2AgbWFwcGluZyBmb3IgYC5sZW5ndGgoKWAsIGAubWluKClgLCBgLm1heCgpYAotIFpvZEJvb2xlYW4KLSBab2RCcmFuZGVkCi0gWm9kQ2F0Y2gKLSBab2REYXRlCiAgLSBgdHlwZWAgaXMgbWFwcGVkIGFzIGBzdHJpbmdgIGJ5IGRlZmF1bHQKLSBab2REZWZhdWx0Ci0gWm9kRGlzY3JpbWluYXRlZFVuaW9uCiAgLSBgZGlzY3JpbWluYXRvcmAgbWFwcGluZyB3aGVuIGFsbCBzY2hlbWFzIGluIHRoZSB1bmlvbiBhcmUgW3JlZ2lzdGVyZWRdKCNjcmVhdGluZy1jb21wb25lbnRzKS4gVGhlIGRpc2NyaW1pbmF0b3IgbXVzdCBiZSBhIGBab2RMaXRlcmFsYCwgYFpvZEVudW1gIG9yIGBab2ROYXRpdmVFbnVtYCB3aXRoIHN0cmluZyB2YWx1ZXMuIE9ubHkgdmFsdWVzIHdyYXBwZWQgaW4gYFpvZEJyYW5kZWRgLCBgWm9kUmVhZE9ubHlgIGFuZCBgWm9kQ2F0Y2hgIGFyZSBzdXBwb3J0ZWQuCi0gWm9kRWZmZWN0cwogIC0gYHRyYW5zZm9ybWAgc3VwcG9ydCBmb3IgcmVxdWVzdCBzY2hlbWFzLiBTZWUgW1pvZCBFZmZlY3RzXSgjem9kLWVmZmVjdHMpIGZvciBob3cgdG8gZW5hYmxlIHJlc3BvbnNlIHNjaGVtYSBzdXBwb3J0CiAgLSBgcHJlLXByb2Nlc3NgIHN1cHBvcnQuIFdlIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCB0eXBlIGlzIHRoZSBzYW1lIGFzIHRoZSBvdXRwdXQgdHlwZS4gT3RoZXJ3aXNlIHBpcGUgYW5kIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBpbnN0ZWFkLgogIC0gYHJlZmluZWAgZnVsbCBzdXBwb3J0Ci0gWm9kRW51bQotIFpvZEludGVyc2VjdGlvbgotIFpvZExhenkKICAtIFRoZSByZWN1cnNpdmUgc2NoZW1hIHdpdGhpbiB0aGUgWm9kTGF6eSBvciB0aGUgWm9kTGF6eSBfKiptdXN0KipfIGJlIHJlZ2lzdGVyZWQgYXMgYSBjb21wb25lbnQuIFNlZSBbQ3JlYXRpbmcgQ29tcG9uZW50c10oI2NyZWF0aW5nLWNvbXBvbmVudHMpIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIFpvZExpdGVyYWwKLSBab2ROYXRpdmVFbnVtCiAgLSBzdXBwb3J0aW5nIGBzdHJpbmdgLCBgbnVtYmVyYCBhbmQgY29tYmluZWQgZW51bXMuCi0gWm9kTmV2ZXIKLSBab2ROdWxsCi0gWm9kTnVsbGFibGUKLSBab2ROdW1iZXIKICAtIGBpbnRlZ2VyYCBgdHlwZWAgbWFwcGluZyBmb3IgYC5pbnQoKWAKICAtIGBleGNsdXNpdmVNaW5gL2BtaW5gL2BleGNsdXNpdmVNYXhgL2BtYXhgIG1hcHBpbmcgZm9yIGAubWluKClgLCBgLm1heCgpYCwgYGx0KClgLCBgZ3QoKWAKLSBab2RPYmplY3QKICAtIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgbWFwcGluZyBmb3IgYC5jYXRjaGFsbCgpYCwgYC5zdHJpY3QoKWAKICAtIGBhbGxPZmAgbWFwcGluZyBmb3IgYC5leHRlbmQoKWAgd2hlbiB0aGUgYmFzZSBvYmplY3QgaXMgcmVnaXN0ZXJlZCBhbmQgZG9lcyBub3QgaGF2ZSBgY2F0Y2hhbGwoKWAsIGBzdHJpY3QoKWAgYW5kIGV4dGVuc2lvbiBkb2VzIG5vdCBvdmVycmlkZSBhIGZpZWxkLgotIFpvZE9wdGlvbmFsCi0gWm9kUGlwZWxpbmUKICAtIFNlZSBbWm9kIEVmZmVjdHNdKCN6b2QtZWZmZWN0cykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gWm9kUmVhZG9ubHkKLSBab2RSZWNvcmQKLSBab2RTZXQKICAtIFRyZWF0ZWQgYXMgYW4gYXJyYXkgd2l0aCBgdW5pcXVlSXRlbXNgICh5b3UgbWF5IG5lZWQgdG8gYWRkIGEgcHJlLXByb2Nlc3MgdG8gY29udmVydCBpdCB0byBhIHNldCkKLSBab2RTdHJpbmcKICAtIGBmb3JtYXRgIG1hcHBpbmcgZm9yIGAudXJsKClgLCBgLnV1aWQoKWAsIGAuZW1haWwoKWAsIGAuZGF0ZXRpbWUoKWAsIGAuZGF0ZSgpYCwgYC50aW1lKClgLCBgLmR1cmF0aW9uKClgCiAgLSBgbWluTGVuZ3RoYC9gbWF4TGVuZ3RoYCBtYXBwaW5nIGZvciBgLmxlbmd0aCgpYCwgYC5taW4oKWAsIGAubWF4KClgCiAgLSBgcGF0dGVybmAgbWFwcGluZyBmb3IgYC5yZWdleCgpYCwgYC5zdGFydHNXaXRoKClgLCBgLmVuZHNXaXRoKClgLCBgLmluY2x1ZGVzKClgCiAgLSBgY29udGVudEVuY29kaW5nYCBtYXBwaW5nIGZvciBgLmJhc2U2NCgpYCBmb3IgT3BlbkFQSSAzLjEuMCsKLSBab2RUdXBsZQogIC0gYGl0ZW1zYCBtYXBwaW5nIGZvciBgLnJlc3QoKWAKICAtIGBwcmVmaXhJdGVtc2AgbWFwcGluZyBmb3IgT3BlbkFQSSAzLjEuMCsKLSBab2RVbmRlZmluZWQKLSBab2RVbmlvbgogIC0gQnkgZGVmYXVsdCBpdCBvdXRwdXRzIGFuIGBhbGxPZmAgc2NoZW1hLiBVc2UgYHVuaW9uT25lT2ZgIHRvIGNoYW5nZSB0aGlzIHRvIG91dHB1dCBgb25lT2ZgIGluc3RlYWQuCi0gWm9kVW5rbm93bgoKSWYgdGhpcyBsaWJyYXJ5IGNhbm5vdCBkZXRlcm1pbmUgYSB0eXBlIGZvciBhIFpvZCBTY2hlbWEsIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRvIGF2b2lkIHRoaXMsIGRlY2xhcmUgYSBtYW51YWwgYHR5cGVgIGluIHRoZSBgLm9wZW5hcGkoKWAgc2VjdGlvbiBvZiB0aGF0IHNjaGVtYS4KCmVnLgoKYGBgdHlwZXNjcmlwdAp6LmN1c3RvbSgpLm9wZW5hcGkoeyB0eXBlOiAnc3RyaW5nJyB9KTsKYGBgCgojIyBFeGFtcGxlcwoKU2VlIHRoZSBsaWJyYXJ5IGluIHVzZSBpbiB0aGUgW2V4YW1wbGVzXSguL2V4YW1wbGVzLykgZm9sZGVyLgoKLSBTaW1wbGUgLSBbc2V0dXBdKC4vZXhhbXBsZXMvc2ltcGxlL2NyZWF0ZVNjaGVtYS50cykgfCBbb3BlbmFwaS55bWxdKC4vZXhhbXBsZXMvc2ltcGxlL29wZW5hcGkueW1sKSB8IFtyZWRvYyBkb2N1bWVudGF0aW9uXShodHRwczovL3NhbWNodW5neS5naXRodWIuaW8vem9kLW9wZW5hcGkvZXhhbXBsZXMvc2ltcGxlL3JlZG9jLXN0YXRpYy5odG1sKQoKIyMgRWNvc3lzdGVtCgotIFtmYXN0aWZ5LXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2Zhc3RpZnktem9kLW9wZW5hcGkpIC0gRmFzdGlmeSBwbHVnaW4gZm9yIHpvZC1vcGVuYXBpLiBUaGlzIGluY2x1ZGVzIHR5cGUgcHJvdmlkZXIsIFpvZCBzY2hlbWEgdmFsaWRhdGlvbiwgWm9kIHNjaGVtYSBzZXJpYWxpemF0aW9uIGFuZCBTd2FnZ2VyIFVJIHN1cHBvcnQuCgotIFtlc2xpbnQtcGx1Z2luLXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2VzbGludC1wbHVnaW4tem9kLW9wZW5hcGkpIC0gRXNsaW50IHJ1bGVzIGZvciB6b2Qtb3BlbmFwaS4gVGhpcyBpbmNsdWRlcyBmZWF0dXJlcyB3aGljaCBjYW4gYXV0b2dlbmVyYXRlIFR5cGVzY3JpcHQgY29tbWVudHMgZm9yIHlvdXIgWm9kIHR5cGVzIGJhc2VkIG9uIHlvdXIgYGRlc2NyaXB0aW9uYCwgYGV4YW1wbGVgIGFuZCBgZGVwcmVjYXRlZGAgZmllbGRzLgoKIyMgQ29tcGFyaXNvbnMKCiMjIyBbQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpXSguL2RvY3MvY29tcGFyaXNvbnMubWQpCgojIyBEZXZlbG9wbWVudAoKIyMjIFByZXJlcXVpc2l0ZXMKCi0gTm9kZS5qcyBMVFMKLSBwbnBtCgpgYGBzaGVsbApwbnBtCnBucG0gYnVpbGQKYGBgCgojIyMgVGVzdAoKYGBgc2hlbGwKcG5wbSB0ZXN0CmBgYAoKIyMjIExpbnQKCmBgYHNoZWxsCiMgRml4IGlzc3VlcwpwbnBtIGZvcm1hdAoKIyBDaGVjayBmb3IgaXNzdWVzCnBucG0gbGludApgYGAKCiMjIyBSZWxlYXNlCgpUbyByZWxlYXNlIGEgbmV3IHZlcnNpb24KCjEuIENyZWF0ZSBhIFtuZXcgR2l0SHViIFJlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvcmVsZWFzZXMvbmV3KQoyLiBTZWxlY3QgYPCfj7fvuI8gQ2hvb3NlIGEgdGFnYCwgZW50ZXIgYSB2ZXJzaW9uIG51bWJlci4gZWcuIGB2MS4yLjBgIGFuZCBjbGljayBgKyBDcmVhdGUgbmV3IHRhZzogdlguWC5YIG9uIHB1Ymxpc2hgLgozLiBDbGljayB0aGUgYEdlbmVyYXRlIHJlbGVhc2Ugbm90ZXNgIGJ1dHRvbiBhbmQgYWRqdXN0IHRoZSBkZXNjcmlwdGlvbi4KNC4gVGljayB0aGUgYFNldCBhcyB0aGUgbGF0ZXN0IHJlbGVhc2VgIGJveCBhbmQgY2xpY2sgYFB1Ymxpc2ggcmVsZWFzZWAuIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgUmVsZWFzZWAgd29ya2Zsb3cuCjUuIENoZWNrIHRoZSBgUHVsbCBSZXF1ZXN0c2AgdGFiIGZvciBhIFBSIGxhYmVsbGVkIGBSZWxlYXNlIHZYLlguWGAuCjYuIENsaWNrIGBNZXJnZSBQdWxsIFJlcXVlc3RgIG9uIHRoYXQgUHVsbCBSZXF1ZXN0IHRvIHVwZGF0ZSBtYXN0ZXIgd2l0aCB0aGUgbmV3IHBhY2thZ2UgdmVyc2lvbi4KClRvIHJlbGVhc2UgYSBuZXcgYmV0YSB2ZXJzaW9uCgoxLiBDcmVhdGUgYSBbbmV3IEdpdEh1YiBSZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L3pvZC1vcGVuYXBpL3JlbGVhc2VzL25ldykKMi4gU2VsZWN0IGDwn4+377iPIENob29zZSBhIHRhZ2AsIGVudGVyIGEgdmVyc2lvbiBudW1iZXIgd2l0aCBhIGAtYmV0YS5YYCBzdWZmaXggZWcuIGB2MS4yLjAtYmV0YS4xYCBhbmQgY2xpY2sgYCsgQ3JlYXRlIG5ldyB0YWc6IHZYLlguWC1iZXRhLlggb24gcHVibGlzaGAuCjMuIENsaWNrIHRoZSBgR2VuZXJhdGUgcmVsZWFzZSBub3Rlc2AgYnV0dG9uIGFuZCBhZGp1c3QgdGhlIGRlc2NyaXB0aW9uLgo0LiBUaWNrIHRoZSBgU2V0IGFzIGEgcHJlLXJlbGVhc2VgIGJveCBhbmQgY2xpY2sgYFB1Ymxpc2ggcmVsZWFzZWAuIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgUHJlcmVsZWFzZWAgd29ya2Zsb3cuCg== - readmeEtag: '"2eb06193ad2fa54541926607438dabedc668f90c"' - readmeLastModified: Mon, 07 Oct 2024 02:29:14 GMT + PHAgYWxpZ249ImNlbnRlciI+CiAgPGltZyBzcmM9InpvZC1vcGVuYXBpLnN2ZyIgd2lkdGg9IjIwMHB4IiBhbGlnbj0iY2VudGVyIiBhbHQ9InpvZC1vcGVuYXBpIGxvZ28iIC8+CiAgPGgxIGFsaWduPSJjZW50ZXIiPnpvZC1vcGVuYXBpPC9oMT4KPC9wPgo8cCBhbGlnbj0iY2VudGVyIj4KQSBUeXBlc2NyaXB0IGxpYnJhcnkgdG8gdXNlIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZCI+Wm9kPC9hPiBTY2hlbWFzIHRvIGNyZWF0ZSBPcGVuQVBJIHYzLnggZG9jdW1lbnRhdGlvbgo8L3A+CjxkaXYgYWxpZ249ImNlbnRlciI+CjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3pvZC1vcGVuYXBpIj48aW1nIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi96b2Qtb3BlbmFwaSIvPjxhPgo8YSBocmVmPSJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96b2Qtb3BlbmFwaSI+PGltZyBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL3pvZC1vcGVuYXBpIi8+PGE+CjxhIGhyZWY9Imh0dHBzOi8vbm9kZWpzLm9yZy9lbi8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL25vZGUtJTNFJTNEJTIwMTgtYnJpZ2h0Z3JlZW4iLz48YT4KPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NhbWNodW5neS96b2Qtb3BlbmFwaS9hY3Rpb25zL3dvcmtmbG93cy90ZXN0LnltbCI+PGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvdGVzdC55bWwvYmFkZ2Uuc3ZnIi8+PGE+CjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvcmVsZWFzZS55bWwiPjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L3pvZC1vcGVuYXBpL2FjdGlvbnMvd29ya2Zsb3dzL3JlbGVhc2UueW1sL2JhZGdlLnN2ZyIvPjxhPgo8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2Vlay1vc3Mvc2t1YmEiPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL/CfpL8lMjBza3ViYS1wb3dlcmVkLTAwOURDNCIvPjxhPgo8L2Rpdj4KPGJyPgoKIyMgSW5zdGFsbAoKSW5zdGFsbCB2aWEgYG5wbWAsIGB5YXJuYCBvciBgcG5wbWA6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIHpvZCB6b2Qtb3BlbmFwaQojIyBvcgp5YXJuIGFkZCB6b2Qgem9kLW9wZW5hcGkKIyMgb3IKcG5wbSBpbnN0YWxsIHpvZCB6b2Qtb3BlbmFwaQpgYGAKCiMjIFVzYWdlCgojIyMgRXh0ZW5kIFpvZAoKVGhpcyBtdXRhdGVzIFpvZCB0byBhZGQgYW4gZXh0cmEgYC5vcGVuYXBpKClgIG1ldGhvZC4gQ2FsbCB0aGlzIGF0IHRoZSB0b3Agb2YgeW91ciBlbnRyeSBwb2ludChzKS4gWW91IGNhbiBhY2hpZXZlIHRoaXMgaW4gdHdvIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgb24geW91ciBwcmVmZXJlbmNlLgoKIyMjIyBTdWJwYXRoIEltcG9ydAoKYGBgdHMKaW1wb3J0ICd6b2Qtb3BlbmFwaS9leHRlbmQnOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKCnouc3RyaW5nKCkub3BlbmFwaSh7IGRlc2NyaXB0aW9uOiAnaGVsbG8gd29ybGQhJywgZXhhbXBsZTogJ2hlbGxvIHdvcmxkJyB9KTsKYGBgCgojIyMjIE1hbnVhbCBFeHRlbnNpb24KClRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGEgc3BlY2lmaWMgaW5zdGFuY2Ugb2YgWm9kIG9yIGEgWm9kIGluc3RhbmNlIGZyb20gYW5vdGhlciBsaWJyYXJ5IHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gdGFyZ2V0LgoKYGBgdHlwZXNjcmlwdAppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKaW1wb3J0IHsgZXh0ZW5kWm9kV2l0aE9wZW5BcGkgfSBmcm9tICd6b2Qtb3BlbmFwaSc7CgpleHRlbmRab2RXaXRoT3BlbkFwaSh6KTsKCnouc3RyaW5nKCkub3BlbmFwaSh7IGRlc2NyaXB0aW9uOiAnaGVsbG8gd29ybGQhJywgZXhhbXBsZTogJ2hlbGxvIHdvcmxkJyB9KTsKYGBgCgojIyMjIGAub3BlbmFwaSgpYAoKVXNlIHRoZSBgLm9wZW5hcGkoKWAgbWV0aG9kIHRvIGFkZCBtZXRhZGF0YSB0byBhIHNwZWNpZmljIFpvZCB0eXBlLiBUaGUgYC5vcGVuYXBpKClgIG1ldGhvZCB0YWtlcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Cgp8ICAgICBPcHRpb24gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwKfCBPcGVuQVBJIE9wdGlvbnMgfCAgICAgICAgICAgICAgVGhpcyB3aWxsIHRha2UgYW55IG9wdGlvbiB5b3Ugd291bGQgcHV0IG9uIGEgW1NjaGVtYU9iamVjdF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9kYXRhLXR5cGVzLykuICAgICAgICAgICAgICAgfAp8ICBgZWZmZWN0VHlwZWAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0byBvdmVycmlkZSB0aGUgY3JlYXRpb24gdHlwZSBmb3IgYSBbWm9kIEVmZmVjdF0oI3pvZC1lZmZlY3RzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYGhlYWRlcmAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRvIHByb3ZpZGUgbWV0YWRhdGEgZm9yIFtyZXNwb25zZSBoZWFkZXJzXSgjcmVzcG9uc2UtaGVhZGVycykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgYHBhcmFtYCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0byBwcm92aWRlIG1ldGFkYXRhIGZvciBbcmVxdWVzdCBwYXJhbWV0ZXJzXSgjcGFyYW1ldGVycykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgYHJlZmAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHRvIFthdXRvIHJlZ2lzdGVyIGEgc2NoZW1hIGFzIGEgcmUtdXNhYmxlIGNvbXBvbmVudF0oI2NyZWF0aW5nLWNvbXBvbmVudHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgYHJlZlR5cGVgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoaXMgdG8gc2V0IHRoZSBjcmVhdGlvbiB0eXBlIGZvciBhIGNvbXBvbmVudCB3aGljaCBpcyBub3QgcmVmZXJlbmNlZCBpbiB0aGUgZG9jdW1lbnQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgYHR5cGVgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGlzIHRvIG92ZXJyaWRlIHRoZSBnZW5lcmF0ZWQgdHlwZS4gSWYgdGhpcyBpcyBwcm92aWRlZCBubyBtZXRhZGF0YSB3aWxsIGJlIGdlbmVyYXRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICBgdW5pb25PbmVPZmAgICB8IFNldCB0byBgdHJ1ZWAgdG8gZm9yY2UgYSBzaW5nbGUgWm9kVW5pb24gdG8gb3V0cHV0IGBvbmVPZmAgaW5zdGVhZCBvZiBgYWxsT2ZgLiBTZWUgW0NyZWF0ZURvY3VtZW50T3B0aW9uc10oI0NyZWF0ZURvY3VtZW50T3B0aW9ucykgZm9yIGEgZ2xvYmFsIG9wdGlvbiB8CgojIyMgYGNyZWF0ZURvY3VtZW50YAoKQ3JlYXRlcyBhbiBPcGVuQVBJIGRvY3VtZW50YXRpb24gb2JqZWN0CgpgYGB0eXBlc2NyaXB0CmltcG9ydCAnem9kLW9wZW5hcGkvZXh0ZW5kJzsKaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7CmltcG9ydCB7IGNyZWF0ZURvY3VtZW50IH0gZnJvbSAnem9kLW9wZW5hcGknOwoKY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBqb2InLAogIGV4YW1wbGU6ICcxMjM0NScsCiAgcmVmOiAnam9iSWQnLAp9KTsKCmNvbnN0IHRpdGxlID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiB0aXRsZScsCiAgZXhhbXBsZTogJ015IGpvYicsCn0pOwoKY29uc3QgZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCh7CiAgb3BlbmFwaTogJzMuMS4wJywKICBpbmZvOiB7CiAgICB0aXRsZTogJ015IEFQSScsCiAgICB2ZXJzaW9uOiAnMS4wLjAnLAogIH0sCiAgcGF0aHM6IHsKICAgICcvam9icy97am9iSWR9JzogewogICAgICBwdXQ6IHsKICAgICAgICByZXF1ZXN0UGFyYW1zOiB7IHBhdGg6IHoub2JqZWN0KHsgam9iSWQgfSkgfSwKICAgICAgICByZXF1ZXN0Qm9keTogewogICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiB6Lm9iamVjdCh7IHRpdGxlIH0pIH0sCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAnMjAwJzogewogICAgICAgICAgICBkZXNjcmlwdGlvbjogJzIwMCBPSycsCiAgICAgICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsgc2NoZW1hOiB6Lm9iamVjdCh7IGpvYklkLCB0aXRsZSB9KSB9LAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DcmVhdGVzIHRoZSBmb2xsb3dpbmcgb2JqZWN0Ojwvc3VtbWFyeT4KICAKICBgYGBqc29uCiAgewogICAgIm9wZW5hcGkiOiAiMy4xLjAiLAogICAgImluZm8iOiB7CiAgICAgICJ0aXRsZSI6ICJNeSBBUEkiLAogICAgICAidmVyc2lvbiI6ICIxLjAuMCIKICAgIH0sCiAgICAicGF0aHMiOiB7CiAgICAgICIvam9icy97am9iSWR9IjogewogICAgICAgICJwdXQiOiB7CiAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICJpbiI6ICJwYXRoIiwKICAgICAgICAgICAgICAibmFtZSI6ICJqb2JJZCIsCiAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAgICAgICAic2NoZW1hIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iSWQiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBdLAogICAgICAgICAgInJlcXVlc3RCb2R5IjogewogICAgICAgICAgICAiY29udGVudCI6IHsKICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICJzY2hlbWEiOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6IHsKICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSm9iIHRpdGxlIiwKICAgICAgICAgICAgICAgICAgICAgICJleGFtcGxlIjogIk15IGpvYiIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6IFsidGl0bGUiXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJyZXNwb25zZXMiOiB7CiAgICAgICAgICAgICIyMDAiOiB7CiAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIjIwMCBPSyIsCiAgICAgICAgICAgICAgImNvbnRlbnQiOiB7CiAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IHsKICAgICAgICAgICAgICAgICAgInNjaGVtYSI6IHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAgICAgICAgImpvYklkIjogewogICAgICAgICAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9qb2JJZCIKICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAidGl0bGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJKb2IgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiBbImpvYklkIiwgInRpdGxlIl0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJjb21wb25lbnRzIjogewogICAgICAic2NoZW1hcyI6IHsKICAgICAgICAiam9iSWQiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAgICJleGFtcGxlIjogIjEyMzQ1IgogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KICBgYGAKPC9kZXRhaWxzPgoKIyMjIyBDcmVhdGVEb2N1bWVudE9wdGlvbnMKCmBjcmVhdGVEb2N1bWVudGAgdGFrZXMgYW4gb3B0aW9uYWwgYENyZWF0ZURvY3VtZW50T3B0aW9uc2AgYXJndW1lbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGhvdyB0aGUgZG9jdW1lbnQgaXMgY3JlYXRlZC4KCmBgYHR5cGVzY3JpcHQKY29uc3QgZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudChkZXRhaWxzLCB7CiAgZGVmYXVsdERhdGVTY2hlbWE6IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2RhdGUtdGltZScgfSwgLy8gZGVmYXVsdHMgdG8geyB0eXBlOiAnc3RyaW5nJyB9CiAgdW5pb25PbmVPZjogdHJ1ZSwgLy8gZGVmYXVsdHMgdG8gZmFsc2UuIEZvcmNlcyBhbGwgWm9kVW5pb25zIHRvIG91dHB1dCBvbmVPZiBpbnN0ZWFkIG9mIGFsbE9mLiBBbiBgLm9wZW5hcGkoKWAgYHVuaW9uT25lT2ZgIHZhbHVlIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGlzIG9uZS4KfSk7CmBgYAoKIyMjIGBjcmVhdGVTY2hlbWFgCgpDcmVhdGVzIGFuIE9wZW5BUEkgU2NoZW1hIE9iamVjdCBhbG9uZyB3aXRoIGFueSByZWdpc3RlcmVkIGNvbXBvbmVudHMuIE9wZW5BUEkgMy4xLjAgU2NoZW1hIE9iamVjdHMgYXJlIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBKU09OIFNjaGVtYS4KCmBgYHR5cGVzY3JpcHQKaW1wb3J0ICd6b2Qtb3BlbmFwaS9leHRlbmQnOwppbXBvcnQgeyB6IH0gZnJvbSAnem9kJzsKaW1wb3J0IHsgY3JlYXRlU2NoZW1hIH0gZnJvbSAnem9kLW9wZW5hcGknOwoKY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBqb2InLAogIGV4YW1wbGU6ICcxMjM0NScsCiAgcmVmOiAnam9iSWQnLAp9KTsKCmNvbnN0IHRpdGxlID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiB0aXRsZScsCiAgZXhhbXBsZTogJ015IGpvYicsCn0pOwoKY29uc3Qgam9iID0gei5vYmplY3QoewogIGpvYklkLAogIHRpdGxlLAp9KTsKCmNvbnN0IHsgc2NoZW1hLCBjb21wb25lbnRzIH0gPSBjcmVhdGVTY2hlbWEoam9iKTsKYGBgCgo8ZGV0YWlscz4KICA8c3VtbWFyeT5DcmVhdGVzIHRoZSBmb2xsb3dpbmcgb2JqZWN0Ojwvc3VtbWFyeT4KICAKICBgYGBqc29uCiAgewogICAgInNjaGVtYSI6IHsKICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgImpvYklkIjogewogICAgICAgICAgIiRyZWYiOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvam9iSWQiCiAgICAgICAgfSwKICAgICAgICAidGl0bGUiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkpvYiB0aXRsZSIsCiAgICAgICAgICAiZXhhbXBsZSI6ICJNeSBqb2IiCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiOiBbImpvYklkIiwgInRpdGxlIl0KICAgIH0sCiAgICAiY29tcG9uZW50cyI6IHsKICAgICAgImpvYklkIjogewogICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgam9iIiwKICAgICAgICAiZXhhbXBsZSI6ICIxMjM0NSIKICAgICAgfQogICAgfQogIH0KICBgYGAKPC9kZXRhaWxzPgoKIyMjIyBDcmVhdGVTY2hlbWFPcHRpb25zCgpgY3JlYXRlU2NoZW1hYCB0YWtlcyBhbiBvcHRpb25hbCBgQ3JlYXRlU2NoZW1hT3B0aW9uc2AgcGFyYW1ldGVyIHdoaWNoIGNhbiBhbHNvIHRha2UgdGhlIHNhbWUgb3B0aW9ucyBhcyBbQ3JlYXRlRG9jdW1lbnRPcHRpb25zXSgjY3JlYXRlZG9jdW1lbnRvcHRpb25zKSBhbG9uZyB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKCmBgYHR5cGVzY3JpcHQKY29uc3QgeyBzY2hlbWEsIGNvbXBvbmVudHMgfSA9IGNyZWF0ZVNjaGVtYShqb2IsIHsKICBzY2hlbWFUeXBlOiAnaW5wdXQnOyAvLyBUaGlzIGNvbnRyb2xzIHdoZXRoZXIgdGhpcyBzaG91bGQgYmUgcmVuZGVyZWQgYXMgYSByZXF1ZXN0IChgaW5wdXRgKSBvciByZXNwb25zZSAoYG91dHB1dGApLiBEZWZhdWx0cyB0byBgb3V0cHV0YAogIG9wZW5hcGk6ICczLjAuMCc7IC8vIE9wZW5BUEkgdmVyc2lvbiB0byB1c2UsIGRlZmF1bHRzIHRvIGAnMy4xLjAnYAogIGNvbXBvbmVudHM6IHsgam9iSWQ6IHouc3RyaW5nKCkgfSAvLyBBZGRpdGlvbmFsIGNvbXBvbmVudHMgdG8gdXNlIGFuZCBjcmVhdGUgd2hpbGUgcmVuZGVyaW5nIHRoZSBzY2hlbWEKfSkKYGBgCgojIyMgUmVxdWVzdCBQYXJhbWV0ZXJzCgpRdWVyeSwgUGF0aCwgSGVhZGVyICYgQ29va2llIHBhcmFtZXRlcnMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIGByZXF1ZXN0UGFyYW1zYCBrZXkgdW5kZXIgdGhlIGBtZXRob2RgIGtleSBhcyBmb2xsb3dzOgoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icy97YX0nOiB7CiAgICAgIHB1dDogewogICAgICAgIHJlcXVlc3RQYXJhbXM6IHsKICAgICAgICAgIHBhdGg6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIHF1ZXJ5OiB6Lm9iamVjdCh7IGI6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICBjb29raWU6IHoub2JqZWN0KHsgY29va2llOiB6LnN0cmluZygpIH0pLAogICAgICAgICAgaGVhZGVyOiB6Lm9iamVjdCh7ICdjdXN0b20taGVhZGVyJzogei5zdHJpbmcoKSB9KSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgpJZiB5b3Ugd291bGQgbGlrZSB0byBkZWNsYXJlIHBhcmFtZXRlcnMgaW4gYSBtb3JlIHRyYWRpdGlvbmFsIHdheSB5b3UgbWF5IGFsc28gZGVjbGFyZSB0aGVtIHVzaW5nIHRoZSBbcGFyYW1ldGVyc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXBhcmFtZXRlcnMvKSBrZXkuIFRoZSBkZWZpbml0aW9ucyB3aWxsIHRoZW4gYWxsIGJlIGNvbWJpbmVkLgoKYGBgdHMKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2F9JzogewogICAgICBwdXQ6IHsKICAgICAgICBwYXJhbWV0ZXJzOiBbCiAgICAgICAgICB6LnN0cmluZygpLm9wZW5hcGkoewogICAgICAgICAgICBwYXJhbTogewogICAgICAgICAgICAgIG5hbWU6ICdqb2ItaGVhZGVyJywKICAgICAgICAgICAgICBpbjogJ2hlYWRlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9KSwKICAgICAgICBdLAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMgUmVxdWVzdCBCb2R5CgpXaGVyZSB5b3Ugd291bGQgbm9ybWFsbHkgZGVjbGFyZSB0aGUgW21lZGlhIHR5cGVdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vbWVkaWEtdHlwZXMvKSwgc2V0IHRoZSBgc2NoZW1hYCBhcyB5b3VyIFpvZCBTY2hlbWEgYXMgZm9sbG93cy4KCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMnOiB7CiAgICAgIGdldDogewogICAgICAgIHJlcXVlc3RCb2R5OiB7CiAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICB9LAp9KTsKYGBgCgpJZiB5b3Ugd2lzaCB0byB1c2UgT3BlbkFQSSBzeW50YXggZm9yIHlvdXIgc2NoZW1hcywgc2ltcGx5IGFkZCBhbiBPcGVuQVBJIHNjaGVtYSB0byB0aGUgYHNjaGVtYWAgZmllbGQgaW5zdGVhZC4KCiMjIyBSZXNwb25zZXMKClNpbWlsYXJseSB0byB0aGUgW1JlcXVlc3QgQm9keV0oI3JlcXVlc3QtYm9keSksIHNpbXBseSBzZXQgdGhlIGBzY2hlbWFgIGFzIHlvdXIgWm9kIFNjaGVtYSBhcyBmb2xsb3dzLiBZb3UgY2FuIHNldCB0aGUgcmVzcG9uc2UgaGVhZGVycyB1c2luZyB0aGUgYGhlYWRlcnNgIGtleS4KCmBgYHR5cGVzY3JpcHQKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMnOiB7CiAgICAgIGdldDogewogICAgICAgIHJlc3BvbnNlczogewogICAgICAgICAgMjAwOiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICAgICAgY29udGVudDogewogICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogeyBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBoZWFkZXJzOiB6Lm9iamVjdCh7CiAgICAgICAgICAgICAgJ2hlYWRlci1rZXknOiB6LnN0cmluZygpLAogICAgICAgICAgICB9KSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIENhbGxiYWNrcwoKYGBgdHlwZXNjcmlwdApjcmVhdGVEb2N1bWVudCh7CiAgcGF0aHM6IHsKICAgICcvam9icyc6IHsKICAgICAgZ2V0OiB7CiAgICAgICAgY2FsbGJhY2tzOiB7CiAgICAgICAgICBvbkRhdGE6IHsKICAgICAgICAgICAgJ3skcmVxdWVzdC5xdWVyeS5jYWxsYmFja1VybH0vZGF0YSc6IHsKICAgICAgICAgICAgICBwb3N0OiB7CiAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keTogewogICAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogei5vYmplY3QoeyBhOiB6LnN0cmluZygpIH0pIH0sCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcmVzcG9uc2VzOiB7CiAgICAgICAgICAgICAgICAgIDIwMDogewogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyBDcmVhdGluZyBDb21wb25lbnRzCgpPcGVuQVBJIGFsbG93cyB5b3UgdG8gZGVmaW5lIHJldXNhYmxlIFtjb21wb25lbnRzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2NvbXBvbmVudHMvKSBhbmQgdGhpcyBsaWJyYXJ5IGFsbG93cyB5b3UgdG8gcmVwbGljYXRlIHRoYXQgaW4gdHdvIHNlcGFyYXRlIHdheXMuCgoxLiBBdXRvIHJlZ2lzdGVyaW5nIHNjaGVtYQoyLiBNYW51YWxseSByZWdpc3RlcmluZyBzY2hlbWEKCiMjIyMgU2NoZW1hCgpJZiB3ZSB0YWtlIHRoZSBleGFtcGxlIGluIGBjcmVhdGVEb2N1bWVudGAgYW5kIGluc3RlYWQgY3JlYXRlIGB0aXRsZWAgYXMgZm9sbG93cwoKIyMjIyMgQXV0byBSZWdpc3RlcmluZyBTY2hlbWEKCmBgYHR5cGVzY3JpcHQKY29uc3QgdGl0bGUgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnSm9iIHRpdGxlJywKICBleGFtcGxlOiAnTXkgam9iJywKICByZWY6ICdqb2JUaXRsZScsIC8vIDwtIG5ldyBmaWVsZAp9KTsKYGBgCgpXaGVyZXZlciBgdGl0bGVgIGlzIHVzZWQgaW4gc2NoZW1hcyBhY3Jvc3MgdGhlIGRvY3VtZW50LCBpdCB3aWxsIGluc3RlYWQgYmUgY3JlYXRlZCBhcyBhIHJlZmVyZW5jZS4KCmBgYGpzb24KeyAiJHJlZiI6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9qb2JUaXRsZSIgfQpgYGAKCmB0aXRsZWAgd2lsbCB0aGVuIGJlIG91dHB1dHRlZCBhcyBhIHNjaGVtYSB3aXRoaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRhdGlvbi4KCmBgYGpzb24KewogICJjb21wb25lbnRzIjogewogICAgInNjaGVtYXMiOiB7CiAgICAgICJqb2JUaXRsZSI6IHsKICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJKb2IgdGl0bGUiLAogICAgICAgICJleGFtcGxlIjogIk15IGpvYiIKICAgICAgfQogICAgfQogIH0KfQpgYGAKClRoaXMgY2FuIGJlIGFuIGV4dHJlbWVseSBwb3dlcmZ1bCB3YXkgdG8gY3JlYXRlIGxlc3MgcmVwZXRpdGl2ZSBPcGVuIEFQSSBkb2N1bWVudGF0aW9uLiBUaGVyZSBhcmUgc29tZSBPcGVuIEFQSSBmZWF0dXJlcyBsaWtlIFtkaXNjcmltaW5hdG9yIG1hcHBpbmddKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvaW5oZXJpdGFuY2UtYW5kLXBvbHltb3JwaGlzbS8pIHdoaWNoIHJlcXVpcmUgYWxsIHNjaGVtYXMgaW4gdGhlIHVuaW9uIHRvIGNvbnRhaW4gYSByZWYuCgojIyMjIyBNYW51YWxseSBSZWdpc3RlcmluZyBTY2hlbWEKCkFub3RoZXIgd2F5IHRvIHJlZ2lzdGVyIHNjaGVtYSBpbnN0ZWFkIG9mIGFkZGluZyBhIGByZWZgIGlzIHRvIGFkZCBpdCB0byB0aGUgY29tcG9uZW50cyBkaXJlY3RseS4gVGhpcyB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIHNhbWUgd2F5IGFzIGByZWZgLiBTbyB3aGVuZXZlciB3ZSBydW4gaW50byB0aGF0IFpvZCB0eXBlIHdlIHdpbGwgcmVwbGFjZSBpdCB3aXRoIGEgcmVmZXJlbmNlLgoKZWcuCgpgYGB0eXBlc2NyaXB0CmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBzY2hlbWFzOiB7CiAgICAgIGpvYlRpdGxlOiB0aXRsZSwgLy8gdGhpcyB3aWxsIHJlZ2lzdGVyIHRoaXMgWm9kIFNjaGVtYSBhcyBqb2JUaXRsZSB1bmxlc3MgYHJlZmAgaW4gYC5vcGVuYXBpKClgIGlzIHNwZWNpZmllZCBvbiB0aGUgdHlwZQogICAgfSwKICB9LAp9KTsKYGBgCgojIyMjIyBab2QgRWZmZWN0cwoKYC50cmFuc2Zvcm0oKWAsIGAuZGVmYXVsdCgpYCBhbmQgYC5waXBlKClgIGFyZSBjb21wbGljYXRlZCBiZWNhdXNlIHRoZXkgdGVjaG5pY2FsbHkgY29tcHJpc2Ugb2YgdHdvIHR5cGVzIChpbnB1dCAmIG91dHB1dCkuIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hpY2ggdHlwZSB5b3UgYXJlIGNyZWF0aW5nLiBJbiBwYXJ0aWN1bGFyIHdpdGggdHJhbnNmb3JtIGl0IGlzIHZlcnkgZGlmZmljdWx0IHRvIGluZmVyIHRoZSBvdXRwdXQgdHlwZS4gVGhpcyBsaWJyYXJ5IHdpbGwgYXV0b21hdGljYWxseSBzZWxlY3Qgd2hpY2ggX3R5cGVfIHRvIHVzZSBieSBjaGVja2luZyBob3cgdGhlIHNjaGVtYSBpcyB1c2VkIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcnVsZXM6CgpfSW5wdXRfOiBSZXF1ZXN0IEJvZGllcywgUmVxdWVzdCBQYXJhbWV0ZXJzLCBIZWFkZXJzCgpfT3V0cHV0XzogUmVzcG9uc2VzLCBSZXNwb25zZSBIZWFkZXJzCgpJZiBhIHJlZ2lzdGVyZWQgc2NoZW1hIHdpdGggYSB0cmFuc2Zvcm0gb3IgcGlwZWxpbmUgaXMgdXNlZCBpbiBib3RoIGEgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugc2NoZW1hIHlvdSB3aWxsIHJlY2VpdmUgYW4gZXJyb3IgYmVjYXVzZSB0aGUgY3JlYXRlZCBzY2hlbWEgZm9yIGVhY2ggd2lsbCBiZSBkaWZmZXJlbnQuIFRvIG92ZXJyaWRlIHRoZSBjcmVhdGlvbiB0eXBlIGZvciBhIHNwZWNpZmljIFpvZEVmZmVjdCwgYWRkIGFuIGAub3BlbmFwaSgpYCBmaWVsZCBvbiBpdCBhbmQgc2V0IHRoZSBgZWZmZWN0VHlwZWAgZmllbGQgdG8gYGlucHV0YCwgYG91dHB1dGAgb3IgYHNhbWVgLiBUaGlzIHdpbGwgZm9yY2UgdGhpcyBsaWJyYXJ5IHRvIGFsd2F5cyBnZW5lcmF0ZSB0aGUgaW5wdXQvb3V0cHV0IHR5cGUgZXZlbiBpZiB3ZSBhcmUgY3JlYXRpbmcgYSByZXNwb25zZSAob3V0cHV0KSBvciByZXF1ZXN0IChpbnB1dCkgdHlwZS4gWW91IHR5cGljYWxseSB3YW50IHRvIHNldCB0aGlzIHdoZW4geW91IGtub3cgdGhlIHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGluIHRoZSB0cmFuc2Zvcm0uIGBzYW1lYCBpcyB0aGUgcmVjb21tZW5kZWQgY2hvaWNlIGFzIGl0IHdpbGwgZ2VuZXJhdGUgYSBUeXBlU2NyaXB0IGNvbXBpbGVyIGVycm9yIGlmIHRoZSBpbnB1dCBhbmQgb3V0cHV0IHR5cGVzIGluIHRoZSB0cmFuc2Zvcm0gZHJpZnQuCgpgLnByZXByb2Nlc3MoKWAgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBgb3V0cHV0YCB0eXBlIGV2ZW4gaWYgd2UgYXJlIGNyZWF0aW5nIGFuIGlucHV0IHNjaGVtYS4gSWYgYSBkaWZmZXJlbnQgaW5wdXQgdHlwZSBpcyByZXF1aXJlZCB5b3UgY2FuIGFjaGlldmUgdGhpcyB3aXRoIGEgYC50cmFuc2Zvcm0oKWAgY29tYmluZWQgd2l0aCBhIGAucGlwZSgpYCBvciBzaW1wbHkgZGVjbGFyZSBhIG1hbnVhbCBgdHlwZWAgaW4gYC5vcGVuYXBpKClgLgoKSWYgeW91IGFyZSBhZGRpbmcgYSBab2RTY2hlbWEgZGlyZWN0bHkgdG8gdGhlIGBjb21wb25lbnRzYCBzZWN0aW9uIHdoaWNoIGlzIG5vdCByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSBkb2N1bWVudCwgYWRkaXRpb25hbCBjb250ZXh0IG1heSBiZSByZXF1aXJlZCB0byBjcmVhdGUgZWl0aGVyIGFuIGlucHV0IG9yIG91dHB1dCBzY2hlbWEuIFlvdSBjYW4gZG8gdGhpcyBieSBzZXR0aW5nIHRoZSBgcmVmVHlwZWAgZmllbGQgdG8gYGlucHV0YCBvciBgb3V0cHV0YCBpbiBgLm9wZW5hcGkoKWAuIFRoaXMgZGVmYXVsdHMgdG8gYG91dHB1dGAgYnkgZGVmYXVsdC4KCiMjIyMgUGFyYW1ldGVycwoKUXVlcnksIFBhdGgsIEhlYWRlciAmIENvb2tpZSBwYXJhbWV0ZXJzIGNhbiBiZSBzaW1pbGFybHkgcmVnaXN0ZXJlZDoKCmBgYHR5cGVzY3JpcHQKLy8gRWFzeSBhdXRvIHJlZ2lzdHJhdGlvbgpjb25zdCBqb2JJZCA9IHouc3RyaW5nKCkub3BlbmFwaSh7CiAgZGVzY3JpcHRpb246ICdKb2IgSUQnLAogIGV4YW1wbGU6ICcxMjM0JywKICBwYXJhbTogeyByZWY6ICdqb2JSZWYnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcmVxdWVzdFBhcmFtczogewogICAgICAgICAgaGVhZGVyOiB6Lm9iamVjdCh7CiAgICAgICAgICAgIGpvYklkLAogICAgICAgICAgfSksCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBvciBtb3JlIHZlcmJvc2UgYXV0byByZWdpc3RyYXRpb24KY29uc3Qgam9iSWQgPSB6LnN0cmluZygpLm9wZW5hcGkoewogIGRlc2NyaXB0aW9uOiAnSm9iIElEJywKICBleGFtcGxlOiAnMTIzNCcsCiAgcGFyYW06IHsgaW46ICdoZWFkZXInLCBuYW1lOiAnam9iSWQnLCByZWY6ICdqb2JSZWYnIH0sCn0pOwoKY3JlYXRlRG9jdW1lbnQoewogIHBhdGhzOiB7CiAgICAnL2pvYnMve2pvYklkfSc6IHsKICAgICAgcHV0OiB7CiAgICAgICAgcGFyYW1ldGVyczogW2pvYklkXSwKICAgICAgfSwKICAgIH0sCiAgfSwKfSk7CgovLyBvciBtYW51YWwgcmVnaXN0ZXJhdGlvbgpjb25zdCBvdGhlckpvYklkID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAogIHBhcmFtOiB7IGluOiAnaGVhZGVyJywgbmFtZTogJ2pvYklkJyB9LAp9KTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBwYXJhbWV0ZXJzOiB7CiAgICAgIGpvYlJlZjogam9iSWQsCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIyMgUmVzcG9uc2UgSGVhZGVycwoKUmVzcG9uc2UgaGVhZGVycyBjYW4gYmUgc2ltaWxhcmx5IHJlZ2lzdGVyZWQ6CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGhlYWRlciA9IHouc3RyaW5nKCkub3BlbmFwaSh7CiAgZGVzY3JpcHRpb246ICdKb2IgSUQnLAogIGV4YW1wbGU6ICcxMjM0JywKICBoZWFkZXI6IHsgcmVmOiAnc29tZS1oZWFkZXInIH0sCn0pOwoKLy8gb3IKCmNvbnN0IGpvYklkSGVhZGVyID0gei5zdHJpbmcoKS5vcGVuYXBpKHsKICBkZXNjcmlwdGlvbjogJ0pvYiBJRCcsCiAgZXhhbXBsZTogJzEyMzQnLAp9KTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICBoZWFkZXJzOiB7CiAgICAgIHNvbWVIZWFkZXJSZWY6IGpvYklkSGVhZGVyLAogICAgfSwKICB9LAp9KTsKYGBgCgojIyMjIFJlc3BvbnNlcwoKRW50aXJlIFJlc3BvbnNlcyBjYW4gYWxzbyBiZSByZWdpc3RlcmVkCgpgYGB0eXBlc2NyaXB0CmNvbnN0IHJlc3BvbnNlOiBab2RPcGVuQXBpUmVzcG9uc2VPYmplY3QgPSB7CiAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogIGNvbnRlbnQ6IHsKICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgIH0sCiAgfSwKICByZWY6ICdzb21lLXJlc3BvbnNlJywKfTsKCi8vb3IKCmNvbnN0IHJlc3BvbnNlOiBab2RPcGVuQXBpUmVzcG9uc2VPYmplY3QgPSB7CiAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogIGNvbnRlbnQ6IHsKICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgIH0sCiAgfSwKfTsKCmNyZWF0ZURvY3VtZW50KHsKICBjb21wb25lbnRzOiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgJ3NvbWUtcmVzcG9uc2UnOiByZXNwb25zZSwKICAgIH0sCiAgfSwKfSk7CmBgYAoKIyMjIyBDYWxsYmFja3MKCkNhbGxiYWNrcyBjYW4gYWxzbyBiZSByZWdpc3RlcmVkCgpgYGB0eXBlc2NyaXB0CmNvbnN0IGNhbGxiYWNrOiBab2RPcGVuQXBpQ2FsbGJhY2tPYmplY3QgPSB7CiAgcmVmOiAnc29tZS1jYWxsYmFjaycKICBwb3N0OiB7CiAgICByZXNwb25zZXM6IHsKICAgICAgMjAwOiB7CiAgICAgICAgZGVzY3JpcHRpb246ICcyMDAgT0snLAogICAgICAgIGNvbnRlbnQ6IHsKICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogewogICAgICAgICAgICBzY2hlbWE6IHoub2JqZWN0KHsgYTogei5zdHJpbmcoKSB9KSwKICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgfSwKICAgIH0sCiAgfSwKfTsKCi8vb3IKCmNvbnN0IGNhbGxiYWNrOiBab2RPcGVuQXBpQ2FsbGJhY2tPYmplY3QgPSB7CiAgcG9zdDogewogICAgcmVzcG9uc2VzOiB7CiAgICAgIDIwMDogewogICAgICAgIGRlc2NyaXB0aW9uOiAnMjAwIE9LJywKICAgICAgICBjb250ZW50OiB7CiAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHsKICAgICAgICAgICAgc2NoZW1hOiB6Lm9iamVjdCh7IGE6IHouc3RyaW5nKCkgfSksCiAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgIH0sCiAgICB9LAogIH0sCn07CgpjcmVhdGVEb2N1bWVudCh7CiAgY29tcG9uZW50czogewogICAgY2FsbGJhY2tzOiB7CiAgICAgICdzb21lLWNhbGxiYWNrJzogY2FsbGJhY2ssCiAgICB9LAogIH0sCn0pOwpgYGAKCiMjIFN1cHBvcnRlZCBPcGVuQVBJIFZlcnNpb25zCgpDdXJyZW50bHkgdGhlIGZvbGxvd2luZyB2ZXJzaW9ucyBvZiBPcGVuQVBJIGFyZSBzdXBwb3J0ZWQKCi0gYDMuMC4wYAotIGAzLjAuMWAKLSBgMy4wLjJgCi0gYDMuMC4zYAotIGAzLjEuMGAKClNldHRpbmcgdGhlIGBvcGVuYXBpYCBmaWVsZCB3aWxsIGNoYW5nZSBob3cgdGhlIHNvbWUgb2YgdGhlIGNvbXBvbmVudHMgYXJlIHJlbmRlcmVkLgoKYGBgdHMKY3JlYXRlRG9jdW1lbnQoewogIG9wZW5hcGk6ICczLjEuMCcsCn0pOwpgYGAKCkZvciBleGFtcGxlIGluIGB6LnN0cmluZygpLm51bGxhYmxlKClgIHdpbGwgYmUgcmVuZGVyZWQgZGlmZmVyZW50bHkKCmAzLjAuMGAKCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgIm51bGxhYmxlIjogdHJ1ZQp9CmBgYAoKYDMuMS4wYAoKYGBganNvbgp7CiAgInR5cGUiOiBbInN0cmluZyIsICJudWxsIl0KfQpgYGAKCiMjIFN1cHBvcnRlZCBab2QgU2NoZW1hCgotIFpvZEFueQotIFpvZEFycmF5CiAgLSBgbWluSXRlbXNgL2BtYXhJdGVtc2AgbWFwcGluZyBmb3IgYC5sZW5ndGgoKWAsIGAubWluKClgLCBgLm1heCgpYAotIFpvZEJvb2xlYW4KLSBab2RCcmFuZGVkCi0gWm9kQ2F0Y2gKLSBab2REYXRlCiAgLSBgdHlwZWAgaXMgbWFwcGVkIGFzIGBzdHJpbmdgIGJ5IGRlZmF1bHQKLSBab2REZWZhdWx0Ci0gWm9kRGlzY3JpbWluYXRlZFVuaW9uCiAgLSBgZGlzY3JpbWluYXRvcmAgbWFwcGluZyB3aGVuIGFsbCBzY2hlbWFzIGluIHRoZSB1bmlvbiBhcmUgW3JlZ2lzdGVyZWRdKCNjcmVhdGluZy1jb21wb25lbnRzKS4gVGhlIGRpc2NyaW1pbmF0b3IgbXVzdCBiZSBhIGBab2RMaXRlcmFsYCwgYFpvZEVudW1gIG9yIGBab2ROYXRpdmVFbnVtYCB3aXRoIHN0cmluZyB2YWx1ZXMuIE9ubHkgdmFsdWVzIHdyYXBwZWQgaW4gYFpvZEJyYW5kZWRgLCBgWm9kUmVhZE9ubHlgIGFuZCBgWm9kQ2F0Y2hgIGFyZSBzdXBwb3J0ZWQuCi0gWm9kRWZmZWN0cwogIC0gYHRyYW5zZm9ybWAgc3VwcG9ydCBmb3IgcmVxdWVzdCBzY2hlbWFzLiBTZWUgW1pvZCBFZmZlY3RzXSgjem9kLWVmZmVjdHMpIGZvciBob3cgdG8gZW5hYmxlIHJlc3BvbnNlIHNjaGVtYSBzdXBwb3J0CiAgLSBgcHJlLXByb2Nlc3NgIHN1cHBvcnQuIFdlIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCB0eXBlIGlzIHRoZSBzYW1lIGFzIHRoZSBvdXRwdXQgdHlwZS4gT3RoZXJ3aXNlIHBpcGUgYW5kIHRyYW5zZm9ybSBjYW4gYmUgdXNlZCBpbnN0ZWFkLgogIC0gYHJlZmluZWAgZnVsbCBzdXBwb3J0Ci0gWm9kRW51bQotIFpvZEludGVyc2VjdGlvbgotIFpvZExhenkKICAtIFRoZSByZWN1cnNpdmUgc2NoZW1hIHdpdGhpbiB0aGUgWm9kTGF6eSBvciB0aGUgWm9kTGF6eSBfKiptdXN0KipfIGJlIHJlZ2lzdGVyZWQgYXMgYSBjb21wb25lbnQuIFNlZSBbQ3JlYXRpbmcgQ29tcG9uZW50c10oI2NyZWF0aW5nLWNvbXBvbmVudHMpIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIFpvZExpdGVyYWwKLSBab2ROYXRpdmVFbnVtCiAgLSBzdXBwb3J0aW5nIGBzdHJpbmdgLCBgbnVtYmVyYCBhbmQgY29tYmluZWQgZW51bXMuCi0gWm9kTmV2ZXIKLSBab2ROdWxsCi0gWm9kTnVsbGFibGUKLSBab2ROdW1iZXIKICAtIGBpbnRlZ2VyYCBgdHlwZWAgbWFwcGluZyBmb3IgYC5pbnQoKWAKICAtIGBleGNsdXNpdmVNaW5gL2BtaW5gL2BleGNsdXNpdmVNYXhgL2BtYXhgIG1hcHBpbmcgZm9yIGAubWluKClgLCBgLm1heCgpYCwgYGx0KClgLCBgZ3QoKWAKLSBab2RPYmplY3QKICAtIGBhZGRpdGlvbmFsUHJvcGVydGllc2AgbWFwcGluZyBmb3IgYC5jYXRjaGFsbCgpYCwgYC5zdHJpY3QoKWAKICAtIGBhbGxPZmAgbWFwcGluZyBmb3IgYC5leHRlbmQoKWAgd2hlbiB0aGUgYmFzZSBvYmplY3QgaXMgcmVnaXN0ZXJlZCBhbmQgZG9lcyBub3QgaGF2ZSBgY2F0Y2hhbGwoKWAsIGBzdHJpY3QoKWAgYW5kIGV4dGVuc2lvbiBkb2VzIG5vdCBvdmVycmlkZSBhIGZpZWxkLgotIFpvZE9wdGlvbmFsCi0gWm9kUGlwZWxpbmUKICAtIFNlZSBbWm9kIEVmZmVjdHNdKCN6b2QtZWZmZWN0cykgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0gWm9kUmVhZG9ubHkKLSBab2RSZWNvcmQKLSBab2RTZXQKICAtIFRyZWF0ZWQgYXMgYW4gYXJyYXkgd2l0aCBgdW5pcXVlSXRlbXNgICh5b3UgbWF5IG5lZWQgdG8gYWRkIGEgcHJlLXByb2Nlc3MgdG8gY29udmVydCBpdCB0byBhIHNldCkKLSBab2RTdHJpbmcKICAtIGBmb3JtYXRgIG1hcHBpbmcgZm9yIGAudXJsKClgLCBgLnV1aWQoKWAsIGAuZW1haWwoKWAsIGAuZGF0ZXRpbWUoKWAsIGAuZGF0ZSgpYCwgYC50aW1lKClgLCBgLmR1cmF0aW9uKClgCiAgLSBgbWluTGVuZ3RoYC9gbWF4TGVuZ3RoYCBtYXBwaW5nIGZvciBgLmxlbmd0aCgpYCwgYC5taW4oKWAsIGAubWF4KClgCiAgLSBgcGF0dGVybmAgbWFwcGluZyBmb3IgYC5yZWdleCgpYCwgYC5zdGFydHNXaXRoKClgLCBgLmVuZHNXaXRoKClgLCBgLmluY2x1ZGVzKClgCiAgLSBgY29udGVudEVuY29kaW5nYCBtYXBwaW5nIGZvciBgLmJhc2U2NCgpYCBmb3IgT3BlbkFQSSAzLjEuMCsKLSBab2RUdXBsZQogIC0gYGl0ZW1zYCBtYXBwaW5nIGZvciBgLnJlc3QoKWAKICAtIGBwcmVmaXhJdGVtc2AgbWFwcGluZyBmb3IgT3BlbkFQSSAzLjEuMCsKLSBab2RVbmRlZmluZWQKLSBab2RVbmlvbgogIC0gQnkgZGVmYXVsdCBpdCBvdXRwdXRzIGFuIGBhbGxPZmAgc2NoZW1hLiBVc2UgYHVuaW9uT25lT2ZgIHRvIGNoYW5nZSB0aGlzIHRvIG91dHB1dCBgb25lT2ZgIGluc3RlYWQuCi0gWm9kVW5rbm93bgoKSWYgdGhpcyBsaWJyYXJ5IGNhbm5vdCBkZXRlcm1pbmUgYSB0eXBlIGZvciBhIFpvZCBTY2hlbWEsIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRvIGF2b2lkIHRoaXMsIGRlY2xhcmUgYSBtYW51YWwgYHR5cGVgIGluIHRoZSBgLm9wZW5hcGkoKWAgc2VjdGlvbiBvZiB0aGF0IHNjaGVtYS4KCmVnLgoKYGBgdHlwZXNjcmlwdAp6LmN1c3RvbSgpLm9wZW5hcGkoeyB0eXBlOiAnc3RyaW5nJyB9KTsKYGBgCgojIyBFeGFtcGxlcwoKU2VlIHRoZSBsaWJyYXJ5IGluIHVzZSBpbiB0aGUgW2V4YW1wbGVzXSguL2V4YW1wbGVzLykgZm9sZGVyLgoKLSBTaW1wbGUgLSBbc2V0dXBdKC4vZXhhbXBsZXMvc2ltcGxlL2NyZWF0ZVNjaGVtYS50cykgfCBbb3BlbmFwaS55bWxdKC4vZXhhbXBsZXMvc2ltcGxlL29wZW5hcGkueW1sKSB8IFtyZWRvYyBkb2N1bWVudGF0aW9uXShodHRwczovL3NhbWNodW5neS5naXRodWIuaW8vem9kLW9wZW5hcGkvZXhhbXBsZXMvc2ltcGxlL3JlZG9jLXN0YXRpYy5odG1sKQoKIyMgRWNvc3lzdGVtCgotIFtmYXN0aWZ5LXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2Zhc3RpZnktem9kLW9wZW5hcGkpIC0gRmFzdGlmeSBwbHVnaW4gZm9yIHpvZC1vcGVuYXBpLiBUaGlzIGluY2x1ZGVzIHR5cGUgcHJvdmlkZXIsIFpvZCBzY2hlbWEgdmFsaWRhdGlvbiwgWm9kIHNjaGVtYSBzZXJpYWxpemF0aW9uIGFuZCBTd2FnZ2VyIFVJIHN1cHBvcnQuCgotIFtlc2xpbnQtcGx1Z2luLXpvZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L2VzbGludC1wbHVnaW4tem9kLW9wZW5hcGkpIC0gRXNsaW50IHJ1bGVzIGZvciB6b2Qtb3BlbmFwaS4gVGhpcyBpbmNsdWRlcyBmZWF0dXJlcyB3aGljaCBjYW4gYXV0b2dlbmVyYXRlIFR5cGVzY3JpcHQgY29tbWVudHMgZm9yIHlvdXIgWm9kIHR5cGVzIGJhc2VkIG9uIHlvdXIgYGRlc2NyaXB0aW9uYCwgYGV4YW1wbGVgIGFuZCBgZGVwcmVjYXRlZGAgZmllbGRzLgoKIyMgQ29tcGFyaXNvbnMKCiMjIyBbQGFzdGVhc29sdXRpb25zL3pvZC10by1vcGVuYXBpXSguL2RvY3MvY29tcGFyaXNvbnMubWQpCgojIyBEZXZlbG9wbWVudAoKIyMjIFByZXJlcXVpc2l0ZXMKCi0gTm9kZS5qcyBMVFMKLSBwbnBtCgpgYGBzaGVsbApwbnBtCnBucG0gYnVpbGQKYGBgCgojIyMgVGVzdAoKYGBgc2hlbGwKcG5wbSB0ZXN0CmBgYAoKIyMjIExpbnQKCmBgYHNoZWxsCiMgRml4IGlzc3VlcwpwbnBtIGZvcm1hdAoKIyBDaGVjayBmb3IgaXNzdWVzCnBucG0gbGludApgYGAKCiMjIyBSZWxlYXNlCgpUbyByZWxlYXNlIGEgbmV3IHZlcnNpb24KCjEuIENyZWF0ZSBhIFtuZXcgR2l0SHViIFJlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9zYW1jaHVuZ3kvem9kLW9wZW5hcGkvcmVsZWFzZXMvbmV3KQoyLiBTZWxlY3QgYPCfj7fvuI8gQ2hvb3NlIGEgdGFnYCwgZW50ZXIgYSB2ZXJzaW9uIG51bWJlci4gZWcuIGB2MS4yLjBgIGFuZCBjbGljayBgKyBDcmVhdGUgbmV3IHRhZzogdlguWC5YIG9uIHB1Ymxpc2hgLgozLiBDbGljayB0aGUgYEdlbmVyYXRlIHJlbGVhc2Ugbm90ZXNgIGJ1dHRvbiBhbmQgYWRqdXN0IHRoZSBkZXNjcmlwdGlvbi4KNC4gVGljayB0aGUgYFNldCBhcyB0aGUgbGF0ZXN0IHJlbGVhc2VgIGJveCBhbmQgY2xpY2sgYFB1Ymxpc2ggcmVsZWFzZWAuIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgUmVsZWFzZWAgd29ya2Zsb3cuCjUuIENoZWNrIHRoZSBgUHVsbCBSZXF1ZXN0c2AgdGFiIGZvciBhIFBSIGxhYmVsbGVkIGBSZWxlYXNlIHZYLlguWGAuCjYuIENsaWNrIGBNZXJnZSBQdWxsIFJlcXVlc3RgIG9uIHRoYXQgUHVsbCBSZXF1ZXN0IHRvIHVwZGF0ZSBtYXN0ZXIgd2l0aCB0aGUgbmV3IHBhY2thZ2UgdmVyc2lvbi4KClRvIHJlbGVhc2UgYSBuZXcgYmV0YSB2ZXJzaW9uCgoxLiBDcmVhdGUgYSBbbmV3IEdpdEh1YiBSZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc2FtY2h1bmd5L3pvZC1vcGVuYXBpL3JlbGVhc2VzL25ldykKMi4gU2VsZWN0IGDwn4+377iPIENob29zZSBhIHRhZ2AsIGVudGVyIGEgdmVyc2lvbiBudW1iZXIgd2l0aCBhIGAtYmV0YS5YYCBzdWZmaXggZWcuIGB2MS4yLjAtYmV0YS4xYCBhbmQgY2xpY2sgYCsgQ3JlYXRlIG5ldyB0YWc6IHZYLlguWC1iZXRhLlggb24gcHVibGlzaGAuCjMuIENsaWNrIHRoZSBgR2VuZXJhdGUgcmVsZWFzZSBub3Rlc2AgYnV0dG9uIGFuZCBhZGp1c3QgdGhlIGRlc2NyaXB0aW9uLgo0LiBUaWNrIHRoZSBgU2V0IGFzIGEgcHJlLXJlbGVhc2VgIGJveCBhbmQgY2xpY2sgYFB1Ymxpc2ggcmVsZWFzZWAuIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBgUHJlcmVsZWFzZWAgd29ya2Zsb3cuCg== + readmeEtag: '"b6ad16db6e64635ae496a36ca258d9a2c7e4036a"' + readmeLastModified: Tue, 08 Oct 2024 00:04:03 GMT repositoryId: 628179878 description: Use Zod Schemas to create OpenAPI v3.x documentation created: '2023-04-15T06:28:51Z' - updated: '2024-10-07T02:29:17Z' + updated: '2024-10-08T02:11:31Z' language: TypeScript archived: false - stars: 268 + stars: 271 watchers: 2 forks: 13 owner: samchungy logo: https://avatars.githubusercontent.com/u/18017094?v=4 license: MIT - repoEtag: '"d4aced509e4926efbbdcfbd50d250089af8eab315c0ce5afc4346c590efd4130"' - repoLastModified: Mon, 07 Oct 2024 02:29:17 GMT + repoEtag: '"e1fa9beda644fc449b8a951a00c9a848cfc2b6044d363e89121d5039c47f20bf"' + repoLastModified: Tue, 08 Oct 2024 02:11:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -9303,17 +9303,17 @@ repositoryId: 232207964 description: OpenAPI structures for Go created: '2020-01-07T00:07:41Z' - updated: '2024-10-04T18:06:22Z' + updated: '2024-10-07T12:15:01Z' language: Go archived: false - stars: 250 + stars: 251 watchers: 4 forks: 23 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"c3c7b2ca1ee21c7f86051cc212213697e7b8b9b30bd4802c227674ad1f900e6e"' - repoLastModified: Fri, 04 Oct 2024 18:06:22 GMT + repoEtag: '"05896349afdd2c6a88f10f6fc5a6b6b156936fc98c72744e4dcfc002769a3b8c"' + repoLastModified: Mon, 07 Oct 2024 12:15:01 GMT foundInMaster: true id: 042e78fafa5f6cb0dbca01c64778ab3f - source: openapi3 tags @@ -9332,7 +9332,7 @@ "getting started" sections into slideshow for your workshops. Manage multiple documentations with self-deployed znai hub. created: '2016-12-16T16:42:12Z' - updated: '2024-10-05T22:30:52Z' + updated: '2024-10-07T23:13:59Z' language: Java archived: false stars: 248 @@ -9341,8 +9341,8 @@ owner: testingisdocumenting logo: https://avatars.githubusercontent.com/u/54154955?v=4 license: Apache-2.0 - repoEtag: '"af4a445b1945904aa6aae5ba789ad2db28b29c4bc7500f2747fdf718a5e4237c"' - repoLastModified: Sat, 05 Oct 2024 22:30:52 GMT + repoEtag: '"72d0232bd9fd99aa13bdf4aa8a295f85a0d354de67dda2672fc7093e5692422e"' + repoLastModified: Mon, 07 Oct 2024 23:13:59 GMT foundInMaster: true category: Documentation id: e96c15d0478cd8c861932cf44e659757 @@ -9465,7 +9465,7 @@ repositoryId: 67692955 description: Resolving Swagger/OpenAPI 2.0 and 3.0 Parser created: '2016-09-08T10:23:39Z' - updated: '2024-09-15T17:46:25Z' + updated: '2024-10-07T20:56:50Z' language: Python archived: false stars: 226 @@ -9474,8 +9474,8 @@ owner: RonnyPfannschmidt logo: https://avatars.githubusercontent.com/u/156838?v=4 license: NOASSERTION - repoEtag: '"1e62d5d477b4e51bc41be1427e9b4df9e1de0dc46b05e209f2f76b4102a56c25"' - repoLastModified: Sun, 15 Sep 2024 17:46:25 GMT + repoEtag: '"7c2023c87be98fb547acd60bba58f6c38d90947cd56a1da326a6cf4f771d80e9"' + repoLastModified: Mon, 07 Oct 2024 20:56:50 GMT foundInMaster: true id: 06b2469a97224b07993ee5f7d921ea36 - source: openapi3 tags @@ -9656,7 +9656,7 @@ owner: seriousme logo: https://avatars.githubusercontent.com/u/3322396?v=4 license: MIT - repoEtag: '"7bc0c5209c2fae014a40f940764d857eeb2281063b176e9b37f7c068534d71ff"' + repoEtag: '"a7f3cb09abfb640c49d80cfcd155a39693dd93642bb36d37affa064adc3600f2"' repoLastModified: Wed, 02 Oct 2024 10:29:38 GMT foundInMaster: true category: @@ -9742,17 +9742,17 @@ Autogenered docs, Zod - BullMQ - Nodemailer - Docker - MongoDB (Mongoose) - Socket.io created: '2024-08-11T02:19:59Z' - updated: '2024-10-06T13:36:22Z' + updated: '2024-10-07T08:26:56Z' language: TypeScript archived: false - stars: 198 - watchers: 2 - forks: 35 + stars: 199 + watchers: 3 + forks: 36 owner: muneebhashone logo: https://avatars.githubusercontent.com/u/88892379?v=4 license: MIT - repoEtag: '"674deea7202a714f27ef447e639b997ea2d37a68431e2bb16ef87e0af5f261e2"' - repoLastModified: Sun, 06 Oct 2024 13:36:22 GMT + repoEtag: '"a02206d7655ee470d29b0202949c24a4c64040c0e7b3604be49b643712f962cb"' + repoLastModified: Mon, 07 Oct 2024 08:26:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -9876,17 +9876,17 @@ A tool for generating Refit interfaces and contracts from OpenAPI specifications created: '2023-02-07T23:18:12Z' - updated: '2024-10-03T10:32:50Z' + updated: '2024-10-07T12:27:22Z' language: C# archived: false - stars: 187 + stars: 188 watchers: 6 forks: 41 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT - repoEtag: '"61c79f48f7f5a7911f18ebedf3da3af56648071fa6baee1449ad0650d4babb08"' - repoLastModified: Thu, 03 Oct 2024 10:32:50 GMT + repoEtag: '"aeb8c301d3bf1c1be210c54b20d79c76f05c2fdaf3040e29e1a1b63cc2b6de97"' + repoLastModified: Mon, 07 Oct 2024 12:27:22 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -9926,17 +9926,17 @@ repositoryId: 543052826 description: Speakeasy CLI - Enterprise developer experience for your API created: '2022-09-29T10:13:15Z' - updated: '2024-10-06T21:32:10Z' + updated: '2024-10-07T23:27:50Z' language: JavaScript archived: false - stars: 184 + stars: 185 watchers: 12 forks: 14 owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION - repoEtag: '"40366d5a2922b440402b914359fb2081d653015cd2bfc50b6c8e75c6cca6bc66"' - repoLastModified: Sun, 06 Oct 2024 21:32:10 GMT + repoEtag: '"b7df143237e3adae7957f0e068faef859e8681c216a8c507a94aed4d1b98cb75"' + repoLastModified: Mon, 07 Oct 2024 23:27:50 GMT category: Parsers foundInMaster: true - source: @@ -10039,7 +10039,7 @@ A collection of Visual Studio custom tool code generators for Swagger / OpenAPI specification files created: '2019-01-17T12:58:50Z' - updated: '2024-10-06T22:03:59Z' + updated: '2024-10-07T12:09:42Z' language: C# archived: false stars: 177 @@ -10048,8 +10048,8 @@ owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 - repoEtag: '"6570bb92ad78aefa1943f2045f8accdbc808d0a64ad149b45adabcd4a9eb7350"' - repoLastModified: Sun, 06 Oct 2024 22:03:59 GMT + repoEtag: '"4a2a80419d862a07d74524d6004330aa986e4ce72129e6b54696ac9186968564"' + repoLastModified: Mon, 07 Oct 2024 12:09:42 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -10220,7 +10220,7 @@ repositoryId: 122702750 description: API Management and Testing Platform created: '2018-02-24T04:23:08Z' - updated: '2024-10-07T02:52:54Z' + updated: '2024-10-08T02:35:11Z' language: Go archived: false stars: 147 @@ -10229,8 +10229,8 @@ owner: deeptest-com logo: https://avatars.githubusercontent.com/u/127812389?v=4 license: GPL-3.0 - repoEtag: '"c7944ac7fdf1614e3935b315f30639db4c5706199c704121aac1b247e5e2d9ab"' - repoLastModified: Mon, 07 Oct 2024 02:52:54 GMT + repoEtag: '"6648318c9e040aa5e8091aaea31ba9dc696c6038315ff2eac9954f833dd72e43"' + repoLastModified: Tue, 08 Oct 2024 02:35:11 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -10363,7 +10363,7 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"4619a486c741dd4367f782564d206cf3f96b86cd0df079dcb1e97756aca46ca1"' + repoEtag: '"4854ae466acf894de8218d5fb8edd4e5c55e5292c8b69c8a85f74d515d7e296b"' repoLastModified: Tue, 24 Sep 2024 16:57:06 GMT foundInMaster: true category: @@ -10520,17 +10520,17 @@ repositoryId: 285621457 description: OpenAPI - Getting started, and the specification explained created: '2020-08-06T16:40:47Z' - updated: '2024-09-26T17:20:06Z' + updated: '2024-10-07T20:58:53Z' language: Markdown archived: false - stars: 113 + stars: 115 watchers: 22 forks: 57 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 license: CC-BY-4.0 - repoEtag: '"711048fac7b7e59ec50a687c1284de2d56182351768b51ae222c936259502c68"' - repoLastModified: Thu, 26 Sep 2024 17:20:06 GMT + repoEtag: '"9e20df2e1508da23aed6c395802583da50403a8d11a82b2f33d92d6f66650955"' + repoLastModified: Mon, 07 Oct 2024 20:58:53 GMT category: - Parsers - Server Implementations @@ -10634,7 +10634,7 @@ Simple and efficient HTTP mock server with specification in yaml, edn or OpenAPI created: '2022-02-23T10:49:57Z' - updated: '2024-10-03T23:23:07Z' + updated: '2024-10-07T17:53:01Z' language: Clojure archived: false stars: 108 @@ -10643,8 +10643,8 @@ owner: moclojer logo: https://avatars.githubusercontent.com/u/103039458?v=4 license: MIT - repoEtag: '"098646db16451be1090e1d1ad4d24003425aa54b8a4d284979a986de3f905338"' - repoLastModified: Thu, 03 Oct 2024 23:23:07 GMT + repoEtag: '"c30d6032093b393029832bc710c3b5ec01b965aa31069798e1f1c0254d6e92a7"' + repoLastModified: Mon, 07 Oct 2024 17:53:01 GMT category: Testing foundInMaster: true oldLocations: @@ -10692,10 +10692,10 @@ archived: false stars: 106 watchers: 12 - forks: 188 + forks: 187 owner: hummingbird-me logo: https://avatars.githubusercontent.com/u/7648832?v=4 - repoEtag: '"b47e69eb20fa6035f9c778895d7cf285fa0bf25a4ddd41241ef5371045e6d05b"' + repoEtag: '"996b902f7bb2551fcade8759fcd3ee2fe4d9981ce690f4a443b0b980c6e41163"' repoLastModified: Thu, 12 Sep 2024 21:15:41 GMT foundInMaster: true category: Low-level Tooling @@ -10722,7 +10722,7 @@ owner: contiamo logo: https://avatars.githubusercontent.com/u/862286?v=4 license: MIT - repoEtag: '"f71711ee04befba8e3c616da770f96f6d5a88e4526dfc567bebeb5dd60825670"' + repoEtag: '"9e96d837490efa52324d1f78a33ddbc297dd4a7b03dc44dde6c44660902aad18"' repoLastModified: Tue, 24 Sep 2024 06:58:28 GMT foundInMaster: true category: Server Implementations @@ -10765,17 +10765,17 @@ repositoryId: 373055212 description: Swagger 3.0 implementation for go created: '2021-06-02T05:54:10Z' - updated: '2024-10-07T01:19:56Z' + updated: '2024-10-08T00:38:32Z' language: Go archived: false - stars: 104 + stars: 105 watchers: 5 forks: 11 owner: parvez3019 logo: https://avatars.githubusercontent.com/u/10362597?v=4 license: MIT - repoEtag: '"c50dd0fba37e3a252e88021d6c2e34621244213bec842f7d6ba9fa140b0e10b0"' - repoLastModified: Mon, 07 Oct 2024 01:19:56 GMT + repoEtag: '"897d1730e4ded6738e27f31c479d1bb3744d7e00999312453f891a4b89f1531a"' + repoLastModified: Tue, 08 Oct 2024 00:38:32 GMT foundInMaster: true category: Server Implementations id: 00ef51b7bb2f326af2de90739df6907b @@ -10827,7 +10827,7 @@ A collection of open-source and commercial tools for creating your APIs with OpenAPI - Sourced from and published for the community created: '2022-01-14T19:24:14Z' - updated: '2024-10-06T03:37:32Z' + updated: '2024-10-07T03:37:14Z' language: JavaScript archived: false stars: 99 @@ -10835,8 +10835,8 @@ forks: 27 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 - repoEtag: '"0fc117816982674f765a71f278d0079d2d457ab7dce604c5e9c670a49c53c3c1"' - repoLastModified: Sun, 06 Oct 2024 03:37:32 GMT + repoEtag: '"83a13286626a64f4cad5070c271a19bd23b2e3166700fb4bc8b3a36cd25bbd5f"' + repoLastModified: Mon, 07 Oct 2024 03:37:14 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -10886,7 +10886,7 @@ Converts OpenAPI 3.0 definitions to Plant UML text for visualisation of your API. created: '2021-02-17T03:47:43Z' - updated: '2024-10-01T17:26:27Z' + updated: '2024-10-07T17:29:05Z' language: Java archived: false stars: 95 @@ -10895,8 +10895,8 @@ owner: davidmoten logo: https://avatars.githubusercontent.com/u/318187?v=4 license: Apache-2.0 - repoEtag: '"be70f7f6271b21702c7a7365b26440027b76ceb709a8590b137b6eed1f504eae"' - repoLastModified: Tue, 01 Oct 2024 17:26:27 GMT + repoEtag: '"6035bc588409dc33be3b9078cf9f4162ab996b1e6f9d4c264686f54ea093f23b"' + repoLastModified: Mon, 07 Oct 2024 17:29:05 GMT foundInMaster: true category: SDK id: d4f9d833f5a48b843c52f5ec6f582976 @@ -11055,7 +11055,7 @@ owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 - repoEtag: '"7f25fa9f7bce0888962c9f434fc6043b9ccc0761c15108e6c8181fd78c19e5d2"' + repoEtag: '"7f2cf5f967b8abe96614cd5407387b74e7caa31fa9c6c1936f531ba3a2c12aa4"' repoLastModified: Tue, 01 Oct 2024 13:42:45 GMT foundInMaster: true category: Testing @@ -11351,7 +11351,7 @@ forks: 17 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 - repoEtag: '"610f936b24a5d1804a46c2eb8b16cdcaf591b03340eff5051588f305e7db2b66"' + repoEtag: '"0f420ace52c3f152fc20c162558106c6281f9bc02948ed0ec687aa2c48a7a625"' repoLastModified: Mon, 30 Sep 2024 23:18:31 GMT category: Parsers foundInMaster: true @@ -11548,7 +11548,7 @@ repositoryId: 244353016 description: An OpenAPI 3 checker based on spectral. created: '2020-03-02T11:23:30Z' - updated: '2024-10-02T12:57:21Z' + updated: '2024-10-07T09:08:21Z' language: JavaScript archived: false stars: 58 @@ -11556,8 +11556,8 @@ forks: 23 owner: italia logo: https://avatars.githubusercontent.com/u/15377824?v=4 - repoEtag: '"9f1bee6fed5fa6c97df6fb106a08d1253468999f0f8c9321698e0c123a81b6f9"' - repoLastModified: Wed, 02 Oct 2024 12:57:21 GMT + repoEtag: '"8b372bb8973ee2db84fd3534dfb6a9db833d1242ece2b42b0627fae6751ff8b8"' + repoLastModified: Mon, 07 Oct 2024 09:08:21 GMT foundInMaster: true category: Description Validators id: d0d29c360728cda0cf8a4698f3c79f4b @@ -11632,7 +11632,7 @@ owner: Sideko-Inc logo: https://avatars.githubusercontent.com/u/122366043?v=4 license: NOASSERTION - repoEtag: '"2bb8c519276e161dceebd53b40144b901d12fb207c09916426406425ceab140b"' + repoEtag: '"67eb241abec167434a00cc5d12ec7870ceae3bfd31910c81e21af072648a1e58"' repoLastModified: Tue, 01 Oct 2024 21:09:34 GMT category: SDK foundInMaster: true @@ -11757,7 +11757,7 @@ owner: SmartBear logo: https://avatars.githubusercontent.com/u/1644671?v=4 license: Apache-2.0 - repoEtag: '"6c85ae0e05bfd668bef625c82ad77b3b4f376a2f4f3a0cca23b9bbe8bd1d7591"' + repoEtag: '"d8d6a497afc3071e386d423275690687ba4a3de55102e5fa332c43d35e07db2e"' repoLastModified: Fri, 13 Sep 2024 15:22:37 GMT foundInMaster: true category: Code Generators @@ -11896,11 +11896,11 @@ archived: false stars: 50 watchers: 7 - forks: 43 + forks: 44 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"87458d26e6b5d76962e866951f8a5b1cdec18fbb31b07047203e79bc6dc43bc8"' + repoEtag: '"95e50ae264c6629ba8c759be1d7561ba6bf505c0356afac6d42c624567ef1fc0"' repoLastModified: Wed, 11 Sep 2024 08:47:57 GMT foundInMaster: true category: @@ -11983,7 +11983,7 @@ owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"4562318dd6fd8c51db3a856c948617f2675b4fadf591d1a77a335b2644949d1f"' + repoEtag: '"39d438e9f2ff7a760e4b32254f575ad028c01728cfa14effd6a56e4d8daabeca"' repoLastModified: Thu, 03 Oct 2024 06:54:17 GMT category: Parsers foundInMaster: true @@ -12032,7 +12032,7 @@ forks: 26 owner: piomin logo: https://avatars.githubusercontent.com/u/2892502?v=4 - repoEtag: '"3b46acdb89232ed89abd59ac7dc35fc0eb51db039a3908ee71ac6271c8b26977"' + repoEtag: '"0b3ca6bfd55aea2dbb03ec52c55388b7cd8f0787ca6770358cd5c8299cd71bc8"' repoLastModified: Sun, 06 Oct 2024 15:24:32 GMT foundInMaster: true category: SDK @@ -12059,7 +12059,7 @@ owner: sv-tools logo: https://avatars.githubusercontent.com/u/59230487?v=4 license: MIT - repoEtag: '"7c50d3e7e8b214a7d6720fdc6a04d7d19d075914dff807a6f66d4d75b7e14690"' + repoEtag: '"2ecb7d2f84d0330e8be04c6451486b0d01027081904ca137b2a0a35eb9c0998f"' repoLastModified: Wed, 02 Oct 2024 12:41:08 GMT foundInMaster: true category: @@ -12088,7 +12088,7 @@ This GitHub Actions validates OpenAPI (OAS) definition file using Swagger Editor. created: '2021-03-05T18:37:29Z' - updated: '2024-10-04T05:02:17Z' + updated: '2024-10-07T04:46:12Z' language: JavaScript archived: false stars: 46 @@ -12097,8 +12097,8 @@ owner: swaggerexpert logo: https://avatars.githubusercontent.com/u/172408630?v=4 license: BSD-3-Clause - repoEtag: '"c57225fad29b9a15dd60a66d16058d9282744a2723e4a0eb3e5db23e4247ab12"' - repoLastModified: Fri, 04 Oct 2024 05:02:17 GMT + repoEtag: '"114d36d4f9dca3b9456d90427cfe715d385514bc8998b40d09a77cf72954fef0"' + repoLastModified: Mon, 07 Oct 2024 04:46:12 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -12164,7 +12164,7 @@ Annotation processor for compile-time OpenAPI & JsonSchema, with out-of-the-box support for Javalin 5.x, Swagger & ReDoc created: '2021-05-04T16:10:52Z' - updated: '2024-09-30T16:59:32Z' + updated: '2024-10-07T11:20:12Z' language: Kotlin archived: false stars: 44 @@ -12173,8 +12173,8 @@ owner: javalin logo: https://avatars.githubusercontent.com/u/28701086?v=4 license: Apache-2.0 - repoEtag: '"aa36ccb2c0ef3884fb1929ed4afa7f56f9f3b3ca4a656c3a5cdd428a0f99a1ee"' - repoLastModified: Mon, 30 Sep 2024 16:59:32 GMT + repoEtag: '"d7c5ae5984236f9b388a4b4759cadf6417f97a39926de725550e4ac71fd5417d"' + repoLastModified: Mon, 07 Oct 2024 11:20:12 GMT category: SDK foundInMaster: true oldLocations: @@ -12283,7 +12283,7 @@ owner: atlassian logo: https://avatars.githubusercontent.com/u/168166?v=4 license: NOASSERTION - repoEtag: '"4c0f3355defb90bfd7e6a67bd276dc3c2eeb500f07473a387f4a8555917c5543"' + repoEtag: '"56ddb326859a3be322f1a4daa4fda623aa44e8b6d082faa9055169315e95a122"' repoLastModified: Tue, 03 Sep 2024 03:54:42 GMT foundInMaster: true id: 70270b46839e1466d6a425a8da6ded65 @@ -12298,7 +12298,7 @@ repositoryId: 241074287 description: Backbase Open Api Tools (boat) helps manage large OpenAPI projects created: '2020-02-17T10:00:41Z' - updated: '2024-10-04T14:41:08Z' + updated: '2024-10-07T13:20:01Z' language: Mustache archived: false stars: 42 @@ -12307,8 +12307,8 @@ owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION - repoEtag: '"1d8c1d0b20b8b9aba67ae9c2def20ae27c0322db56e881114076809f22c7ad5f"' - repoLastModified: Fri, 04 Oct 2024 14:41:08 GMT + repoEtag: '"3820d3b59470061eb7acc5f5f72c726276947eed353ba8cd5131a31d706eba8c"' + repoLastModified: Mon, 07 Oct 2024 13:20:01 GMT foundInMaster: true category: SDK id: fd5b893e6ddf5af8821536a61ecb1d4e @@ -12329,11 +12329,11 @@ archived: false stars: 42 watchers: 23 - forks: 7 + forks: 8 owner: JuliaComputing logo: https://avatars.githubusercontent.com/u/10258468?v=4 license: NOASSERTION - repoEtag: '"c8df8d78198a61cca244f9a1a90a8bbcd0951f1e0d09c7f7ee3b3fd4d881d325"' + repoEtag: '"873b56f1d65eedb11076d82b2505c72abb68c2f0c4f9c6d671bf4f90d45ad971"' repoLastModified: Tue, 24 Sep 2024 13:22:10 GMT foundInMaster: true category: Parsers @@ -12413,7 +12413,7 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"21d7de6b5b0f215b53e1c6d3fec3d8d7cdf86272040e941008a8a60b630f4599"' + repoEtag: '"0a2b2038d8725686f6bcd6fc1c2c92c20a6de98c3ccad5bf19530efc192d21f1"' repoLastModified: Fri, 20 Sep 2024 21:37:37 GMT foundInMaster: true category: @@ -12619,7 +12619,7 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"b04f846be79a41acb89031eab6d8ea403e5700b3e1d438f41024e425af932110"' + repoEtag: '"228bb7fe5db78f15ca2c10aab2d0696dd6e5e7ac70ed69c111cb33643e5bfe9c"' repoLastModified: Wed, 18 Sep 2024 07:32:14 GMT category: Parsers foundInMaster: true @@ -12875,10 +12875,10 @@ archived: false stars: 33 watchers: 2 - forks: 26 + forks: 27 owner: bezkoder logo: https://avatars.githubusercontent.com/u/52996966?v=4 - repoEtag: '"40d4b3a8d7599cef307c683a6b53d72d47bcb0f140a1980d9515713109164bda"' + repoEtag: '"8d1261978d54c15a4c3b9ff1825ed787759b1eadf57ecf7c0462e0a33864be90"' repoLastModified: Tue, 06 Aug 2024 03:49:00 GMT category: Server Implementations foundInMaster: true @@ -12977,17 +12977,17 @@ repositoryId: 735578513 description: Generate VitePress API Docs from OpenAPI specifications created: '2023-12-25T12:25:21Z' - updated: '2024-10-06T17:57:22Z' + updated: '2024-10-08T02:19:40Z' language: TypeScript archived: false - stars: 35 + stars: 36 watchers: 2 - forks: 7 + forks: 8 owner: enzonotario logo: https://avatars.githubusercontent.com/u/10469299?v=4 license: MIT - repoEtag: '"7d97e916fae10dc6c64102e235fe18711cf1ef138f1e4d77b643ef4e17e2c6ce"' - repoLastModified: Sun, 06 Oct 2024 17:57:22 GMT + repoEtag: '"7e8044a4e265006d4cadd8c2fdae079002b2bbdb48e25528fff9168a66c61a10"' + repoLastModified: Tue, 08 Oct 2024 02:19:40 GMT category: Parsers foundInMaster: true oldLocations: @@ -13216,7 +13216,7 @@ repositoryId: 393620909 description: RESTful API for managing a school created: '2021-08-07T08:06:01Z' - updated: '2024-10-04T12:30:50Z' + updated: '2024-10-07T13:16:40Z' language: Java archived: false stars: 28 @@ -13225,8 +13225,8 @@ owner: hei-school logo: https://avatars.githubusercontent.com/u/88576095?v=4 license: MIT - repoEtag: '"75189857b1f6fe5bb85c73aa2ffac95f9d3abc4ef48eb859e1167a7ba74b9a02"' - repoLastModified: Fri, 04 Oct 2024 12:30:50 GMT + repoEtag: '"05b7e92c6bce42ea743a73b068f9438f16af4a9cd82347492831a53cff92cbef"' + repoLastModified: Mon, 07 Oct 2024 13:16:40 GMT foundInMaster: true category: Code Generators id: bf98240ea893afa32efc180fb73dd5b6 @@ -13354,7 +13354,7 @@ owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: NOASSERTION - repoEtag: '"089005c4195b6df78b4fcfb766376143710b7d9dd4184fcb2ac76341ffdd9e6b"' + repoEtag: '"448f1e5e387841692831b1040e8c5a8e32e1af057fd36e3557a8d777885d6d71"' repoLastModified: Sun, 08 Sep 2024 08:21:41 GMT foundInMaster: true category: Description Validators @@ -13552,7 +13552,7 @@ repositoryId: 459027206 description: Developer-friendly OpenAPI3 tooling for Fastify that's easy to use. created: '2022-02-14T05:24:29Z' - updated: '2024-09-24T20:00:35Z' + updated: '2024-10-07T20:55:26Z' language: TypeScript archived: false stars: 23 @@ -13560,8 +13560,8 @@ forks: 2 owner: eropple logo: https://avatars.githubusercontent.com/u/109262?v=4 - repoEtag: '"c97d21d8dff638ddeebe6f4567af63e607e87a8431076ee7b9e8741bf67c11ad"' - repoLastModified: Tue, 24 Sep 2024 20:00:35 GMT + repoEtag: '"3e5993b88f6ee88f728a2bc4ae67ca5188c0612bda1a689541011ca7a014f7d0"' + repoLastModified: Mon, 07 Oct 2024 20:55:26 GMT foundInMaster: true category: - Server @@ -13954,7 +13954,7 @@ repositoryId: 178213765 description: Generate schema sources for Scala, Java and Elm from an openapi 3.0 spec. created: '2019-03-28T13:53:17Z' - updated: '2024-10-06T06:26:14Z' + updated: '2024-10-07T22:54:21Z' language: Scala archived: false stars: 21 @@ -13963,8 +13963,8 @@ owner: eikek logo: https://avatars.githubusercontent.com/u/701128?v=4 license: MIT - repoEtag: '"dad0344f6f3ad8cb3c6fd04cc997c07bc18dd082b68b19ea79ebdafc83bb54f3"' - repoLastModified: Sun, 06 Oct 2024 06:26:14 GMT + repoEtag: '"1d9ecd313ddff964f0003cdcd81bee534088507bdf4a6ee0c14b4df5f7c4228c"' + repoLastModified: Mon, 07 Oct 2024 22:54:21 GMT foundInMaster: true category: Parsers id: c55aff4f35aaeecc6904953f3eb67cb6 @@ -14144,17 +14144,17 @@ A community-created collection of configuration, plugins and techniques for getting the best from Redocly CLI in every situation. created: '2023-09-28T15:12:02Z' - updated: '2024-10-02T14:32:43Z' + updated: '2024-10-07T11:22:17Z' language: JavaScript archived: false - stars: 20 + stars: 21 watchers: 15 forks: 7 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"ca1642317eca646c1854cfcd32291334cbe5595cf07e3546797300528c08a016"' - repoLastModified: Wed, 02 Oct 2024 14:32:43 GMT + repoEtag: '"8cb611b60530ddcbce07199edbbcfc9de1acc143f41ad7e6c96613b630cd556b"' + repoLastModified: Mon, 07 Oct 2024 11:22:17 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -14307,7 +14307,7 @@ owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"f261b05fb7e2685b5a5d386c434f45e97aa30c72945a7625da421c1cac280364"' + repoEtag: '"c63cca5aab8549a2598f08bae352560d0da62b0a2153a29e30ca11301d1c1547"' repoLastModified: Thu, 03 Oct 2024 18:12:36 GMT foundInMaster: true category: Testing @@ -14531,16 +14531,16 @@ repositoryId: 400815425 description: 单纯的文件服务, 目前仅仅集成了minio(人在电信外包差点没了) created: '2021-08-28T14:40:30Z' - updated: '2024-09-26T04:17:30Z' + updated: '2024-10-07T14:51:48Z' language: Java archived: false - stars: 18 + stars: 19 watchers: 2 - forks: 5 + forks: 6 owner: mikuhuyo logo: https://avatars.githubusercontent.com/u/42843191?v=4 - repoEtag: '"d6fced6abc99ffc6fb6b61d586214a74651b17a508ac2dfc10a11b3d5e0cc385"' - repoLastModified: Thu, 26 Sep 2024 04:17:30 GMT + repoEtag: '"d8faf59f02196255f390e337fdbfc0ca56bdc1ea3fc115be6e9d697dbe1aeaf6"' + repoLastModified: Mon, 07 Oct 2024 14:51:48 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -14948,17 +14948,17 @@ repositoryId: 638743792 description: OpenAPI output generated in SQL for a PostgREST instance created: '2023-05-10T02:33:03Z' - updated: '2024-09-02T19:00:01Z' + updated: '2024-10-07T04:30:32Z' language: PLpgSQL archived: false - stars: 17 + stars: 18 watchers: 6 forks: 4 owner: PostgREST logo: https://avatars.githubusercontent.com/u/15115011?v=4 license: MIT - repoEtag: '"40f58176d2eead7698aee81df43a357a56aef14279835fee5a5d0ebbbc7b07c6"' - repoLastModified: Mon, 02 Sep 2024 19:00:01 GMT + repoEtag: '"a74c2dc7bb49db43b897474446dbdeb3db85ae0d33c399bed388097cfd8b04cb"' + repoLastModified: Mon, 07 Oct 2024 04:30:32 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -15148,7 +15148,7 @@ owner: commonism logo: https://avatars.githubusercontent.com/u/164513?v=4 license: BSD-3-Clause - repoEtag: '"644ef233ea797c783dc85485fb42385f73c1383ea3b9fcf031605c0392646c22"' + repoEtag: '"e2fcdabe053105feb95df5a35e977d959870f7db66020e7fdb65dcf1ea46fe87"' repoLastModified: Fri, 04 Oct 2024 06:57:35 GMT foundInMaster: true id: f7fe65d08545a563279e1526fe797380 @@ -15727,7 +15727,7 @@ owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT - repoEtag: '"9fe8fadebd6cc5b52f5fcbaa72584c069aea1a2319aa2e5b4ff1ad357ddc273d"' + repoEtag: '"eb4d360c5e783dd221839f293e757d3dd2cf136113e57def3ff9adb0df5fad7c"' repoLastModified: Sat, 05 Oct 2024 01:15:22 GMT category: - Data Validators @@ -16293,7 +16293,7 @@ owner: lrstanley logo: https://avatars.githubusercontent.com/u/1847365?v=4 license: MIT - repoEtag: '"b413bcadc47cef2f42a09f376990318ac291a226e8dc691f1ef2eb7effe55751"' + repoEtag: '"e547e37d619b39e8ba93c6fda86776322878279df886a73343098299ba9bd51b"' repoLastModified: Wed, 02 Oct 2024 07:29:33 GMT category: Documentation foundInMaster: true @@ -16461,7 +16461,7 @@ owner: openmobilityfoundation logo: https://avatars.githubusercontent.com/u/52187191?v=4 license: NOASSERTION - repoEtag: '"c1ae6527cad032b0a618ade9b3f5cff7baf2b1c303fb4f44e056bda7f845419d"' + repoEtag: '"203dd5bb0b388dcd028364a7edf306b797a0de50bbcb79066fd63c22be2a37c2"' repoLastModified: Fri, 27 Sep 2024 15:56:52 GMT category: - Parsers @@ -17030,7 +17030,7 @@ owner: mchangrh logo: https://avatars.githubusercontent.com/u/15132783?v=4 license: GPL-3.0 - repoEtag: '"a24adfbdc9bca4cb2befe1ba5156f5ffed8885034b2680171abce1bf69f4e643"' + repoEtag: '"4875fdab6d7d3444b2c357416400d3c7787c9c18c3e134b4e6c0137a38e569d5"' repoLastModified: Sat, 14 Sep 2024 08:56:10 GMT foundInMaster: true category: @@ -17416,7 +17416,7 @@ repositoryId: 740729887 description: The easiest way to share OpenAPI files created: '2024-01-09T00:11:59Z' - updated: '2024-10-04T15:27:30Z' + updated: '2024-10-07T16:04:02Z' language: Vue archived: false stars: 8 @@ -17424,8 +17424,8 @@ forks: 4 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 - repoEtag: '"bb7726e57559c75463b05aff3b527b52d8ee168aab206901164491cbb8791be3"' - repoLastModified: Fri, 04 Oct 2024 15:27:30 GMT + repoEtag: '"8f033d1d9854f706e876a0ff593f9dbd94e7b50ef1f62c86ec9978b69e8ca073"' + repoLastModified: Mon, 07 Oct 2024 16:04:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -17850,7 +17850,7 @@ OpenAPI 3 contract and save a lot of time and effort, especially for larger projects with many endpoints or many services. created: '2023-03-08T23:18:03Z' - updated: '2024-09-15T15:43:08Z' + updated: '2024-10-07T14:19:14Z' language: Go archived: false stars: 7 @@ -17859,8 +17859,8 @@ owner: cerberauth logo: https://avatars.githubusercontent.com/u/127022998?v=4 license: MIT - repoEtag: '"6316fe442c5c9b58d9c8d37902f9caf2ac8847eccde171e8fd030e3dde3dea75"' - repoLastModified: Sun, 15 Sep 2024 15:43:08 GMT + repoEtag: '"eae581be348984bd8f16615a4f877cd0ba3294b9cecfbd741072b2868673a540"' + repoLastModified: Mon, 07 Oct 2024 14:19:14 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -18017,7 +18017,7 @@ owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT - repoEtag: '"34e75939831b8d6d4a124d56e6564f08087075da0a155e40ecf47f445585405e"' + repoEtag: '"cfe018b8d30ff27f2a6557a50f131ae706de54c79a1fb5fd7947d9fa70974d9f"' repoLastModified: Fri, 12 Jan 2024 18:23:08 GMT foundInMaster: true category: @@ -18388,7 +18388,7 @@ owner: Aptori-dev logo: https://avatars.githubusercontent.com/u/140379261?v=4 license: MIT - repoEtag: '"f101d890176d715b2facd832b1e220afd8e23812eeba66063c43119573f0018f"' + repoEtag: '"9989b078914673351b3417ce5d67bc2af1fa51d6eddfa947de3d3883519fac27"' repoLastModified: Mon, 15 Jul 2024 21:46:47 GMT category: Server Implementations foundInMaster: true @@ -18730,7 +18730,7 @@ service from a set of OpenAPI specifications sourced from Azure REST API specs created: '2022-08-08T08:41:58Z' - updated: '2024-10-04T10:41:19Z' + updated: '2024-10-07T21:22:24Z' language: JavaScript archived: false stars: 6 @@ -18738,8 +18738,8 @@ forks: 0 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 - repoEtag: '"8c4a1d43f76d7f1d06213a74ab0dba144bfb4cb5066568f55d2b917ee1009282"' - repoLastModified: Fri, 04 Oct 2024 10:41:19 GMT + repoEtag: '"ccde49c010efe718eea942fa074b38ad9be3f5a1dff2116e3af3da498a158cef"' + repoLastModified: Mon, 07 Oct 2024 21:22:24 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -20971,7 +20971,7 @@ owner: cloudy-sky-software logo: https://avatars.githubusercontent.com/u/97355959?v=4 license: Apache-2.0 - repoEtag: '"46702872457509be705774a595785b67daec8113b180a0121f874c2c3b1b42d2"' + repoEtag: '"893e8ba0f1124ad964ca852b9c57404aee1263e61c1cede540a67c83feb84835"' repoLastModified: Mon, 07 Oct 2024 00:37:25 GMT category: Server Implementations foundInMaster: true @@ -21150,7 +21150,7 @@ owner: tsingsun logo: https://avatars.githubusercontent.com/u/5848549?v=4 license: Apache-2.0 - repoEtag: '"13a1a48cc279229745ff7af3d0f7974b07bdc9268b6e29490b042f6a4231f8d1"' + repoEtag: '"7c997f57664d556156d7d7f598c3c23cc61794b53e278b21a3eff0d08866bc13"' repoLastModified: Thu, 26 Sep 2024 16:05:00 GMT category: Server Implementations foundInMaster: true @@ -21472,7 +21472,7 @@ owner: smallstep logo: https://avatars.githubusercontent.com/u/23183426?v=4 license: Apache-2.0 - repoEtag: '"042f9cf2cf9b8dfa2a1a74fc758768c92fe7981e2059b5a42381fa321fb5be25"' + repoEtag: '"995638227d67062928b8e39dded70c91d7cba13665a7226d04b3da31fc5bac10"' repoLastModified: Mon, 26 Aug 2024 15:06:58 GMT category: Server Implementations foundInMaster: true @@ -21842,7 +21842,7 @@ owner: ironcore-dev logo: https://avatars.githubusercontent.com/u/147836484?v=4 license: Apache-2.0 - repoEtag: '"4f0a28c03305b64b7313b44694f606ff2afc8ccc846d43378ca3aa4973315b85"' + repoEtag: '"75f0b86237e514726d8c0c87b135012b884138b6d58eadff26b662f7361ec16a"' repoLastModified: Mon, 26 Aug 2024 11:01:32 GMT category: Parsers foundInMaster: true @@ -22194,17 +22194,17 @@ repositoryId: 592216369 description: Provider-side demo using consumer-driven contract testing created: '2023-01-23T08:22:09Z' - updated: '2024-08-05T12:03:47Z' + updated: '2024-10-07T08:15:59Z' language: Python archived: false - stars: 3 + stars: 4 watchers: 2 forks: 2 owner: sergeyklay logo: https://avatars.githubusercontent.com/u/1256298?v=4 license: MIT - repoEtag: '"405fc04bc3978cf1bed25360929331176b71f3d3b7912bbf0955df4aebdcfb2a"' - repoLastModified: Mon, 05 Aug 2024 12:03:47 GMT + repoEtag: '"4f73eabf40ee96cc3362f8d8232e641b9abf51742656fa46de8c05c11cc8f6b6"' + repoLastModified: Mon, 07 Oct 2024 08:15:59 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -22231,7 +22231,7 @@ owner: hiroyoshii logo: https://avatars.githubusercontent.com/u/40140638?v=4 license: Apache-2.0 - repoEtag: '"f668a77c9035a83e925fe73526487cf844a49f01eb7d7f72773d8b8bfc3204c1"' + repoEtag: '"708e630bee979b347a73dd09ffbc39a55a0ba4f01a686f1c458ae615c20ba03f"' repoLastModified: Mon, 09 Sep 2024 14:21:56 GMT category: Server Implementations foundInMaster: true @@ -22877,7 +22877,7 @@ Clone of ePages-de/restdocs-api-spec with class field type and constraint inference. created: '2022-02-22T03:33:26Z' - updated: '2024-10-01T01:28:30Z' + updated: '2024-10-08T02:06:30Z' language: Kotlin archived: false stars: 2 @@ -22886,8 +22886,8 @@ owner: keecon logo: https://avatars.githubusercontent.com/u/19371343?v=4 license: MIT - repoEtag: '"e44f0945e696cb46af9e34d3967d685ef099e2007d7e81928879766a4b21f105"' - repoLastModified: Tue, 01 Oct 2024 01:28:30 GMT + repoEtag: '"d492ba45324e63a23da220ee5972df5edb70397b8ca598554b8b92d2ca51dbb6"' + repoLastModified: Tue, 08 Oct 2024 02:06:30 GMT foundInMaster: true category: Server id: 07a8059ee6961dc1e46442f5582d1501 @@ -23413,15 +23413,15 @@ id: 6221a7dad056965aa69ad16ff0132577 repositoryMetadata: base64Readme: >- - KFtEZWVwIERpdmUgR2VuZXJhdGVkIGJ5IE5vdGVib29rTE1dKGh0dHBzOi8vbm90ZWJvb2tsbS5nb29nbGUuY29tL25vdGVib29rLzJjNWQzNDA5LTA4ZGItNDYyNy04MzM1LWE4NzFhY2I4ZDZhYi9hdWRpbykpCgooW0RlZXAgRGl2ZSBWZXJzaW9uIDIgVy8gVXBkYXRlZCBjb250ZW50IEdlbmVyYXRlZCBieSBOb3RlYm9va0xNXShodHRwczovL25vdGVib29rbG0uZ29vZ2xlLmNvbS9ub3RlYm9vay83OWU3ZmUxNy0zYWI2LTQwNjgtODgyYi1hZjc2ZTU2OTJjODEvYXVkaW8pKQoKIyBTeXN0ZW1zIFNwYWNlCgoxLiBbKipUaGUgU2hpZnQgZnJvbSBNb2RlbHMgdG8gQ29tcG91bmQgQUkgU3lzdGVtcyoqXShodHRwczovL2JhaXIuYmVya2VsZXkuZWR1L2Jsb2cvMjAyNC8wMi8xOC9jb21wb3VuZC1haS1zeXN0ZW1zLykgLSBUaGlzIGFydGljbGUgZnJvbSBCZXJrZWxleSBBSSBSZXNlYXJjaCAoQkFJUikgaGlnaGxpZ2h0cyBhIGdyb3dpbmcgdHJlbmQgd2hlcmUgQUkgYWR2YW5jZW1lbnRzIGluY3JlYXNpbmdseSByZWx5IG9uICoqY29tcG91bmQgQUkgc3lzdGVtcyoq4oCUY29tYmluYXRpb25zIG9mIG11bHRpcGxlIG1vZGVscyBhbmQgY29tcG9uZW50c+KAlHJhdGhlciB0aGFuIHRyYWRpdGlvbmFsIG1vbm9saXRoaWMgbW9kZWxzLiBDb21wb3VuZCBzeXN0ZW1zIG9mZmVyIG1vcmUgZmxleGliaWxpdHkgYW5kIGFkYXB0YWJpbGl0eSwgYXMgZWFjaCBjb21wb25lbnQgY2FuIHNwZWNpYWxpemUgaW4gYSBkaWZmZXJlbnQgdGFzayBvciBwaGFzZSBvZiB0aGUgcGlwZWxpbmUuICAKCktleSBwb2ludHM6Ci0gKipEZXNpZ24sIG9wdGltaXphdGlvbiwgYW5kIG9wZXJhdGlvbjoqKiBBcHByb2FjaGVzIGFyZSBzdGlsbCBlbWVyZ2luZywgYnV0IGNvbXBvdW5kIEFJIHN5c3RlbXMgYXJlIHByb3ZpbmcgbW9yZSBlZmZpY2llbnQgZm9yIGNvbXBsZXggdGFza3MuCi0gKipNYXhpbWl6aW5nIHJlbGlhYmlsaXR5IGFuZCBxdWFsaXR5OioqIFRoZXNlIHN5c3RlbXMgcHJvbWlzZSBoaWdoZXIgcmVsaWFiaWxpdHksIHBhcnRpY3VsYXJseSBmb3IgbGFyZ2Utc2NhbGUgYXBwbGljYXRpb25zLCBieSBicmVha2luZyBkb3duIHRhc2tzIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHVuaXRzLiAKLSAqKlRyZW5kIGZvciAyMDI0OioqIEJBSVIgc2VlcyB0aGlzIGFzIG9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgdHJlbmRzLCB3aGVyZSBkZXZlbG9wZXJzIHdpbGwgZm9jdXMgb24gaG93IHRvIGFzc2VtYmxlIHRoZXNlIGNvbXBvbmVudHMgaW4gZWZmZWN0aXZlIHdheXMuCiAgIAohW2ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZDg3NGU4MmYtOWI4OS00ODdlLTg5NGMtMWVkM2IyNDcyOTRkKQo8cCBhbGlnbj0iY2VudGVyIj5JbmNyZWFzaW5nbHkgbWFueSBuZXcgQUkgcmVzdWx0cyBhcmUgZnJvbSBjb21wb3VuZCBzeXN0ZW1zLjwvcD4KCiJfRmlndXJpbmcgb3V0IHRoZSBiZXN0IHByYWN0aWNlcyBmb3IgZGV2ZWxvcGluZyBjb21wb3VuZCBBSSBzeXN0ZW1zIGlzIHN0aWxsIGFuIG9wZW4gcXVlc3Rpb24sIGJ1dCB0aGVyZSBhcmUgYWxyZWFkeSBleGNpdGluZyBhcHByb2FjaGVzIHRvIGFpZCB3aXRoIGRlc2lnbiwgZW5kLXRvLWVuZCBvcHRpbWl6YXRpb24sIGFuZCBvcGVyYXRpb24uIFdlIGJlbGlldmUgdGhhdCBjb21wb3VuZCBBSSBzeXN0ZW1zIHdpbGwgcmVtYWluIHRoZSBiZXN0IHdheSB0byBtYXhpbWl6ZSB0aGUgcXVhbGl0eSBhbmQgcmVsaWFiaWxpdHkgb2YgQUkgYXBwbGljYXRpb25zIGdvaW5nIGZvcndhcmQsIGFuZCBtYXkgYmUgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCB0cmVuZHMgaW4gQUkgaW4gMjAyNC5fIgoKMi4gWyoqQnVpbGRpbmcgQSBHZW5lcmF0aXZlIEFJIFBsYXRmb3JtKipdKGh0dHBzOi8vaHV5ZW5jaGlwLmNvbS8yMDI0LzA3LzI1L2dlbmFpLXBsYXRmb3JtLmh0bWwpIC0gVGhpcyBhcnRpY2xlIGV4cGxvcmVzIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGRldmVsb3BtZW50IG9mIGEgZ2VuZXJhdGl2ZSBBSSBwbGF0Zm9ybSwgZm9jdXNpbmcgb24gdGhlIGNoYWxsZW5nZXMgb2YgaW50ZWdyYXRpbmcgdmFyaW91cyBBSSBjb21wb25lbnRzLiBJdCBlbXBoYXNpemVzOgotICoqT3BlbiBTb3VyY2UgTExNIFRvb2xzOioqIFRoZSBhcnRpY2xlIHJlZmVyZW5jZXMgc2V2ZXJhbCB0b29scyBhbmQgdGVjaG5pcXVlcyBmb3IgYnVpbGRpbmcgZ2VuZXJhdGl2ZSBBSSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiBtb2RlbCBhbGlnbm1lbnQsIG9wdGltaXphdGlvbiwgYW5kIGFkYXB0YWJpbGl0eS4gVGhlIHJlZmVyZW5jZWQgW09wZW4gU291cmNlIExMTSBUb29sc10oaHR0cHM6Ly9odXllbmNoaXAuY29tL2xsYW1hLXBvbGljZSkgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGVjb3N5c3RlbSBzdXJyb3VuZGluZyBnZW5lcmF0aXZlIEFJIG1vZGVscyBsaWtlIE1ldGHigJlzIExMYU1BLgotICoqQ2hhbGxlbmdlcyBpbiBwbGF0Zm9ybSBidWlsZGluZzoqKiBGcm9tIG1vZGVsIGludGVncmF0aW9uIHRvIGVuc3VyaW5nIHRoZSBhbGlnbm1lbnQgb2YgZ2VuZXJhdGl2ZSBBSSBvdXRwdXQgd2l0aCBpbnRlbmRlZCB1c2UgY2FzZXMsIHRoZXJlIGFyZSBtYW55IGh1cmRsZXMgaW4gYWNoaWV2aW5nIGFuIG9wZXJhdGlvbmFsIHBsYXRmb3JtLgoKQm90aCBhcnRpY2xlcyBzdHJlc3MgdGhhdCB0aGUgZnV0dXJlIG9mIEFJIHdpbGwgaW52b2x2ZSAqKm1vcmUgc29waGlzdGljYXRlZCBzeXN0ZW1zKiosIHJlbHlpbmcgb24gdGhlIGNvb3BlcmF0aW9uIG9mIHZhcmlvdXMgc3BlY2lhbGl6ZWQgbW9kZWxzIChjb21wb3VuZCBBSSkgYW5kIHRoZSBpbnRlZ3JhdGlvbiBvZiBkaXZlcnNlIHRvb2xzIGZvciBnZW5lcmF0aXZlIEFJIHBsYXRmb3JtIGRldmVsb3BtZW50LiBUaGlzIGFsaWducyB3aXRoIG9uZ29pbmcgZXhwbG9yYXRpb24gb2YgKipjb21wb3VuZCBBSSBzeXN0ZW1zKiogYW5kICoqZ2VuZXJhdGl2ZSBBSSBwbGF0Zm9ybSBhcmNoaXRlY3R1cmUqKi4KICAgCiMjIEFQSXMKc3RhcnRlZCB3aXRoIHRoaXMgb25lIGVuZHBvaW50IENvbXBsZXRpb25zICoqL2NvbXBsZXRpb25zKiogd2l0aCBUZXh0IElucHV0L091dHB1dCAobm93IExlZ2FjeSkKClRoZW4gQ2hhdEdQVCwgQ2hhdCBjb21wbGV0aW9ucyAqKi9jaGF0L2NvbXBsZXRpb25zKiogIHdpdGggTWVzc2FnZXMgSW5wdXQvT3V0cHV0CiAgCjMuIEVtYmVkZGluZ3MJCQkqKi9lbWJlZGRpbmdzKioKNC4gSW1hZ2UgZ2VuZXJhdGlvbgkJKiovaW1hZ2VzL2dlbmVyYXRpb25zKioKNS4gVGV4dCB0byBzcGVlY2gJCQkqKi9hdWRpby9zcGVlY2gqKgo2LiBTcGVlY2ggdG8gdGV4dAkJCSoqL2F1ZGlvL3RyYW5zY3JpcHRpb25zKioKNy4gTW9kZXJhdGlvbgkJCSoqL21vZGVyYXRpb25zKioKOC4gRmluZS10dW5pbmcgICoqL2ZpbmVfdHVuaW5nL2pvYnMqKgo5LiBCYXRjaAkJCQkqKi9maWxlcyAvYmF0Y2hlcyoqClJFU1QgQVBJOiAgCi0gRnVsbCBPcGVuQVBJIHNwZWNpZmljYXRpb24gZm9yIHRoZSBbT3BlbkFJIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktb3BlbmFwaS9ibG9iL21hc3Rlci9vcGVuYXBpLnlhbWwpICAgIAotIFJlc3BvbnNlIEZvcm1hdHMgLSBbQnVpbGRpbmcgQUdJIHdpdGggT3BlbkFJJ3MgU3RydWN0dXJlZCBPdXRwdXRzIEFQSV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1Oak9mSDlEOGFKbykKLSBGdW5jdGlvbiBDYWxsaW5nIC0gUXVlcnkgRGF0YWJhc2UsIFNlbmQgQWxlcnRzIGV0Yy4KCioqTW9yZSBBUElzOioqCiAgLSBbQXp1cmUgT3BlbkFJIEFQSV0oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL2F6dXJlL2FpLXNlcnZpY2VzL29wZW5haS9yZWZlcmVuY2UjYXBpLXNwZWNzKQogIC0gW0JlZHJvY2sgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9ydW50aW1lX0ludm9rZU1vZGVsLmh0bWwpCiAgLSBbTGxhbWEgU3RhY2sgQVBJXShodHRwczovL2dpdGh1Yi5jb20vbWV0YS1sbGFtYS9sbGFtYS1zdGFjay9ibG9iL21haW4vZG9jcy9yZXNvdXJjZXMvbGxhbWEtc3RhY2stc3BlYy55YW1sKQogIC0gR2VtaW5pIEFQSSAtID8KClB5dGhvbiBTREtzOiAgCi0gT3BlbkFJIFB5dGhvbiBbQVBJXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL29wZW5haS1weXRob24vYmxvYi9tYWluL2FwaS5tZCkgbGlicmFyeSBpbiB0aGUgVGhlIG9mZmljaWFsIFB5dGhvbiBsaWJyYXJ5IGZvciB0aGUgW09wZW5BSSBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvb3BlbmFpLXB5dGhvbikKCmBgYHB5dGhvbiAgCmltcG9ydCBvcwpmcm9tIG9wZW5haSBpbXBvcnQgT3BlbkFJCgpjbGllbnQgPSBPcGVuQUkoCiAgICAjIFRoaXMgaXMgdGhlIGRlZmF1bHQgYW5kIGNhbiBiZSBvbWl0dGVkCiAgICBhcGlfa2V5PW9zLmVudmlyb24uZ2V0KCJPUEVOQUlfQVBJX0tFWSIpLAopCgpjaGF0X2NvbXBsZXRpb24gPSBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoCiAgICBtZXNzYWdlcz1bCiAgICAgICAgewogICAgICAgICAgICAicm9sZSI6ICJ1c2VyIiwKICAgICAgICAgICAgImNvbnRlbnQiOiAiU2F5IHRoaXMgaXMgYSB0ZXN0IiwKICAgICAgICB9CiAgICBdLAogICAgbW9kZWw9ImdwdC0zLjUtdHVyYm8iLAopCgpwcmludChjaGF0X2NvbXBsZXRpb24udG9fanNvbigpKQojIHByaW50KGNoYXRfY29tcGxldGlvbi5jaG9pY2VzWzBdLm1lc3NhZ2UuY29udGVudCkKCmZyb20gb3BlbmFpIGltcG9ydCBBenVyZU9wZW5BSQoKIyBnZXRzIHRoZSBBUEkgS2V5IGZyb20gZW52aXJvbm1lbnQgdmFyaWFibGUgQVpVUkVfT1BFTkFJX0FQSV9LRVkKY2xpZW50ID0gQXp1cmVPcGVuQUkoCiAgICAjIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9henVyZS9haS1zZXJ2aWNlcy9vcGVuYWkvcmVmZXJlbmNlI3Jlc3QtYXBpLXZlcnNpb25pbmcKICAgIGFwaV92ZXJzaW9uPSIyMDIzLTA3LTAxLXByZXZpZXciLAogICAgIyBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vYXp1cmUvY29nbml0aXZlLXNlcnZpY2VzL29wZW5haS9ob3ctdG8vY3JlYXRlLXJlc291cmNlP3Bpdm90cz13ZWItcG9ydGFsI2NyZWF0ZS1hLXJlc291cmNlCiAgICBhenVyZV9lbmRwb2ludD0iaHR0cHM6Ly9leGFtcGxlLWVuZHBvaW50Lm9wZW5haS5henVyZS5jb20iLAogICAgIyBhenVyZV9kZXBsb3ltZW50PSJncHQzNSIsCikKCmNoYXRfY29tcGxldGlvbiA9IGNsaWVudC5jaGF0LmNvbXBsZXRpb25zLmNyZWF0ZSgKICAgICMgbW9kZWw9ImRlcGxveW1lbnQtbmFtZSIsICAjIGUuZy4gZ3B0LTM1LWluc3RhbnQKICAgIG1vZGVsPSJncHQzNSIsICAjIGdwdC0zNS10dXJibwogICAgbWVzc2FnZXM9WwogICAgICAgIHsKICAgICAgICAgICAgInJvbGUiOiAidXNlciIsCiAgICAgICAgICAgICJjb250ZW50IjogIkhvdyBkbyBJIG91dHB1dCBhbGwgZmlsZXMgaW4gYSBkaXJlY3RvcnkgdXNpbmcgUHl0aG9uPyIsCiAgICAgICAgfSwKICAgIF0sCikKcHJpbnQoY2hhdF9jb21wbGV0aW9uLnRvX2pzb24oKSkKYGBgCgoqKk1vcmUgQVBJIFBhdHRlcm5zOioqCgpjbGllbnQgPSBBbnRocm9waWMoKSAgCmNsaWVudCA9IEFudGhyb3BpY0JlZHJvY2soKSAgCmNsaWVudCA9IEFudGhyb3BpY1ZlcnRleCgpICAKCm1lc3NhZ2UgPSBjbGllbnQubWVzc2FnZXMuY3JlYXRlKCkgIApwcmludChtZXNzYWdlLmNvbnRlbnQpICAKCiAgCgotIFtEcm9wIGluIHJlcGxhY2VtZW50XShodHRwczovL2dpdGh1Yi5jb20vZGF0YXN0YXgvYXN0cmEtYXNzaXN0YW50cy1hcGkpIGZvciB0aGUgT3BlbkFJIEFzc2lzdGFudHMgQVBJCiAgLSBGdWxsIGNvdmVyYWdlIG9mIE9wZW5BSSBlbmRwb2ludHMgaW4gdGhlIHJlcG8gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhc3RheC9hc3RyYS1hc3Npc3RhbnRzLWFwaS9ibG9iL21haW4vY292ZXJhZ2UubWQpCiAKLSBbTGxhbWEgU3RhY2sgUkZDXShodHRwczovL2dpdGh1Yi5jb20vbWV0YS1sbGFtYS9sbGFtYS1zdGFjay9ibG9iL21haW4vcmZjcy9SRkMtMDAwMS1sbGFtYS1zdGFjay5tZCkKICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrLWFwcHMKICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrCgoqKk1vcmUgTGFuZ3VhZ2VzOioqCi0gVGhlIG9mZmljaWFsIFtHb10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktZ28pIGxpYnJhcnkgZm9yIHRoZSBPcGVuQUkgQVBJCiAgICAKIyMgU2VjcmV0cwoKIyMjIDEuIEFQSSBLZXlzCkFuIEFQSSBrZXkgaXMgYSBzaW1wbGUgc3RyaW5nIChvZnRlbiBhbHBoYW51bWVyaWMpIHVzZWQgdG8gYXV0aGVudGljYXRlIHJlcXVlc3RzLiBJdCBjYW4gYmUgaW5jbHVkZWQgYXM6Ci0gKipVUkwgUGFyYW1ldGVyKio6ICAKICBgaHR0cHM6Ly9leGFtcGxlLmNvbS9hcGkvcmVzb3VyY2U/YXBpX2tleT1ZT1VSX0FQSV9LRVlgCi0gKipIZWFkZXIqKjogIAogIGBBdXRob3JpemF0aW9uOiBBcGlLZXkgWU9VUl9BUElfS0VZYAoKQVBJIGtleXMgYXJlIHR5cGljYWxseSB1c2VkIGZvciBzaW1wbGUgYXV0aGVudGljYXRpb24gYW5kIGFyZSBzdWl0ZWQgZm9yIHNlcnZlci10by1zZXJ2ZXIgY29tbXVuaWNhdGlvbiBidXQgYXJlIGxlc3Mgc2VjdXJlIGlmIGV4cG9zZWQgaW4gVVJMcy4KCi0tLQoKIyMjIDIuIEJlYXJlciBUb2tlbgpBICoqQmVhcmVyIFRva2VuKiogaXMgYSBzZWN1cml0eSB0b2tlbiB0aGF0IGlzIGlzc3VlZCBhcyBwYXJ0IG9mIE9BdXRoIDIuMC4gVGhpcyB0b2tlbiBncmFudHMgdGhlIGJlYXJlciBhY2Nlc3MgdG8gcmVzb3VyY2VzLiBJdCdzIHVzdWFsbHkgcGFzc2VkIGluIHRoZSByZXF1ZXN0IGhlYWRlcjoKLSAqKkhlYWRlcioqOiAgCiAgYEF1dGhvcml6YXRpb246IEJlYXJlciBZT1VSX1RPS0VOYAoKQmVhcmVyIHRva2VucyBvZmZlciBtb3JlIHNlY3VyaXR5IGNvbXBhcmVkIHRvIEFQSSBrZXlzLCBlc3BlY2lhbGx5IHdoZW4gY29tYmluZWQgd2l0aCB0b2tlbiBleHBpcmF0aW9uIGFuZCByZWZyZXNoIG1lY2hhbmlzbXMuCgotLS0KCiMjIyAzLiBNaWNyb3NvZnQgRW50cmEgSUQgKGZvcm1lcmx5IEF6dXJlIEFEKQpFbnRyYSBJRCBwcm92aWRlcyAqKk9BdXRoIDIuMCoqIG9yICoqT3BlbklEIENvbm5lY3QgKE9JREMpKiogYmFzZWQgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24sIG1vc3RseSB1c2VkIGZvciBzZWN1cmluZyBlbnRlcnByaXNlIGFwcHMuIFRoZSBmbG93IHR5cGljYWxseSBpbnZvbHZlczoKLSAqKkFjY2VzcyBUb2tlbioqOiBPYnRhaW5lZCBhZnRlciBhIHVzZXIgb3Igc2VydmljZSBhdXRoZW50aWNhdGVzIHdpdGggRW50cmEgSUQuCi0gKipIZWFkZXIqKjogIAogIGBBdXRob3JpemF0aW9uOiBCZWFyZXIgWU9VUl9BQ0NFU1NfVE9LRU5gCgpFbnRyYSBJRCBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggTWljcm9zb2Z0IHNlcnZpY2VzIG9yIGVudGVycHJpc2UgZW52aXJvbm1lbnRzIGZvciB1c2VyLWJhc2VkIG9yIHNlcnZpY2UtYmFzZWQgYXV0aGVudGljYXRpb24uCgotLS0KCiMjIyA0LiBBV1MgU2lnbmF0dXJlCioqQVdTIFNpZ25hdHVyZSBWZXJzaW9uIDQqKiBpcyB1c2VkIHRvIHNlY3VyZWx5IHNpZ24gQVBJIHJlcXVlc3RzIHRvIEFXUyBzZXJ2aWNlcy4gVGhpcyBtZXRob2QgY2FsY3VsYXRlcyBhIHNpZ25hdHVyZSBiYXNlZCBvbiB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBoZWFkZXJzLCBhbmQgdGhlIHVzZXIncyBzZWNyZXQgYWNjZXNzIGtleS4gVGhlIHNpZ25hdHVyZSBpcyBhZGRlZCB0byB0aGUgcmVxdWVzdCBhczoKLSAqKkF1dGhvcml6YXRpb24gSGVhZGVyKio6ICAKICBgQXV0aG9yaXphdGlvbjogQVdTNC1ITUFDLVNIQTI1NiBDcmVkZW50aWFsPUFDQ0VTU19LRVkvLi4uLCBTaWduZWRIZWFkZXJzPS4uLiwgU2lnbmF0dXJlPVNJR05BVFVSRWAKCkl0IGlzIHR5cGljYWxseSBtb3JlIHNlY3VyZSBiZWNhdXNlIHRoZSBzaWduYXR1cmUgaXMgZGVyaXZlZCBkeW5hbWljYWxseSBhbmQgaXMgdGltZS1saW1pdGVkLgoKCiMjIEd1YXJkcmFpbHMKLSBTZW5zaXRpdmUgaW5mb3JtYXRpb24gZmlsdGVycyAtIFBJSSB0eXBlcywgUmVnZXggcGF0dGVybnMgZXRjLgotIENvbnRlbnQgZmlsdGVycyAtIENvbmZpZ3VyZSBjb250ZW50IGZpbHRlcnMgdG8gZGV0ZWN0ICYgYmxvY2sgaGFybWZ1bCB1c2VyIGlucHV0cyBhbmQgbW9kZWwgcmVzcG9uc2VzCi0gRGVuaWVkIHRvcGljcwotIFdvcmQgZmlsdGVycwotIENvbnRleHR1YWwgZ3JvdW5kaW5nIGNoZWNrCgojIyBBc3Npc3RhbnRzCi0gVHVuZSBQZXJzb25hbGl0eSAmIENhcGFiaWxpdGllcwotIENhbGwgTW9kZWxzCi0gQWNjZXNzIFRvb2xzIGluIHBhcmFsbGVsCiAgICAtIEJ1aWx0LWluIGNvZGVfaW50ZXJwcmV0ZXIsIGZpbGVfc2VhcmNoIGV0Yy4KICAgIC0gRnVuY3Rpb24gQ2FsbGluZwotIFBlcnNpc3RlbnQgVGhyZWFkcwotIEZpbGUgRm9ybWF0cwoKIyMgQWdlbnRzCi0g4oCcQWdlbnQgaXMgYSBtb3JlIG92ZXJsb2FkZWQgdGVybSBhdCB0aGlzIHBvaW50IHRoYW4gbm9kZSwgc2VydmljZSwgYW5kIGluc3RhbmNlLuKAnQogIAotPiBodHRwczovL3guY29tL3Jha3lsbC9zdGF0dXMvMTgzNzE2NDc2MTM2MjEzMzA1NwoKLSDigJxJJ20gd29uZGVyaW5nIHdoYXQgd291bGQgYmUgdGhlIGJhc2UgcmVxdWlyZW1lbnRzIG9mICJ0cnVlIGFnZW50IiAoaS5lLiBub3QganVzdCBvdmVyLWh5cGVkIG1hcmtldGluZykuIApGb3IgbWU6IApDYW4gdXNlIEFQSXMgcmVsaWFibHkuIApBUElzIGJ5IG90aGVyIGNvbXBhbmllcywgbm90IGp1c3Qgb25lcyBzcGVjaWZpY2FsbHkgd3JpdHRlbiBmb3IgdGhlIGFnZW50LgpUaGUgQVBJIHVzYWdlIHNob3VsZCBjb3ZlciBhIGxhcmdlIHN1YnNldCBvZiB0aGUgc2VydmljZXMgdGhhdCB0aGUgYWdlbnQgaXMgYWltaW5nIHRvIGNvdmVyLiAKCkkuZS4gaWYgeW91ciBhZ2VudCBpcyBzdXBwb3NlZCB0byBvcmRlciBmb29kLCBpdCBzaG91bGQgYmUgYWJsZSB0byBmaW5kIGFuIG9wZW4gcmVzdGF1cmFudCB3aXRoIHRha2UgYXdheSwgZmlndXJlIG91dCBob3cgdG8gZG8gdGhlIGRlbGl2ZXJ5IGFuZCBhdCBsZWFzdCBzdXBwb3J0IHRoZSAzIGxhcmdlIGRlbGl2ZXJ5IGNvbXBhbmllcy7igJ0KCi0+IGh0dHBzOi8veC5jb20vZ3dlbnNoYXAvc3RhdHVzLzE4MzcxNjc2NTMzMzg2ODE4MTkKCiMjIFRlbGVtZXRyeQotIFtPcGVuVGVsZW1ldHJ5XShodHRwczovL29wZW50ZWxlbWV0cnkuaW8vKQogIC0gW1NlbWFudGljIENvbnZlbnRpb25zIGZvciBHZW5lcmF0aXZlIEFJIHN5c3RlbXMgfCBPcGVuVGVsZW1ldHJ5XShodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2dlbi1haS8pCiAgICAtIFtJbnRyb2R1Y2Ugc2VtYW50aWMgY29udmVudGlvbnMgZm9yIG1vZGVybiBBSSAoTExNcywgdmVjdG9yIGRhdGFiYXNlcywgZXRjLildKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9ucy9pc3N1ZXMvMzI3KQoKIyBNb2RlbCBTcGFjZXMuLi4KCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy82ODMwYzMwNy02MmFkLTQyNTUtYWIzYS01ZDcwMzcxNzZlMmIpCjxwIGFsaWduPSJjZW50ZXIiPlNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL3Jhc2J0L0xMTXMtZnJvbS1zY3JhdGNoPC9wPgoKCioqRm91bmRhdGlvbiBNb2RlbHM6KiogRW1waGFzaXplIHRoZSBjcmVhdGlvbiBhbmQgYXBwbGljYXRpb24gb2YgbGFyZ2Utc2NhbGUgbW9kZWxzIHRoYXQgY2FuIGJlIGFkYXB0ZWQgdG8gYSB3aWRlIHJhbmdlIG9mIHRhc2tzIHdpdGggbWluaW1hbCB0YXNrLXNwZWNpZmljIHR1bmluZy4gIAoKKipQcmVkaWN0aXZlIEh1bWFuIFByZWZlcmVuY2UgKFBIUCk6KiogTGV2ZXJhZ2luZyBodW1hbiBmZWVkYmFjayBpbiB0aGUgbG9vcCBvZiBtb2RlbCB0cmFpbmluZyB0byByZWZpbmUgb3V0cHV0cyBvciBwcmVkaWN0aW9ucyBiYXNlZCBvbiB3aGF0IGlzIHByZWZlcnJlZCBvciBkZXNpcmVkIGJ5IGh1bWFucy4gICAKCi0gUHJlZGljdGl2ZSBIdW1hbiBQcmVmZXJlbmNlIC0gW3BocF0ocGhwKQoKKipGaW5lIFR1bmluZzoqKiBUaGUgcHJvY2VzcyBvZiB0cmFpbmluZyBhbiBleGlzdGluZyBwcmUtdHJhaW5lZCBtb2RlbCBvbiBhIHNwZWNpZmljIHRhc2sgb3IgZGF0YXNldCB0byBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZSBvbiB0aGF0IHRhc2suICAKCi0gaHR0cHM6Ly9sbGFtYS5tZXRhLmNvbS9kb2NzL2hvdy10by1ndWlkZXMvZmluZS10dW5pbmcKLSBodHRwczovL2dpdGh1Yi5jb20vaGl5b3VnYS9MTGFNQS1GYWN0b3J5CgoqKkNyb3NzLWN1dHRpbmcgVGhlbWVzOioqCgoiT3VyIHJlc3VsdHMgc2hvdyBjb25kaXRpb25pbmcgYXdheSByaXNrIG9mIGF0dGFjayByZW1haW5zIGFuIHVuc29sdmVkIHByb2JsZW07IGZvciBleGFtcGxlLCBhbGwgdGVzdGVkIG1vZGVscyBzaG93ZWQgYmV0d2VlbiAyNSUgYW5kIDUwJSBzdWNjZXNzZnVsIHByb21wdCBpbmplY3Rpb24gdGVzdHMuIgoKaHR0cHM6Ly9haS5tZXRhLmNvbS9yZXNlYXJjaC9wdWJsaWNhdGlvbnMvY3liZXJzZWNldmFsLTItYS13aWRlLXJhbmdpbmctY3liZXJzZWN1cml0eS1ldmFsdWF0aW9uLXN1aXRlLWZvci1sYXJnZS1sYW5ndWFnZS1tb2RlbHMvCgoqKlBlcnNvbmFsIElkZW50aWZpYWJsZSBJbmZvcm1hdGlvbiAoUElJKSBhbmQgU2VjdXJpdHk6KiogVGhlc2UgY29uc2lkZXJhdGlvbnMgYXJlIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoYXQgTUwgbW9kZWxzIHJlc3BlY3QgcHJpdmFjeSBhbmQgYXJlIHNlY3VyZSBhZ2FpbnN0IHBvdGVudGlhbCB0aHJlYXRzLiAgCgotIFBlcnNvbmFsIElkZW50aWZpYWJsZSBJbmZvcm1hdGlvbiAtIFtwaWldKHBpaSkgIAoKKipDb2RlLCBTUUwsIEdlbm9taWNzLCBhbmQgTW9yZToqKiBUaGVzZSBhcmVhcyBoaWdobGlnaHQgdGhlIGludGVyZGlzY2lwbGluYXJ5IG5hdHVyZSBvZiBNTCwgd2hlcmUga25vd2xlZGdlIGluIHByb2dyYW1taW5nLCBkYXRhYmFzZXMsIGJpb2xvZ3ksIGFuZCBvdGhlciBmaWVsZHMgY29udmVyZ2UgdG8gYWR2YW5jZSBNTCBhcHBsaWNhdGlvbnMuICAKCioqTmV1cmFsIEFyY2hpdGVjdHVyZSBTZWFyY2ggKE5BUyk6KiogSGlnaGxpZ2h0cyB0aGUgYXV0b21hdGlvbiBvZiB0aGUgZGVzaWduIG9mIG5ldXJhbCBuZXR3b3JrIGFyY2hpdGVjdHVyZXMgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2UgZm9yIHNwZWNpZmljIHRhc2tzLiAgCgotIEJpb2xvZ3kgKENvbGxhYiB3LyBbQXNoaXNoIFBoYWxdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9hc2hpc2gtcGhhbC01NDhiMzcxMjUvKSkgLSBbZ2Vub21pY3NdKGRvY3MvZ2Vub21pY3MubWQpICAKCioqRmV3LVNob3QgYW5kIFplcm8tU2hvdCBMZWFybmluZzoqKiBQb2ludHMgdG8gbGVhcm5pbmcgcGFyYWRpZ21zIHRoYXQgYWltIHRvIHJlZHVjZSB0aGUgZGVwZW5kZW5jeSBvbiBsYXJnZSBsYWJlbGVkIGRhdGFzZXRzIGZvciB0cmFpbmluZyBtb2RlbHMuICAKCioqRmVkZXJhdGVkIExlYXJuaW5nOioqIEZvY3VzZXMgb24gcHJpdmFjeS1wcmVzZXJ2aW5nIHRlY2huaXF1ZXMgdGhhdCBlbmFibGUgbW9kZWwgdHJhaW5pbmcgYWNyb3NzIG11bHRpcGxlIGRlY2VudHJhbGl6ZWQgZGV2aWNlcyBvciBzZXJ2ZXJzIGhvbGRpbmcgbG9jYWwgZGF0YSBzYW1wbGVzLiAgCiAKKipUcmFuc2Zvcm1lcnMgaW4gVmlzaW9uIGFuZCBCZXlvbmQ6KiogRGlzY3Vzc2VzIHRoZSBhcHBsaWNhdGlvbiBvZiB0cmFuc2Zvcm1lciBtb2RlbHMsIG9yaWdpbmFsbHkgZGVzaWduZWQgZm9yIE5MUCB0YXNrcywgaW4gb3RoZXIgZG9tYWlucyBsaWtlIHZpc2lvbiBhbmQgYXVkaW8gcHJvY2Vzc2luZy4gIAoKKipSZWluZm9yY2VtZW50IExlYXJuaW5nIEVuaGFuY2VtZW50czoqKiBMb29rcyBhdCBhZHZhbmNlbWVudHMgaW4gUkwgdGVjaG5pcXVlcyB0aGF0IGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgYXBwbGljYWJpbGl0eSBpbiB2YXJpb3VzIGRlY2lzaW9uLW1ha2luZyBjb250ZXh0cy4gICAKCioqTUxPcHMgYW5kIEF1dG9NTDoqKiBDb25jZW50cmF0ZXMgb24gdGhlIG9wZXJhdGlvbmFsaXphdGlvbiBvZiBNTCBtb2RlbHMgYW5kIHRoZSBhdXRvbWF0aW9uIG9mIHRoZSBNTCBwaXBlbGluZSB0byBzdHJlYW1saW5lIGRldmVsb3BtZW50IGFuZCBkZXBsb3ltZW50IHByb2Nlc3Nlcy4gIAoKKipIeWJyaWQgTW9kZWxzOioqIEV4cGxvcmVzIHRoZSBpbnRlZ3JhdGlvbiBvZiBkaWZmZXJlbnQgbW9kZWwgdHlwZXMgb3IgQUkgYXBwcm9hY2hlcyB0byBsZXZlcmFnZSB0aGVpciByZXNwZWN0aXZlIHN0cmVuZ3RocyBpbiBzb2x2aW5nIGNvbXBsZXggcHJvYmxlbXMuICAKCioqQUkgRXRoaWNzIGFuZCBCaWFzIE1pdGlnYXRpb246KiogVW5kZXJsaW5lcyB0aGUgaW1wb3J0YW5jZSBvZiBkZXZlbG9waW5nIGZhaXIgYW5kIGV0aGljYWwgQUkgc3lzdGVtcyBieSBhZGRyZXNzaW5nIGFuZCBtaXRpZ2F0aW5nIGJpYXNlcyBpbiBNTCBtb2RlbHMuICAKCioqRW5lcmd5LUVmZmljaWVudCBNTDoqKiBSZWZsZWN0cyB0aGUgZ3Jvd2luZyBjb25jZXJuIGFuZCBuZWVkIGZvciBlbnZpcm9ubWVudGFsbHkgc3VzdGFpbmFibGUgQUkgYnkgZGV2ZWxvcGluZyBtb2RlbHMgdGhhdCByZXF1aXJlIGxlc3MgY29tcHV0YXRpb25hbCBwb3dlciBhbmQgZW5lcmd5LiAKCioqSGFyZHdhcmU6KiogUG9pbnRzIHRvIHRoZSBpbXBvcnRhbmNlIG9mIGRldmVsb3BpbmcgYW5kIHV0aWxpemluZyBoYXJkd2FyZSBvcHRpbWl6ZWQgZm9yIE1MIHRhc2tzIHRvIGltcHJvdmUgZWZmaWNpZW5jeSBhbmQgcGVyZm9ybWFuY2UuICAKCgoKCgoKCgoKCg== - readmeEtag: '"7aa42daf2cfdbb62971946c4b204d09cbf989618"' - readmeLastModified: Sun, 06 Oct 2024 22:04:11 GMT + KFtEZWVwIERpdmUgR2VuZXJhdGVkIGJ5IE5vdGVib29rTE1dKGh0dHBzOi8vbm90ZWJvb2tsbS5nb29nbGUuY29tL25vdGVib29rLzJjNWQzNDA5LTA4ZGItNDYyNy04MzM1LWE4NzFhY2I4ZDZhYi9hdWRpbykpCgooW0RlZXAgRGl2ZSBWZXJzaW9uIDIgVy8gVXBkYXRlZCBjb250ZW50IEdlbmVyYXRlZCBieSBOb3RlYm9va0xNXShodHRwczovL25vdGVib29rbG0uZ29vZ2xlLmNvbS9ub3RlYm9vay83OWU3ZmUxNy0zYWI2LTQwNjgtODgyYi1hZjc2ZTU2OTJjODEvYXVkaW8pKQoKIyBTeXN0ZW1zIFNwYWNlCgoxLiBbKipUaGUgU2hpZnQgZnJvbSBNb2RlbHMgdG8gQ29tcG91bmQgQUkgU3lzdGVtcyoqXShodHRwczovL2JhaXIuYmVya2VsZXkuZWR1L2Jsb2cvMjAyNC8wMi8xOC9jb21wb3VuZC1haS1zeXN0ZW1zLykgLSBUaGlzIGFydGljbGUgZnJvbSBCZXJrZWxleSBBSSBSZXNlYXJjaCAoQkFJUikgaGlnaGxpZ2h0cyBhIGdyb3dpbmcgdHJlbmQgd2hlcmUgQUkgYWR2YW5jZW1lbnRzIGluY3JlYXNpbmdseSByZWx5IG9uICoqY29tcG91bmQgQUkgc3lzdGVtcyoq4oCUY29tYmluYXRpb25zIG9mIG11bHRpcGxlIG1vZGVscyBhbmQgY29tcG9uZW50c+KAlHJhdGhlciB0aGFuIHRyYWRpdGlvbmFsIG1vbm9saXRoaWMgbW9kZWxzLiBDb21wb3VuZCBzeXN0ZW1zIG9mZmVyIG1vcmUgZmxleGliaWxpdHkgYW5kIGFkYXB0YWJpbGl0eSwgYXMgZWFjaCBjb21wb25lbnQgY2FuIHNwZWNpYWxpemUgaW4gYSBkaWZmZXJlbnQgdGFzayBvciBwaGFzZSBvZiB0aGUgcGlwZWxpbmUuICAKCktleSBwb2ludHM6Ci0gKipEZXNpZ24sIG9wdGltaXphdGlvbiwgYW5kIG9wZXJhdGlvbjoqKiBBcHByb2FjaGVzIGFyZSBzdGlsbCBlbWVyZ2luZywgYnV0IGNvbXBvdW5kIEFJIHN5c3RlbXMgYXJlIHByb3ZpbmcgbW9yZSBlZmZpY2llbnQgZm9yIGNvbXBsZXggdGFza3MuCi0gKipNYXhpbWl6aW5nIHJlbGlhYmlsaXR5IGFuZCBxdWFsaXR5OioqIFRoZXNlIHN5c3RlbXMgcHJvbWlzZSBoaWdoZXIgcmVsaWFiaWxpdHksIHBhcnRpY3VsYXJseSBmb3IgbGFyZ2Utc2NhbGUgYXBwbGljYXRpb25zLCBieSBicmVha2luZyBkb3duIHRhc2tzIGludG8gc21hbGxlciwgbW9yZSBtYW5hZ2VhYmxlIHVuaXRzLiAKLSAqKlRyZW5kIGZvciAyMDI0OioqIEJBSVIgc2VlcyB0aGlzIGFzIG9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgdHJlbmRzLCB3aGVyZSBkZXZlbG9wZXJzIHdpbGwgZm9jdXMgb24gaG93IHRvIGFzc2VtYmxlIHRoZXNlIGNvbXBvbmVudHMgaW4gZWZmZWN0aXZlIHdheXMuCiAgIAohW2ltYWdlXShodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZDg3NGU4MmYtOWI4OS00ODdlLTg5NGMtMWVkM2IyNDcyOTRkKQo8cCBhbGlnbj0iY2VudGVyIj5JbmNyZWFzaW5nbHkgbWFueSBuZXcgQUkgcmVzdWx0cyBhcmUgZnJvbSBjb21wb3VuZCBzeXN0ZW1zLjwvcD4KCiJfRmlndXJpbmcgb3V0IHRoZSBiZXN0IHByYWN0aWNlcyBmb3IgZGV2ZWxvcGluZyBjb21wb3VuZCBBSSBzeXN0ZW1zIGlzIHN0aWxsIGFuIG9wZW4gcXVlc3Rpb24sIGJ1dCB0aGVyZSBhcmUgYWxyZWFkeSBleGNpdGluZyBhcHByb2FjaGVzIHRvIGFpZCB3aXRoIGRlc2lnbiwgZW5kLXRvLWVuZCBvcHRpbWl6YXRpb24sIGFuZCBvcGVyYXRpb24uIFdlIGJlbGlldmUgdGhhdCBjb21wb3VuZCBBSSBzeXN0ZW1zIHdpbGwgcmVtYWluIHRoZSBiZXN0IHdheSB0byBtYXhpbWl6ZSB0aGUgcXVhbGl0eSBhbmQgcmVsaWFiaWxpdHkgb2YgQUkgYXBwbGljYXRpb25zIGdvaW5nIGZvcndhcmQsIGFuZCBtYXkgYmUgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCB0cmVuZHMgaW4gQUkgaW4gMjAyNC5fIgoKMi4gWyoqQnVpbGRpbmcgQSBHZW5lcmF0aXZlIEFJIFBsYXRmb3JtKipdKGh0dHBzOi8vaHV5ZW5jaGlwLmNvbS8yMDI0LzA3LzI1L2dlbmFpLXBsYXRmb3JtLmh0bWwpIC0gVGhpcyBhcnRpY2xlIGV4cGxvcmVzIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGRldmVsb3BtZW50IG9mIGEgZ2VuZXJhdGl2ZSBBSSBwbGF0Zm9ybSwgZm9jdXNpbmcgb24gdGhlIGNoYWxsZW5nZXMgb2YgaW50ZWdyYXRpbmcgdmFyaW91cyBBSSBjb21wb25lbnRzLiBJdCBlbXBoYXNpemVzOgotICoqT3BlbiBTb3VyY2UgTExNIFRvb2xzOioqIFRoZSBhcnRpY2xlIHJlZmVyZW5jZXMgc2V2ZXJhbCB0b29scyBhbmQgdGVjaG5pcXVlcyBmb3IgYnVpbGRpbmcgZ2VuZXJhdGl2ZSBBSSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiBtb2RlbCBhbGlnbm1lbnQsIG9wdGltaXphdGlvbiwgYW5kIGFkYXB0YWJpbGl0eS4gVGhlIHJlZmVyZW5jZWQgW09wZW4gU291cmNlIExMTSBUb29sc10oaHR0cHM6Ly9odXllbmNoaXAuY29tL2xsYW1hLXBvbGljZSkgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGVjb3N5c3RlbSBzdXJyb3VuZGluZyBnZW5lcmF0aXZlIEFJIG1vZGVscyBsaWtlIE1ldGHigJlzIExMYU1BLgotICoqQ2hhbGxlbmdlcyBpbiBwbGF0Zm9ybSBidWlsZGluZzoqKiBGcm9tIG1vZGVsIGludGVncmF0aW9uIHRvIGVuc3VyaW5nIHRoZSBhbGlnbm1lbnQgb2YgZ2VuZXJhdGl2ZSBBSSBvdXRwdXQgd2l0aCBpbnRlbmRlZCB1c2UgY2FzZXMsIHRoZXJlIGFyZSBtYW55IGh1cmRsZXMgaW4gYWNoaWV2aW5nIGFuIG9wZXJhdGlvbmFsIHBsYXRmb3JtLgoKQm90aCBhcnRpY2xlcyBzdHJlc3MgdGhhdCB0aGUgZnV0dXJlIG9mIEFJIHdpbGwgaW52b2x2ZSAqKm1vcmUgc29waGlzdGljYXRlZCBzeXN0ZW1zKiosIHJlbHlpbmcgb24gdGhlIGNvb3BlcmF0aW9uIG9mIHZhcmlvdXMgc3BlY2lhbGl6ZWQgbW9kZWxzIChjb21wb3VuZCBBSSkgYW5kIHRoZSBpbnRlZ3JhdGlvbiBvZiBkaXZlcnNlIHRvb2xzIGZvciBnZW5lcmF0aXZlIEFJIHBsYXRmb3JtIGRldmVsb3BtZW50LiBUaGlzIGFsaWducyB3aXRoIG9uZ29pbmcgZXhwbG9yYXRpb24gb2YgKipjb21wb3VuZCBBSSBzeXN0ZW1zKiogYW5kICoqZ2VuZXJhdGl2ZSBBSSBwbGF0Zm9ybSBhcmNoaXRlY3R1cmUqKi4KICAgCiMjIEFQSXMKU3RhcnRlZCB3aXRoIHRoaXMgb25lIGVuZHBvaW50IENvbXBsZXRpb25zICoqL2NvbXBsZXRpb25zKiogd2l0aCBUZXh0IElucHV0L091dHB1dCAobm93IExlZ2FjeSkgIAogIApUaGVuIENoYXRHUFQsIENoYXQgY29tcGxldGlvbnMgKiovY2hhdC9jb21wbGV0aW9ucyoqICB3aXRoIE1lc3NhZ2VzIElucHV0L091dHB1dAogIAozLiBFbWJlZGRpbmdzCQkJKiovZW1iZWRkaW5ncyoqCjQuIEltYWdlIGdlbmVyYXRpb24JCSoqL2ltYWdlcy9nZW5lcmF0aW9ucyoqCjUuIFRleHQgdG8gc3BlZWNoCQkJKiovYXVkaW8vc3BlZWNoKioKNi4gU3BlZWNoIHRvIHRleHQJCQkqKi9hdWRpby90cmFuc2NyaXB0aW9ucyoqCjcuIE1vZGVyYXRpb24JCQkqKi9tb2RlcmF0aW9ucyoqCjguIEZpbmUtdHVuaW5nICAqKi9maW5lX3R1bmluZy9qb2JzKioKOS4gQmF0Y2gJCQkJKiovZmlsZXMgL2JhdGNoZXMqKgogIApSRVNUIEFQSXM6ICAKLSBGdWxsIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFtPcGVuQUkgQVBJXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL29wZW5haS1vcGVuYXBpL2Jsb2IvbWFzdGVyL29wZW5hcGkueWFtbCkgICAgCi0gUmVzcG9uc2UgRm9ybWF0cyAtIFtCdWlsZGluZyBBR0kgd2l0aCBPcGVuQUkncyBTdHJ1Y3R1cmVkIE91dHB1dHMgQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU5qT2ZIOUQ4YUpvKQotIEZ1bmN0aW9uIENhbGxpbmcgLSBRdWVyeSBEYXRhYmFzZSwgU2VuZCBBbGVydHMgZXRjLgogIC0gW0F6dXJlIE9wZW5BSSBBUEldKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9haS1zZXJ2aWNlcy9vcGVuYWkvcmVmZXJlbmNlI2FwaS1zcGVjcykKICAtIFtCZWRyb2NrIEFQSV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2svbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfcnVudGltZV9JbnZva2VNb2RlbC5odG1sKQogIC0gW0xsYW1hIFN0YWNrIEFQSV0oaHR0cHM6Ly9naXRodWIuY29tL21ldGEtbGxhbWEvbGxhbWEtc3RhY2svYmxvYi9tYWluL2RvY3MvcmVzb3VyY2VzL2xsYW1hLXN0YWNrLXNwZWMueWFtbCkKICAtIEdlbWluaSBBUEkgLSA/CgpQeXRob24gU0RLczogIAotIE9wZW5BSSBQeXRob24gW0FQSV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5haS9vcGVuYWktcHl0aG9uL2Jsb2IvbWFpbi9hcGkubWQpIGxpYnJhcnkgaW4gdGhlIFRoZSBvZmZpY2lhbCBQeXRob24gbGlicmFyeSBmb3IgdGhlIFtPcGVuQUkgQVBJXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL29wZW5haS1weXRob24pCgpgYGBweXRob24gIAppbXBvcnQgb3MKZnJvbSBvcGVuYWkgaW1wb3J0IE9wZW5BSQoKY2xpZW50ID0gT3BlbkFJKAogICAgIyBUaGlzIGlzIHRoZSBkZWZhdWx0IGFuZCBjYW4gYmUgb21pdHRlZAogICAgYXBpX2tleT1vcy5lbnZpcm9uLmdldCgiT1BFTkFJX0FQSV9LRVkiKSwKKQoKY2hhdF9jb21wbGV0aW9uID0gY2xpZW50LmNoYXQuY29tcGxldGlvbnMuY3JlYXRlKAogICAgbWVzc2FnZXM9WwogICAgICAgIHsKICAgICAgICAgICAgInJvbGUiOiAidXNlciIsCiAgICAgICAgICAgICJjb250ZW50IjogIlNheSB0aGlzIGlzIGEgdGVzdCIsCiAgICAgICAgfQogICAgXSwKICAgIG1vZGVsPSJncHQtMy41LXR1cmJvIiwKKQoKcHJpbnQoY2hhdF9jb21wbGV0aW9uLnRvX2pzb24oKSkKIyBwcmludChjaGF0X2NvbXBsZXRpb24uY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnQpCgpmcm9tIG9wZW5haSBpbXBvcnQgQXp1cmVPcGVuQUkKCiMgZ2V0cyB0aGUgQVBJIEtleSBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlIEFaVVJFX09QRU5BSV9BUElfS0VZCmNsaWVudCA9IEF6dXJlT3BlbkFJKAogICAgIyBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vYXp1cmUvYWktc2VydmljZXMvb3BlbmFpL3JlZmVyZW5jZSNyZXN0LWFwaS12ZXJzaW9uaW5nCiAgICBhcGlfdmVyc2lvbj0iMjAyMy0wNy0wMS1wcmV2aWV3IiwKICAgICMgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2F6dXJlL2NvZ25pdGl2ZS1zZXJ2aWNlcy9vcGVuYWkvaG93LXRvL2NyZWF0ZS1yZXNvdXJjZT9waXZvdHM9d2ViLXBvcnRhbCNjcmVhdGUtYS1yZXNvdXJjZQogICAgYXp1cmVfZW5kcG9pbnQ9Imh0dHBzOi8vZXhhbXBsZS1lbmRwb2ludC5vcGVuYWkuYXp1cmUuY29tIiwKICAgICMgYXp1cmVfZGVwbG95bWVudD0iZ3B0MzUiLAopCgpjaGF0X2NvbXBsZXRpb24gPSBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoCiAgICAjIG1vZGVsPSJkZXBsb3ltZW50LW5hbWUiLCAgIyBlLmcuIGdwdC0zNS1pbnN0YW50CiAgICBtb2RlbD0iZ3B0MzUiLCAgIyBncHQtMzUtdHVyYm8KICAgIG1lc3NhZ2VzPVsKICAgICAgICB7CiAgICAgICAgICAgICJyb2xlIjogInVzZXIiLAogICAgICAgICAgICAiY29udGVudCI6ICJIb3cgZG8gSSBvdXRwdXQgYWxsIGZpbGVzIGluIGEgZGlyZWN0b3J5IHVzaW5nIFB5dGhvbj8iLAogICAgICAgIH0sCiAgICBdLAopCnByaW50KGNoYXRfY29tcGxldGlvbi50b19qc29uKCkpCmBgYAogIAotIEFudGhyb3BpYyBQeXRob24gICAgCgpgYGBweXRob24KY2xpZW50ID0gQW50aHJvcGljKCkgIApjbGllbnQgPSBBbnRocm9waWNCZWRyb2NrKCkgIApjbGllbnQgPSBBbnRocm9waWNWZXJ0ZXgoKSAgCgptZXNzYWdlID0gY2xpZW50Lm1lc3NhZ2VzLmNyZWF0ZSgpICAKcHJpbnQobWVzc2FnZS5jb250ZW50KQpgYGAKCioqTW9yZSBBUElzOioqCiAgCi0gW0Ryb3AgaW4gcmVwbGFjZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhc3RheC9hc3RyYS1hc3Npc3RhbnRzLWFwaSkgZm9yIHRoZSBPcGVuQUkgQXNzaXN0YW50cyBBUEkKICAtIEZ1bGwgY292ZXJhZ2Ugb2YgT3BlbkFJIGVuZHBvaW50cyBpbiB0aGUgcmVwbyBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGFzdGF4L2FzdHJhLWFzc2lzdGFudHMtYXBpL2Jsb2IvbWFpbi9jb3ZlcmFnZS5tZCkKIAotIFtMbGFtYSBTdGFjayBSRkNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXRhLWxsYW1hL2xsYW1hLXN0YWNrL2Jsb2IvbWFpbi9yZmNzL1JGQy0wMDAxLWxsYW1hLXN0YWNrLm1kKQogIC0gaHR0cHM6Ly9naXRodWIuY29tL21ldGEtbGxhbWEvbGxhbWEtc3RhY2stYXBwcwogIC0gaHR0cHM6Ly9naXRodWIuY29tL21ldGEtbGxhbWEvbGxhbWEtc3RhY2sKIAotIFtXZWIgQVBJc10oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9kb2NzL2FpL2J1aWx0LWluKQogIC0gaHR0cHM6Ly94LmNvbS9hZGR5b3NtYW5pL3N0YXR1cy8xODQzMzI4NjUzMTU1MDYyMTA4ICAKCioqTW9yZSBMYW5ndWFnZXM6KioKLSBUaGUgb2ZmaWNpYWwgW0dvXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL29wZW5haS1nbykgbGlicmFyeSBmb3IgdGhlIE9wZW5BSSBBUEkKICAgIAojIyBTZWNyZXRzCgojIyMgMS4gQVBJIEtleXMKQW4gQVBJIGtleSBpcyBhIHNpbXBsZSBzdHJpbmcgKG9mdGVuIGFscGhhbnVtZXJpYykgdXNlZCB0byBhdXRoZW50aWNhdGUgcmVxdWVzdHMuIEl0IGNhbiBiZSBpbmNsdWRlZCBhczoKLSAqKlVSTCBQYXJhbWV0ZXIqKjogIAogIGBodHRwczovL2V4YW1wbGUuY29tL2FwaS9yZXNvdXJjZT9hcGlfa2V5PVlPVVJfQVBJX0tFWWAKLSAqKkhlYWRlcioqOiAgCiAgYEF1dGhvcml6YXRpb246IEFwaUtleSBZT1VSX0FQSV9LRVlgCgpBUEkga2V5cyBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIHNpbXBsZSBhdXRoZW50aWNhdGlvbiBhbmQgYXJlIHN1aXRlZCBmb3Igc2VydmVyLXRvLXNlcnZlciBjb21tdW5pY2F0aW9uIGJ1dCBhcmUgbGVzcyBzZWN1cmUgaWYgZXhwb3NlZCBpbiBVUkxzLgoKLS0tCgojIyMgMi4gQmVhcmVyIFRva2VuCkEgKipCZWFyZXIgVG9rZW4qKiBpcyBhIHNlY3VyaXR5IHRva2VuIHRoYXQgaXMgaXNzdWVkIGFzIHBhcnQgb2YgT0F1dGggMi4wLiBUaGlzIHRva2VuIGdyYW50cyB0aGUgYmVhcmVyIGFjY2VzcyB0byByZXNvdXJjZXMuIEl0J3MgdXN1YWxseSBwYXNzZWQgaW4gdGhlIHJlcXVlc3QgaGVhZGVyOgotICoqSGVhZGVyKio6ICAKICBgQXV0aG9yaXphdGlvbjogQmVhcmVyIFlPVVJfVE9LRU5gCgpCZWFyZXIgdG9rZW5zIG9mZmVyIG1vcmUgc2VjdXJpdHkgY29tcGFyZWQgdG8gQVBJIGtleXMsIGVzcGVjaWFsbHkgd2hlbiBjb21iaW5lZCB3aXRoIHRva2VuIGV4cGlyYXRpb24gYW5kIHJlZnJlc2ggbWVjaGFuaXNtcy4KCi0tLQoKIyMjIDMuIE1pY3Jvc29mdCBFbnRyYSBJRCAoZm9ybWVybHkgQXp1cmUgQUQpCkVudHJhIElEIHByb3ZpZGVzICoqT0F1dGggMi4wKiogb3IgKipPcGVuSUQgQ29ubmVjdCAoT0lEQykqKiBiYXNlZCBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiwgbW9zdGx5IHVzZWQgZm9yIHNlY3VyaW5nIGVudGVycHJpc2UgYXBwcy4gVGhlIGZsb3cgdHlwaWNhbGx5IGludm9sdmVzOgotICoqQWNjZXNzIFRva2VuKio6IE9idGFpbmVkIGFmdGVyIGEgdXNlciBvciBzZXJ2aWNlIGF1dGhlbnRpY2F0ZXMgd2l0aCBFbnRyYSBJRC4KLSAqKkhlYWRlcioqOiAgCiAgYEF1dGhvcml6YXRpb246IEJlYXJlciBZT1VSX0FDQ0VTU19UT0tFTmAKCkVudHJhIElEIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBNaWNyb3NvZnQgc2VydmljZXMgb3IgZW50ZXJwcmlzZSBlbnZpcm9ubWVudHMgZm9yIHVzZXItYmFzZWQgb3Igc2VydmljZS1iYXNlZCBhdXRoZW50aWNhdGlvbi4KCi0tLQoKIyMjIDQuIEFXUyBTaWduYXR1cmUKKipBV1MgU2lnbmF0dXJlIFZlcnNpb24gNCoqIGlzIHVzZWQgdG8gc2VjdXJlbHkgc2lnbiBBUEkgcmVxdWVzdHMgdG8gQVdTIHNlcnZpY2VzLiBUaGlzIG1ldGhvZCBjYWxjdWxhdGVzIGEgc2lnbmF0dXJlIGJhc2VkIG9uIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIGhlYWRlcnMsIGFuZCB0aGUgdXNlcidzIHNlY3JldCBhY2Nlc3Mga2V5LiBUaGUgc2lnbmF0dXJlIGlzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IGFzOgotICoqQXV0aG9yaXphdGlvbiBIZWFkZXIqKjogIAogIGBBdXRob3JpemF0aW9uOiBBV1M0LUhNQUMtU0hBMjU2IENyZWRlbnRpYWw9QUNDRVNTX0tFWS8uLi4sIFNpZ25lZEhlYWRlcnM9Li4uLCBTaWduYXR1cmU9U0lHTkFUVVJFYAoKSXQgaXMgdHlwaWNhbGx5IG1vcmUgc2VjdXJlIGJlY2F1c2UgdGhlIHNpZ25hdHVyZSBpcyBkZXJpdmVkIGR5bmFtaWNhbGx5IGFuZCBpcyB0aW1lLWxpbWl0ZWQuCgoKIyMgR3VhcmRyYWlscwotIFNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBmaWx0ZXJzIC0gUElJIHR5cGVzLCBSZWdleCBwYXR0ZXJucyBldGMuCi0gQ29udGVudCBmaWx0ZXJzIC0gQ29uZmlndXJlIGNvbnRlbnQgZmlsdGVycyB0byBkZXRlY3QgJiBibG9jayBoYXJtZnVsIHVzZXIgaW5wdXRzIGFuZCBtb2RlbCByZXNwb25zZXMKLSBEZW5pZWQgdG9waWNzCi0gV29yZCBmaWx0ZXJzCi0gQ29udGV4dHVhbCBncm91bmRpbmcgY2hlY2sKCiMjIEFzc2lzdGFudHMKLSBUdW5lIFBlcnNvbmFsaXR5ICYgQ2FwYWJpbGl0aWVzCi0gQ2FsbCBNb2RlbHMKLSBBY2Nlc3MgVG9vbHMgaW4gcGFyYWxsZWwKICAgIC0gQnVpbHQtaW4gY29kZV9pbnRlcnByZXRlciwgZmlsZV9zZWFyY2ggZXRjLgogICAgLSBGdW5jdGlvbiBDYWxsaW5nCi0gUGVyc2lzdGVudCBUaHJlYWRzCi0gRmlsZSBGb3JtYXRzCgojIyBBZ2VudHMKLSDigJxBZ2VudCBpcyBhIG1vcmUgb3ZlcmxvYWRlZCB0ZXJtIGF0IHRoaXMgcG9pbnQgdGhhbiBub2RlLCBzZXJ2aWNlLCBhbmQgaW5zdGFuY2Uu4oCdCiAgCi0+IGh0dHBzOi8veC5jb20vcmFreWxsL3N0YXR1cy8xODM3MTY0NzYxMzYyMTMzMDU3CgotIOKAnEknbSB3b25kZXJpbmcgd2hhdCB3b3VsZCBiZSB0aGUgYmFzZSByZXF1aXJlbWVudHMgb2YgInRydWUgYWdlbnQiIChpLmUuIG5vdCBqdXN0IG92ZXItaHlwZWQgbWFya2V0aW5nKS4gCkZvciBtZTogCkNhbiB1c2UgQVBJcyByZWxpYWJseS4gCkFQSXMgYnkgb3RoZXIgY29tcGFuaWVzLCBub3QganVzdCBvbmVzIHNwZWNpZmljYWxseSB3cml0dGVuIGZvciB0aGUgYWdlbnQuClRoZSBBUEkgdXNhZ2Ugc2hvdWxkIGNvdmVyIGEgbGFyZ2Ugc3Vic2V0IG9mIHRoZSBzZXJ2aWNlcyB0aGF0IHRoZSBhZ2VudCBpcyBhaW1pbmcgdG8gY292ZXIuIAoKSS5lLiBpZiB5b3VyIGFnZW50IGlzIHN1cHBvc2VkIHRvIG9yZGVyIGZvb2QsIGl0IHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgYW4gb3BlbiByZXN0YXVyYW50IHdpdGggdGFrZSBhd2F5LCBmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGUgZGVsaXZlcnkgYW5kIGF0IGxlYXN0IHN1cHBvcnQgdGhlIDMgbGFyZ2UgZGVsaXZlcnkgY29tcGFuaWVzLuKAnQoKLT4gaHR0cHM6Ly94LmNvbS9nd2Vuc2hhcC9zdGF0dXMvMTgzNzE2NzY1MzMzODY4MTgxOQoKIyMgVGVsZW1ldHJ5Ci0gW09wZW5UZWxlbWV0cnldKGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby8pCiAgLSBbU2VtYW50aWMgQ29udmVudGlvbnMgZm9yIEdlbmVyYXRpdmUgQUkgc3lzdGVtcyB8IE9wZW5UZWxlbWV0cnldKGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvZ2VuLWFpLykKICAgIC0gW0ludHJvZHVjZSBzZW1hbnRpYyBjb252ZW50aW9ucyBmb3IgbW9kZXJuIEFJIChMTE1zLCB2ZWN0b3IgZGF0YWJhc2VzLCBldGMuKV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zL2lzc3Vlcy8zMjcpCgojIE1vZGVsIFNwYWNlcy4uLgoKIVtpbWFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzY4MzBjMzA3LTYyYWQtNDI1NS1hYjNhLTVkNzAzNzE3NmUyYikKPHAgYWxpZ249ImNlbnRlciI+U291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vcmFzYnQvTExNcy1mcm9tLXNjcmF0Y2g8L3A+CgoKKipGb3VuZGF0aW9uIE1vZGVsczoqKiBFbXBoYXNpemUgdGhlIGNyZWF0aW9uIGFuZCBhcHBsaWNhdGlvbiBvZiBsYXJnZS1zY2FsZSBtb2RlbHMgdGhhdCBjYW4gYmUgYWRhcHRlZCB0byBhIHdpZGUgcmFuZ2Ugb2YgdGFza3Mgd2l0aCBtaW5pbWFsIHRhc2stc3BlY2lmaWMgdHVuaW5nLiAgCgoqKlByZWRpY3RpdmUgSHVtYW4gUHJlZmVyZW5jZSAoUEhQKToqKiBMZXZlcmFnaW5nIGh1bWFuIGZlZWRiYWNrIGluIHRoZSBsb29wIG9mIG1vZGVsIHRyYWluaW5nIHRvIHJlZmluZSBvdXRwdXRzIG9yIHByZWRpY3Rpb25zIGJhc2VkIG9uIHdoYXQgaXMgcHJlZmVycmVkIG9yIGRlc2lyZWQgYnkgaHVtYW5zLiAgIAoKLSBQcmVkaWN0aXZlIEh1bWFuIFByZWZlcmVuY2UgLSBbcGhwXShwaHApCgoqKkZpbmUgVHVuaW5nOioqIFRoZSBwcm9jZXNzIG9mIHRyYWluaW5nIGFuIGV4aXN0aW5nIHByZS10cmFpbmVkIG1vZGVsIG9uIGEgc3BlY2lmaWMgdGFzayBvciBkYXRhc2V0IHRvIGltcHJvdmUgaXRzIHBlcmZvcm1hbmNlIG9uIHRoYXQgdGFzay4gIAoKLSBodHRwczovL2xsYW1hLm1ldGEuY29tL2RvY3MvaG93LXRvLWd1aWRlcy9maW5lLXR1bmluZwotIGh0dHBzOi8vZ2l0aHViLmNvbS9oaXlvdWdhL0xMYU1BLUZhY3RvcnkKCioqQ3Jvc3MtY3V0dGluZyBUaGVtZXM6KioKCiJPdXIgcmVzdWx0cyBzaG93IGNvbmRpdGlvbmluZyBhd2F5IHJpc2sgb2YgYXR0YWNrIHJlbWFpbnMgYW4gdW5zb2x2ZWQgcHJvYmxlbTsgZm9yIGV4YW1wbGUsIGFsbCB0ZXN0ZWQgbW9kZWxzIHNob3dlZCBiZXR3ZWVuIDI1JSBhbmQgNTAlIHN1Y2Nlc3NmdWwgcHJvbXB0IGluamVjdGlvbiB0ZXN0cy4iCgpodHRwczovL2FpLm1ldGEuY29tL3Jlc2VhcmNoL3B1YmxpY2F0aW9ucy9jeWJlcnNlY2V2YWwtMi1hLXdpZGUtcmFuZ2luZy1jeWJlcnNlY3VyaXR5LWV2YWx1YXRpb24tc3VpdGUtZm9yLWxhcmdlLWxhbmd1YWdlLW1vZGVscy8KCioqUGVyc29uYWwgSWRlbnRpZmlhYmxlIEluZm9ybWF0aW9uIChQSUkpIGFuZCBTZWN1cml0eToqKiBUaGVzZSBjb25zaWRlcmF0aW9ucyBhcmUgY3J1Y2lhbCBmb3IgZW5zdXJpbmcgdGhhdCBNTCBtb2RlbHMgcmVzcGVjdCBwcml2YWN5IGFuZCBhcmUgc2VjdXJlIGFnYWluc3QgcG90ZW50aWFsIHRocmVhdHMuICAKCi0gUGVyc29uYWwgSWRlbnRpZmlhYmxlIEluZm9ybWF0aW9uIC0gW3BpaV0ocGlpKSAgCgoqKkNvZGUsIFNRTCwgR2Vub21pY3MsIGFuZCBNb3JlOioqIFRoZXNlIGFyZWFzIGhpZ2hsaWdodCB0aGUgaW50ZXJkaXNjaXBsaW5hcnkgbmF0dXJlIG9mIE1MLCB3aGVyZSBrbm93bGVkZ2UgaW4gcHJvZ3JhbW1pbmcsIGRhdGFiYXNlcywgYmlvbG9neSwgYW5kIG90aGVyIGZpZWxkcyBjb252ZXJnZSB0byBhZHZhbmNlIE1MIGFwcGxpY2F0aW9ucy4gIAoKKipOZXVyYWwgQXJjaGl0ZWN0dXJlIFNlYXJjaCAoTkFTKToqKiBIaWdobGlnaHRzIHRoZSBhdXRvbWF0aW9uIG9mIHRoZSBkZXNpZ24gb2YgbmV1cmFsIG5ldHdvcmsgYXJjaGl0ZWN0dXJlcyB0byBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBmb3Igc3BlY2lmaWMgdGFza3MuICAKCi0gQmlvbG9neSAoQ29sbGFiIHcvIFtBc2hpc2ggUGhhbF0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2FzaGlzaC1waGFsLTU0OGIzNzEyNS8pKSAtIFtnZW5vbWljc10oZG9jcy9nZW5vbWljcy5tZCkgIAoKKipGZXctU2hvdCBhbmQgWmVyby1TaG90IExlYXJuaW5nOioqIFBvaW50cyB0byBsZWFybmluZyBwYXJhZGlnbXMgdGhhdCBhaW0gdG8gcmVkdWNlIHRoZSBkZXBlbmRlbmN5IG9uIGxhcmdlIGxhYmVsZWQgZGF0YXNldHMgZm9yIHRyYWluaW5nIG1vZGVscy4gIAoKKipGZWRlcmF0ZWQgTGVhcm5pbmc6KiogRm9jdXNlcyBvbiBwcml2YWN5LXByZXNlcnZpbmcgdGVjaG5pcXVlcyB0aGF0IGVuYWJsZSBtb2RlbCB0cmFpbmluZyBhY3Jvc3MgbXVsdGlwbGUgZGVjZW50cmFsaXplZCBkZXZpY2VzIG9yIHNlcnZlcnMgaG9sZGluZyBsb2NhbCBkYXRhIHNhbXBsZXMuICAKIAoqKlRyYW5zZm9ybWVycyBpbiBWaXNpb24gYW5kIEJleW9uZDoqKiBEaXNjdXNzZXMgdGhlIGFwcGxpY2F0aW9uIG9mIHRyYW5zZm9ybWVyIG1vZGVscywgb3JpZ2luYWxseSBkZXNpZ25lZCBmb3IgTkxQIHRhc2tzLCBpbiBvdGhlciBkb21haW5zIGxpa2UgdmlzaW9uIGFuZCBhdWRpbyBwcm9jZXNzaW5nLiAgCgoqKlJlaW5mb3JjZW1lbnQgTGVhcm5pbmcgRW5oYW5jZW1lbnRzOioqIExvb2tzIGF0IGFkdmFuY2VtZW50cyBpbiBSTCB0ZWNobmlxdWVzIHRoYXQgaW1wcm92ZSBlZmZpY2llbmN5IGFuZCBhcHBsaWNhYmlsaXR5IGluIHZhcmlvdXMgZGVjaXNpb24tbWFraW5nIGNvbnRleHRzLiAgIAoKKipNTE9wcyBhbmQgQXV0b01MOioqIENvbmNlbnRyYXRlcyBvbiB0aGUgb3BlcmF0aW9uYWxpemF0aW9uIG9mIE1MIG1vZGVscyBhbmQgdGhlIGF1dG9tYXRpb24gb2YgdGhlIE1MIHBpcGVsaW5lIHRvIHN0cmVhbWxpbmUgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQgcHJvY2Vzc2VzLiAgCgoqKkh5YnJpZCBNb2RlbHM6KiogRXhwbG9yZXMgdGhlIGludGVncmF0aW9uIG9mIGRpZmZlcmVudCBtb2RlbCB0eXBlcyBvciBBSSBhcHByb2FjaGVzIHRvIGxldmVyYWdlIHRoZWlyIHJlc3BlY3RpdmUgc3RyZW5ndGhzIGluIHNvbHZpbmcgY29tcGxleCBwcm9ibGVtcy4gIAoKKipBSSBFdGhpY3MgYW5kIEJpYXMgTWl0aWdhdGlvbjoqKiBVbmRlcmxpbmVzIHRoZSBpbXBvcnRhbmNlIG9mIGRldmVsb3BpbmcgZmFpciBhbmQgZXRoaWNhbCBBSSBzeXN0ZW1zIGJ5IGFkZHJlc3NpbmcgYW5kIG1pdGlnYXRpbmcgYmlhc2VzIGluIE1MIG1vZGVscy4gIAoKKipFbmVyZ3ktRWZmaWNpZW50IE1MOioqIFJlZmxlY3RzIHRoZSBncm93aW5nIGNvbmNlcm4gYW5kIG5lZWQgZm9yIGVudmlyb25tZW50YWxseSBzdXN0YWluYWJsZSBBSSBieSBkZXZlbG9waW5nIG1vZGVscyB0aGF0IHJlcXVpcmUgbGVzcyBjb21wdXRhdGlvbmFsIHBvd2VyIGFuZCBlbmVyZ3kuIAoKKipIYXJkd2FyZToqKiBQb2ludHMgdG8gdGhlIGltcG9ydGFuY2Ugb2YgZGV2ZWxvcGluZyBhbmQgdXRpbGl6aW5nIGhhcmR3YXJlIG9wdGltaXplZCBmb3IgTUwgdGFza3MgdG8gaW1wcm92ZSBlZmZpY2llbmN5IGFuZCBwZXJmb3JtYW5jZS4gIAoKCgoKCgoKCgoK + readmeEtag: '"c9d71494c24eb20f99b36fb8fc4fc3c6317a9b3c"' + readmeLastModified: Mon, 07 Oct 2024 20:42:47 GMT repositoryId: 747875001 description: >- The landscape of machine learning (ML) is constantly evolving with new techniques, tools, and frameworks emerging at a rapid pace. created: '2024-01-24T20:13:28Z' - updated: '2024-10-06T22:04:14Z' + updated: '2024-10-07T20:42:50Z' language: Python archived: false stars: 2 @@ -23429,8 +23429,8 @@ forks: 0 owner: ankumar logo: https://avatars.githubusercontent.com/u/658791?v=4 - repoEtag: '"2b0f007eea0e60f79837f40d8e801dd845a4f1a60d60fc8212d83a052ad2ffd3"' - repoLastModified: Sun, 06 Oct 2024 22:04:14 GMT + repoEtag: '"4968a845c0cf4b1bee234affba041d3e78c77c15cf0b921130c040d0ace5d5e0"' + repoLastModified: Mon, 07 Oct 2024 20:42:50 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -24003,7 +24003,7 @@ owner: mneiferbag logo: https://avatars.githubusercontent.com/u/16717541?v=4 license: MIT - repoEtag: '"e68bcaedbdbd2c13cc1ab51c5e4e8eac49c9e35a8cefc2012150672b62a9ee6e"' + repoEtag: '"06ee2ebb9728fb88b0367fe430f2ab05869e4115c5a78509d878ca55a1399354"' repoLastModified: Fri, 27 Sep 2024 08:57:55 GMT category: - SDK @@ -24032,7 +24032,7 @@ owner: GameFabric logo: https://avatars.githubusercontent.com/u/179205010?v=4 license: MIT - repoEtag: '"e518e5c110d6786452e6df4bc03557b640a7f23f2f1feb218dc8afc7cbf1601d"' + repoEtag: '"8b1d06adf23e5ce472b02991a329347f8722453c9bcfcafc03455f327d0c3a45"' repoLastModified: Tue, 01 Oct 2024 08:59:12 GMT category: Parsers foundInMaster: true @@ -24194,7 +24194,7 @@ owner: tada5hi logo: https://avatars.githubusercontent.com/u/13162758?v=4 license: MIT - repoEtag: '"f01298e49b1532eb85b2f24456cb481245cba526941d7d1ee3adf0198cedebb4"' + repoEtag: '"a21fb0724c6b9595585391b5e63a63c7fc30d774e0499f9f35f9b9a1294cd752"' repoLastModified: Sun, 29 Sep 2024 09:26:36 GMT category: Parsers foundInMaster: true @@ -25822,7 +25822,7 @@ repositoryId: 853046067 description: Generate Java Records from OpenAPI Specifications created: '2024-09-05T22:21:02Z' - updated: '2024-09-30T17:00:55Z' + updated: '2024-10-07T17:56:37Z' language: Java archived: false stars: 1 @@ -25831,8 +25831,8 @@ owner: Chrimle logo: https://avatars.githubusercontent.com/u/28791817?v=4 license: MIT - repoEtag: '"fbf9889973a8d144855a7623f8a1c30a26637099e1c59f1a219cdc72edfa66a3"' - repoLastModified: Mon, 30 Sep 2024 17:00:55 GMT + repoEtag: '"6a02eb496e86932ed24478d1eee8206c5cffc3c7705ce4c77cdbdfd5cc8de6ba"' + repoLastModified: Mon, 07 Oct 2024 17:56:37 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -28489,7 +28489,7 @@ forks: 0 owner: TheAirBlow logo: https://avatars.githubusercontent.com/u/68467762?v=4 - repoEtag: '"7146d08d93c8c9678078fbe4102baef7749bc513164afbb8b993128d183a5114"' + repoEtag: '"7324da715f7bbe17f1827681c68fc31e719fb0586b25cc38ed168621cf8a3912"' repoLastModified: Tue, 03 Jan 2023 13:13:05 GMT foundInMaster: true category: @@ -28679,7 +28679,7 @@ owner: gcatanese logo: https://avatars.githubusercontent.com/u/1771700?v=4 license: Apache-2.0 - repoEtag: '"b323b5224e47fcde3279e522ea422fdcd586f79007505866074ee9c628956ec2"' + repoEtag: '"06a2c917c340829ad4dc33e20308daa2e320e381dfecdc5be2b6715e3fce66df"' repoLastModified: Sun, 06 Oct 2024 14:30:26 GMT category: Server Implementations foundInMaster: true @@ -29978,7 +29978,7 @@ repositoryId: 335312873 description: Traefik Hub Tutorials created: '2021-02-02T14:18:58Z' - updated: '2024-09-27T10:01:01Z' + updated: '2024-10-07T13:06:40Z' language: Go archived: false stars: 1 @@ -29987,8 +29987,8 @@ owner: traefik logo: https://avatars.githubusercontent.com/u/14280338?v=4 license: Apache-2.0 - repoEtag: '"be098a6c2ed68073bada6cb35232dbf6f1e736857e72724048dd4c03a00097cc"' - repoLastModified: Fri, 27 Sep 2024 10:01:01 GMT + repoEtag: '"85d3420d6f0a7db3c43b6ee785908c8bc5a837c5cd97a8f59849557c2cf5d069"' + repoLastModified: Mon, 07 Oct 2024 13:06:40 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -30014,7 +30014,7 @@ owner: membrane-php logo: https://avatars.githubusercontent.com/u/104306108?v=4 license: NOASSERTION - repoEtag: '"920b363eab4e4ab2ad9abe5c90a3db713c5306538b610648dc15445cba37583d"' + repoEtag: '"90ea1325410ab3f67627f79f81205ef125a9e6614ad9458454e208822902519e"' repoLastModified: Fri, 04 Oct 2024 10:02:22 GMT category: Server Implementations foundInMaster: true @@ -31481,7 +31481,7 @@ repositoryId: 446992249 description: OpenAPI 3 specification and C# SDK for the TextPay API created: '2022-01-11T21:52:37Z' - updated: '2022-01-21T13:17:48Z' + updated: '2024-10-07T13:46:33Z' language: null archived: false stars: 0 @@ -31489,8 +31489,8 @@ forks: 0 owner: CenterEdge logo: https://avatars.githubusercontent.com/u/7118733?v=4 - repoEtag: '"4a4603a27261a37c47602883fbd38062d2d814e6c161a4eaf5f81fb628244cc9"' - repoLastModified: Fri, 21 Jan 2022 13:17:48 GMT + repoEtag: '"b7c9b75c86c6ea0b8e45a4f3426ea830866d0d7b3a61be0bada9dcd55d347ecc"' + repoLastModified: Mon, 07 Oct 2024 13:46:33 GMT foundInMaster: true category: Server id: af095871df8bb9408585fb1b3445e4cb @@ -31949,17 +31949,17 @@ Simple, Fast, Code first and Compile time generated OpenAPI documentation for Rust created: '2021-09-30T22:00:31Z' - updated: '2024-10-06T22:40:42Z' + updated: '2024-10-07T20:49:04Z' language: Rust archived: false - stars: 2249 + stars: 2253 watchers: 9 forks: 175 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 - repoEtag: '"71ca7fe6231e0f45bebdb13ab15ba687b55a55fb148a2504fd3950f08f28cb42"' - repoLastModified: Sun, 06 Oct 2024 22:40:42 GMT + repoEtag: '"57e36f61833def230ef4131e38279e385b5488702789eac295f480ba0404cdf5"' + repoLastModified: Mon, 07 Oct 2024 20:49:04 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e @@ -32022,25 +32022,25 @@ id: 652ad18d642d9b05bb22ef2bacf1d425 repositoryMetadata: base64Readme: >- - IyBPQVMzCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KClshW2NyYXRlcy5pb10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvdi9vYXMzP2xhYmVsPWxhdGVzdCldKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9vYXMzKQpbIVtEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucnMvb2FzMy9iYWRnZS5zdmc/dmVyc2lvbj0wLjEwLjApXShodHRwczovL2RvY3MucnMvb2FzMy8wLjEwLjApClshW2RlcGVuZGVuY3kgc3RhdHVzXShodHRwczovL2RlcHMucnMvY3JhdGUvb2FzMy8wLjEwLjAvc3RhdHVzLnN2ZyldKGh0dHBzOi8vZGVwcy5ycy9jcmF0ZS9vYXMzLzAuMTAuMCkKIVtNSVQgb3IgQXBhY2hlIDIuMCBsaWNlbnNlZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvbC9vYXMzLnN2ZykKPGJyIC8+ClshW0NJXShodHRwczovL2dpdGh1Yi5jb20veDUyZGV2L29hczMvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS94NTJkZXYvb2FzMy9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC94NTJkZXYvb2FzMy9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gveDUyZGV2L29hczMpCiFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvbXNydi9vYXMzLnN2ZykKWyFbRG93bmxvYWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL2Qvb2FzMy5zdmcpXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvb2FzMykKCjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gY2FyZ28tcmRtZSBzdGFydCAtLT4KClN0cnVjdHVyZXMgYW5kIHRvb2xzIHRvIHBhcnNlLCBuYXZpZ2F0ZSBhbmQgdmFsaWRhdGUgW09wZW5BUEkgdjMuMV0gc3BlY2lmaWNhdGlvbnMuCgpOb3RlIHRoYXQgZHVlIHRvIHYzLjEgYmVpbmcgYSBicmVha2luZyBjaGFuZ2UgZnJvbSB2My4wLCB5b3UgbWF5IGhhdmUgdHJvdWJsZSBjb3JyZWN0bHkgcGFyc2luZwpzcGVjcyBpbiB0aGUgb2xkZXIgZm9ybWF0LgoKIyMgRXhhbXBsZQoKYGBgcnVzdAptYXRjaCBvYXMzOjpmcm9tX3BhdGgoInBhdGgvdG8vb3BlbmFwaS55bWwiKSB7CiAgT2soc3BlYykgPT4gcHJpbnRsbiEoInNwZWM6IHs6P30iLCBzcGVjKSwKICBFcnIoZXJyKSA9PiBwcmludGxuISgiZXJyb3I6IHt9IiwgZXJyKQp9CmBgYAoKW09wZW5BUEkgdjMuMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvSEVBRC92ZXJzaW9ucy8zLjEuMC5tZAoKPCEtLSBjYXJnby1yZG1lIGVuZCAtLT4K - readmeEtag: '"fcee9b78e7d3f7c7982eff0d376e69a9e84e270c"' - readmeLastModified: Fri, 30 Aug 2024 03:53:48 GMT + IyBPQVMzCgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KClshW2NyYXRlcy5pb10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvdi9vYXMzP2xhYmVsPWxhdGVzdCldKGh0dHBzOi8vY3JhdGVzLmlvL2NyYXRlcy9vYXMzKQpbIVtEb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucnMvb2FzMy9iYWRnZS5zdmc/dmVyc2lvbj0wLjExLjApXShodHRwczovL2RvY3MucnMvb2FzMy8wLjExLjApClshW2RlcGVuZGVuY3kgc3RhdHVzXShodHRwczovL2RlcHMucnMvY3JhdGUvb2FzMy8wLjExLjAvc3RhdHVzLnN2ZyldKGh0dHBzOi8vZGVwcy5ycy9jcmF0ZS9vYXMzLzAuMTEuMCkKIVtNSVQgb3IgQXBhY2hlIDIuMCBsaWNlbnNlZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvbC9vYXMzLnN2ZykKPGJyIC8+ClshW0NJXShodHRwczovL2dpdGh1Yi5jb20veDUyZGV2L29hczMvYWN0aW9ucy93b3JrZmxvd3MvY2kueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS94NTJkZXYvb2FzMy9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC94NTJkZXYvb2FzMy9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gveDUyZGV2L29hczMpCiFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9jcmF0ZXMvbXNydi9vYXMzLnN2ZykKWyFbRG93bmxvYWRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY3JhdGVzL2Qvb2FzMy5zdmcpXShodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvb2FzMykKCjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gY2FyZ28tcmRtZSBzdGFydCAtLT4KClN0cnVjdHVyZXMgYW5kIHRvb2xzIHRvIHBhcnNlLCBuYXZpZ2F0ZSBhbmQgdmFsaWRhdGUgW09wZW5BUEkgdjMuMV0gc3BlY2lmaWNhdGlvbnMuCgpOb3RlIHRoYXQgZHVlIHRvIHYzLjEgYmVpbmcgYSBicmVha2luZyBjaGFuZ2UgZnJvbSB2My4wLCB5b3UgbWF5IGhhdmUgdHJvdWJsZSBjb3JyZWN0bHkgcGFyc2luZwpzcGVjcyBpbiB0aGUgb2xkZXIgZm9ybWF0LgoKIyMgRXhhbXBsZQoKYGBgcnVzdAptYXRjaCBvYXMzOjpmcm9tX3BhdGgoInBhdGgvdG8vb3BlbmFwaS55bWwiKSB7CiAgT2soc3BlYykgPT4gcHJpbnRsbiEoInNwZWM6IHs6P30iLCBzcGVjKSwKICBFcnIoZXJyKSA9PiBwcmludGxuISgiZXJyb3I6IHt9IiwgZXJyKQp9CmBgYAoKW09wZW5BUEkgdjMuMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvSEVBRC92ZXJzaW9ucy8zLjEuMC5tZAoKPCEtLSBjYXJnby1yZG1lIGVuZCAtLT4K + readmeEtag: '"49c2f0f2ca6f7bb4669c4f2baa335aefd349d39c"' + readmeLastModified: Mon, 07 Oct 2024 09:35:36 GMT repositoryId: 303455500 description: >- Structures and tools to parse, navigate and validate OpenAPI v3.1 specifications. created: '2020-10-12T16:49:47Z' - updated: '2024-10-07T03:00:50Z' + updated: '2024-10-07T09:37:31Z' language: Rust archived: false stars: 33 - watchers: 4 + watchers: 3 forks: 13 owner: x52dev logo: https://avatars.githubusercontent.com/u/140988044?v=4 license: MIT - repoEtag: '"d0a3b0d965b4a752c4250517ac867e6f5a7eb646144b9cb4cbcb4ac46f08ec3f"' - repoLastModified: Mon, 07 Oct 2024 03:00:50 GMT + repoEtag: '"4f99d491283806e6ef9cf6d38a7b629440d0bd51641e50856eccabd597d79cc9"' + repoLastModified: Mon, 07 Oct 2024 09:37:31 GMT category: Parsers foundInMaster: true - source: openapi31 tags @@ -32662,17 +32662,17 @@ (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺 created: '2020-02-05T08:31:50Z' - updated: '2024-10-07T03:04:31Z' + updated: '2024-10-08T00:02:03Z' language: TypeScript archived: false - stars: 2907 + stars: 2912 watchers: 12 forks: 326 owner: orval-labs logo: https://avatars.githubusercontent.com/u/176128704?v=4 license: MIT - repoEtag: '"fa86e4db31dd364ae9230e13a20fa8d63f8402a2870b150a64c4fe453176be65"' - repoLastModified: Mon, 07 Oct 2024 03:04:31 GMT + repoEtag: '"b876e7b0ed01ed2826cbe7d8bdea23dac848d48ad75817055982dae8b24c6871"' + repoLastModified: Tue, 08 Oct 2024 00:02:03 GMT foundInMaster: true oldLocations: - https://github.com/anymaniax/orval @@ -32791,7 +32791,7 @@ owner: Sudokuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 - repoEtag: '"e8e9df2dbe27f67af921d52f75f5695d3130148f1970fcfcd7af3891c21c28e1"' + repoEtag: '"f793186d5793e9d17cf1853e7c5e98e073015d77c68bd4de57e238b8f11c10da"' repoLastModified: Sat, 28 Sep 2024 21:30:33 GMT category: Server Implementations foundInMaster: true @@ -33412,7 +33412,7 @@ owner: WebFuzzing logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 - repoEtag: '"43ab3735ac622ae60765ef27d352a7098aa28de6b65ae5a7435fdf0e8abe16e5"' + repoEtag: '"22fe77122cd052e1cde2ae964b178f3cbd80201018a10baf84af33343870f2ad"' repoLastModified: Sun, 06 Oct 2024 20:34:56 GMT foundInMaster: true id: d1d3d85149c4a9437dbdbf157cf3d7c7 @@ -34731,17 +34731,17 @@ repositoryId: 586543156 description: The ultimate toolkit for working with APIs. created: '2023-01-08T14:15:23Z' - updated: '2024-10-06T19:07:09Z' + updated: '2024-10-07T18:29:38Z' language: TypeScript archived: false - stars: 670 + stars: 671 watchers: 5 - forks: 54 + forks: 55 owner: kubb-labs logo: https://avatars.githubusercontent.com/u/122118236?v=4 license: MIT - repoEtag: '"6c8e691d51a61f3c37946b85ebc59a612db4a544f1c99e2951db7588e23d8941"' - repoLastModified: Sun, 06 Oct 2024 19:07:09 GMT + repoEtag: '"97be01ac86c40db0c8779b8ed14b31ca8823f730c49e5bee8ffdabfe2e7bae65"' + repoLastModified: Mon, 07 Oct 2024 18:29:38 GMT foundInMaster: true oldLocations: - https://github.com/kubb-project/kubb @@ -34814,16 +34814,16 @@ can automate the generation of API documentation, data models, and test cases, greatly enhancing development efficiency and documentation quality. created: '2022-05-05T06:44:36Z' - updated: '2024-10-05T22:53:02Z' + updated: '2024-10-07T13:47:56Z' language: Go archived: false - stars: 270 + stars: 271 watchers: 7 forks: 31 owner: apicat logo: https://avatars.githubusercontent.com/u/64158984?v=4 - repoEtag: '"c6ee737911f544041f1ee1c77870cb0058f17426649b9811062f0a8ef08a4012"' - repoLastModified: Sat, 05 Oct 2024 22:53:02 GMT + repoEtag: '"218d90f212f0c735c5ef84be901664a7439772965b6d42518eb19c98f260374b"' + repoLastModified: Mon, 07 Oct 2024 13:47:56 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -34839,17 +34839,17 @@ Full stack, modern web application template. Using FastAPI, React, SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more. created: '2019-02-23T15:08:34Z' - updated: '2024-10-07T03:11:49Z' + updated: '2024-10-08T00:40:00Z' language: TypeScript archived: false - stars: 26657 + stars: 26676 watchers: 262 - forks: 4694 + forks: 4702 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT - repoEtag: '"1d6765df602f39fbbe9cfc2cc525c5ddc95bf673507fb14fff18fc1e178b3acb"' - repoLastModified: Mon, 07 Oct 2024 03:11:49 GMT + repoEtag: '"27fef1ce97e2d736ea44155febe1ad973686fbffae2dbc71af359af0702679a4"' + repoLastModified: Tue, 08 Oct 2024 00:40:00 GMT foundInMaster: true category: Server Implementations id: 0354007b562b4efc3f08ce3da7f03afb @@ -35456,7 +35456,7 @@ A spring boot starter template that includes a docker image, generate helm chart using jkube, and GitHub action CI created: '2023-10-22T19:25:57Z' - updated: '2024-10-04T15:39:19Z' + updated: '2024-10-07T15:21:37Z' language: Java archived: false stars: 0 @@ -35464,8 +35464,8 @@ forks: 0 owner: bryopsida logo: https://avatars.githubusercontent.com/u/8363252?v=4 - repoEtag: '"6290b162ab3258e66167598fae8af56dbc7c7d3514ea32f97957f4923d592e86"' - repoLastModified: Fri, 04 Oct 2024 15:39:19 GMT + repoEtag: '"c32a0478877d6f90d0a00b7cada6cf3436ccabed2e2a7a300aad1feda13482ff"' + repoLastModified: Mon, 07 Oct 2024 15:21:37 GMT category: Server Implementations foundInMaster: true - name: Ballerina OpenAPI tool @@ -35519,11 +35519,11 @@ language: Shell archived: false stars: 145 - watchers: 5 + watchers: 7 forks: 12 owner: uibakery logo: https://avatars.githubusercontent.com/u/92528127?v=4 - repoEtag: '"87e68f3a41cbd8fa589f7e1afdf29dd67281a14636c9b57203f2a7870af2c027"' + repoEtag: '"ea0a10b1281a57185d97132d07c1bb44c9b6dce8bb0dc4e25411adfabfa95a9f"' repoLastModified: Sat, 05 Oct 2024 00:26:58 GMT category: Server Implementations - source: openapi3 tags @@ -39738,7 +39738,7 @@ Examples and server integrations for generating the Swagger API Specification, which enables easy access to your REST API created: '2011-07-05T23:44:11Z' - updated: '2024-10-06T16:45:42Z' + updated: '2024-10-07T12:26:55Z' language: Java archived: false stars: 7375 @@ -39747,8 +39747,8 @@ owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"7f0573778954ddecb1e3c31dfd8a0724b4e9cdf2c24ef804d8ab84b37d4967b3"' - repoLastModified: Sun, 06 Oct 2024 16:45:42 GMT + repoEtag: '"47e2f9e57421c0d7e4a715089642377c4dac81efadfa206e2a79f0df5cf09360"' + repoLastModified: Mon, 07 Oct 2024 12:26:55 GMT id: 266d60df2d48ad8a47539de3c1071f3a - source: IMPLEMENTATIONS.md name: Microsoft.OpenApi.net @@ -39780,7 +39780,7 @@ owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"c3d35c414b786b1f26b1383ba0d03f8318b86abef22de7c8fc0c8048b5a931ae"' + repoEtag: '"93efb5e4f27da62aaa183e19c61822bce3104c4f7d474a267137a6a6134eb2f1"' repoLastModified: Fri, 04 Oct 2024 07:44:13 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md @@ -40024,17 +40024,17 @@ repositoryId: 121304397 description: An OpenAPI-first web server for Ruby/Rack. created: '2018-02-12T21:30:10Z' - updated: '2021-03-19T23:47:47Z' + updated: '2024-10-07T05:14:37Z' language: Ruby archived: false - stars: 15 + stars: 14 watchers: 4 forks: 1 owner: modern-project logo: https://avatars.githubusercontent.com/u/36420497?v=4 license: MIT - repoEtag: '"8b278cd19e430cb0905a0bc8d79b9e1036a74e91ec952cc74e2319d20dac0d75"' - repoLastModified: Fri, 19 Mar 2021 23:47:47 GMT + repoEtag: '"ba7ef97bb65a48a712ca5adc3be9227bbbdd37dc661b0ef83062819f0c44cf66"' + repoLastModified: Mon, 07 Oct 2024 05:14:37 GMT id: 8bc7fa880ea28bdf448ee5dfd659e352 - source: IMPLEMENTATIONS.md name: Exegesis @@ -40085,11 +40085,11 @@ archived: false stars: 3590 watchers: 171 - forks: 1009 + forks: 1010 owner: mevdschee logo: https://avatars.githubusercontent.com/u/1288217?v=4 license: MIT - repoEtag: '"776aec449404f5969c00e04002226c8f53e6c3b979239e39637df880bca47787"' + repoEtag: '"da9b939b2158e57a39cbbe6a603c47c43f9ddfd963c36936bd9be1f743195cb9"' repoLastModified: Tue, 01 Oct 2024 22:06:34 GMT id: 84a7be428932f7789a8ad1a220b22216 - source: IMPLEMENTATIONS.md @@ -40222,17 +40222,17 @@ Concise DSL for generating OpenAPI Specification 3 (OAS3) JSON documentation for Ruby application. created: '2017-09-11T14:09:24Z' - updated: '2024-09-21T18:41:39Z' + updated: '2024-10-07T15:58:30Z' language: Ruby archived: false - stars: 167 + stars: 168 watchers: 4 forks: 20 owner: zhandao logo: https://avatars.githubusercontent.com/u/24402029?v=4 license: MIT - repoEtag: '"321a1d0e0b1ea970796d0cff632ac3c94e5a09cff325e0c54f39f98937b189b5"' - repoLastModified: Sat, 21 Sep 2024 18:41:39 GMT + repoEtag: '"73933e2a3089c2cd642665719200a5e366e768f2a85c53ec8175e090432d259d"' + repoLastModified: Mon, 07 Oct 2024 15:58:30 GMT id: b6b6454891a26e88286d7f79814c63b0 - source: IMPLEMENTATIONS.md name: slush-vertx @@ -40956,7 +40956,7 @@ LoopBack makes it easy to build modern API applications that require complex integrations. created: '2017-01-09T17:27:14Z' - updated: '2024-10-07T00:55:49Z' + updated: '2024-10-08T00:12:49Z' language: TypeScript archived: false stars: 4944 @@ -40965,8 +40965,8 @@ owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION - repoEtag: '"136659dcd0ea42160339feec98ece7aa501cd7b6c60bc4bcc5b336c1270bf3e0"' - repoLastModified: Mon, 07 Oct 2024 00:55:49 GMT + repoEtag: '"5368351f3d62e7b52af51bf166e08a05d8c1588c7aad38ded8d480bc6e02afb0"' + repoLastModified: Tue, 08 Oct 2024 00:12:49 GMT foundInMaster: true id: 9132c25ad468bed25b9dbbe3a352abc2 v3: true @@ -41038,17 +41038,17 @@ testing cloud services through their REST APIs and finding security and reliability bugs in these services. created: '2020-07-24T21:40:11Z' - updated: '2024-10-04T00:10:08Z' + updated: '2024-10-07T08:50:57Z' language: Python archived: false - stars: 2587 + stars: 2588 watchers: 35 forks: 296 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"8fb139bf6beeddfe8ccb8033b46e0cb0cd499cd809bf78ed2e2da750f85d2f61"' - repoLastModified: Fri, 04 Oct 2024 00:10:08 GMT + repoEtag: '"d0168a6c8c380f52c3a43a617449a45b655f802bbd06092343e773b0940cd309"' + repoLastModified: Mon, 07 Oct 2024 08:50:57 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler @@ -41203,7 +41203,7 @@ owner: weikangchia logo: https://avatars.githubusercontent.com/u/2174882?v=4 license: MIT - repoEtag: '"d2afc480e5ca3ae5c5e3712110e06b632d8b423c0c6ba1c422580d81ecba3140"' + repoEtag: '"dc25df4c291ee39e91a4908fbd68c0ecd535ca136501c399ef389e06b240a288"' repoLastModified: Sat, 20 Nov 2021 15:06:15 GMT foundInMaster: true category: @@ -41720,7 +41720,7 @@ repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' - updated: '2024-10-06T04:26:21Z' + updated: '2024-10-07T21:44:05Z' language: Java archived: false stars: 1108 @@ -41729,8 +41729,8 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"e7048822bcaabff0001441c6a6e04f57e720df85e023f419af9ed0d4ba398728"' - repoLastModified: Sun, 06 Oct 2024 04:26:21 GMT + repoEtag: '"e3850559c1efc853e03feeaca5b8d750b97fe82cc919b3eab5bf1af772ef91a4"' + repoLastModified: Mon, 07 Oct 2024 21:44:05 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 id: 649e1f8cd9ccaccf681527e6984f2785 @@ -41761,7 +41761,7 @@ Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well. created: '2021-02-24T07:21:40Z' - updated: '2024-10-05T13:22:06Z' + updated: '2024-10-08T01:18:18Z' language: Go archived: false stars: 1430 @@ -41770,8 +41770,8 @@ owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT - repoEtag: '"d3a5b07674f1904043e8ae7bba51d3e679eb72e964e2b0c7d166635398681bd3"' - repoLastModified: Sat, 05 Oct 2024 13:22:06 GMT + repoEtag: '"c46762070666eef730306bfe7ffd68c6f2db72a4345f97accc44400dda236153"' + repoLastModified: Tue, 08 Oct 2024 01:18:18 GMT foundInMaster: true category: SDK id: aab01f8bda6c542fdacf9ee8dfa7d20d