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

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

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

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

Yes Yes Yes - 23397 + 23408 @@ -552,7 +552,7 @@

No Yes No - 704 + 707 @@ -887,7 +887,7 @@

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

No Yes Yes - 2876 + 2879 @@ -1091,7 +1091,7 @@

Yes Yes Yes - 8896 + 8899 @@ -1410,7 +1410,7 @@

Yes Yes Yes - 4261 + 4264 @@ -1433,7 +1433,7 @@

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

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

Yes Yes Yes - 1110 + 1122 @@ -1610,7 +1610,7 @@

No Yes No - 1108 + 1109 @@ -1702,7 +1702,7 @@

No Yes Yes - 8556 + 8557 @@ -1748,7 +1748,7 @@

No Yes No - 1853 + 1855 @@ -1880,7 +1880,7 @@

No Yes Yes - 4188 + 4189 @@ -2033,7 +2033,7 @@

Yes Yes Yes - 2481 + 2484 @@ -2098,7 +2098,7 @@

Yes Yes Yes - 914 + 916 @@ -2209,7 +2209,7 @@

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

No Yes Yes - 1097 + 1098 @@ -2490,7 +2490,7 @@

No Yes Yes - 1393 + 1394 @@ -2756,7 +2756,7 @@

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

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

No Yes No - 533 + 534 @@ -3279,7 +3279,7 @@

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

No Yes No - 488 + 491 @@ -3325,7 +3325,7 @@

No Yes No - 150 + 151 @@ -3348,7 +3348,7 @@

No Yes No - 83 + 84 @@ -3438,7 +3438,7 @@

No Yes No - 4360 + 4367 @@ -3526,7 +3526,7 @@

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

No Yes Yes - 12581 + 12585 @@ -3878,7 +3878,7 @@

No Yes No - 28232 + 28241 @@ -4030,7 +4030,7 @@

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

Yes Yes Yes - 1742 + 1744 @@ -4145,7 +4145,7 @@

Yes Yes No - 1123 + 1125 @@ -4436,7 +4436,7 @@

Yes Yes Yes - 454 + 455 @@ -4685,7 +4685,7 @@

Yes Yes Yes - 56 + 57 @@ -4874,7 +4874,7 @@

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

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

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

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

No Yes No - 825 + 835 @@ -5282,7 +5282,7 @@

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

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

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

Yes Yes No - 23397 + 23408 @@ -5372,7 +5372,7 @@

No Yes No - 7375 + 7376 @@ -5393,7 +5393,7 @@

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

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

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

No Yes No - 4095 + 4096 @@ -5481,7 +5481,7 @@

No Yes No - 3851 + 3850 @@ -5588,7 +5588,7 @@

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

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

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

No Yes No - 1337 + 1341 @@ -5823,7 +5823,7 @@

No Yes No - 813 + 817 @@ -6035,7 +6035,7 @@

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

No Yes No - 499 + 500 @@ -6077,7 +6077,7 @@

No Yes No - 497 + 498 @@ -6203,7 +6203,7 @@

No Yes No - 420 + 421 @@ -6308,7 +6308,7 @@

No Yes No - 375 + 376 @@ -6604,7 +6604,7 @@

No Yes No - 271 + 272 @@ -6986,7 +6986,7 @@

No Yes No - 199 + 200 @@ -7112,7 +7112,7 @@

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

No Yes No - 185 + 187 @@ -7450,7 +7450,7 @@

No Yes No - 130 + 131 @@ -7786,7 +7786,7 @@

No Yes No - 105 + 106 @@ -8311,7 +8311,7 @@

No Yes No - 62 + 63 @@ -10505,7 +10505,7 @@

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

No Yes No - 5 + 4 @@ -18346,7 +18346,7 @@

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

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

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

Yes Yes Yes - 671 + 672 @@ -27107,7 +27107,7 @@

No Yes No - 26676 + 26697 @@ -31165,7 +31165,7 @@

No No No - 7375 + 7376 @@ -31188,7 +31188,7 @@

No No No - 1393 + 1394 @@ -32132,7 +32132,7 @@

No Yes Yes - 523 + 524 @@ -32155,7 +32155,7 @@

No Yes No - 4944 + 4945 @@ -32199,7 +32199,7 @@

No Yes Yes - 2588 + 2590 @@ -32749,7 +32749,7 @@

No Yes No - 1108 + 1109 @@ -33628,7 +33628,7 @@

Scalar (link)

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

Scalar (link)

Last Updated - 2024-10-08T02:46:47Z + 2024-10-09T03:07:32Z Archived @@ -33679,7 +33679,7 @@

Scramble (link)

Stars - 1184 + 1187 Watchers @@ -33687,7 +33687,7 @@

Scramble (link)

Forks - 112 + 113 Created @@ -33695,7 +33695,7 @@

Scramble (link)

Last Updated - 2024-10-07T13:29:20Z + 2024-10-08T19:29:46Z Archived @@ -33730,7 +33730,7 @@

Scribe (link)

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

Scribe (link)

Last Updated - 2024-10-07T05:37:08Z + 2024-10-08T12:36:39Z Archived @@ -33883,7 +33883,7 @@

ReDoc (link)

Stars - 23397 + 23408 Watchers @@ -33891,7 +33891,7 @@

ReDoc (link)

Forks - 2292 + 2293 Created @@ -33899,7 +33899,7 @@

ReDoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived @@ -34087,7 +34087,7 @@

oasdiff (link)

Stars - 704 + 707 Watchers @@ -34103,7 +34103,7 @@

oasdiff (link)

Last Updated - 2024-10-07T08:42:14Z + 2024-10-08T13:10:34Z Archived @@ -34613,7 +34613,7 @@

RapiPdf (link)

Last Updated - 2024-09-19T11:12:54Z + 2024-10-08T16:16:42Z Archived @@ -34852,7 +34852,7 @@

OpenAPI Generator (link)

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

OpenAPI Generator (link)

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

OpenAPI Generator (link)

Last Updated - 2024-10-08T03:22:05Z + 2024-10-09T03:15:30Z Archived @@ -34954,7 +34954,7 @@

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

Last Updated - 2024-10-07T22:44:15Z + 2024-10-09T01:42:22Z Archived @@ -35021,7 +35021,7 @@

FabriKt (link)

Last Updated - 2024-10-07T13:31:38Z + 2024-10-08T19:49:43Z Archived @@ -35311,7 +35311,7 @@

Swagger Editor (link)

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

Swagger Editor (link)

Last Updated - 2024-10-07T15:59:07Z + 2024-10-09T03:05:23Z Archived @@ -36076,7 +36076,7 @@

Prism (link)

Stars - 4261 + 4264 Watchers @@ -36092,7 +36092,7 @@

Prism (link)

Last Updated - 2024-10-06T02:37:48Z + 2024-10-09T02:40:10Z Archived @@ -36127,7 +36127,7 @@

Microcks (link)

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

Microcks (link)

Last Updated - 2024-10-07T19:34:03Z + 2024-10-08T06:15:38Z Archived @@ -36433,7 +36433,7 @@

tsoa (link)

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

tsoa (link)

Last Updated - 2024-10-08T01:22:31Z + 2024-10-08T20:40:21Z Archived @@ -36484,7 +36484,7 @@

@hey-api/openapi-ts (link)

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

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T22:15:49Z + 2024-10-09T03:32:45Z Archived @@ -36535,7 +36535,7 @@

Vert.x Web Api Contract (link)

Stars - 1108 + 1109 Watchers @@ -36551,7 +36551,7 @@

Vert.x Web Api Contract (link)

Last Updated - 2024-10-07T21:44:05Z + 2024-10-08T19:42:50Z Archived @@ -36739,7 +36739,7 @@

API Platform (link)

Stars - 8556 + 8557 Watchers @@ -36755,7 +36755,7 @@

API Platform (link)

Last Updated - 2024-10-07T15:42:36Z + 2024-10-08T04:45:09Z Archived @@ -36841,7 +36841,7 @@

Fusio (link)

Stars - 1853 + 1855 Watchers @@ -36849,7 +36849,7 @@

Fusio (link)

Forks - 221 + 222 Created @@ -36857,7 +36857,7 @@

Fusio (link)

Last Updated - 2024-10-02T04:47:23Z + 2024-10-08T20:05:15Z Archived @@ -37053,7 +37053,7 @@

@nestjs/swagger (link)

Forks - 469 + 470 Created @@ -37061,7 +37061,7 @@

@nestjs/swagger (link)

Last Updated - 2024-10-07T22:07:56Z + 2024-10-08T22:51:04Z Archived @@ -37147,7 +37147,7 @@

Dredd (link)

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

Dredd (link)

Last Updated - 2024-10-07T08:16:50Z + 2024-10-08T09:16:24Z Archived @@ -37504,7 +37504,7 @@

Spectral (link)

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

Spectral (link)

Last Updated - 2024-10-07T23:20:37Z + 2024-10-09T00:16:06Z Archived @@ -37563,7 +37563,7 @@

OpenAPI Style Validator (link)

Forks - 40 + 43 Created @@ -37657,7 +37657,7 @@

Redocly CLI (link)

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

Redocly CLI (link)

Last Updated - 2024-10-07T11:21:39Z + 2024-10-08T12:42:27Z Archived @@ -37912,7 +37912,7 @@

swagger-parser (link)

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

swagger-parser (link)

Last Updated - 2024-10-07T05:55:41Z + 2024-10-09T03:03:43Z Archived @@ -37963,7 +37963,7 @@

APIDevTools/swagger-parser (link)

Stars - 1097 + 1098 Watchers @@ -37979,7 +37979,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-10-07T18:11:29Z + 2024-10-09T03:19:03Z Archived @@ -38234,7 +38234,7 @@

kin-openapi (link)

Last Updated - 2024-10-07T06:55:17Z + 2024-10-08T08:58:54Z Archived @@ -38575,7 +38575,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1393 + 1394 Watchers @@ -38591,7 +38591,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2024-10-04T07:44:13Z + 2024-10-08T22:21:08Z Archived @@ -39093,7 +39093,7 @@

NSwag (link)

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

Swagger-Codegen (link)

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

Swagger-Codegen (link)

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

Swagger-Codegen (link)

Last Updated - 2024-10-07T23:21:58Z + 2024-10-08T07:44:25Z Archived @@ -39238,7 +39238,7 @@

Azure AutoRest (link)

Stars - 4604 + 4603 Watchers @@ -39254,7 +39254,7 @@

Azure AutoRest (link)

Last Updated - 2024-10-07T06:35:23Z + 2024-10-09T02:19:04Z Archived @@ -39952,7 +39952,7 @@

openapi-fuzzer (link)

Stars - 533 + 534 Watchers @@ -39960,7 +39960,7 @@

openapi-fuzzer (link)

Forks - 22 + 23 Created @@ -39968,7 +39968,7 @@

openapi-fuzzer (link)

Last Updated - 2024-09-27T09:58:32Z + 2024-10-08T08:43:03Z Archived @@ -40011,7 +40011,7 @@

cats (link)

Forks - 74 + 73 Created @@ -40019,7 +40019,7 @@

cats (link)

Last Updated - 2024-10-07T19:33:11Z + 2024-10-08T20:16:01Z Archived @@ -40411,7 +40411,7 @@

mitmproxy2swagger (link)

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

mitmproxy2swagger (link)

Last Updated - 2024-10-08T02:05:58Z + 2024-10-08T17:35:14Z Archived @@ -40462,7 +40462,7 @@

OpenApiSpecGeneratorPlugin (link)

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

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T21:08:40Z + 2024-10-08T20:25:13Z Archived @@ -40513,7 +40513,7 @@

har2openapi (link)

Stars - 150 + 151 Watchers @@ -40529,7 +40529,7 @@

har2openapi (link)

Last Updated - 2024-09-26T22:14:38Z + 2024-10-08T15:27:12Z Archived @@ -40564,7 +40564,7 @@

har-to-openapi (link)

Stars - 83 + 84 Watchers @@ -40580,7 +40580,7 @@

har-to-openapi (link)

Last Updated - 2024-10-03T23:33:09Z + 2024-10-08T15:27:46Z Archived @@ -40768,7 +40768,7 @@

TypeSpec (link)

Stars - 4360 + 4367 Watchers @@ -40776,7 +40776,7 @@

TypeSpec (link)

Forks - 203 + 204 Created @@ -40784,7 +40784,7 @@

TypeSpec (link)

Last Updated - 2024-10-08T03:16:12Z + 2024-10-09T02:54:49Z Archived @@ -40972,7 +40972,7 @@

openapi-to-postman (link)

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

openapi-to-postman (link)

Last Updated - 2024-10-07T15:49:03Z + 2024-10-08T06:34:09Z Archived @@ -41227,7 +41227,7 @@

OWASP ZAP (link)

Stars - 12581 + 12585 Watchers @@ -41243,7 +41243,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-07T19:00:47Z + 2024-10-08T22:20:28Z Archived @@ -41788,7 +41788,7 @@

Django REST Framework (link)

Stars - 28232 + 28241 Watchers @@ -41796,7 +41796,7 @@

Django REST Framework (link)

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

Django REST Framework (link)

Last Updated - 2024-10-07T20:08:01Z + 2024-10-09T03:26:28Z Archived @@ -42145,7 +42145,7 @@

openapi-python-client (link)

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

openapi-python-client (link)

Last Updated - 2024-10-07T23:55:25Z + 2024-10-08T16:40:12Z Archived @@ -42196,7 +42196,7 @@

Elements (link)

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

Elements (link)

Last Updated - 2024-10-07T14:30:18Z + 2024-10-09T03:28:02Z Archived @@ -42255,7 +42255,7 @@

Whook (link)

Forks - 7 + 6 Created @@ -42400,7 +42400,7 @@

Cherrybomb (link)

Stars - 1123 + 1125 Watchers @@ -42408,7 +42408,7 @@

Cherrybomb (link)

Forks - 78 + 80 Created @@ -42416,7 +42416,7 @@

Cherrybomb (link)

Last Updated - 2024-10-06T10:31:08Z + 2024-10-09T00:00:38Z Archived @@ -43063,7 +43063,7 @@

libopenapi (link)

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

libopenapi (link)

Last Updated - 2024-10-08T02:08:31Z + 2024-10-08T03:46:21Z Archived @@ -43538,7 +43538,7 @@

Specmatic (link)

Last Updated - 2024-10-07T07:43:09Z + 2024-10-08T20:28:53Z Archived @@ -43624,7 +43624,7 @@

Fitting (link)

Stars - 56 + 57 Watchers @@ -43640,7 +43640,7 @@

Fitting (link)

Last Updated - 2024-10-02T23:37:55Z + 2024-10-08T21:03:14Z Archived @@ -44083,7 +44083,7 @@

rswag (link)

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

rswag (link)

Last Updated - 2024-10-07T23:32:46Z + 2024-10-08T05:50:46Z Archived @@ -44134,7 +44134,7 @@

🌿 Fern (link)

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

🌿 Fern (link)

Last Updated - 2024-10-07T23:52:22Z + 2024-10-09T00:58:13Z Archived @@ -44287,7 +44287,7 @@

Swift OpenAPI Generator (link)

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

Swift OpenAPI Generator (link)

Last Updated - 2024-10-07T22:58:19Z + 2024-10-08T13:18:08Z Archived @@ -44440,7 +44440,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2024-10-08T00:19:20Z + 2024-10-08T18:58:56Z Archived @@ -44644,7 +44644,7 @@

Fuego (link)

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

Fuego (link)

Last Updated - 2024-10-07T17:50:31Z + 2024-10-09T02:47:27Z Archived @@ -44711,7 +44711,7 @@

Huma (link)

Last Updated - 2024-10-08T00:58:26Z + 2024-10-09T00:04:28Z Archived @@ -45001,7 +45001,7 @@

Zudoku (link)

Stars - 66 + 68 Watchers @@ -45017,7 +45017,7 @@

Zudoku (link)

Last Updated - 2024-10-07T18:01:20Z + 2024-10-08T16:09:01Z Archived @@ -45052,7 +45052,7 @@

FastAPI (link)

Stars - 76322 + 76364 Watchers @@ -45060,7 +45060,7 @@

FastAPI (link)

Forks - 6437 + 6440 Created @@ -45068,7 +45068,7 @@

FastAPI (link)

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

swagger-ui (link)

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

swagger-ui (link)

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

swagger-ui (link)

Last Updated - 2024-10-08T00:54:07Z + 2024-10-09T02:38:41Z Archived @@ -45154,7 +45154,7 @@

Redoc (link)

Stars - 23397 + 23408 Watchers @@ -45162,7 +45162,7 @@

Redoc (link)

Forks - 2292 + 2293 Created @@ -45170,7 +45170,7 @@

Redoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived @@ -45205,7 +45205,7 @@

swagger-core (link)

Stars - 7375 + 7376 Watchers @@ -45213,7 +45213,7 @@

swagger-core (link)

Forks - 2176 + 2177 Created @@ -45221,7 +45221,7 @@

swagger-core (link)

Last Updated - 2024-10-07T12:26:55Z + 2024-10-08T12:43:19Z Archived @@ -45256,7 +45256,7 @@

mockoon (link)

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

mockoon (link)

Last Updated - 2024-10-07T22:48:23Z + 2024-10-09T01:50:54Z Archived @@ -45307,7 +45307,7 @@

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

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

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-10-08T02:48:21Z + 2024-10-09T01:36:37Z Archived @@ -45358,7 +45358,7 @@

OpenAPI TypeScript (link)

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

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T22:51:52Z + 2024-10-09T01:18:15Z Archived @@ -45409,7 +45409,7 @@

knife4j (link)

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

knife4j (link)

Last Updated - 2024-10-07T13:01:14Z + 2024-10-08T22:13:17Z Archived @@ -45460,7 +45460,7 @@

openapi-directory (link)

Stars - 3851 + 3850 Watchers @@ -45476,7 +45476,7 @@

openapi-directory (link)

Last Updated - 2024-10-07T02:37:36Z + 2024-10-09T03:09:21Z Archived @@ -45527,7 +45527,7 @@

springdoc-openapi (link)

Last Updated - 2024-10-06T20:24:20Z + 2024-10-08T19:43:26Z Archived @@ -45629,7 +45629,7 @@

swagger-js (link)

Last Updated - 2024-10-07T23:23:51Z + 2024-10-08T10:18:04Z Archived @@ -45680,7 +45680,7 @@

drf-spectacular (link)

Last Updated - 2024-10-07T16:24:53Z + 2024-10-09T02:04:28Z Archived @@ -45715,7 +45715,7 @@

msgspec (link)

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

msgspec (link)

Last Updated - 2024-10-07T09:58:52Z + 2024-10-08T14:53:47Z Archived @@ -45782,7 +45782,7 @@

Schemathesis (link)

Last Updated - 2024-10-06T07:02:06Z + 2024-10-08T18:32:46Z Archived @@ -45817,7 +45817,7 @@

gnostic (link)

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

gnostic (link)

Last Updated - 2024-10-08T03:24:46Z + 2024-10-08T13:18:33Z Archived @@ -45868,11 +45868,11 @@

rapidoc (link)

Stars - 1658 + 1659 Watchers - 12 + 13 Forks @@ -45884,7 +45884,7 @@

rapidoc (link)

Last Updated - 2024-10-07T23:08:54Z + 2024-10-08T12:16:16Z Archived @@ -45935,7 +45935,7 @@

openapi-generator-cli (link)

Last Updated - 2024-10-05T14:49:45Z + 2024-10-08T03:50:20Z Archived @@ -46021,11 +46021,11 @@

ogen (link)

Stars - 1337 + 1341 Watchers - 16 + 15 Forks @@ -46037,7 +46037,7 @@

ogen (link)

Last Updated - 2024-10-07T20:11:50Z + 2024-10-08T16:39:39Z Archived @@ -46088,7 +46088,7 @@

apispec (link)

Last Updated - 2024-10-07T12:28:15Z + 2024-10-08T10:00:15Z Archived @@ -46190,7 +46190,7 @@

zod-to-openapi (link)

Last Updated - 2024-10-07T09:55:00Z + 2024-10-08T16:18:42Z Archived @@ -46276,7 +46276,7 @@

openapi-diff (link)

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

openapi-diff (link)

Last Updated - 2024-10-08T01:06:53Z + 2024-10-08T22:46:09Z Archived @@ -46488,7 +46488,7 @@

openapi.tools (link)

Forks - 320 + 322 Created @@ -46786,7 +46786,7 @@

stackql (link)

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

stackql (link)

Last Updated - 2024-10-07T12:57:33Z + 2024-10-08T03:58:08Z Archived @@ -46837,7 +46837,7 @@

docusaurus-openapi (link)

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

docusaurus-openapi (link)

Last Updated - 2024-10-07T23:20:36Z + 2024-10-08T18:35:44Z Archived @@ -46888,7 +46888,7 @@

openapi-codegen (link)

Stars - 497 + 498 Watchers @@ -46904,7 +46904,7 @@

openapi-codegen (link)

Last Updated - 2024-10-04T10:21:06Z + 2024-10-08T07:30:53Z Archived @@ -47194,7 +47194,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2024-10-08T00:19:20Z + 2024-10-08T18:58:56Z Archived @@ -47449,7 +47449,7 @@

fastapi-clean-example (link)

Stars - 375 + 376 Watchers @@ -47465,7 +47465,7 @@

fastapi-clean-example (link)

Last Updated - 2024-10-04T14:53:45Z + 2024-10-08T13:22:47Z Archived @@ -47924,7 +47924,7 @@

modelina (link)

Last Updated - 2024-10-07T00:29:25Z + 2024-10-08T23:16:39Z Archived @@ -48163,7 +48163,7 @@

zod-openapi (link)

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

zod-openapi (link)

Last Updated - 2024-10-08T02:11:31Z + 2024-10-08T23:30:42Z Archived @@ -48681,7 +48681,7 @@

class-validator-jsonschema (link)

Forks - 36 + 35 Created @@ -48944,7 +48944,7 @@

fastify-openapi-glue (link)

Last Updated - 2024-10-02T10:29:38Z + 2024-10-08T18:14:00Z Archived @@ -49081,7 +49081,7 @@

typescript-backend-toolkit (link)

Stars - 199 + 200 Watchers @@ -49097,7 +49097,7 @@

typescript-backend-toolkit (link)

Last Updated - 2024-10-07T08:26:56Z + 2024-10-08T12:51:09Z Archived @@ -49242,7 +49242,7 @@

paypal-rest-api-specifications (link) Forks - 131 + 132 Created @@ -49352,7 +49352,7 @@

refitter (link)

Last Updated - 2024-10-07T12:27:22Z + 2024-10-08T19:39:21Z Archived @@ -49387,7 +49387,7 @@

flask-openapi3 (link)

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

flask-openapi3 (link)

Last Updated - 2024-10-06T21:44:52Z + 2024-10-08T06:43:02Z Archived @@ -49438,7 +49438,7 @@

speakeasy (link)

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

speakeasy (link)

Last Updated - 2024-10-07T23:27:50Z + 2024-10-08T23:53:46Z Archived @@ -49658,7 +49658,7 @@

apiclientcodegen (link)

Last Updated - 2024-10-07T12:09:42Z + 2024-10-08T20:30:11Z Archived @@ -50015,7 +50015,7 @@

deeptest (link)

Last Updated - 2024-10-08T02:35:11Z + 2024-10-08T07:42:12Z Archived @@ -50203,7 +50203,7 @@

apistos (link)

Stars - 130 + 131 Watchers @@ -50219,7 +50219,7 @@

apistos (link)

Last Updated - 2024-10-02T11:16:33Z + 2024-10-08T08:33:24Z Archived @@ -50270,7 +50270,7 @@

light-rest-4j (link)

Last Updated - 2024-09-24T16:57:06Z + 2024-10-09T01:33:02Z Archived @@ -50576,7 +50576,7 @@

learn.openapis.org (link)

Last Updated - 2024-10-07T20:58:53Z + 2024-10-08T11:10:53Z Archived @@ -51019,7 +51019,7 @@

go-swagger3 (link)

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

go-swagger3 (link)

Last Updated - 2024-10-08T00:38:32Z + 2024-10-08T23:59:19Z Archived @@ -51137,7 +51137,7 @@

tools.openapis.org (link)

Last Updated - 2024-10-07T03:37:14Z + 2024-10-08T03:34:28Z Archived @@ -52294,7 +52294,7 @@

openapi3-parser (link)

Stars - 62 + 63 Watchers @@ -52310,7 +52310,7 @@

openapi3-parser (link)

Last Updated - 2024-09-26T01:52:40Z + 2024-10-08T16:35:49Z Archived @@ -52667,7 +52667,7 @@

sideko (link)

Last Updated - 2024-10-01T21:09:34Z + 2024-10-08T21:58:07Z Archived @@ -53432,7 +53432,7 @@

sample-quarkus-applications (link)

Last Updated - 2024-10-06T15:24:32Z + 2024-10-08T04:11:16Z Archived @@ -53534,7 +53534,7 @@

swagger-editor-validate (link)

Last Updated - 2024-10-07T04:46:12Z + 2024-10-08T04:58:38Z Archived @@ -54503,7 +54503,7 @@

museum-openapi-example (link)

Last Updated - 2024-09-18T07:32:14Z + 2024-10-08T13:03:31Z Archived @@ -54801,7 +54801,7 @@

openapi-examples (link)

Forks - 3 + 4 Created @@ -55115,7 +55115,7 @@

data-fair (link)

Last Updated - 2024-10-03T15:06:18Z + 2024-10-08T14:24:58Z Archived @@ -55217,7 +55217,7 @@

vitepress-openapi (link)

Last Updated - 2024-10-08T02:19:40Z + 2024-10-08T22:48:59Z Archived @@ -55676,7 +55676,7 @@

hei-admin-api (link)

Last Updated - 2024-10-07T13:16:40Z + 2024-10-08T12:23:57Z Archived @@ -55931,7 +55931,7 @@

sbt-openapi-generator (link)

Last Updated - 2024-09-08T08:21:41Z + 2024-10-08T03:39:03Z Archived @@ -56339,7 +56339,7 @@

fastify-openapi3 (link)

Last Updated - 2024-10-07T20:55:26Z + 2024-10-08T18:34:50Z Archived @@ -56543,7 +56543,7 @@

shipengine-openapi (link)

Last Updated - 2024-10-03T21:37:09Z + 2024-10-08T15:21:08Z Archived @@ -57104,7 +57104,7 @@

sbt-openapi-schema (link)

Last Updated - 2024-10-07T22:54:21Z + 2024-10-08T06:29:22Z Archived @@ -57598,7 +57598,7 @@

aspnetcore.scalar (link)

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

aspnetcore.scalar (link)

Last Updated - 2024-09-24T19:03:39Z + 2024-10-08T07:48:02Z Archived @@ -57767,7 +57767,7 @@

mockoon.com (link)

Last Updated - 2024-10-03T18:12:36Z + 2024-10-08T06:00:34Z Archived @@ -59399,7 +59399,7 @@

aiopenapi3 (link)

Last Updated - 2024-10-04T06:57:35Z + 2024-10-08T12:24:26Z Archived @@ -60317,7 +60317,7 @@

yapily-openapi (link)

Last Updated - 2024-09-30T16:13:44Z + 2024-10-08T11:33:10Z Archived @@ -60470,7 +60470,7 @@

fastify-flux (link)

Last Updated - 2024-10-05T01:15:22Z + 2024-10-09T03:04:31Z Archived @@ -63734,7 +63734,7 @@

sandbox (link)

Last Updated - 2024-10-07T16:04:02Z + 2024-10-08T15:38:10Z Archived @@ -66080,7 +66080,7 @@

bulma (link)

Last Updated - 2024-08-06T15:30:15Z + 2024-10-08T12:59:00Z Archived @@ -67237,7 +67237,7 @@

spring-boot-freemarker-java-mail-api (l Stars - 5 + 4 Watchers @@ -67253,7 +67253,7 @@

spring-boot-freemarker-java-mail-api (l Last Updated - 2023-10-25T11:34:47Z + 2024-10-08T18:15:11Z Archived @@ -70364,7 +70364,7 @@

public-api-docs (link)

Last Updated - 2024-08-30T21:10:21Z + 2024-10-08T22:22:16Z Archived @@ -70670,7 +70670,7 @@

pulumi-provider-template (link)

Last Updated - 2024-10-07T00:37:25Z + 2024-10-08T22:29:03Z Archived @@ -74036,7 +74036,7 @@

python-openapi-generator-rust (link) Last Updated - 2024-09-23T17:16:41Z + 2024-10-08T19:20:43Z Archived @@ -76621,7 +76621,7 @@

openapi (link)

Stars - 2 + 3 Watchers @@ -76629,7 +76629,7 @@

openapi (link)

Forks - 0 + 1 Created @@ -76637,7 +76637,7 @@

openapi (link)

Last Updated - 2024-10-01T08:59:12Z + 2024-10-08T08:28:41Z Archived @@ -79179,7 +79179,7 @@

oap_spring_boot3_code_generation (link) Forks - 1 + 2 Created @@ -79391,7 +79391,7 @@

goapi (link)

Last Updated - 2024-09-29T02:01:56Z + 2024-10-08T08:37:34Z Archived @@ -80717,7 +80717,7 @@

crimsonsky (link)

Last Updated - 2024-09-29T20:27:42Z + 2024-10-08T13:06:00Z Archived @@ -83259,7 +83259,7 @@

traefik-hub-gitops (link)

Forks - 9 + 10 Created @@ -87857,7 +87857,7 @@

api-flows-studio (link)

Last Updated - 2024-10-06T16:45:05Z + 2024-10-08T18:27:45Z Archived @@ -92176,7 +92176,7 @@

utoipa (link)

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

utoipa (link)

Last Updated - 2024-10-07T20:49:04Z + 2024-10-08T23:07:14Z Archived @@ -93553,7 +93553,7 @@

orval (link)

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

orval (link)

Last Updated - 2024-10-08T00:02:03Z + 2024-10-09T00:30:38Z Archived @@ -95048,7 +95048,7 @@

EvoMaster (link)

Last Updated - 2024-10-06T20:34:56Z + 2024-10-08T07:28:51Z Archived @@ -97684,7 +97684,7 @@

kubb (link)

Stars - 671 + 672 Watchers @@ -97700,7 +97700,7 @@

kubb (link)

Last Updated - 2024-10-07T18:29:38Z + 2024-10-08T08:29:28Z Archived @@ -97888,15 +97888,15 @@

full-stack-fastapi-template (link)

Stars - 26676 + 26697 Watchers - 262 + 261 Forks - 4702 + 4708 Created @@ -97904,7 +97904,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-10-08T00:40:00Z + 2024-10-09T03:15:09Z Archived @@ -107782,7 +107782,7 @@

swagger-models (link)

Stars - 7375 + 7376 Watchers @@ -107790,7 +107790,7 @@

swagger-models (link)

Forks - 2176 + 2177 Created @@ -107798,7 +107798,7 @@

swagger-models (link)

Last Updated - 2024-10-07T12:26:55Z + 2024-10-08T12:43:19Z Archived @@ -107833,7 +107833,7 @@

Microsoft.OpenApi.net (link)

Stars - 1393 + 1394 Watchers @@ -107849,7 +107849,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-10-04T07:44:13Z + 2024-10-08T22:21:08Z Archived @@ -110077,7 +110077,7 @@

guardrail (link)

Stars - 523 + 524 Watchers @@ -110093,7 +110093,7 @@

guardrail (link)

Last Updated - 2024-09-22T10:04:07Z + 2024-10-08T21:16:51Z Archived @@ -110128,7 +110128,7 @@

LoopBack 4 (link)

Stars - 4944 + 4945 Watchers @@ -110136,7 +110136,7 @@

LoopBack 4 (link)

Forks - 1063 + 1064 Created @@ -110144,7 +110144,7 @@

LoopBack 4 (link)

Last Updated - 2024-10-08T00:12:49Z + 2024-10-08T15:25:43Z Archived @@ -110230,7 +110230,7 @@

RESTler (link)

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

RESTler (link)

Last Updated - 2024-10-07T08:50:57Z + 2024-10-08T17:14:53Z Archived @@ -111556,7 +111556,7 @@

Vert.x Web API Service (link)

Stars - 1108 + 1109 Watchers @@ -111572,7 +111572,7 @@

Vert.x Web API Service (link)

Last Updated - 2024-10-07T21:44:05Z + 2024-10-08T19:42:50Z Archived @@ -111674,7 +111674,7 @@

go-doudou (link)

Last Updated - 2024-10-08T01:18:18Z + 2024-10-08T10:34:56Z Archived diff --git a/docs/categories/auto-generators.html b/docs/categories/auto-generators.html index c61da147..bc60d9d5 100644 --- a/docs/categories/auto-generators.html +++ b/docs/categories/auto-generators.html @@ -91,7 +91,7 @@

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

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

No Yes No - 488 + 491 @@ -160,7 +160,7 @@

No Yes No - 150 + 151 @@ -183,7 +183,7 @@

No Yes No - 83 + 84 @@ -273,7 +273,7 @@

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

No Yes No - 825 + 835 @@ -373,7 +373,7 @@

Scramble (link)

Stars - 1184 + 1187 Watchers @@ -381,7 +381,7 @@

Scramble (link)

Forks - 112 + 113 Created @@ -389,7 +389,7 @@

Scramble (link)

Last Updated - 2024-10-07T13:29:20Z + 2024-10-08T19:29:46Z Archived @@ -424,7 +424,7 @@

mitmproxy2swagger (link)

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

mitmproxy2swagger (link)

Last Updated - 2024-10-08T02:05:58Z + 2024-10-08T17:35:14Z Archived @@ -475,7 +475,7 @@

OpenApiSpecGeneratorPlugin (link)

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

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T21:08:40Z + 2024-10-08T20:25:13Z Archived @@ -526,7 +526,7 @@

har2openapi (link)

Stars - 150 + 151 Watchers @@ -542,7 +542,7 @@

har2openapi (link)

Last Updated - 2024-09-26T22:14:38Z + 2024-10-08T15:27:12Z Archived @@ -577,7 +577,7 @@

har-to-openapi (link)

Stars - 83 + 84 Watchers @@ -593,7 +593,7 @@

har-to-openapi (link)

Last Updated - 2024-10-03T23:33:09Z + 2024-10-08T15:27:46Z Archived @@ -781,7 +781,7 @@

TypeSpec (link)

Stars - 4360 + 4367 Watchers @@ -789,7 +789,7 @@

TypeSpec (link)

Forks - 203 + 204 Created @@ -797,7 +797,7 @@

TypeSpec (link)

Last Updated - 2024-10-08T03:16:12Z + 2024-10-09T02:54:49Z Archived @@ -832,7 +832,7 @@

Fuego (link)

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

Fuego (link)

Last Updated - 2024-10-07T17:50:31Z + 2024-10-09T02:47:27Z Archived @@ -899,7 +899,7 @@

Huma (link)

Last Updated - 2024-10-08T00:58:26Z + 2024-10-09T00:04:28Z Archived diff --git a/docs/categories/client-implementations.html b/docs/categories/client-implementations.html index 12a30b8a..f275034d 100644 --- a/docs/categories/client-implementations.html +++ b/docs/categories/client-implementations.html @@ -207,7 +207,7 @@

aiopenapi3 (link)

Last Updated - 2024-10-04T06:57:35Z + 2024-10-08T12:24:26Z Archived diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html index 1e4be282..17348a33 100644 --- a/docs/categories/code-generators.html +++ b/docs/categories/code-generators.html @@ -114,7 +114,7 @@

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

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

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

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

Yes Yes No - 26422 + 26430 @@ -407,7 +407,7 @@

No Yes No - 7375 + 7376 @@ -430,7 +430,7 @@

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

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

Yes Yes Yes - 671 + 672 @@ -1868,7 +1868,7 @@

No No No - 7375 + 7376 @@ -2168,7 +2168,7 @@

OpenAPI Generator (link)

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

OpenAPI Generator (link)

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

OpenAPI Generator (link)

Last Updated - 2024-10-08T03:22:05Z + 2024-10-09T03:15:30Z Archived @@ -2270,7 +2270,7 @@

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

Last Updated - 2024-10-07T22:44:15Z + 2024-10-09T01:42:22Z Archived @@ -2337,7 +2337,7 @@

FabriKt (link)

Last Updated - 2024-10-07T13:31:38Z + 2024-10-08T19:49:43Z Archived @@ -2474,7 +2474,7 @@

Swagger-Codegen (link)

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

Swagger-Codegen (link)

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

Swagger-Codegen (link)

Last Updated - 2024-10-07T23:21:58Z + 2024-10-08T07:44:25Z Archived @@ -2678,7 +2678,7 @@

🌿 Fern (link)

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

🌿 Fern (link)

Last Updated - 2024-10-07T23:52:22Z + 2024-10-09T00:58:13Z Archived @@ -2780,7 +2780,7 @@

swagger-ui (link)

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

swagger-ui (link)

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

swagger-ui (link)

Last Updated - 2024-10-08T00:54:07Z + 2024-10-09T02:38:41Z Archived @@ -2831,7 +2831,7 @@

swagger-core (link)

Stars - 7375 + 7376 Watchers @@ -2839,7 +2839,7 @@

swagger-core (link)

Forks - 2176 + 2177 Created @@ -2847,7 +2847,7 @@

swagger-core (link)

Last Updated - 2024-10-07T12:26:55Z + 2024-10-08T12:43:19Z Archived @@ -2882,7 +2882,7 @@

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

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

OpenAPI Server Code Generator (oapi-cod Last Updated - 2024-10-08T02:48:21Z + 2024-10-09T01:36:37Z Archived @@ -2949,7 +2949,7 @@

swagger-js (link)

Last Updated - 2024-10-07T23:23:51Z + 2024-10-08T10:18:04Z Archived @@ -3000,7 +3000,7 @@

openapi-generator-cli (link)

Last Updated - 2024-10-05T14:49:45Z + 2024-10-08T03:50:20Z Archived @@ -3196,7 +3196,7 @@

paypal-rest-api-specifications (link) Forks - 131 + 132 Created @@ -3561,7 +3561,7 @@

hei-admin-api (link)

Last Updated - 2024-10-07T13:16:40Z + 2024-10-08T12:23:57Z Archived @@ -5177,7 +5177,7 @@

orval (link)

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

orval (link)

Last Updated - 2024-10-08T00:02:03Z + 2024-10-09T00:30:38Z Archived @@ -5687,7 +5687,7 @@

kubb (link)

Stars - 671 + 672 Watchers @@ -5703,7 +5703,7 @@

kubb (link)

Last Updated - 2024-10-07T18:29:38Z + 2024-10-08T08:29:28Z Archived @@ -6350,7 +6350,7 @@

swagger-models (link)

Stars - 7375 + 7376 Watchers @@ -6358,7 +6358,7 @@

swagger-models (link)

Forks - 2176 + 2177 Created @@ -6366,7 +6366,7 @@

swagger-models (link)

Last Updated - 2024-10-07T12:26:55Z + 2024-10-08T12:43:19Z Archived diff --git a/docs/categories/converters.html b/docs/categories/converters.html index 73de880d..03aa9580 100644 --- a/docs/categories/converters.html +++ b/docs/categories/converters.html @@ -221,7 +221,7 @@

Yes Yes Yes - 1110 + 1122 @@ -447,7 +447,7 @@

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

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

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

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

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

@hey-api/openapi-ts (link)

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

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T22:15:49Z + 2024-10-09T03:32:45Z Archived @@ -1980,7 +1980,7 @@

openapi-to-postman (link)

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

openapi-to-postman (link)

Last Updated - 2024-10-07T15:49:03Z + 2024-10-08T06:34:09Z Archived @@ -2082,7 +2082,7 @@

openapi-python-client (link)

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

openapi-python-client (link)

Last Updated - 2024-10-07T23:55:25Z + 2024-10-08T16:40:12Z Archived @@ -2235,7 +2235,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2024-10-08T00:19:20Z + 2024-10-08T18:58:56Z Archived @@ -2337,7 +2337,7 @@

OpenAPI TypeScript (link)

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

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T22:51:52Z + 2024-10-09T01:18:15Z Archived @@ -2388,7 +2388,7 @@

gnostic (link)

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

gnostic (link)

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

No Yes Yes - 3480 + 3481 @@ -596,7 +596,7 @@

Yes Yes Yes - 56 + 57 @@ -663,7 +663,7 @@

No Yes No - 825 + 835 @@ -2019,7 +2019,7 @@

tsoa (link)

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

tsoa (link)

Last Updated - 2024-10-08T01:22:31Z + 2024-10-08T20:40:21Z Archived @@ -2494,7 +2494,7 @@

kin-openapi (link)

Last Updated - 2024-10-07T06:55:17Z + 2024-10-08T08:58:54Z Archived @@ -3141,7 +3141,7 @@

Fitting (link)

Stars - 56 + 57 Watchers @@ -3157,7 +3157,7 @@

Fitting (link)

Last Updated - 2024-10-02T23:37:55Z + 2024-10-08T21:03:14Z Archived @@ -3294,7 +3294,7 @@

Fuego (link)

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

Fuego (link)

Last Updated - 2024-10-07T17:50:31Z + 2024-10-09T02:47:27Z Archived @@ -3361,7 +3361,7 @@

Huma (link)

Last Updated - 2024-10-08T00:58:26Z + 2024-10-09T00:04:28Z Archived @@ -3506,7 +3506,7 @@

class-validator-jsonschema (link)

Forks - 36 + 35 Created @@ -3565,7 +3565,7 @@

fastify-openapi-glue (link)

Last Updated - 2024-10-02T10:29:38Z + 2024-10-08T18:14:00Z Archived @@ -4279,7 +4279,7 @@

fastify-flux (link)

Last Updated - 2024-10-05T01:15:22Z + 2024-10-09T03:04:31Z Archived diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html index 6bfa6644..50aa3c33 100644 --- a/docs/categories/description-validators.html +++ b/docs/categories/description-validators.html @@ -197,7 +197,7 @@

Yes Yes Yes - 2481 + 2484 @@ -262,7 +262,7 @@

Yes Yes Yes - 914 + 916 @@ -417,7 +417,7 @@

Yes Yes No - 1123 + 1125 @@ -1912,7 +1912,7 @@

Spectral (link)

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

Spectral (link)

Last Updated - 2024-10-07T23:20:37Z + 2024-10-09T00:16:06Z Archived @@ -1971,7 +1971,7 @@

OpenAPI Style Validator (link)

Forks - 40 + 43 Created @@ -2065,7 +2065,7 @@

Redocly CLI (link)

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

Redocly CLI (link)

Last Updated - 2024-10-07T11:21:39Z + 2024-10-08T12:42:27Z Archived @@ -2422,7 +2422,7 @@

Cherrybomb (link)

Stars - 1123 + 1125 Watchers @@ -2430,7 +2430,7 @@

Cherrybomb (link)

Forks - 78 + 80 Created @@ -2438,7 +2438,7 @@

Cherrybomb (link)

Last Updated - 2024-10-06T10:31:08Z + 2024-10-09T00:00:38Z Archived @@ -2787,7 +2787,7 @@

openapi.tools (link)

Forks - 320 + 322 Created @@ -3305,7 +3305,7 @@

sbt-openapi-generator (link)

Last Updated - 2024-09-08T08:21:41Z + 2024-10-08T03:39:03Z Archived diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html index a420f662..40529a7a 100644 --- a/docs/categories/documentation.html +++ b/docs/categories/documentation.html @@ -169,7 +169,7 @@

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

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

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

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

Yes Yes Yes - 914 + 916 @@ -722,7 +722,7 @@

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

Yes Yes Yes - 2617 + 2622 @@ -1072,7 +1072,7 @@

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

No Yes No - 1658 + 1659 @@ -2602,7 +2602,7 @@

Scalar (link)

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

Scalar (link)

Last Updated - 2024-10-08T02:46:47Z + 2024-10-09T03:07:32Z Archived @@ -2653,7 +2653,7 @@

Scramble (link)

Stars - 1184 + 1187 Watchers @@ -2661,7 +2661,7 @@

Scramble (link)

Forks - 112 + 113 Created @@ -2669,7 +2669,7 @@

Scramble (link)

Last Updated - 2024-10-07T13:29:20Z + 2024-10-08T19:29:46Z Archived @@ -2704,7 +2704,7 @@

Scribe (link)

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

Scribe (link)

Last Updated - 2024-10-07T05:37:08Z + 2024-10-08T12:36:39Z Archived @@ -2806,7 +2806,7 @@

ReDoc (link)

Stars - 23397 + 23408 Watchers @@ -2814,7 +2814,7 @@

ReDoc (link)

Forks - 2292 + 2293 Created @@ -2822,7 +2822,7 @@

ReDoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived @@ -3179,7 +3179,7 @@

RapiPdf (link)

Last Updated - 2024-09-19T11:12:54Z + 2024-10-08T16:16:42Z Archived @@ -3469,7 +3469,7 @@

Redocly CLI (link)

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

Redocly CLI (link)

Last Updated - 2024-10-07T11:21:39Z + 2024-10-08T12:42:27Z Archived @@ -3877,7 +3877,7 @@

Elements (link)

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

Elements (link)

Last Updated - 2024-10-07T14:30:18Z + 2024-10-09T03:28:02Z Archived @@ -4438,7 +4438,7 @@

🌿 Fern (link)

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

🌿 Fern (link)

Last Updated - 2024-10-07T23:52:22Z + 2024-10-09T00:58:13Z Archived @@ -4693,7 +4693,7 @@

Zudoku (link)

Stars - 66 + 68 Watchers @@ -4709,7 +4709,7 @@

Zudoku (link)

Last Updated - 2024-10-07T18:01:20Z + 2024-10-08T16:09:01Z Archived @@ -4744,11 +4744,11 @@

rapidoc (link)

Stars - 1658 + 1659 Watchers - 12 + 13 Forks @@ -4760,7 +4760,7 @@

rapidoc (link)

Last Updated - 2024-10-07T23:08:54Z + 2024-10-08T12:16:16Z Archived @@ -5219,7 +5219,7 @@

data-fair (link)

Last Updated - 2024-10-03T15:06:18Z + 2024-10-08T14:24:58Z Archived diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html index 7ef8962c..523982b5 100644 --- a/docs/categories/dsl.html +++ b/docs/categories/dsl.html @@ -215,7 +215,7 @@

No Yes No - 1975 + 1976 @@ -619,7 +619,7 @@

rswag (link)

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

rswag (link)

Last Updated - 2024-10-07T23:32:46Z + 2024-10-08T05:50:46Z Archived diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html index 332d13cf..2053e619 100644 --- a/docs/categories/gateway.html +++ b/docs/categories/gateway.html @@ -110,7 +110,7 @@

No Yes No - 1853 + 1855 @@ -345,7 +345,7 @@

Fusio (link)

Stars - 1853 + 1855 Watchers @@ -353,7 +353,7 @@

Fusio (link)

Forks - 221 + 222 Created @@ -361,7 +361,7 @@

Fusio (link)

Last Updated - 2024-10-02T04:47:23Z + 2024-10-08T20:05:15Z Archived diff --git a/docs/categories/learning.html b/docs/categories/learning.html index 42f436a0..5f196a73 100644 --- a/docs/categories/learning.html +++ b/docs/categories/learning.html @@ -160,7 +160,7 @@

Yes Yes Yes - 56 + 57 @@ -499,7 +499,7 @@

Fitting (link)

Stars - 56 + 57 Watchers @@ -515,7 +515,7 @@

Fitting (link)

Last Updated - 2024-10-02T23:37:55Z + 2024-10-08T21:03:14Z Archived diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html index 73fb8693..ec068ec1 100644 --- a/docs/categories/low-level-tooling.html +++ b/docs/categories/low-level-tooling.html @@ -1277,7 +1277,7 @@

No No No - 7375 + 7376 @@ -1300,7 +1300,7 @@

No No No - 1393 + 1394 @@ -1456,7 +1456,7 @@

springdoc-openapi (link)

Last Updated - 2024-10-06T20:24:20Z + 2024-10-08T19:43:26Z Archived @@ -1660,7 +1660,7 @@

light-rest-4j (link)

Last Updated - 2024-09-24T16:57:06Z + 2024-10-09T01:33:02Z Archived @@ -4296,7 +4296,7 @@

swagger-models (link)

Stars - 7375 + 7376 Watchers @@ -4304,7 +4304,7 @@

swagger-models (link)

Forks - 2176 + 2177 Created @@ -4312,7 +4312,7 @@

swagger-models (link)

Last Updated - 2024-10-07T12:26:55Z + 2024-10-08T12:43:19Z Archived @@ -4347,7 +4347,7 @@

Microsoft.OpenApi.net (link)

Stars - 1393 + 1394 Watchers @@ -4363,7 +4363,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-10-04T07:44:13Z + 2024-10-08T22:21:08Z Archived diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html index 1b135194..7f40afdd 100644 --- a/docs/categories/mock-testing.html +++ b/docs/categories/mock-testing.html @@ -91,7 +91,7 @@

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

Microcks (link)

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

Microcks (link)

Last Updated - 2024-10-07T19:34:03Z + 2024-10-08T06:15:38Z Archived diff --git a/docs/categories/mock.html b/docs/categories/mock.html index 05fa1c00..5725d114 100644 --- a/docs/categories/mock.html +++ b/docs/categories/mock.html @@ -110,7 +110,7 @@

Yes Yes Yes - 4261 + 4264 @@ -543,7 +543,7 @@

No Yes Yes - 2912 + 2918 @@ -821,7 +821,7 @@

Prism (link)

Stars - 4261 + 4264 Watchers @@ -837,7 +837,7 @@

Prism (link)

Last Updated - 2024-10-06T02:37:48Z + 2024-10-09T02:40:10Z Archived @@ -1449,7 +1449,7 @@

Specmatic (link)

Last Updated - 2024-10-07T07:43:09Z + 2024-10-08T20:28:53Z Archived @@ -1841,7 +1841,7 @@

orval (link)

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

orval (link)

Last Updated - 2024-10-08T00:02:03Z + 2024-10-09T00:30:38Z Archived diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html index 873b23d3..3d530e45 100644 --- a/docs/categories/parsers.html +++ b/docs/categories/parsers.html @@ -91,7 +91,7 @@

Yes Yes Yes - 23397 + 23408 @@ -114,7 +114,7 @@

No Yes No - 704 + 707 @@ -474,7 +474,7 @@

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

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

No Yes Yes - 1097 + 1098 @@ -828,7 +828,7 @@

No Yes Yes - 1393 + 1394 @@ -1056,7 +1056,7 @@

No Yes No - 533 + 534 @@ -1148,7 +1148,7 @@

No Yes No - 150 + 151 @@ -1171,7 +1171,7 @@

No Yes No - 83 + 84 @@ -1236,7 +1236,7 @@

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

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

Yes Yes Yes - 454 + 455 @@ -1686,7 +1686,7 @@

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

No Yes No - 420 + 421 @@ -1801,7 +1801,7 @@

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

No Yes No - 1337 + 1341 @@ -1927,7 +1927,7 @@

No Yes No - 813 + 817 @@ -2095,7 +2095,7 @@

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

No Yes No - 271 + 272 @@ -2456,7 +2456,7 @@

No Yes No - 185 + 187 @@ -2584,7 +2584,7 @@

No Yes No - 130 + 131 @@ -3088,7 +3088,7 @@

No Yes No - 62 + 63 @@ -4081,7 +4081,7 @@

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

No Yes No - 2 + 3 @@ -8938,7 +8938,7 @@

Yes Yes No - 2253 + 2255 @@ -10538,7 +10538,7 @@

No No No - 1393 + 1394 @@ -11026,7 +11026,7 @@

ReDoc (link)

Stars - 23397 + 23408 Watchers @@ -11034,7 +11034,7 @@

ReDoc (link)

Forks - 2292 + 2293 Created @@ -11042,7 +11042,7 @@

ReDoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived @@ -11077,7 +11077,7 @@

oasdiff (link)

Stars - 704 + 707 Watchers @@ -11093,7 +11093,7 @@

oasdiff (link)

Last Updated - 2024-10-07T08:42:14Z + 2024-10-08T13:10:34Z Archived @@ -11893,7 +11893,7 @@

tsoa (link)

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

tsoa (link)

Last Updated - 2024-10-08T01:22:31Z + 2024-10-08T20:40:21Z Archived @@ -12148,7 +12148,7 @@

swagger-parser (link)

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

swagger-parser (link)

Last Updated - 2024-10-07T05:55:41Z + 2024-10-09T03:03:43Z Archived @@ -12199,7 +12199,7 @@

APIDevTools/swagger-parser (link)

Stars - 1097 + 1098 Watchers @@ -12215,7 +12215,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2024-10-07T18:11:29Z + 2024-10-09T03:19:03Z Archived @@ -12470,7 +12470,7 @@

kin-openapi (link)

Last Updated - 2024-10-07T06:55:17Z + 2024-10-08T08:58:54Z Archived @@ -12709,7 +12709,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1393 + 1394 Watchers @@ -12725,7 +12725,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2024-10-04T07:44:13Z + 2024-10-08T22:21:08Z Archived @@ -13219,7 +13219,7 @@

openapi-fuzzer (link)

Stars - 533 + 534 Watchers @@ -13227,7 +13227,7 @@

openapi-fuzzer (link)

Forks - 22 + 23 Created @@ -13235,7 +13235,7 @@

openapi-fuzzer (link)

Last Updated - 2024-09-27T09:58:32Z + 2024-10-08T08:43:03Z Archived @@ -13423,7 +13423,7 @@

har2openapi (link)

Stars - 150 + 151 Watchers @@ -13439,7 +13439,7 @@

har2openapi (link)

Last Updated - 2024-09-26T22:14:38Z + 2024-10-08T15:27:12Z Archived @@ -13474,7 +13474,7 @@

har-to-openapi (link)

Stars - 83 + 84 Watchers @@ -13490,7 +13490,7 @@

har-to-openapi (link)

Last Updated - 2024-10-03T23:33:09Z + 2024-10-08T15:27:46Z Archived @@ -13627,7 +13627,7 @@

openapi-to-postman (link)

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

openapi-to-postman (link)

Last Updated - 2024-10-07T15:49:03Z + 2024-10-08T06:34:09Z Archived @@ -13984,7 +13984,7 @@

openapi-python-client (link)

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

openapi-python-client (link)

Last Updated - 2024-10-07T23:55:25Z + 2024-10-08T16:40:12Z Archived @@ -14290,7 +14290,7 @@

libopenapi (link)

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

libopenapi (link)

Last Updated - 2024-10-08T02:08:31Z + 2024-10-08T03:46:21Z Archived @@ -14647,7 +14647,7 @@

rswag (link)

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

rswag (link)

Last Updated - 2024-10-07T23:32:46Z + 2024-10-08T05:50:46Z Archived @@ -14749,7 +14749,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2024-10-08T00:19:20Z + 2024-10-08T18:58:56Z Archived @@ -14902,7 +14902,7 @@

Redoc (link)

Stars - 23397 + 23408 Watchers @@ -14910,7 +14910,7 @@

Redoc (link)

Forks - 2292 + 2293 Created @@ -14918,7 +14918,7 @@

Redoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived @@ -14969,7 +14969,7 @@

openapi-generator-cli (link)

Last Updated - 2024-10-05T14:49:45Z + 2024-10-08T03:50:20Z Archived @@ -15004,11 +15004,11 @@

ogen (link)

Stars - 1337 + 1341 Watchers - 16 + 15 Forks @@ -15020,7 +15020,7 @@

ogen (link)

Last Updated - 2024-10-07T20:11:50Z + 2024-10-08T16:39:39Z Archived @@ -15071,7 +15071,7 @@

apispec (link)

Last Updated - 2024-10-07T12:28:15Z + 2024-10-08T10:00:15Z Archived @@ -15122,7 +15122,7 @@

zod-to-openapi (link)

Last Updated - 2024-10-07T09:55:00Z + 2024-10-08T16:18:42Z Archived @@ -15208,7 +15208,7 @@

openapi-diff (link)

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

openapi-diff (link)

Last Updated - 2024-10-08T01:06:53Z + 2024-10-08T22:46:09Z Archived @@ -15616,7 +15616,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2024-10-08T00:19:20Z + 2024-10-08T18:58:56Z Archived @@ -15922,7 +15922,7 @@

zod-openapi (link)

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

zod-openapi (link)

Last Updated - 2024-10-08T02:11:31Z + 2024-10-08T23:30:42Z Archived @@ -16032,7 +16032,7 @@

class-validator-jsonschema (link)

Forks - 36 + 35 Created @@ -16244,7 +16244,7 @@

fastify-openapi-glue (link)

Last Updated - 2024-10-02T10:29:38Z + 2024-10-08T18:14:00Z Archived @@ -16448,7 +16448,7 @@

refitter (link)

Last Updated - 2024-10-07T12:27:22Z + 2024-10-08T19:39:21Z Archived @@ -16483,7 +16483,7 @@

speakeasy (link)

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

speakeasy (link)

Last Updated - 2024-10-07T23:27:50Z + 2024-10-08T23:53:46Z Archived @@ -16789,7 +16789,7 @@

apistos (link)

Stars - 130 + 131 Watchers @@ -16805,7 +16805,7 @@

apistos (link)

Last Updated - 2024-10-02T11:16:33Z + 2024-10-08T08:33:24Z Archived @@ -16856,7 +16856,7 @@

light-rest-4j (link)

Last Updated - 2024-09-24T16:57:06Z + 2024-10-09T01:33:02Z Archived @@ -17060,7 +17060,7 @@

learn.openapis.org (link)

Last Updated - 2024-10-07T20:58:53Z + 2024-10-08T11:10:53Z Archived @@ -18013,7 +18013,7 @@

openapi3-parser (link)

Stars - 62 + 63 Watchers @@ -18029,7 +18029,7 @@

openapi3-parser (link)

Last Updated - 2024-09-26T01:52:40Z + 2024-10-08T16:35:49Z Archived @@ -18947,7 +18947,7 @@

museum-openapi-example (link)

Last Updated - 2024-09-18T07:32:14Z + 2024-10-08T13:03:31Z Archived @@ -19041,7 +19041,7 @@

openapi-examples (link)

Forks - 3 + 4 Created @@ -19202,7 +19202,7 @@

vitepress-openapi (link)

Last Updated - 2024-10-08T02:19:40Z + 2024-10-08T22:48:59Z Archived @@ -19661,7 +19661,7 @@

fastify-openapi3 (link)

Last Updated - 2024-10-07T20:55:26Z + 2024-10-08T18:34:50Z Archived @@ -19712,7 +19712,7 @@

shipengine-openapi (link)

Last Updated - 2024-10-03T21:37:09Z + 2024-10-08T15:21:08Z Archived @@ -20069,7 +20069,7 @@

sbt-openapi-schema (link)

Last Updated - 2024-10-07T22:54:21Z + 2024-10-08T06:29:22Z Archived @@ -20410,7 +20410,7 @@

aspnetcore.scalar (link)

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

aspnetcore.scalar (link)

Last Updated - 2024-09-24T19:03:39Z + 2024-10-08T07:48:02Z Archived @@ -21548,7 +21548,7 @@

yapily-openapi (link)

Last Updated - 2024-09-30T16:13:44Z + 2024-10-08T11:33:10Z Archived @@ -21650,7 +21650,7 @@

fastify-flux (link)

Last Updated - 2024-10-05T01:15:22Z + 2024-10-09T03:04:31Z Archived @@ -26291,7 +26291,7 @@

python-openapi-generator-rust (link) Last Updated - 2024-09-23T17:16:41Z + 2024-10-08T19:20:43Z Archived @@ -27091,7 +27091,7 @@

openapi (link)

Stars - 2 + 3 Watchers @@ -27099,7 +27099,7 @@

openapi (link)

Forks - 0 + 1 Created @@ -27107,7 +27107,7 @@

openapi (link)

Last Updated - 2024-10-01T08:59:12Z + 2024-10-08T08:28:41Z Archived @@ -27872,7 +27872,7 @@

goapi (link)

Last Updated - 2024-09-29T02:01:56Z + 2024-10-08T08:37:34Z Archived @@ -32191,7 +32191,7 @@

utoipa (link)

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

utoipa (link)

Last Updated - 2024-10-07T20:49:04Z + 2024-10-08T23:07:14Z Archived @@ -36067,7 +36067,7 @@

Microsoft.OpenApi.net (link)

Stars - 1393 + 1394 Watchers @@ -36083,7 +36083,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2024-10-04T07:44:13Z + 2024-10-08T22:21:08Z Archived diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html index b3d6ce2d..798aa1f3 100644 --- a/docs/categories/sdk.html +++ b/docs/categories/sdk.html @@ -114,7 +114,7 @@

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

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

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

Yes Yes Yes - 1110 + 1122 @@ -426,7 +426,7 @@

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

No Yes Yes - 12581 + 12585 @@ -765,7 +765,7 @@

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

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

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

No Yes No - 4095 + 4096 @@ -920,7 +920,7 @@

No Yes No - 3851 + 3850 @@ -941,7 +941,7 @@

No Yes No - 499 + 500 @@ -3001,7 +3001,7 @@

No Yes Yes - 523 + 524 @@ -3169,7 +3169,7 @@

OpenAPI Generator (link)

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

OpenAPI Generator (link)

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

OpenAPI Generator (link)

Last Updated - 2024-10-08T03:22:05Z + 2024-10-09T03:15:30Z Archived @@ -3271,7 +3271,7 @@

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

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

Kiota Api Client Generator (link)

Last Updated - 2024-10-07T22:44:15Z + 2024-10-09T01:42:22Z Archived @@ -3338,7 +3338,7 @@

FabriKt (link)

Last Updated - 2024-10-07T13:31:38Z + 2024-10-08T19:49:43Z Archived @@ -3373,7 +3373,7 @@

Microcks (link)

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

Microcks (link)

Last Updated - 2024-10-07T19:34:03Z + 2024-10-08T06:15:38Z Archived @@ -3424,7 +3424,7 @@

@hey-api/openapi-ts (link)

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

@hey-api/openapi-ts (link)

Last Updated - 2024-10-07T22:15:49Z + 2024-10-09T03:32:45Z Archived @@ -3789,7 +3789,7 @@

NSwag (link)

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

Azure AutoRest (link)

Stars - 4604 + 4603 Watchers @@ -3899,7 +3899,7 @@

Azure AutoRest (link)

Last Updated - 2024-10-07T06:35:23Z + 2024-10-09T02:19:04Z Archived @@ -4138,7 +4138,7 @@

OWASP ZAP (link)

Stars - 12581 + 12585 Watchers @@ -4154,7 +4154,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-07T19:00:47Z + 2024-10-08T22:20:28Z Archived @@ -4648,7 +4648,7 @@

🌿 Fern (link)

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

🌿 Fern (link)

Last Updated - 2024-10-07T23:52:22Z + 2024-10-09T00:58:13Z Archived @@ -4801,7 +4801,7 @@

Swift OpenAPI Generator (link)

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

Swift OpenAPI Generator (link)

Last Updated - 2024-10-07T22:58:19Z + 2024-10-08T13:18:08Z Archived @@ -4903,7 +4903,7 @@

OpenAPI TypeScript (link)

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

OpenAPI TypeScript (link)

Last Updated - 2024-10-07T22:51:52Z + 2024-10-09T01:18:15Z Archived @@ -4954,7 +4954,7 @@

knife4j (link)

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

knife4j (link)

Last Updated - 2024-10-07T13:01:14Z + 2024-10-08T22:13:17Z Archived @@ -5005,7 +5005,7 @@

openapi-directory (link)

Stars - 3851 + 3850 Watchers @@ -5021,7 +5021,7 @@

openapi-directory (link)

Last Updated - 2024-10-07T02:37:36Z + 2024-10-09T03:09:21Z Archived @@ -5056,7 +5056,7 @@

docusaurus-openapi (link)

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

docusaurus-openapi (link)

Last Updated - 2024-10-07T23:20:36Z + 2024-10-08T18:35:44Z Archived @@ -5378,7 +5378,7 @@

apiclientcodegen (link)

Last Updated - 2024-10-07T12:09:42Z + 2024-10-08T20:30:11Z Archived @@ -5582,7 +5582,7 @@

sideko (link)

Last Updated - 2024-10-01T21:09:34Z + 2024-10-08T21:58:07Z Archived @@ -5684,7 +5684,7 @@

sample-quarkus-applications (link)

Last Updated - 2024-10-06T15:24:32Z + 2024-10-08T04:11:16Z Archived @@ -6143,7 +6143,7 @@

yapily-openapi (link)

Last Updated - 2024-09-30T16:13:44Z + 2024-10-08T11:33:10Z Archived @@ -10054,7 +10054,7 @@

guardrail (link)

Stars - 523 + 524 Watchers @@ -10070,7 +10070,7 @@

guardrail (link)

Last Updated - 2024-09-22T10:04:07Z + 2024-10-08T21:16:51Z Archived @@ -10223,7 +10223,7 @@

go-doudou (link)

Last Updated - 2024-10-08T01:18:18Z + 2024-10-08T10:34:56Z Archived diff --git a/docs/categories/security.html b/docs/categories/security.html index 692b5c14..85f2ae9c 100644 --- a/docs/categories/security.html +++ b/docs/categories/security.html @@ -175,7 +175,7 @@

No Yes No - 533 + 534 @@ -240,7 +240,7 @@

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

No Yes Yes - 2588 + 2590 @@ -584,7 +584,7 @@

openapi-fuzzer (link)

Stars - 533 + 534 Watchers @@ -592,7 +592,7 @@

openapi-fuzzer (link)

Forks - 22 + 23 Created @@ -600,7 +600,7 @@

openapi-fuzzer (link)

Last Updated - 2024-09-27T09:58:32Z + 2024-10-08T08:43:03Z Archived @@ -643,7 +643,7 @@

cats (link)

Forks - 74 + 73 Created @@ -651,7 +651,7 @@

cats (link)

Last Updated - 2024-10-07T19:33:11Z + 2024-10-08T20:16:01Z Archived @@ -737,7 +737,7 @@

OWASP ZAP (link)

Stars - 12581 + 12585 Watchers @@ -753,7 +753,7 @@

OWASP ZAP (link)

Last Updated - 2024-10-07T19:00:47Z + 2024-10-08T22:20:28Z Archived @@ -941,7 +941,7 @@

RESTler (link)

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

RESTler (link)

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

Yes No No - 1184 + 1187 @@ -298,7 +298,7 @@

Yes Yes Yes - 8896 + 8899 @@ -344,7 +344,7 @@

Yes Yes Yes - 4261 + 4264 @@ -367,7 +367,7 @@

No Yes Yes - 8556 + 8557 @@ -390,7 +390,7 @@

No Yes No - 1853 + 1855 @@ -434,7 +434,7 @@

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

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

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

No Yes No - 4360 + 4367 @@ -616,7 +616,7 @@

No Yes No - 28232 + 28241 @@ -777,7 +777,7 @@

No Yes No - 76322 + 76364 @@ -863,7 +863,7 @@

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

No Yes No - 1658 + 1659 @@ -1016,7 +1016,7 @@

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

No Yes No - 375 + 376 @@ -1333,7 +1333,7 @@

No Yes No - 199 + 200 @@ -1354,7 +1354,7 @@

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

No Yes No - 105 + 106 @@ -9256,7 +9256,7 @@

No Yes No - 26676 + 26697 @@ -11799,7 +11799,7 @@

Scramble (link)

Stars - 1184 + 1187 Watchers @@ -11807,7 +11807,7 @@

Scramble (link)

Forks - 112 + 113 Created @@ -11815,7 +11815,7 @@

Scramble (link)

Last Updated - 2024-10-07T13:29:20Z + 2024-10-08T19:29:46Z Archived @@ -12156,7 +12156,7 @@

Swagger Editor (link)

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

Swagger Editor (link)

Last Updated - 2024-10-07T15:59:07Z + 2024-10-09T03:05:23Z Archived @@ -12258,7 +12258,7 @@

Prism (link)

Stars - 4261 + 4264 Watchers @@ -12274,7 +12274,7 @@

Prism (link)

Last Updated - 2024-10-06T02:37:48Z + 2024-10-09T02:40:10Z Archived @@ -12309,7 +12309,7 @@

API Platform (link)

Stars - 8556 + 8557 Watchers @@ -12325,7 +12325,7 @@

API Platform (link)

Last Updated - 2024-10-07T15:42:36Z + 2024-10-08T04:45:09Z Archived @@ -12360,7 +12360,7 @@

Fusio (link)

Stars - 1853 + 1855 Watchers @@ -12368,7 +12368,7 @@

Fusio (link)

Forks - 221 + 222 Created @@ -12376,7 +12376,7 @@

Fusio (link)

Last Updated - 2024-10-02T04:47:23Z + 2024-10-08T20:05:15Z Archived @@ -12462,7 +12462,7 @@

Redocly CLI (link)

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

Redocly CLI (link)

Last Updated - 2024-10-07T11:21:39Z + 2024-10-08T12:42:27Z Archived @@ -12521,7 +12521,7 @@

cats (link)

Forks - 74 + 73 Created @@ -12529,7 +12529,7 @@

cats (link)

Last Updated - 2024-10-07T19:33:11Z + 2024-10-08T20:16:01Z Archived @@ -12564,7 +12564,7 @@

mitmproxy2swagger (link)

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

mitmproxy2swagger (link)

Last Updated - 2024-10-08T02:05:58Z + 2024-10-08T17:35:14Z Archived @@ -12615,7 +12615,7 @@

OpenApiSpecGeneratorPlugin (link)

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

OpenApiSpecGeneratorPlugin (link)

Last Updated - 2024-10-07T21:08:40Z + 2024-10-08T20:25:13Z Archived @@ -12717,7 +12717,7 @@

TypeSpec (link)

Stars - 4360 + 4367 Watchers @@ -12725,7 +12725,7 @@

TypeSpec (link)

Forks - 203 + 204 Created @@ -12733,7 +12733,7 @@

TypeSpec (link)

Last Updated - 2024-10-08T03:16:12Z + 2024-10-09T02:54:49Z Archived @@ -12870,7 +12870,7 @@

Django REST Framework (link)

Stars - 28232 + 28241 Watchers @@ -12878,7 +12878,7 @@

Django REST Framework (link)

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

Django REST Framework (link)

Last Updated - 2024-10-07T20:08:01Z + 2024-10-09T03:26:28Z Archived @@ -12980,7 +12980,7 @@

Whook (link)

Forks - 7 + 6 Created @@ -13227,7 +13227,7 @@

FastAPI (link)

Stars - 76322 + 76364 Watchers @@ -13235,7 +13235,7 @@

FastAPI (link)

Forks - 6437 + 6440 Created @@ -13243,7 +13243,7 @@

FastAPI (link)

Last Updated - 2024-10-08T02:24:52Z + 2024-10-09T02:58:57Z Archived @@ -13294,7 +13294,7 @@

springdoc-openapi (link)

Last Updated - 2024-10-06T20:24:20Z + 2024-10-08T19:43:26Z Archived @@ -13396,7 +13396,7 @@

drf-spectacular (link)

Last Updated - 2024-10-07T16:24:53Z + 2024-10-09T02:04:28Z Archived @@ -13431,7 +13431,7 @@

msgspec (link)

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

msgspec (link)

Last Updated - 2024-10-07T09:58:52Z + 2024-10-08T14:53:47Z Archived @@ -13498,7 +13498,7 @@

Schemathesis (link)

Last Updated - 2024-10-06T07:02:06Z + 2024-10-08T18:32:46Z Archived @@ -13533,11 +13533,11 @@

rapidoc (link)

Stars - 1658 + 1659 Watchers - 12 + 13 Forks @@ -13549,7 +13549,7 @@

rapidoc (link)

Last Updated - 2024-10-07T23:08:54Z + 2024-10-08T12:16:16Z Archived @@ -13788,7 +13788,7 @@

stackql (link)

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

stackql (link)

Last Updated - 2024-10-07T12:57:33Z + 2024-10-08T03:58:08Z Archived @@ -13992,7 +13992,7 @@

fastapi-clean-example (link)

Stars - 375 + 376 Watchers @@ -14008,7 +14008,7 @@

fastapi-clean-example (link)

Last Updated - 2024-10-04T14:53:45Z + 2024-10-08T13:22:47Z Archived @@ -14553,7 +14553,7 @@

typescript-backend-toolkit (link)

Stars - 199 + 200 Watchers @@ -14569,7 +14569,7 @@

typescript-backend-toolkit (link)

Last Updated - 2024-10-07T08:26:56Z + 2024-10-08T12:51:09Z Archived @@ -14604,7 +14604,7 @@

flask-openapi3 (link)

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

flask-openapi3 (link)

Last Updated - 2024-10-06T21:44:52Z + 2024-10-08T06:43:02Z Archived @@ -14722,7 +14722,7 @@

deeptest (link)

Last Updated - 2024-10-08T02:35:11Z + 2024-10-08T07:42:12Z Archived @@ -14824,7 +14824,7 @@

learn.openapis.org (link)

Last Updated - 2024-10-07T20:58:53Z + 2024-10-08T11:10:53Z Archived @@ -15012,7 +15012,7 @@

go-swagger3 (link)

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

go-swagger3 (link)

Last Updated - 2024-10-08T00:38:32Z + 2024-10-08T23:59:19Z Archived @@ -15079,7 +15079,7 @@

tools.openapis.org (link)

Last Updated - 2024-10-07T03:37:14Z + 2024-10-08T03:34:28Z Archived @@ -15589,7 +15589,7 @@

swagger-editor-validate (link)

Last Updated - 2024-10-07T04:46:12Z + 2024-10-08T04:58:38Z Archived @@ -16091,7 +16091,7 @@

openapi-examples (link)

Forks - 3 + 4 Created @@ -16252,7 +16252,7 @@

data-fair (link)

Last Updated - 2024-10-03T15:06:18Z + 2024-10-08T14:24:58Z Archived @@ -17527,7 +17527,7 @@

aiopenapi3 (link)

Last Updated - 2024-10-04T06:57:35Z + 2024-10-08T12:24:26Z Archived @@ -19159,7 +19159,7 @@

sandbox (link)

Last Updated - 2024-10-07T16:04:02Z + 2024-10-08T15:38:10Z Archived @@ -19924,7 +19924,7 @@

bulma (link)

Last Updated - 2024-08-06T15:30:15Z + 2024-10-08T12:59:00Z Archived @@ -21913,7 +21913,7 @@

pulumi-provider-template (link)

Last Updated - 2024-10-07T00:37:25Z + 2024-10-08T22:29:03Z Archived @@ -25118,7 +25118,7 @@

oap_spring_boot3_code_generation (link) Forks - 1 + 2 Created @@ -25585,7 +25585,7 @@

crimsonsky (link)

Last Updated - 2024-09-29T20:27:42Z + 2024-10-08T13:06:00Z Archived @@ -26648,7 +26648,7 @@

traefik-hub-gitops (link)

Forks - 9 + 10 Created @@ -28798,7 +28798,7 @@

api-flows-studio (link)

Last Updated - 2024-10-06T16:45:05Z + 2024-10-08T18:27:45Z Archived @@ -33780,15 +33780,15 @@

full-stack-fastapi-template (link)

Stars - 26676 + 26697 Watchers - 262 + 261 Forks - 4702 + 4708 Created @@ -33796,7 +33796,7 @@

full-stack-fastapi-template (link)

Last Updated - 2024-10-08T00:40:00Z + 2024-10-09T03:15:09Z Archived diff --git a/docs/categories/server.html b/docs/categories/server.html index 8220ab91..5fe4547a 100644 --- a/docs/categories/server.html +++ b/docs/categories/server.html @@ -114,7 +114,7 @@

No Yes Yes - 3480 + 3481 @@ -137,7 +137,7 @@

No Yes No - 1108 + 1109 @@ -229,7 +229,7 @@

No Yes Yes - 8556 + 8557 @@ -275,7 +275,7 @@

No Yes No - 1853 + 1855 @@ -546,7 +546,7 @@

Yes Yes Yes - 2617 + 2622 @@ -569,7 +569,7 @@

Yes Yes No - 1392 + 1395 @@ -592,7 +592,7 @@

No Yes No - 825 + 835 @@ -2771,7 +2771,7 @@

No Yes No - 4944 + 4945 @@ -2838,7 +2838,7 @@

No Yes No - 1108 + 1109 @@ -2943,7 +2943,7 @@

tsoa (link)

Stars - 3480 + 3481 Watchers @@ -2959,7 +2959,7 @@

tsoa (link)

Last Updated - 2024-10-08T01:22:31Z + 2024-10-08T20:40:21Z Archived @@ -2994,7 +2994,7 @@

Vert.x Web Api Contract (link)

Stars - 1108 + 1109 Watchers @@ -3010,7 +3010,7 @@

Vert.x Web Api Contract (link)

Last Updated - 2024-10-07T21:44:05Z + 2024-10-08T19:42:50Z Archived @@ -3198,7 +3198,7 @@

API Platform (link)

Stars - 8556 + 8557 Watchers @@ -3214,7 +3214,7 @@

API Platform (link)

Last Updated - 2024-10-07T15:42:36Z + 2024-10-08T04:45:09Z Archived @@ -3300,7 +3300,7 @@

Fusio (link)

Stars - 1853 + 1855 Watchers @@ -3308,7 +3308,7 @@

Fusio (link)

Forks - 221 + 222 Created @@ -3316,7 +3316,7 @@

Fusio (link)

Last Updated - 2024-10-02T04:47:23Z + 2024-10-08T20:05:15Z Archived @@ -3461,7 +3461,7 @@

@nestjs/swagger (link)

Forks - 469 + 470 Created @@ -3469,7 +3469,7 @@

@nestjs/swagger (link)

Last Updated - 2024-10-07T22:07:56Z + 2024-10-08T22:51:04Z Archived @@ -3716,7 +3716,7 @@

Whook (link)

Forks - 7 + 6 Created @@ -3912,7 +3912,7 @@

🌿 Fern (link)

Stars - 2617 + 2622 Watchers @@ -3928,7 +3928,7 @@

🌿 Fern (link)

Last Updated - 2024-10-07T23:52:22Z + 2024-10-09T00:58:13Z Archived @@ -3963,7 +3963,7 @@

Swift OpenAPI Generator (link)

Stars - 1392 + 1395 Watchers @@ -3979,7 +3979,7 @@

Swift OpenAPI Generator (link)

Last Updated - 2024-10-07T22:58:19Z + 2024-10-08T13:18:08Z Archived @@ -4014,7 +4014,7 @@

Fuego (link)

Stars - 825 + 835 Watchers @@ -4030,7 +4030,7 @@

Fuego (link)

Last Updated - 2024-10-07T17:50:31Z + 2024-10-09T02:47:27Z Archived @@ -4081,7 +4081,7 @@

Huma (link)

Last Updated - 2024-10-08T00:58:26Z + 2024-10-09T00:04:28Z Archived @@ -4489,7 +4489,7 @@

fastify-openapi3 (link)

Last Updated - 2024-10-07T20:55:26Z + 2024-10-08T18:34:50Z Archived @@ -9267,7 +9267,7 @@

LoopBack 4 (link)

Stars - 4944 + 4945 Watchers @@ -9275,7 +9275,7 @@

LoopBack 4 (link)

Forks - 1063 + 1064 Created @@ -9283,7 +9283,7 @@

LoopBack 4 (link)

Last Updated - 2024-10-08T00:12:49Z + 2024-10-08T15:25:43Z Archived @@ -9420,7 +9420,7 @@

Vert.x Web API Service (link)

Stars - 1108 + 1109 Watchers @@ -9436,7 +9436,7 @@

Vert.x Web API Service (link)

Last Updated - 2024-10-07T21:44:05Z + 2024-10-08T19:42:50Z Archived diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html index e666836a..256c7cdb 100644 --- a/docs/categories/testing-tools.html +++ b/docs/categories/testing-tools.html @@ -258,7 +258,7 @@

Schemathesis (link)

Last Updated - 2024-10-06T07:02:06Z + 2024-10-08T18:32:46Z Archived diff --git a/docs/categories/testing.html b/docs/categories/testing.html index 9d695bbe..c4fa10e0 100644 --- a/docs/categories/testing.html +++ b/docs/categories/testing.html @@ -173,7 +173,7 @@

No Yes Yes - 4188 + 4189 @@ -654,7 +654,7 @@

Yes Yes Yes - 56 + 57 @@ -717,7 +717,7 @@

No Yes No - 6314 + 6322 @@ -759,7 +759,7 @@

No Yes No - 497 + 498 @@ -1368,7 +1368,7 @@

No Yes No - 5 + 4 @@ -2640,7 +2640,7 @@

No Yes Yes - 2588 + 2590 @@ -2938,7 +2938,7 @@

Dredd (link)

Stars - 4188 + 4189 Watchers @@ -2954,7 +2954,7 @@

Dredd (link)

Last Updated - 2024-10-07T08:16:50Z + 2024-10-08T09:16:24Z Archived @@ -3974,7 +3974,7 @@

Specmatic (link)

Last Updated - 2024-10-07T07:43:09Z + 2024-10-08T20:28:53Z Archived @@ -4060,7 +4060,7 @@

Fitting (link)

Stars - 56 + 57 Watchers @@ -4076,7 +4076,7 @@

Fitting (link)

Last Updated - 2024-10-02T23:37:55Z + 2024-10-08T21:03:14Z Archived @@ -4213,7 +4213,7 @@

mockoon (link)

Stars - 6314 + 6322 Watchers @@ -4229,7 +4229,7 @@

mockoon (link)

Last Updated - 2024-10-07T22:48:23Z + 2024-10-09T01:50:54Z Archived @@ -4315,7 +4315,7 @@

openapi-codegen (link)

Stars - 497 + 498 Watchers @@ -4331,7 +4331,7 @@

openapi-codegen (link)

Last Updated - 2024-10-04T10:21:06Z + 2024-10-08T07:30:53Z Archived @@ -5045,7 +5045,7 @@

mockoon.com (link)

Last Updated - 2024-10-03T18:12:36Z + 2024-10-08T06:00:34Z Archived @@ -5794,7 +5794,7 @@

spring-boot-freemarker-java-mail-api (l Stars - 5 + 4 Watchers @@ -5810,7 +5810,7 @@

spring-boot-freemarker-java-mail-api (l Last Updated - 2023-10-25T11:34:47Z + 2024-10-08T18:15:11Z Archived @@ -6065,7 +6065,7 @@

public-api-docs (link)

Last Updated - 2024-08-30T21:10:21Z + 2024-10-08T22:22:16Z Archived @@ -7442,7 +7442,7 @@

EvoMaster (link)

Last Updated - 2024-10-06T20:34:56Z + 2024-10-08T07:28:51Z Archived @@ -8854,7 +8854,7 @@

RESTler (link)

Stars - 2588 + 2590 Watchers @@ -8870,7 +8870,7 @@

RESTler (link)

Last Updated - 2024-10-07T08:50:57Z + 2024-10-08T17:14:53Z Archived diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html index c2394642..dd145402 100644 --- a/docs/categories/text-editors.html +++ b/docs/categories/text-editors.html @@ -157,7 +157,7 @@

Yes Yes Yes - 8896 + 8899 @@ -594,7 +594,7 @@

Swagger Editor (link)

Stars - 8896 + 8899 Watchers @@ -610,7 +610,7 @@

Swagger Editor (link)

Last Updated - 2024-10-07T15:59:07Z + 2024-10-09T03:05:23Z Archived diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html index ca1ea450..ae4b84d0 100644 --- a/docs/categories/unclassified.html +++ b/docs/categories/unclassified.html @@ -1216,7 +1216,7 @@

modelina (link)

Last Updated - 2024-10-07T00:29:25Z + 2024-10-08T23:16:39Z Archived diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html index 686ff3d6..6a643906 100644 --- a/docs/categories/user-interfaces.html +++ b/docs/categories/user-interfaces.html @@ -91,7 +91,7 @@

Yes Yes No - 26422 + 26430 @@ -114,7 +114,7 @@

Yes Yes No - 23397 + 23408 @@ -275,7 +275,7 @@

swagger-ui (link)

Stars - 26422 + 26430 Watchers @@ -283,7 +283,7 @@

swagger-ui (link)

Forks - 8929 + 8933 Created @@ -291,7 +291,7 @@

swagger-ui (link)

Last Updated - 2024-10-08T00:54:07Z + 2024-10-09T02:38:41Z Archived @@ -326,7 +326,7 @@

Redoc (link)

Stars - 23397 + 23408 Watchers @@ -334,7 +334,7 @@

Redoc (link)

Forks - 2292 + 2293 Created @@ -342,7 +342,7 @@

Redoc (link)

Last Updated - 2024-10-08T00:19:58Z + 2024-10-09T00:06:54Z Archived diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml index 5f4d6962..bc8ee58b 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-08T02:46:47Z' + updated: '2024-10-09T03:07:32Z' language: TypeScript archived: false - stars: 6313 + stars: 6332 watchers: 21 forks: 203 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 license: MIT - repoEtag: '"378c8d2a2f720c7422545c2e1b0fd57afdf723ac5bc8501de5cc942a18e817dd"' - repoLastModified: Tue, 08 Oct 2024 02:46:47 GMT + repoEtag: '"6f6587d98af1148894a650490645d849594fc0e254a28bccbbbc04606ea32e8c"' + repoLastModified: Wed, 09 Oct 2024 03:07:32 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-07T13:29:20Z' + updated: '2024-10-08T19:29:46Z' language: PHP archived: false - stars: 1184 + stars: 1187 watchers: 14 - forks: 112 + forks: 113 owner: dedoc logo: https://avatars.githubusercontent.com/u/93313138?v=4 license: MIT - repoEtag: '"ee8e824cf4fd9514def8ee56aac16ae705e4fc86ac718406ab58dadf13e156cc"' - repoLastModified: Mon, 07 Oct 2024 13:29:20 GMT + repoEtag: '"2054bf4570e504982eac1215c6b8b65203471da735bbdb35a74a62db2e1ab875"' + repoLastModified: Tue, 08 Oct 2024 19:29:46 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-07T05:37:08Z' + updated: '2024-10-08T12:36:39Z' language: PHP archived: false - stars: 1705 + stars: 1706 watchers: 18 forks: 302 owner: knuckleswtf logo: https://avatars.githubusercontent.com/u/63367037?v=4 license: MIT - repoEtag: '"c97ac1131accbfc587b260fde665fa265462471e4d6b3ed09a154528efe46a01"' - repoLastModified: Mon, 07 Oct 2024 05:37:08 GMT + repoEtag: '"97616d4518bcba238e9f65b8acfc39bd7c47fe8d2c4778c800ddeea0307e0209"' + repoLastModified: Tue, 08 Oct 2024 12:36:39 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-08T00:19:58Z' + updated: '2024-10-09T00:06:54Z' language: TypeScript archived: false - stars: 23397 + stars: 23408 watchers: 295 - forks: 2292 + forks: 2293 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"0f707d64eb6f1f6467fcfe1aaab7da0297e5c35c93f2320c3ec3969061971601"' - repoLastModified: Tue, 08 Oct 2024 00:19:58 GMT + repoEtag: '"8947637273182af9c117f83733623e881d3cea16af28d3bba662979e01e5d410"' + repoLastModified: Wed, 09 Oct 2024 00:06:54 GMT foundInMaster: true - source: https://openapi.tools/ name: RestCase Docs @@ -512,17 +512,17 @@ repositoryId: 337689065 description: OpenAPI Diff and Breaking Changes created: '2021-02-10T10:28:36Z' - updated: '2024-10-07T08:42:14Z' + updated: '2024-10-08T13:10:34Z' language: Go archived: false - stars: 704 + stars: 707 watchers: 9 forks: 63 owner: Tufin logo: https://avatars.githubusercontent.com/u/5352131?v=4 license: Apache-2.0 - repoEtag: '"37a9da08918ade0bcccb8329d2d9329bd1e83d84ef9e29e296941029b77a45d2"' - repoLastModified: Mon, 07 Oct 2024 08:42:14 GMT + repoEtag: '"070c10d2c1b194f86500f9258050e91e5bf401111d6a6a1a7aa8a9fdfa9b96b3"' + repoLastModified: Tue, 08 Oct 2024 13:10:34 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: '"3f4c5fb4d935d1ab704630054ea01080814cdb5353605ec2d8d6eb0ec01f804b"' + repoEtag: '"fd451c53d5efb23dc804d39fcf9aaad109600dbe6fa99ac00b5ac9dc5cf5e174"' repoLastModified: Sat, 05 Oct 2024 20:00:18 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 @@ -676,7 +676,7 @@ owner: oasis-tcs logo: https://avatars.githubusercontent.com/u/20116735?v=4 license: NOASSERTION - repoEtag: '"aad21db2fa45b4c73c327a3e584d1d4e018d309002c43bef93612243dee6a58f"' + repoEtag: '"a2cc48cb1282b5c359ee7962e1b184f12180c00ec254f6584da69f59c9e7c442"' repoLastModified: Mon, 23 Sep 2024 01:07:49 GMT foundInMaster: true v3_1: true @@ -874,7 +874,7 @@ repositoryId: 176074336 description: PDF generation from OpenAPI / Swagger Spec created: '2019-03-17T08:21:39Z' - updated: '2024-09-19T11:12:54Z' + updated: '2024-10-08T16:16:42Z' language: JavaScript archived: false stars: 281 @@ -883,8 +883,8 @@ owner: mrin9 logo: https://avatars.githubusercontent.com/u/5056899?v=4 license: MIT - repoEtag: '"84a0993488b26d2279ee4d76a57433c7cd9c2e9e845b1b1be2b989aec2b7b389"' - repoLastModified: Thu, 19 Sep 2024 11:12:54 GMT + repoEtag: '"a50a3882889702a64ead136151492e7c35264351b6a6b62755cd4046879bbfcc"' + repoLastModified: Tue, 08 Oct 2024 16:16:42 GMT foundInMaster: true id: 614c2b5cc8e9e45d47072d21fa7d607f - source: https://openapi.tools/ @@ -1026,26 +1026,26 @@ v3: true repositoryMetadata: base64Readme: >- - 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 + 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/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQoKIyMgT3ZlcnZpZXcKCk9wZW5BUEkgR2VuZXJhdG9yIGFsbG93cyBnZW5lcmF0aW9uIG9mIEFQSSBjbGllbnQgbGlicmFyaWVzIChTREsgZ2VuZXJhdGlvbiksIHNlcnZlciBzdHVicywgIGRvY3VtZW50YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gYXV0b21hdGljYWxseSBnaXZlbiBhbiBbT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikgKGJvdGggMi4wIGFuZCAzLjAgYXJlIHN1cHBvcnRlZCkuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBsYW5ndWFnZXMvZnJhbWV3b3JrcyBhcmUgc3VwcG9ydGVkOgoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbmd1YWdlcy9GcmFtZXdvcmtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICoqQVBJIGNsaWVudHMqKiAgICAgICAgICAgICAgICAgIHwgKipBY3Rpb25TY3JpcHQqKiwgKipBZGEqKiwgKipBcGV4KiosICoqQmFzaCoqLCAqKkMqKiwgKipDIyoqICgubmV0IDIuMCwgMy41IG9yIGxhdGVyLCAuTkVUIFN0YW5kYXJkIDEuMyAtIDIuMSwgLk5FVCBDb3JlIDMuMSwgLk5FVCA1LjAuIExpYnJhcmllczogUmVzdFNoYXJwLCBHZW5lcmljSG9zdCwgSHR0cENsaWVudCksICoqQysrKiogKEFyZHVpbm8sIGNwcC1yZXN0c2RrLCBRdDUsIFRpemVuLCBVbnJlYWwgRW5naW5lIDQpLCAqKkNsb2p1cmUqKiwgKipDcnlzdGFsKiosICoqRGFydCoqLCAqKkVsaXhpcioqLCAqKkVsbSoqLCAqKkVpZmZlbCoqLCAqKkVybGFuZyoqLCAqKkdvKiosICoqR3Jvb3Z5KiosICoqSGFza2VsbCoqIChodHRwLWNsaWVudCwgU2VydmFudCksICoqSmF2YSoqIChBcGFjaGUgSHR0cENsaWVudCA0LngsIEFwYWNoZSBIdHRwQ2xpZW50IDUueCwgSmVyc2V5Mi54LCBPa0h0dHAsIFJldHJvZml0MS54LCBSZXRyb2ZpdDIueCwgRmVpZ24sIFJlc3RUZW1wbGF0ZSwgUkVTVEVhc3ksIFZlcnR4LCBHb29nbGUgQVBJIENsaWVudCBMaWJyYXJ5IGZvciBKYXZhLCBSZXN0LWFzc3VyZWQsIFNwcmluZyA1IFdlYiBDbGllbnQsIFNwcmluZyA2IFJlc3RDbGllbnQsIE1pY3JvUHJvZmlsZSBSZXN0IENsaWVudCwgSGVsaWRvbiksICoqSmV0YnJhaW5zIEhUVFAgQ2xpZW50KiosICoqSnVsaWEqKiwgKiprNioqLCAqKktvdGxpbioqLCAqKkx1YSoqLCAqKk40SlMqKiwgKipOaW0qKiwgKipOb2RlLmpzL0phdmFTY3JpcHQqKiAoRVM1LCBFUzYsIEFuZ3VsYXJKUyB3aXRoIEdvb2dsZSBDbG9zdXJlIENvbXBpbGVyIGFubm90YXRpb25zLCBGbG93IHR5cGVzLCBBcG9sbG8gR3JhcGhRTCBEYXRhU3RvcmUpLCAqKk9iamVjdGl2ZS1DKiosICoqT0NhbWwqKiwgKipQZXJsKiosICoqUEhQKiosICoqUG93ZXJTaGVsbCoqLCAqKlB5dGhvbioqLCAqKlIqKiwgKipSdWJ5KiosICoqUnVzdCoqIChoeXBlciwgcmVxd2VzdCwgcnVzdC1zZXJ2ZXIpLCAqKlNjYWxhKiogKGFra2EsIGh0dHA0cywgc2NhbGF6LCBzdHRwLCBzd2FnZ2VyLWFzeW5jLWh0dHBjbGllbnQsIHBla2tvKSwgKipTd2lmdCoqICgyLngsIDMueCwgNC54LCA1LngsIDYueCksICoqVHlwZXNjcmlwdCoqIChBbmd1bGFySlMsIEFuZ3VsYXIgKDkueCAtIDE4LngpLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgalF1ZXJ5LCBOZXN0anMsIE5vZGUsIHJlZHV4LXF1ZXJ5LCBSeGpzKSwgKipYb0pvKiosICoqWmFwaWVyKiogfAp8ICoqU2VydmVyIHN0dWJzKiogICAgICAgICAgICAgICAgIHwgKipBZGEqKiwgKipDIyoqIChBU1AuTkVUIENvcmUsIEF6dXJlIEZ1bmN0aW9ucyksICoqQysrKiogKFBpc3RhY2hlLCBSZXN0YmVkLCBRdDUgUUhUVFBFbmdpbmUpLCAqKkVybGFuZyoqLCAqKkYjKiogKEdpcmFmZmUpLCAqKkdvKiogKG5ldC9odHRwLCBHaW4sIEVjaG8pLCAqKkhhc2tlbGwqKiAoU2VydmFudCwgWWVzb2QpLCAqKkphdmEqKiAoTVNGNEosIFNwcmluZywgVW5kZXJ0b3csIEpBWC1SUzogQ0RJLCBDWEYsIEluZmxlY3RvciwgSmVyc2V5LCBSZXN0RWFzeSwgUGxheSBGcmFtZXdvcmssIFtQS01TVF0oaHR0cHM6Ly9naXRodWIuY29tL1Byb0thcm1hLUluYy9wa21zdC1nZXR0aW5nLXN0YXJ0ZWQtZXhhbXBsZXMpLCBbVmVydC54XShodHRwczovL3ZlcnR4LmlvLyksIFtBcGFjaGUgQ2FtZWxdKGh0dHBzOi8vY2FtZWwuYXBhY2hlLm9yZy8pLCBbSGVsaWRvbl0oaHR0cHM6Ly9oZWxpZG9uLmlvLykpLCAqKkp1bGlhKiosICoqS290bGluKiogKFNwcmluZyBCb290LCBbS3Rvcl0oaHR0cHM6Ly9naXRodWIuY29tL2t0b3Jpby9rdG9yKSwgW1ZlcnQueF0oaHR0cHM6Ly92ZXJ0eC5pby8pKSwgKipQSFAqKiAoW0ZsaWdodF0oaHR0cHM6Ly9kb2NzLmZsaWdodHBocC5jb20vKSwgTGFyYXZlbCwgTHVtZW4sIFtNZXp6aW8gKGZrYSBaZW5kIEV4cHJlc3NpdmUpXShodHRwczovL2dpdGh1Yi5jb20vbWV6emlvL21lenppbyksIFNsaW0sIFNpbGV4LCBbU3ltZm9ueV0oaHR0cHM6Ly9zeW1mb255LmNvbS8pKSwgKipQeXRob24qKiAoRmFzdEFQSSwgRmxhc2spLCAqKk5vZGVKUyoqLCAqKlJ1YnkqKiAoU2luYXRyYSwgUmFpbHM1KSwgKipSdXN0KiogKFtydXN0LXNlcnZlcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvZ2VuZXJhdG9ycy9ydXN0LXNlcnZlci8pKSwgKipTY2FsYSoqIChBa2thLCBbRmluY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5hZ2xlL2ZpbmNoKSwgW0xhZ29tXShodHRwczovL2dpdGh1Yi5jb20vbGFnb20vbGFnb20pLCBbUGxheV0oaHR0cHM6Ly93d3cucGxheWZyYW1ld29yay5jb20vKSwgW0Nhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb20tbGloYW95aS9jYXNrKSwgU2NhbGF0cmEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKkFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcnMqKiB8ICoqSFRNTCoqLCAqKkNvbmZsdWVuY2UgV2lraSoqLCAqKkFzY2lpZG9jKiosICoqTWFya2Rvd24qKiwgKipQbGFudFVNTCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipDb25maWd1cmF0aW9uIGZpbGVzKiogICAgICAgICAgfCBbKipBcGFjaGUyKipdKGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqT3RoZXJzKiogICAgICAgICAgICAgICAgICAgICAgIHwgKipHcmFwaFFMKiosICoqSk1ldGVyKiosICoqS3Rvcm0qKiwgKipNeVNRTCBTY2hlbWEqKiwgKipQb3N0bWFuIENvbGxlY3Rpb24qKiwgKipQcm90b2NvbCBCdWZmZXIqKiwgKipXU0RMKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgogIC0gW09wZW5BUEkgR2VuZXJhdG9yXSgjb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbT3ZlcnZpZXddKCNvdmVydmlldykKICAtIFtUYWJsZSBvZiBDb250ZW50c10oI3RhYmxlLW9mLWNvbnRlbnRzKQogIC0gWzEgLSBJbnN0YWxsYXRpb25dKCMxLS0taW5zdGFsbGF0aW9uKQogICAgLSBbMS4xIC0gQ29tcGF0aWJpbGl0eV0oIzExLS0tY29tcGF0aWJpbGl0eSkKICAgIC0gWzEuMiAtIEFydGlmYWN0cyBvbiBNYXZlbiBDZW50cmFsXSgjMTItLS1hcnRpZmFjdHMtb24tbWF2ZW4tY2VudHJhbCkKICAgIC0gWzEuMyAtIERvd25sb2FkIEpBUl0oIzEzLS0tZG93bmxvYWQtamFyKQogICAgLSBbMS40IC0gQnVpbGQgUHJvamVjdHNdKCMxNC0tLWJ1aWxkLXByb2plY3RzKQogICAgLSBbMS41IC0gSG9tZWJyZXddKCMxNS0tLWhvbWVicmV3KQogICAgLSBbMS42IC0gRG9ja2VyXSgjMTYtLS1kb2NrZXIpCiAgICAtIFsxLjcgLSBOUE1dKCMxNy0tLW5wbSkKICAtIFsyIC0gR2V0dGluZyBTdGFydGVkXSgjMi0tLWdldHRpbmctc3RhcnRlZCkKICAtIFszIC0gVXNhZ2VdKCMzLS0tdXNhZ2UpCiAgICAtIFszLjEgLSBDdXN0b21pemF0aW9uXSgjMzEtLS1jdXN0b21pemF0aW9uKQogICAgLSBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb25dKCMzMi0tLXdvcmtmbG93LWludGVncmF0aW9uLW1hdmVuLWdyYWRsZS1naXRodWItY2ljZCkKICAgIC0gWzMuMyAtIE9ubGluZSBHZW5lcmF0b3JzXSgjMzMtLS1vbmxpbmUtb3BlbmFwaS1nZW5lcmF0b3IpCiAgICAtIFszLjQgLSBMaWNlbnNlIEluZm9ybWF0aW9uIG9uIEdlbmVyYXRlZCBDb2RlXSgjMzQtLS1saWNlbnNlLWluZm9ybWF0aW9uLW9uLWdlbmVyYXRlZC1jb2RlKQogICAgLSBbMy41IC0gSURFIEludGVncmF0aW9uXSgjMzUtLS1pZGUtaW50ZWdyYXRpb24pCiAgLSBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oIzQtLS1jb21wYW5pZXNwcm9qZWN0cy11c2luZy1vcGVuYXBpLWdlbmVyYXRvcikKICAtIFs1IC0gUHJlc2VudGF0aW9ucy9WaWRlb3MvVHV0b3JpYWxzL0Jvb2tzXSgjNS0tLXByZXNlbnRhdGlvbnN2aWRlb3N0dXRvcmlhbHNib29rcykKICAtIFs2IC0gQWJvdXQgVXNdKCM2LS0tYWJvdXQtdXMpCiAgICAtIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCM2MS0tLW9wZW5hcGktZ2VuZXJhdG9yLWNvcmUtdGVhbSkKICAgIC0gWzYuMiAtIE9wZW5BUEkgR2VuZXJhdG9yIFRlY2huaWNhbCBDb21taXR0ZWVdKCM2Mi0tLW9wZW5hcGktZ2VuZXJhdG9yLXRlY2huaWNhbC1jb21taXR0ZWUpCiAgICAtIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjNjMtLS1oaXN0b3J5LW9mLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzcgLSBMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpCgojIyBbMSAtIEluc3RhbGxhdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjdGFibGUtb2YtY29udGVudHMpCgpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyB1bmRlcmdvbmUgMyByZXZpc2lvbnMgc2luY2UgaW5pdGlhbCBjcmVhdGlvbiBpbiAyMDEwLiAgVGhlIG9wZW5hcGktZ2VuZXJhdG9yIHByb2plY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJpbGl0aWVzIHdpdGggdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKCnwgT3BlbkFQSSBHZW5lcmF0b3IgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVsZWFzZSBEYXRlIHwgTm90ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgNy4xMC4wICh1cGNvbWluZyBtaW5vciByZWxlYXNlKSBbU05BUFNIT1RdKGh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZy9jb250ZW50L3JlcG9zaXRvcmllcy9zbmFwc2hvdHMvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy4xMC4wLVNOQVBTSE9ULykgfCAwNy4xMS4yMDI0ICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs3LjkuMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuOS4wKSAobGF0ZXN0IHN0YWJsZSByZWxlYXNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA3LjEwLjIwMjQgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzcuOC4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ny44LjApIChsYXRlc3Qgc3RhYmxlIHJlbGVhc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkuMDguMjAyNCAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNi42LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y2LjYuMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMS4wNS4yMDIzICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs1LjQuMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjUuNC4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMxLjAxLjIwMjIgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzQuMy4xXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92NC4zLjEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMDYuMDUuMjAyMCAgIHwgUGF0Y2ggcmVsZWFzZSAoZW5oYW5jZW1lbnRzLCBidWcgZml4ZXMsIGV0YykgICAgICAgICAgICAgICAgICAgICAgIHwKCk9wZW5BUEkgU3BlYyBjb21wYXRpYmlsaXR5OiAxLjAsIDEuMSwgMS4yLCAyLjAsIDMuMCwgMy4xIChiZXRhIHN1cHBvcnQpCgooV2UgZG8gbm90IHB1Ymxpc2ggZGFpbHkvbmlnaHRseSBidWlsZC4gUGxlYXNlIHVzZSBTTkFQU0hPVCBpbnN0ZWFkKQoKRm9yIG9sZCByZWxlYXNlcywgcGxlYXNlIHJlZmVyIHRvIHRoZSBbKipSZWxlYXNlKipdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMpIHBhZ2UuCgpGb3IgZGVjb21pc3Npb25lZCBnZW5lcmF0b3JzL2xpYnJhcmllcy9mcmFtZXdvcmtzLCBwbGVhc2UgcmVmZXIgdG8gW3RoZSAiRGVjb21taXNzaW9uIiBsYWJlbF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXM/cT1sYWJlbCUzQURlY29tbWlzc2lvbitpcyUzQW1lcmdlZCspIGluIHRoZSBwdWxsIHJlcXVlc3QgcGFnZS4KCiMjIFsxLjIgLSBBcnRpZmFjdHMgb24gTWF2ZW4gQ2VudHJhbF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKWW91IGNhbiBmaW5kIG91ciByZWxlYXNlZCBhcnRpZmFjdHMgb24gbWF2ZW4gY2VudHJhbDoKCioqQ29yZToqKgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1nZW5lcmF0b3I8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYApTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCgoqKkNsaToqKgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1nZW5lcmF0b3ItY2xpPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvci1jbGldKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCgoqKk1hdmVuIHBsdWdpbjoqKgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKKiBTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KKiBbUmVhZG1lXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCkKCioqR3JhZGxlIHBsdWdpbjoqKgpgYGB4bWwKPGRlcGVuZGVuY3k+CiAgICA8Z3JvdXBJZD5vcmcub3BlbmFwaXRvb2xzPC9ncm91cElkPgogICAgPGFydGlmYWN0SWQ+b3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCiogU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KKiBbUmVhZG1lXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2Jsb2IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbi9SRUFETUUuYWRvYykKCiMjIyBbMS4zIC0gRG93bmxvYWQgSkFSXSgjdGFibGUtb2YtY29udGVudHMpCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpJZiB5b3UncmUgbG9va2luZyBmb3IgdGhlIGxhdGVzdCBzdGFibGUgdmVyc2lvbiwgeW91IGNhbiBncmFiIGl0IGRpcmVjdGx5IGZyb20gTWF2ZW4ub3JnIChKYXZhIDExIHJ1bnRpbWUgYXQgYSBtaW5pbXVtKToKCkpBUiBsb2NhdGlvbjogYGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjkuMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy45LjAuamFyYAoKRm9yICoqTWFjL0xpbnV4KiogdXNlcnM6CmBgYHNoCndnZXQgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOS4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjkuMC5qYXIgLU8gb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphcgpgYGAKCkZvciAqKldpbmRvd3MqKiB1c2VycywgeW91IHdpbGwgbmVlZCB0byBpbnN0YWxsIFt3Z2V0XShodHRwOi8vZ251d2luMzIuc291cmNlZm9yZ2UubmV0L3BhY2thZ2VzL3dnZXQuaHRtKSBvciB5b3UgY2FuIHVzZSBJbnZva2UtV2ViUmVxdWVzdCBpbiBQb3dlclNoZWxsICgzLjArKSwgZS5nLgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLU91dEZpbGUgb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy45LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOS4wLmphcgpgYGAKCkFmdGVyIGRvd25sb2FkaW5nIHRoZSBKQVIsIHJ1biBgamF2YSAtamFyIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgaGVscGAgdG8gc2hvdyB0aGUgdXNhZ2UuCgpGb3IgTWFjIHVzZXJzLCBwbGVhc2UgbWFrZSBzdXJlIEphdmEgMTEgaXMgaW5zdGFsbGVkIChUaXBzOiBydW4gYGphdmEgLXZlcnNpb25gIHRvIGNoZWNrIHRoZSB2ZXJzaW9uKSwgYW5kIGV4cG9ydCBgSkFWQV9IT01FYCBpbiBvcmRlciB0byB1c2UgdGhlIHN1cHBvcnRlZCBKYXZhIHZlcnNpb246CmBgYHNoCmV4cG9ydCBKQVZBX0hPTUU9YC91c3IvbGliZXhlYy9qYXZhX2hvbWUgLXYgMS4xMWAKZXhwb3J0IFBBVEg9JHtKQVZBX0hPTUV9L2JpbjokUEFUSApgYGAKCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KIyMjIExhdW5jaGVyIFNjcmlwdAoKT25lIGRvd25zaWRlIHRvIG1hbnVhbCBqYXIgZG93bmxvYWRzIGlzIHRoYXQgeW91IGRvbid0IGtlZXAgdXAtdG8tZGF0ZSB3aXRoIHRoZSBsYXRlc3QgcmVsZWFzZWQgdmVyc2lvbi4gV2UgaGF2ZSBhIEJhc2ggbGF1bmNoZXIgc2NyaXB0IGF0IFtiaW4vdXRpbHMvb3BlbmFwaS1nZW5lcmF0b3IuY2xpLnNoXSguL2Jpbi91dGlscy9vcGVuYXBpLWdlbmVyYXRvci1jbGkuc2gpIHdoaWNoIHJlc29sdmVzIHRoaXMgaXNzdWUuCgpUbyBpbnN0YWxsIHRoZSBsYXVuY2hlciBzY3JpcHQsIGNvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBzY3JpcHQgdG8gYSBsb2NhdGlvbiBvbiB5b3VyIHBhdGggYW5kIG1ha2UgdGhlIHNjcmlwdCBleGVjdXRhYmxlLgoKQW4gZXhhbXBsZSBvZiBzZXR0aW5nIHRoaXMgdXAgKE5PVEU6IEFsd2F5cyBldmFsdWF0ZSBzY3JpcHRzIGN1cmxlZCBmcm9tIGV4dGVybmFsIHN5c3RlbXMgYmVmb3JlIGV4ZWN1dGluZyB0aGVtKS4KCmBgYApta2RpciAtcCB+L2Jpbi9vcGVuYXBpdG9vbHMKY3VybCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9iaW4vdXRpbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLnNoID4gfi9iaW4vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaQpjaG1vZCB1K3ggfi9iaW4vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaQpleHBvcnQgUEFUSD0kUEFUSDp+L2Jpbi9vcGVuYXBpdG9vbHMvCmBgYAoKTm93LCBgb3BlbmFwaS1nZW5lcmF0b3ItY2xpYCBpcyAiaW5zdGFsbGVkIi4gT24gaW52b2NhdGlvbiwgaXQgd2lsbCBxdWVyeSB0aGUgR2l0SHViIHJlcG9zaXRvcnkgZm9yIHRoZSBtb3N0IHJlY2VudGx5IHJlbGVhc2VkIHZlcnNpb24uIElmIHRoaXMgbWF0Y2hlcyB0aGUgbGFzdCBkb3dubG9hZGVkIGphciwKaXQgd2lsbCBleGVjdXRlIGFzIG5vcm1hbC4gSWYgYSBuZXdlciB2ZXJzaW9uIGlzIGZvdW5kLCB0aGUgc2NyaXB0IHdpbGwgZG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlIGFuZCBleGVjdXRlIGl0LgoKSWYgeW91IG5lZWQgdG8gaW52b2tlIGFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIGdlbmVyYXRvciwgeW91IGNhbiBkZWZpbmUgdGhlIHZhcmlhYmxlIGBPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OYCBlaXRoZXIgYWQgaG9jIG9yIGdsb2JhbGx5LiBZb3UgY2FuIGV4cG9ydCB0aGlzIHZhcmlhYmxlIGlmIHlvdSdkIGxpa2UgdG8gcGVyc2lzdCBhIHNwZWNpZmljIHJlbGVhc2UgdmVyc2lvbi4KCkV4YW1wbGVzOgoKYGBgCiMgRXhlY3V0ZSBsYXRlc3QgcmVsZWFzZWQgb3BlbmFwaS1nZW5lcmF0b3ItY2xpCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCgojIEV4ZWN1dGUgdmVyc2lvbiA0LjEuMCBmb3IgdGhlIGN1cnJlbnQgaW52b2NhdGlvbiwgcmVnYXJkbGVzcyBvZiB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24KT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTj00LjEuMCBvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgoKIyBFeGVjdXRlIHZlcnNpb24gNC4xLjAtU05BUFNIT1QgZm9yIHRoZSBjdXJyZW50IGludm9jYXRpb24KT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTj00LjEuMC1TTkFQU0hPVCBvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgoKIyBFeGVjdXRlIHZlcnNpb24gNC4wLjIgZm9yIGV2ZXJ5IGludm9jYXRpb24gaW4gdGhlIGN1cnJlbnQgc2hlbGwgc2Vzc2lvbgpleHBvcnQgT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTj00LjAuMgpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIDQuMC4yCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgYWxzbyA0LjAuMgoKIyBUbyAiaW5zdGFsbCIgYSBzcGVjaWZpYyB2ZXJzaW9uLCBzZXQgdGhlIHZhcmlhYmxlIGluIC5iYXNocmMvLmJhc2hfcHJvZmlsZQplY2hvICJleHBvcnQgT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTj00LjAuMiIgPj4gfi8uYmFzaHJjCnNvdXJjZSB+Ly5iYXNocmMKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyBhbHdheXMgNC4wLjIsIHVubGVzcyBhbnkgb2YgdGhlIGFib3ZlIG92ZXJyaWRlcyBhcmUgZG9uZSBhZCBob2MKYGBgCgojIyMgWzEuNCAtIEJ1aWxkIFByb2plY3RzXSgjdGFibGUtb2YtY29udGVudHMpCgpUbyBidWlsZCBmcm9tIHNvdXJjZSwgeW91IG5lZWQgdGhlIGZvbGxvd2luZyBpbnN0YWxsZWQgYW5kIGF2YWlsYWJsZSBpbiB5b3VyIGAkUEFUSDpgCgoqIFtKYXZhIDExXShodHRwczovL2Fkb3B0aXVtLm5ldC8pCgoqIFtBcGFjaGUgTWF2ZW4gMy44Ljggb3IgZ3JlYXRlcl0oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnLykgKG9wdGlvbmFsKQoKQWZ0ZXIgY2xvbmluZyB0aGUgcHJvamVjdCwgeW91IGNhbiBidWlsZCBpdCBmcm9tIHNvdXJjZSB1c2luZyBbbWF2ZW4gd3JhcHBlcl0oaHR0cHM6Ly9tYXZlbi5hcGFjaGUub3JnL3dyYXBwZXIvKToKCi0gTGludXg6IGAuL212bncgY2xlYW4gaW5zdGFsbGAKLSBXaW5kb3dzOiBgbXZudy5jbWQgY2xlYW4gaW5zdGFsbGAKCiMjIyMgTml4IHVzZXJzCgpJZiB5b3UncmUgYSBuaXggdXNlciwgeW91IGNhbiBlbnRlciBPcGVuQVBJIEdlbmVyYXRvciBzaGVsbCwgYnkgdHlwaW5nOgpgYGBzaApuaXggZGV2ZWxvcApgYGAKSXQgd2lsbCBlbnRlciBhIHNoZWxsIHdpdGggSmF2YSAxMSBpbnN0YWxsZWQuCgpEaXJlbnYgc3VwcG9ydHMgYXV0b21hdGljYWxseSBsb2FkaW5nIG9mIHRoZSBuaXggZGV2ZWxvcGVyIHNoZWxsLCBzbyBpZiB5b3UncmUgdXNpbmcgZGlyZW52IHRvbywgdHlwZToKYGBgc2gKZGlyZW52IGFsbG93CmBgYAphbmQgaGF2ZSBgamF2YWAgYW5kIGBtdm5gIHNldCB1cCB3aXRoIGNvcnJlY3QgdmVyc2lvbnMgZWFjaCB0aW1lIHlvdSBlbnRlciBwcm9qZWN0IGRpcmVjdG9yeS4KClRoZSBkZWZhdWx0IGJ1aWxkIGNvbnRhaW5zIG1pbmltYWwgc3RhdGljIGFuYWx5c2lzICh2aWEgQ2hlY2tTdHlsZSkuIFRvIHJ1biB5b3VyIGJ1aWxkIHdpdGggUE1EIGFuZCBTcG90YnVncywgdXNlIHRoZSBgc3RhdGljLWFuYWx5c2lzYCBwcm9maWxlOgoKLSBMaW51eDogYC4vbXZudyAtUHN0YXRpYy1hbmFseXNpcyBjbGVhbiBpbnN0YWxsYAotIFdpbmRvd3M6IGBtdm53LmNtZCAtUHN0YXRpYy1hbmFseXNpcyBjbGVhbiBpbnN0YWxsYAoKIyMjIFsxLjUgLSBIb21lYnJld10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gaW5zdGFsbCwgcnVuIGBicmV3IGluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3JgCgpIZXJlIGlzIGFuIGV4YW1wbGUgdXNhZ2UgdG8gZ2VuZXJhdGUgYSBSdWJ5IGNsaWVudDoKYGBgc2gKb3BlbmFwaS1nZW5lcmF0b3IgZ2VuZXJhdGUgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgLWcgcnVieSAtbyAvdG1wL3Rlc3QvCmBgYAoKVG8gcmVpbnN0YWxsIHdpdGggdGhlIGxhdGVzdCBtYXN0ZXIsIHJ1biBgYnJldyB1bmluc3RhbGwgb3BlbmFwaS1nZW5lcmF0b3IgJiYgYnJldyBpbnN0YWxsIC0tSEVBRCBvcGVuYXBpLWdlbmVyYXRvcmAKClRvIGluc3RhbGwgT3BlbkpESyAocHJlLXJlcXVpc2l0ZXMpLCBwbGVhc2UgcnVuCmBgYHNoCmJyZXcgdGFwIEFkb3B0T3BlbkpESy9vcGVuamRrCmJyZXcgaW5zdGFsbCAtLWNhc2sgYWRvcHRvcGVuamRrMTEKZXhwb3J0IEpBVkFfSE9NRT1gL3Vzci9saWJleGVjL2phdmFfaG9tZSAtdiAxLjExYApgYGAKCm9yIGRvd25sb2FkIGluc3RhbGxlciB2aWEgaHR0cHM6Ly9hZG9wdGl1bS5uZXQvCgpUbyBpbnN0YWxsIE1hdmVuIChvcHRpb25hbCksIHBsZWFzZSBydW4KYGBgc2gKYnJldyBpbnN0YWxsIG1hdmVuCmBgYAoKIyMjIFsxLjYgLSBEb2NrZXJdKCN0YWJsZS1vZi1jb250ZW50cykKCiMjIyMgUHVibGljIFByZS1idWlsdCBEb2NrZXIgaW1hZ2VzCgogLSBbaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS8pIChvZmZpY2lhbCBDTEkpCiAtIFtodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW9ubGluZS9dKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lLykgKG9mZmljaWFsIHdlYiBzZXJ2aWNlKQoKCiMjIyMgT3BlbkFQSSBHZW5lcmF0b3IgQ0xJIERvY2tlciBJbWFnZQoKVGhlIE9wZW5BUEkgR2VuZXJhdG9yIGltYWdlIGFjdHMgYXMgYSBzdGFuZGFsb25lIGV4ZWN1dGFibGUuIEl0IGNhbiBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGluc3RhbGxpbmcgdmlhIGhvbWVicmV3LCBvciBmb3IgZGV2ZWxvcGVycyB3aG8gYXJlIHVuYWJsZSB0byBpbnN0YWxsIEphdmEgb3IgdXBncmFkZSB0aGUgaW5zdGFsbGVkIHZlcnNpb24uCgpUbyBnZW5lcmF0ZSBjb2RlIHdpdGggdGhpcyBpbWFnZSwgeW91J2xsIG5lZWQgdG8gbW91bnQgYSBsb2NhbCBsb2NhdGlvbiBhcyBhIHZvbHVtZS4KCkV4YW1wbGU6CgpgYGBzaApkb2NrZXIgcnVuIC0tcm0gLXYgIiR7UFdEfTovbG9jYWwiIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgXAogICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAgLWcgZ28gXAogICAgLW8gL2xvY2FsL291dC9nbwpgYGAKClRoZSBnZW5lcmF0ZWQgY29kZSB3aWxsIGJlIGxvY2F0ZWQgdW5kZXIgYC4vb3V0L2dvYCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgojIyMjIE9wZW5BUEkgR2VuZXJhdG9yIE9ubGluZSBEb2NrZXIgSW1hZ2UKClRoZSBvcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUgaW1hZ2UgY2FuIGFjdCBhcyBhIHNlbGYtaG9zdGVkIHdlYiBhcHBsaWNhdGlvbiBhbmQgQVBJIGZvciBnZW5lcmF0aW5nIGNvZGUuIFRoaXMgY29udGFpbmVyIGNhbiBiZSBpbmNvcnBvcmF0ZWQgaW50byBhIENJIHBpcGVsaW5lLCBhbmQgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIEhUVFAgcmVxdWVzdHMgYW5kIHNvbWUgZG9ja2VyIG9yY2hlc3RyYXRpb24gdG8gYWNjZXNzIGdlbmVyYXRlZCBjb2RlLgoKRXhhbXBsZSB1c2FnZToKCmBgYHNoCiMgU3RhcnQgY29udGFpbmVyIGF0IHBvcnQgODg4OCBhbmQgc2F2ZSB0aGUgY29udGFpbmVyIGlkCj4gQ0lEPSQoZG9ja2VyIHJ1biAtZCAtcCA4ODg4OjgwODAgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW9ubGluZSkKCiMgYWxsb3cgZm9yIHN0YXJ0dXAKPiBzbGVlcCAxMAoKIyBHZXQgdGhlIElQIG9mIHRoZSBydW5uaW5nIGNvbnRhaW5lciAob3B0aW9uYWwpCkdFTl9JUD0kKGRvY2tlciBpbnNwZWN0IC0tZm9ybWF0ICd7ey5OZXR3b3JrU2V0dGluZ3MuSVBBZGRyZXNzfX0nICAkQ0lEKQoKIyBFeGVjdXRlIGFuIEhUVFAgcmVxdWVzdCB0byBnZW5lcmF0ZSBhIFJ1YnkgY2xpZW50Cj4gY3VybCAtWCBQT1NUIC0taGVhZGVyICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nIC0taGVhZGVyICdBY2NlcHQ6IGFwcGxpY2F0aW9uL2pzb24nIFwKLWQgJ3sib3BlbkFQSVVybCI6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCJ9JyBcCidodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpL2dlbi9jbGllbnRzL3J1YnknCgp7ImNvZGUiOiJjMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgiLCJsaW5rIjoiaHR0cDovL2xvY2FsaG9zdDo4ODg4L2FwaS9nZW4vZG93bmxvYWQvYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4In0KCiMgRG93bmxvYWQgdGhlIGdlbmVyYXRlZCB6aXAgZmlsZQo+IHdnZXQgaHR0cDovL2xvY2FsaG9zdDo4ODg4L2FwaS9nZW4vZG93bmxvYWQvYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4CgojIFVuemlwIHRoZSBmaWxlCj4gdW56aXAgYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4CgojIFNodXRkb3duIHRoZSBvcGVuYXBpIGdlbmVyYXRvciBpbWFnZQo+IGRvY2tlciBzdG9wICRDSUQgJiYgZG9ja2VyIHJtICRDSUQKYGBgCgojIyMjIERldmVsb3BtZW50IGluIGRvY2tlcgoKWW91IGNhbiB1c2UgYHJ1bi1pbi1kb2NrZXIuc2hgIHRvIGRvIGFsbCBkZXZlbG9wbWVudC4gVGhpcyBzY3JpcHQgbWFwcyB5b3VyIGxvY2FsIHJlcG9zaXRvcnkgdG8gYC9nZW5gCmluIHRoZSBkb2NrZXIgY29udGFpbmVyLiBJdCBhbHNvIG1hcHMgYH4vLm0yL3JlcG9zaXRvcnlgIHRvIHRoZSBhcHByb3ByaWF0ZSBjb250YWluZXIgbG9jYXRpb24uCgpUbyBleGVjdXRlIGBtdm4gcGFja2FnZWA6CgpgYGBzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcgpjZCBvcGVuYXBpLWdlbmVyYXRvcgouL3J1bi1pbi1kb2NrZXIuc2ggbXZuIHBhY2thZ2UKYGBgCgpCdWlsZCBhcnRpZmFjdHMgYXJlIG5vdyBhY2Nlc3NpYmxlIGluIHlvdXIgd29ya2luZyBkaXJlY3RvcnkuCgpPbmNlIGJ1aWx0LCBgcnVuLWluLWRvY2tlci5zaGAgd2lsbCBhY3QgYXMgYW4gZXhlY3V0YWJsZSBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpLiBUbyBnZW5lcmF0ZSBjb2RlLCB5b3UnbGwgbmVlZCB0byBvdXRwdXQgdG8gYSBkaXJlY3RvcnkgdW5kZXIgYC9nZW5gIChlLmcuIGAvZ2VuL291dGApLiBGb3IgZXhhbXBsZToKCmBgYHNoCi4vcnVuLWluLWRvY2tlci5zaCBoZWxwICMgRXhlY3V0ZXMgJ2hlbHAnIGNvbW1hbmQgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQouL3J1bi1pbi1kb2NrZXIuc2ggbGlzdCAjIEV4ZWN1dGVzICdsaXN0JyBjb21tYW5kIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkKLi9ydW4taW4tZG9ja2VyLnNoIGdlbmVyYXRlIC1pIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIGdvIC1vIC9nZW4vb3V0L2dvLXBldHN0b3JlIC1wIHBhY2thZ2VOYW1lPXBldHN0b3JlICMgZ2VuZXJhdGVzIGdvIGNsaWVudCwgb3V0cHV0cyBsb2NhbGx5IHRvIC4vb3V0L2dvLXBldHN0b3JlCmBgYAoKIyMjIyMgVHJvdWJsZXNob290aW5nCgpJZiBhbiBlcnJvciBsaWtlIHRoaXMgb2NjdXJzLCBqdXN0IGV4ZWN1dGUgdGhlICoqLi9tdm53IGNsZWFuIGluc3RhbGwgLVUqKiBjb21tYW5kOgoKPiBvcmcuYXBhY2hlLm1hdmVuLmxpZmVjeWNsZS5MaWZlY3ljbGVFeGVjdXRpb25FeGNlcHRpb246IEZhaWxlZCB0byBleGVjdXRlIGdvYWwgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zOm1hdmVuLXN1cmVmaXJlLXBsdWdpbjoyLjE5LjE6dGVzdCAoZGVmYXVsdC10ZXN0KSBvbiBwcm9qZWN0IG9wZW5hcGktZ2VuZXJhdG9yOiBBIHR5cGUgaW5jb21wYXRpYmlsaXR5IG9jY3VycmVkIHdoaWxlIGV4ZWN1dGluZyBvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM6bWF2ZW4tc3VyZWZpcmUtcGx1Z2luOjIuMTkuMTp0ZXN0OiBqYXZhLmxhbmcuRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yIGNhbm5vdCBiZSBjYXN0IHRvIGphdmEuaW8uSU9FeGNlcHRpb24KCmBgYHNoCi4vcnVuLWluLWRvY2tlci5zaCAuL212bncgY2xlYW4gaW5zdGFsbCAtVQpgYGAKCj4gRmFpbGVkIHRvIGV4ZWN1dGUgZ29hbCBvcmcuZm9ydGFzb2Z0OmdyYWRsZS1tYXZlbi1wbHVnaW46MS4wLjg6aW52b2tlIChkZWZhdWx0KSBvbiBwcm9qZWN0IG9wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4tbXZuLXdyYXBwZXI6IG9yZy5ncmFkbGUudG9vbGluZy5CdWlsZEV4Y2VwdGlvbjogQ291bGQgbm90IGV4ZWN1dGUgYnVpbGQgdXNpbmcgR3JhZGxlIGRpc3RyaWJ1dGlvbiAnaHR0cHM6Ly9zZXJ2aWNlcy5ncmFkbGUub3JnL2Rpc3RyaWJ1dGlvbnMvZ3JhZGxlLTQuNy1iaW4uemlwJwoKUmlnaHQgbm93OiBubyBzb2x1dGlvbiBmb3IgdGhpcyBvbmUgOnwKCiMjIyMgUnVuIERvY2tlciBpbiBWYWdyYW50ClByZXJlcXVpc2l0ZTogaW5zdGFsbCBbVmFncmFudF0oaHR0cHM6Ly93d3cudmFncmFudHVwLmNvbS9kb3dubG9hZHMuaHRtbCkgYW5kIFtWaXJ0dWFsQm94XShodHRwczovL3d3dy52aXJ0dWFsYm94Lm9yZy93aWtpL0Rvd25sb2FkcykuCiBgYGBzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci5naXQKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKdmFncmFudCB1cAp2YWdyYW50IHNzaApjZCAvdmFncmFudAouL3J1bi1pbi1kb2NrZXIuc2ggLi9tdm53IHBhY2thZ2UKYGBgCgojIyMgWzEuNyAtIE5QTV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVGhlcmUgaXMgYWxzbyBhbiBbTlBNIHBhY2thZ2Ugd3JhcHBlcl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIGF2YWlsYWJsZSBmb3IgZGlmZmVyZW50IHBsYXRmb3JtcyAoZS5nLiBMaW51eCwgTWFjLCBXaW5kb3dzKS4gKEpWTSBpcyBzdGlsbCByZXF1aXJlZCkKUGxlYXNlIHNlZSB0aGUgW3Byb2plY3QncyBSRUFETUVdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSB0aGVyZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCkluc3RhbGwgaXQgZ2xvYmFsbHkgdG8gZ2V0IHRoZSBDTEkgYXZhaWxhYmxlIG9uIHRoZSBjb21tYW5kIGxpbmU6CgpgYGBzaApucG0gaW5zdGFsbCBAb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSAtZwpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgpgYGAKCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpUbyB1c2UgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mICJvcGVuYXBpLWdlbmVyYXRvci1jbGkiCgpgYGBzaApvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbi1tYW5hZ2VyIHNldCA3LjkuMApgYGAKCk9yIGluc3RhbGwgaXQgYXMgZGV2LWRlcGVuZGVuY3k6CgpgYGBzaApucG0gaW5zdGFsbCBAb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSAtRApgYGAKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgoKWW91IGNhbiB1c2UgW2xvY2FsbHkgYnVpbHQgSkFSc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGk/dGFiPXJlYWRtZS1vdi1maWxlI3VzZS1sb2NhbGx5LWJ1aWx0LWphcikgb3IgW2BTTkFQU0hPVGAgdmVyc2lvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpP3RhYj1yZWFkbWUtb3YtZmlsZSN1c2UtbmlnaHRseS1zbmFwc2hvdC1idWlsZCkgYXMgd2VsbC4KCiMjIFsyIC0gR2V0dGluZyBTdGFydGVkXSgjdGFibGUtb2YtY29udGVudHMpCgpUbyBnZW5lcmF0ZSBhIFBIUCBjbGllbnQgZm9yIFtwZXRzdG9yZS55YW1sXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCksIHBsZWFzZSBydW4gdGhlIGZvbGxvd2luZwpgYGBzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcgpjZCBvcGVuYXBpLWdlbmVyYXRvcgouL212bncgY2xlYW4gcGFja2FnZQpqYXZhIC1qYXIgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdGFyZ2V0L29wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgXAogICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgIC1nIHBocCBcCiAgIC1vIC92YXIvdG1wL3BocF9hcGlfY2xpZW50CmBgYAooaWYgeW91J3JlIG9uIFdpbmRvd3MsIHJlcGxhY2UgdGhlIGxhc3QgY29tbWFuZCB3aXRoIGBqYXZhIC1qYXIgbW9kdWxlc1xvcGVuYXBpLWdlbmVyYXRvci1jbGlcdGFyZ2V0XG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgLWcgcGhwIC1vIGM6XHRlbXBccGhwX2FwaV9jbGllbnRgKQoKPCEtLSBSRUxFQVNFX1ZFUlNJT04gLS0+CllvdSBjYW4gYWxzbyBkb3dubG9hZCB0aGUgSkFSIChsYXRlc3QgcmVsZWFzZSkgZGlyZWN0bHkgZnJvbSBbbWF2ZW4ub3JnXShodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy45LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOS4wLmphcikKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgoKVG8gZ2V0IGEgbGlzdCBvZiAqKmdlbmVyYWwqKiBvcHRpb25zIGF2YWlsYWJsZSwgcGxlYXNlIHJ1biBgamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGhlbHAgZ2VuZXJhdGVgCgpUbyBnZXQgYSBsaXN0IG9mIFBIUCBzcGVjaWZpZWQgb3B0aW9ucyAod2hpY2ggY2FuIGJlIHBhc3NlZCB0byB0aGUgZ2VuZXJhdG9yIHdpdGggYSBjb25maWcgZmlsZSB2aWEgdGhlIGAtY2Agb3B0aW9uKSwgcGxlYXNlIHJ1biBgamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGNvbmZpZy1oZWxwIC1nIHBocGAKCiMjIFszIC0gVXNhZ2VdKCN0YWJsZS1vZi1jb250ZW50cykKCiMjIyBUbyBnZW5lcmF0ZSBhIHNhbXBsZSBjbGllbnQgbGlicmFyeQpZb3UgY2FuIGJ1aWxkIGEgY2xpZW50IGFnYWluc3QgdGhlIFtQZXRzdG9yZSBBUEldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sKSBhcyBmb2xsb3dzOgoKYGBgc2gKLi9iaW4vZ2VuZXJhdGUtc2FtcGxlcy5zaCAuL2Jpbi9jb25maWdzL2phdmEtb2todHRwLWdzb24ueWFtbApgYGAKCihPbiBXaW5kb3dzLCBwbGVhc2UgaW5zdGFsbCBbR0lUIEJhc2ggZm9yIFdpbmRvd3NdKGh0dHBzOi8vZ2l0Zm9yd2luZG93cy5vcmcvKSB0byBydW4gdGhlIGNvbW1hbmQgYWJvdmUpCgpUaGlzIHNjcmlwdCB1c2VzIHRoZSBkZWZhdWx0IGxpYnJhcnksIHdoaWNoIGlzIGBva2h0dHAtZ3NvbmAuIEl0IHdpbGwgcnVuIHRoZSBnZW5lcmF0b3Igd2l0aCB0aGlzIGNvbW1hbmQ6CgpgYGBzaApqYXZhIC1qYXIgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdGFyZ2V0L29wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgZ2VuZXJhdGUgXAogIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAtZyBqYXZhIFwKICAtdCBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy9tYWluL3Jlc291cmNlcy9KYXZhIFwKICAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyBhcnRpZmFjdElkPXBldHN0b3JlLW9raHR0cC1nc29uLGhpZGVHZW5lcmF0aW9uVGltZXN0YW1wPXRydWUgXAogIC1vIHNhbXBsZXMvY2xpZW50L3BldHN0b3JlL2phdmEvb2todHRwLWdzb24KYGBgCgp3aXRoIGEgbnVtYmVyIG9mIG9wdGlvbnMuIFtUaGUgamF2YSBvcHRpb25zIGFyZSBkb2N1bWVudGVkIGhlcmUuXShkb2NzL2dlbmVyYXRvcnMvamF2YS5tZCkKCllvdSBjYW4gYWxzbyBnZXQgdGhlIG9wdGlvbnMgd2l0aCB0aGUgYGhlbHAgZ2VuZXJhdGVgIGNvbW1hbmQgKGJlbG93IG9ubHkgc2hvd3MgcGFydGlhbCByZXN1bHRzKToKCmBgYApOQU1FCiAgICAgICAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIC0gR2VuZXJhdGUgY29kZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAgICBnZW5lcmF0b3IuCgpTWU5PUFNJUwogICAgICAgIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZQogICAgICAgICAgICAgICAgWygtYSA8YXV0aG9yaXphdGlvbj4gfCAtLWF1dGggPGF1dGhvcml6YXRpb24+KV0KICAgICAgICAgICAgICAgIFstLWFwaS1uYW1lLXN1ZmZpeCA8YXBpIG5hbWUgc3VmZml4Pl0gWy0tYXBpLXBhY2thZ2UgPGFwaSBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFstLWFydGlmYWN0LWlkIDxhcnRpZmFjdCBpZD5dIFstLWFydGlmYWN0LXZlcnNpb24gPGFydGlmYWN0IHZlcnNpb24+XQogICAgICAgICAgICAgICAgWygtYyA8Y29uZmlndXJhdGlvbiBmaWxlPiB8IC0tY29uZmlnIDxjb25maWd1cmF0aW9uIGZpbGU+KV0gWy0tZHJ5LXJ1bl0KICAgICAgICAgICAgICAgIFsoLWUgPHRlbXBsYXRpbmcgZW5naW5lPiB8IC0tZW5naW5lIDx0ZW1wbGF0aW5nIGVuZ2luZT4pXQogICAgICAgICAgICAgICAgWy0tZW5hYmxlLXBvc3QtcHJvY2Vzcy1maWxlXQogICAgICAgICAgICAgICAgWygtZyA8Z2VuZXJhdG9yIG5hbWU+IHwgLS1nZW5lcmF0b3ItbmFtZSA8Z2VuZXJhdG9yIG5hbWU+KV0KICAgICAgICAgICAgICAgIFstLWdlbmVyYXRlLWFsaWFzLWFzLW1vZGVsXSBbLS1naXQtaG9zdCA8Z2l0IGhvc3Q+XQogICAgICAgICAgICAgICAgWy0tZ2l0LXJlcG8taWQgPGdpdCByZXBvIGlkPl0gWy0tZ2l0LXVzZXItaWQgPGdpdCB1c2VyIGlkPl0KICAgICAgICAgICAgICAgIFstLWdsb2JhbC1wcm9wZXJ0eSA8Z2xvYmFsIHByb3BlcnRpZXM+Li4uXSBbLS1ncm91cC1pZCA8Z3JvdXAgaWQ+XQogICAgICAgICAgICAgICAgWy0taHR0cC11c2VyLWFnZW50IDxodHRwIHVzZXIgYWdlbnQ+XQogICAgICAgICAgICAgICAgWygtaSA8c3BlYyBmaWxlPiB8IC0taW5wdXQtc3BlYyA8c3BlYyBmaWxlPildCiAgICAgICAgICAgICAgICBbLS1pZ25vcmUtZmlsZS1vdmVycmlkZSA8aWdub3JlIGZpbGUgb3ZlcnJpZGUgbG9jYXRpb24+XQogICAgICAgICAgICAgICAgWy0taW1wb3J0LW1hcHBpbmdzIDxpbXBvcnQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWy0taW5zdGFudGlhdGlvbi10eXBlcyA8aW5zdGFudGlhdGlvbiB0eXBlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1pbnZva2VyLXBhY2thZ2UgPGludm9rZXIgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbLS1sYW5ndWFnZS1zcGVjaWZpYy1wcmltaXRpdmVzIDxsYW5ndWFnZSBzcGVjaWZpYyBwcmltaXRpdmVzPi4uLl0KICAgICAgICAgICAgICAgIFstLWxlZ2FjeS1kaXNjcmltaW5hdG9yLWJlaGF2aW9yXSBbLS1saWJyYXJ5IDxsaWJyYXJ5Pl0KICAgICAgICAgICAgICAgIFstLWxvZy10by1zdGRlcnJdIFstLW1pbmltYWwtdXBkYXRlXQogICAgICAgICAgICAgICAgWy0tbW9kZWwtbmFtZS1wcmVmaXggPG1vZGVsIG5hbWUgcHJlZml4Pl0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtc3VmZml4IDxtb2RlbCBuYW1lIHN1ZmZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1wYWNrYWdlIDxtb2RlbCBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFsoLW8gPG91dHB1dCBkaXJlY3Rvcnk+IHwgLS1vdXRwdXQgPG91dHB1dCBkaXJlY3Rvcnk+KV0gWygtcCA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPiB8IC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzIDxhZGRpdGlvbmFsIHByb3BlcnRpZXM+KS4uLl0KICAgICAgICAgICAgICAgIFstLXBhY2thZ2UtbmFtZSA8cGFja2FnZSBuYW1lPl0gWy0tcmVsZWFzZS1ub3RlIDxyZWxlYXNlIG5vdGU+XQogICAgICAgICAgICAgICAgWy0tcmVtb3ZlLW9wZXJhdGlvbi1pZC1wcmVmaXhdCiAgICAgICAgICAgICAgICBbLS1yZXNlcnZlZC13b3Jkcy1tYXBwaW5ncyA8cmVzZXJ2ZWQgd29yZCBtYXBwaW5ncz4uLi5dCiAgICAgICAgICAgICAgICBbKC1zIHwgLS1za2lwLW92ZXJ3cml0ZSldIFstLXNlcnZlci12YXJpYWJsZXMgPHNlcnZlciB2YXJpYWJsZXM+Li4uXQogICAgICAgICAgICAgICAgWy0tc2tpcC12YWxpZGF0ZS1zcGVjXSBbLS1zdHJpY3Qtc3BlYyA8dHJ1ZS9mYWxzZSBzdHJpY3QgYmVoYXZpb3I+XQogICAgICAgICAgICAgICAgWygtdCA8dGVtcGxhdGUgZGlyZWN0b3J5PiB8IC0tdGVtcGxhdGUtZGlyIDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+KV0KICAgICAgICAgICAgICAgIFstLXR5cGUtbWFwcGluZ3MgPHR5cGUgbWFwcGluZ3M+Li4uXSBbKC12IHwgLS12ZXJib3NlKV0KCk9QVElPTlMKICAgICAgICAtYSA8YXV0aG9yaXphdGlvbj4sIC0tYXV0aCA8YXV0aG9yaXphdGlvbj4KICAgICAgICAgICAgYWRkcyBhdXRob3JpemF0aW9uIGhlYWRlcnMgd2hlbiBmZXRjaGluZyB0aGUgT3BlbkFQSSBkZWZpbml0aW9ucwogICAgICAgICAgICByZW1vdGVseS4gUGFzcyBpbiBhIFVSTC1lbmNvZGVkIHN0cmluZyBvZiBuYW1lOmhlYWRlciB3aXRoIGEgY29tbWEKICAgICAgICAgICAgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMKCi4uLi4uLiAocmVzdWx0cyBvbWl0dGVkKQoKICAgICAgICAtdiwgLS12ZXJib3NlCiAgICAgICAgICAgIHZlcmJvc2UgbW9kZQoKYGBgCgpZb3UgY2FuIHRoZW4gY29tcGlsZSBhbmQgcnVuIHRoZSBjbGllbnQsIGFzIHdlbGwgYXMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGl0OgoKYGBgc2gKY2Qgc2FtcGxlcy9jbGllbnQvcGV0c3RvcmUvamF2YS9va2h0dHAtZ3Nvbgptdm4gcGFja2FnZQpgYGAKCk90aGVyIGdlbmVyYXRvcnMgaGF2ZSBbc2FtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci90cmVlL21hc3Rlci9zYW1wbGVzKSB0b28uCgojIyMgWzMuMSAtIEN1c3RvbWl6YXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKClBsZWFzZSByZWZlciB0byBbY3VzdG9taXphdGlvbi5tZF0oZG9jcy9jdXN0b21pemF0aW9uLm1kKSBvbiBob3cgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQgKGUuZy4gcGFja2FnZSBuYW1lLCB2ZXJzaW9uKQoKIyMjIFszLjIgLSBXb3JrZmxvdyBJbnRlZ3JhdGlvbiAoTWF2ZW4sIEdyYWRsZSwgR2l0aHViLCBDSS9DRCldKCN0YWJsZS1vZi1jb250ZW50cykKClBsZWFzZSByZWZlciB0byBbaW50ZWdyYXRpb24ubWRdKGRvY3MvaW50ZWdyYXRpb24ubWQpIG9uIGhvdyB0byBpbnRlZ3JhdGUgT3BlbkFQSSBnZW5lcmF0b3Igd2l0aCBNYXZlbiwgR3JhZGxlLCBzYnQsIEJhemVsLCBHaXRodWIgYW5kIENJL0NELgoKIyMjIFszLjMgLSBPbmxpbmUgT3BlbkFQSSBnZW5lcmF0b3JdKCN0YWJsZS1vZi1jb250ZW50cykKCkhlcmUgYXJlIHRoZSBwdWJsaWMgb25saW5lIHNlcnZpY2VzOgoKLSBsYXRlc3Qgc3RhYmxlIHZlcnNpb246IGh0dHBzOi8vYXBpLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gKLSBsYXRlc3QgbWFzdGVyOiBodHRwczovL2FwaS1sYXRlc3QtbWFzdGVyLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2ggKHVwZGF0ZWQgd2l0aCBsYXRlc3QgbWFzdGVyIGV2ZXJ5IGhvdXIpCgpUaGUgc2VydmVyIGlzIHNwb25zb3JlZCBieSBbTGlub2RlXShodHRwczovL3d3dy5saW5vZGUuY29tLykgWyFbTGlub2RlIExvZ29dKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vbWVkaWEvaW1hZ2VzL2xvZ29zL3N0YW5kYXJkL2xpZ2h0L2xpbm9kZS1sb2dvX3N0YW5kYXJkX2xpZ2h0X3NtYWxsLnBuZyldKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vKQoKKFRoZXNlIHNlcnZpY2VzIGFyZSBiZXRhIGFuZCBkbyBub3QgaGF2ZSBhbnkgZ3VhcmFudGVlIG9uIHNlcnZpY2UgbGV2ZWwpCgpQbGVhc2UgcmVmZXIgdG8gW29ubGluZS5tZF0oZG9jcy9vbmxpbmUubWQpIG9uIGhvdyB0byBydW4gYW5kIHVzZSB0aGUgYG9wZW5hcGktZ2VuZXJhdG9yLW9ubGluZWAgLSBhIHdlYiBzZXJ2aWNlIGZvciBgb3BlbmFwaS1nZW5lcmF0b3JgLgoKIyMjIFszLjQgLSBMaWNlbnNlIGluZm9ybWF0aW9uIG9uIEdlbmVyYXRlZCBDb2RlXSgjdGFibGUtb2YtY29udGVudHMpCgpUaGUgT3BlbkFQSSBHZW5lcmF0b3IgcHJvamVjdCBpcyBpbnRlbmRlZCBhcyBhIGJlbmVmaXQgZm9yIHVzZXJzIG9mIHRoZSBPcGVuIEFQSSBTcGVjaWZpY2F0aW9uLiAgVGhlIHByb2plY3QgaXRzZWxmIGhhcyB0aGUgW0xpY2Vuc2VdKCM3LS0tbGljZW5zZSkgYXMgc3BlY2lmaWVkLiBJbiBhZGRpdGlvbiwgcGxlYXNlIHVuZGVyc3RhbmQgdGhlIGZvbGxvd2luZyBwb2ludHM6CgoqIFRoZSB0ZW1wbGF0ZXMgaW5jbHVkZWQgd2l0aCB0aGlzIHByb2plY3QgYXJlIHN1YmplY3QgdG8gdGhlIFtMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpLgoqIEdlbmVyYXRlZCBjb2RlIGlzIGludGVudGlvbmFsbHkgX25vdF8gc3ViamVjdCB0byB0aGUgcGFyZW50IHByb2plY3QgbGljZW5zZQoKV2hlbiBjb2RlIGlzIGdlbmVyYXRlZCBmcm9tIHRoaXMgcHJvamVjdCwgaXQgc2hhbGwgYmUgY29uc2lkZXJlZCAqKkFTIElTKiogYW5kIG93bmVkIGJ5IHRoZSB1c2VyIG9mIHRoZSBzb2Z0d2FyZS4gIFRoZXJlIGFyZSBubyB3YXJyYW50aWVzLS1leHByZXNzZWQgb3IgaW1wbGllZC0tZm9yIGdlbmVyYXRlZCBjb2RlLiAgWW91IGNhbiBkbyB3aGF0IHlvdSB3aXNoIHdpdGggaXQsIGFuZCBvbmNlIGdlbmVyYXRlZCwgdGhlIGNvZGUgaXMgeW91ciByZXNwb25zaWJpbGl0eSBhbmQgc3ViamVjdCB0byB0aGUgbGljZW5zaW5nIHRlcm1zIHRoYXQgeW91IGRlZW0gYXBwcm9wcmlhdGUuCgojIyMgWzMuNSAtIElERSBJbnRlZ3JhdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKSGVyZSBpcyBhIGxpc3Qgb2YgY29tbXVuaXR5LWNvbnRyaWJ1dGVkIElERSBwbHVnLWlucyB0aGF0IGludGVncmF0ZSB3aXRoIE9wZW5BUEkgR2VuZXJhdG9yOgoKLSBFY2xpcHNlOiBbQ29kZXdpbmQgT3BlbkFQSSBUb29scyBmb3IgRWNsaXBzZV0oaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvY29kZXdpbmQvb3Blbi1hcGktdG9vbHMtZm9yLWVjbGlwc2UuaHRtbCkgYnkgW0lCTV0oaHR0cHM6Ly93d3cuaWJtLmNvbSkKLSBJbnRlbGxpSiBJREVBOiBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vcGx1Z2lucy5qZXRicmFpbnMuY29tL3BsdWdpbi84NDMzLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSmltIFNjaHViZXJ0XShodHRwczovL2ppbXNjaHViZXJ0LnVzLyMvKQotIEludGVsbGlKIElERUE6IFtTZW55YSBFZGl0b3JdKGh0dHBzOi8vcGx1Z2lucy5qZXRicmFpbnMuY29tL3BsdWdpbi8xMDY5MC1zZW55YS1lZGl0b3IpIGJ5IFtzZW55YS5pb10oaHR0cHM6Ly9zZW55YS5pbykKLSBbUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cHM6Ly93d3cucmVwcmV6ZW4uY29tLykKLSBWaXN1YWwgU3R1ZGlvOiBbUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKSBieSBbQ2hyaXN0aWFuIFJlc21hIEhlbGxlXShodHRwczovL2NocmlzdGlhbi1oZWxsZS5ibG9nc3BvdC5jb20vKQotIFZpc3VhbCBTdHVkaW8gQ29kZTogW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1JQk0uY29kZXdpbmQtb3BlbmFwaS10b29scykgYnkgW0lCTV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL3B1Ymxpc2hlcnMvSUJNKQoKCiMjIFs0IC0gQ29tcGFuaWVzL1Byb2plY3RzIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCkhlcmUgYXJlIHNvbWUgY29tcGFuaWVzL3Byb2plY3RzIChhbHBoYWJldGljYWwgb3JkZXIpIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIGluIHByb2R1Y3Rpb24uIFRvIGFkZCB5b3VyIGNvbXBhbnkvcHJvamVjdCB0byB0aGUgbGlzdCwgcGxlYXNlIHZpc2l0IFtSRUFETUUubWRdKFJFQURNRS5tZCkgYW5kIGNsaWNrIG9uIHRoZSBpY29uIHRvIGVkaXQgdGhlIHBhZ2UuCgotIFtBYWxib3JnIFVuaXZlcnNpdHldKGh0dHBzOi8vd3d3LmFhdS5kaykKLSBbYWN0IGNvZGluZ10oaHR0cHM6Ly9naXRodWIuY29tL2FjdGNvZGluZykKLSBbQWRhcHRhbnQgU29sdXRpb25zIEFHXShodHRwczovL3d3dy5hZGFwdGFudC5pby8pCi0gW2FkZXNzbyBTRV0oaHR0cHM6Ly93d3cuYWRlc3NvLmRlLykKLSBbQWR5ZW5dKGh0dHBzOi8vd3d3LmFkeWVuLmNvbS8pCi0gW0Fnb2RhXShodHRwczovL3d3dy5hZ29kYS5jb20vKQotIFtBaXJ0aGluZ3NdKGh0dHBzOi8vd3d3LmFpcnRoaW5ncy5jb20vKQotIFtBbGVyaSBTb2x1dGlvbnMgR21iaF0oaHR0cHM6Ly93d3cuYWxlcmkuZGUvKQotIFtBbGxpYW56XShodHRwczovL3d3dy5hbGxpYW56LmNvbSkKLSBbQW5ndWxhci5TY2h1bGVdKGh0dHBzOi8vYW5ndWxhci5zY2h1bGUvKQotIFtBcW92aWFdKGh0dHBzOi8vYXFvdmlhLmNvbS8pCi0gW0F1c3RyYWxpYSBhbmQgTmV3IFplYWxhbmQgQmFua2luZyBHcm91cCAoQU5aKV0oaHR0cDovL3d3dy5hbnouY29tLykKLSBbQXJkdWlub10oaHR0cHM6Ly93d3cuYXJkdWluby5jYy8pCi0gW0FTS1VMXShodHRwczovL3d3dy5hc2t1bC5jby5qcCkKLSBbQW1hem9uIFdlYiBTZXJ2aWNlcyAoQVdTKV0oaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS8pCi0gW2I8PmNvbV0oaHR0cHM6Ly9iLWNvbS5jb20vZW4pCi0gW+eZvuW6puiQpemUgF0oaHR0cHM6Ly9lLmJhaWR1LmNvbSkKLSBbQmFuZHdpZHRoXShodHRwczovL2Rldi5iYW5kd2lkdGguY29tKQotIFtCYW56YWkgQ2xvdWRdKGh0dHBzOi8vYmFuemFpY2xvdWQuY29tKQotIFtCSU1EYXRhLmlvXShodHRwczovL2JpbWRhdGEuaW8pCi0gW0JpdGhvc3QgR21iSF0oaHR0cHM6Ly93d3cuYml0aG9zdC5jaCkKLSBbQm9zY2ggQ29ubmVjdGVkIEluZHVzdHJ5XShodHRwczovL3d3dy5ib3NjaC1jb25uZWN0ZWQtaW5kdXN0cnkuY29tKQotIFtCb3hldmVyXShodHRwczovL3d3dy5ib3hldmVyLmNvbS8pCi0gW0JyZXZ5XShodHRwczovL3d3dy5icmV2eS5jb20pCi0gW0J1bmtlciBIb2xkaW5nIEdyb3VwXShodHRwczovL3d3dy5idW5rZXItaG9sZGluZy5jb20vKQotIFtDYWxpZm9ybmlhIFN0YXRlIFVuaXZlcnNpdHksIE5vcnRocmlkZ2VdKGh0dHBzOi8vd3d3LmNzdW4uZWR1KQotIFtDQU1dKGh0dHBzOi8vd3d3LmNhbS1pbmMuY28uanAvKQotIFtDYW1wdG9jYW1wXShodHRwczovL3d3dy5jYW1wdG9jYW1wLmNvbS9lbikKLSBbQ2FybHNiZXJnIEdyb3VwXShodHRwczovL3d3dy5jYXJsc2Jlcmdncm91cC5jb20vKQotIFtDaHJpc3RvcGhlciBRdWVlbiBDb25zdWx0aW5nXShodHRwczovL3d3dy5jaHJpc3RvcGhlcnF1ZWVuY29uc3VsdGluZy5jb20vKQotIFtDaXNjb10oaHR0cHM6Ly93d3cuY2lzY28uY29tLykKLSBbY29kZWNlbnRyaWMgQUddKGh0dHBzOi8vd3d3LmNvZGVjZW50cmljLmRlLykKLSBbQ29pbkFQSV0oaHR0cHM6Ly93d3cuY29pbmFwaS5pby8pCi0gW0NvbW1lbmNpc10oaHR0cHM6Ly93d3cuY29tbWVuY2lzLmNvbS8pCi0gW0NvbmZpZ0NhdF0oaHR0cHM6Ly9jb25maWdjYXQuY29tLykKLSBbY3Jvbm4gR21iSF0oaHR0cHM6Ly93d3cuY3Jvbm4uZGUvKQotIFtDcm9zc292ZXIgSGVhbHRoXShodHRwczovL2Nyb3Nzb3ZlcmhlYWx0aC5jb20vKQotIFtDdXBpeF0oaHR0cHM6Ly93d3cuY3VwaXguY29tLykKLSBbRGF0YWRvZ10oaHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbSkKLSBbREIgU3lzdGVsXShodHRwczovL3d3dy5kYnN5c3RlbC5kZSkKLSBbRGVlcG9ydXRlLmFpXShodHRwczovL3d3dy5kZWVwcm91dGUuYWkvKQotIFtEZXZzdXBwbHldKGh0dHBzOi8vd3d3LmRldnN1cHBseS5jb20vKQotIFtkbVRFQ0ggR21iSF0oaHR0cHM6Ly93d3cuZG1URUNILmRlKQotIFtEb2NTcHJpbmddKGh0dHBzOi8vZG9jc3ByaW5nLmNvbS8pCi0gW2R3YW5nb10oaHR0cHM6Ly9kd2FuZ28uY28uanAvKQotIFtFZGdlIEltcHVsc2VdKGh0dHBzOi8vd3d3LmVkZ2VpbXB1bHNlLmNvbS8pCi0gW0VsZW1lbnQgQUldKGh0dHBzOi8vd3d3LmVsZW1lbnRhaS5jb20vKQotIFtFbWJvdGljc10oaHR0cHM6Ly93d3cuZW1ib3RpY3MuY29tLykKLSBbZW1pbmVvXShodHRwczovL3d3dy5lbWluZW8uY2gpCi0gW2Zhc3RseV0oaHR0cHM6Ly93d3cuZmFzdGx5LmNvbS8pCi0gW0ZlbmVyZ29dKGh0dHBzOi8vd3d3LmZlbmVyZ28uY29tLykKLSBbZnJlZWVdKGh0dHBzOi8vY29ycC5mcmVlZS5jby5qcC9lbi8pCi0gW0ZyZXNoQ2VsbHNdKGh0dHBzOi8vd3d3LmZyZXNoY2VsbHMuZGUvKQotIFtGdXNlXShodHRwczovL3d3dy5mdXNlLm5vLykKLSBbR2FudG5lcl0oaHR0cHM6Ly93d3cuZ2FudG5lci5jb20pCi0gW0dlbkZsb3ddKGh0dHBzOi8vZ2l0aHViLmNvbS9SZXByZVplbi9HZW5GbG93KQotIFtHZXRZb3VyR3VpZGVdKGh0dHBzOi8vd3d3LmdldHlvdXJndWlkZS5jb20vKQotIFtHbG92b10oaHR0cHM6Ly9nbG92b2FwcC5jb20vKQotIFtHTU8gUGVwYWJvXShodHRwczovL3BlcGFiby5jb20vZW4vKQotIFtHb0RhZGR5XShodHRwczovL2dvZGFkZHkuY29tKQotIFtHdW10cmVlXShodHRwczovL2d1bXRyZWUuY29tKQotIFtIZXJlXShodHRwczovL2RldmVsb3Blci5oZXJlLmNvbS8pCi0gW0lCTV0oaHR0cHM6Ly93d3cuaWJtLmNvbS8pCi0gW0luc3RhbmFdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tKQotIFtJbnRlcnhpb25dKGh0dHBzOi8vd3d3LmludGVyeGlvbi5jb20pCi0gW0lucXVpc2ljb10oaHR0cHM6Ly9pbnF1aXNpY28uY29tKQotIFtKdXN0U3Rhcl0oaHR0cHM6Ly93d3cuanVzdHN0YXJpbmZvLmNvbSkKLSBbazYuaW9dKGh0dHBzOi8vazYuaW8vKQotIFtLbGFybmFdKGh0dHBzOi8vd3d3LmtsYXJuYS5jb20vKQotIFtLcm9uc29mdCBEZXZlbG9wbWVudF0oaHR0cHM6Ly93d3cua3JvbnNvZnQucm8vaG9tZS8pCi0gW0t1YmVybmV0ZXNdKGh0dHBzOi8va3ViZXJuZXRlcy5pbykKLSBbTGFuZGVzaGF1cHRzdGFkdCBNw7xuY2hlbiAtIGl0QE1dKGh0dHBzOi8vbXVlbmNoZW4uZGlnaXRhbC9pdC1hdC1tLykKLSBbTGlub2RlXShodHRwczovL3d3dy5saW5vZGUuY29tLykKLSBbTG9naWNkcm9wXShodHRwczovL3d3dy5sb2dpY2Ryb3AuY29tKQotIFtMdW1lcmlzXShodHRwczovL3d3dy5sdW1lcmlzLmNvbSkKLSBbTFZNIFZlcnNpY2hlcnVuZ2VuXShodHRwczovL3d3dy5sdm0uZGUpCi0gW01haWxTbHVycF0oaHR0cHM6Ly93d3cubWFpbHNsdXJwLmNvbSkKLSBbTWFudGljb3JlIFNlYXJjaF0oaHR0cHM6Ly9tYW50aWNvcmVzZWFyY2guY29tKQotIFtNYXN0ZXJjYXJkXShodHRwczovL2RldmVsb3BlcnMubWFzdGVyY2FyZC5jb20pCi0gW03DqWRpYXZpc2lvbl0oaHR0cHM6Ly93d3cubWVkaWF2aXNpb24uZnIvKQotIFtNZXRhc3dpdGNoXShodHRwczovL3d3dy5tZXRhc3dpdGNoLmNvbS8pCi0gW01vb25WaXNpb25dKGh0dHBzOi8vd3d3Lm1vb252aXNpb24uaW8vKQotIFtNeXdvcmtvdXRdKGh0dHBzOi8vbXl3b3Jrb3V0LmNvbSkKLSBbTmFtU29yXShodHRwczovL3d3dy5uYW1zb3IuY29tLykKLSBbTmV2ZXJmYWlsXShodHRwczovL3d3dy5uZXZlcmZhaWwuY29tLykKLSBbTmV1ZXJFbmVyZ3ldKGh0dHBzOi8vbmV1ZXJlbmVyZ3kuY29tKQotIFtOb2tpYV0oaHR0cHM6Ly93d3cubm9raWEuY29tLykKLSBbT25lU2lnbmFsXShodHRwczovL3d3dy5vbmVzaWduYWwuY29tLykKLSBbT3B0aW9ucyBDbGVhcmluZyBDb3Jwb3JhdGlvbiAoT0NDKV0oaHR0cHM6Ly93d3cudGhlb2NjLmNvbS8pCi0gW09wZW5ldF0oaHR0cHM6Ly93d3cub3BlbmV0LmNvbS8pCi0gW29wZW5WQUxJREFUSU9OXShodHRwczovL29wZW52YWxpZGF0aW9uLmlvLykKLSBbT3JhY2xlXShodHRwczovL3d3dy5vcmFjbGUuY29tLykKLSBbUGF4b3NdKGh0dHBzOi8vd3d3LnBheG9zLmNvbSkKLSBbUGxhaWRdKGh0dHBzOi8vcGxhaWQuY29tKQotIFtQTEFJRCwgSW5jLl0oaHR0cHM6Ly9wbGFpZC5jby5qcC8pCi0gW1BpbnRlcmVzdF0oaHR0cHM6Ly93d3cucGludGVyZXN0LmNvbSkKLSBbUG9uaWNvZGVdKGh0dHBzOi8vcG9uaWNvZGUuZGV2LykKLSBbUHJpY2VmeF0oaHR0cHM6Ly93d3cucHJpY2VmeC5jb20vKQotIFtQcmludE5hbm55XShodHRwczovL3d3dy5wcmludC1uYW5ueS5jb20vKQotIFtQcm9tZXRoZXVzL0FsZXJ0bWFuYWdlcl0oaHR0cHM6Ly9naXRodWIuY29tL3Byb21ldGhldXMvYWxlcnRtYW5hZ2VyKQotIFtRYXZhcl0oaHR0cHM6Ly93d3cucWF2YXIuY29tKQotIFtRRURJVF0oaHR0cHM6Ly9xZWQtaXQuY29tKQotIFtRb3ZlcnldKGh0dHBzOi8vcW92ZXJ5LmNvbSkKLSBbUXVsaXggU3lzdGVtc10oaHR0cHM6Ly93d3cucXVsaXguY29tKQotIFtSYWtzdWxdKGh0dHBzOi8vY29ycC5yYWtzdWwuY29tKQotIFtSYWlmZmVpc2VuIFNjaHdlaXogR2Vub3NzZW5zY2hhZnRdKGh0dHBzOi8vd3d3LnJhaWZmZWlzZW4uY2gpCi0gW1JlZEhhdF0oaHR0cHM6Ly93d3cucmVkaGF0LmNvbSkKLSBbUmVwcmVaZW4gQVBJIFN0dWRpb10oaHR0cHM6Ly93d3cucmVwcmV6ZW4uY29tL3N3YWdnZXItb3BlbmFwaS1jb2RlLWdlbmVyYXRpb24tYXBpLWZpcnN0LW1pY3Jvc2VydmljZXMtZW50ZXJwcmlzZS1kZXZlbG9wbWVudCkKLSBbUkVTVCBVbml0ZWRdKGh0dHBzOi8vcmVzdHVuaXRlZC5jb20pCi0gW1JvYm9jb3JwXShodHRwczovL3d3dy5yb2JvY29ycC5jb20pCi0gW1JvYm90aW5mcmFdKGh0dHBzOi8vd3d3LnJvYm90aW5mcmEuY29tKQotIFtTZWFyY2hBcGldKGh0dHBzOi8vd3d3LnNlYXJjaGFwaS5pby8pCi0gW1NtYXJ0SFJdKGh0dHBzOi8vc21hcnRoci5jby5qcC8pCi0gW1NvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudF0oaHR0cHM6Ly93d3cuc2llLmNvbS9lbi9pbmRleC5odG1sKQotIFtTcGxpdGl0XShodHRwczovL3d3dy5zcGxpdGl0LmNvbS8pCi0gW1N0aW5ncmF5XShodHRwOi8vd3d3LnN0aW5ncmF5LmNvbSkKLSBbU3V2YV0oaHR0cHM6Ly93d3cuc3V2YS5jaC8pCi0gW1N2aXhdKGh0dHBzOi8vd3d3LnN2aXguY29tLykKLSBbVGVsc3RyYV0oaHR0cHM6Ly9kZXYudGVsc3RyYS5jb20pCi0gW1RlbmNlbnRdKGh0dHBzOi8vd3d3LnRlbmNlbnQuY29tKQotIFtUaGUgVW5pdmVyc2l0eSBvZiBBaXp1XShodHRwczovL3d3dy51LWFpenUuYWMuanAvZW4vKQotIFtUcmFuc2x1Y2VudCBBcFNdKGh0dHBzOi8vd3d3LnRyYW5zbHVjZW50LmRrKQotIFtUcmF2ZWxUaW1lIHBsYXRmb3JtXShodHRwczovL3d3dy50cmF2ZWx0aW1lcGxhdGZvcm0uY29tLykKLSBbVHJpYmFsU2NhbGVdKGh0dHBzOi8vd3d3LnRyaWJhbHNjYWxlLmNvbSkKLSBbVHJpZm9ya10oaHR0cHM6Ly90cmlmb3JrLmNvbSkKLSBbVFVJIEluZm9UZWMgR21iSF0oaHR0cDovL3d3dy50dWktaW5mb3RlYy5jb20vKQotIFtUd2lsaW9dKGh0dHBzOi8vd3d3LnR3aWxpby5jb20vKQotIFtUd2l0dGVyXShodHRwczovL3R3aXR0ZXIuY29tKQotIFt1bmJsdSBpbmMuXShodHRwczovL3d3dy51bmJsdS5jb20vKQotIFtWZWFtbHldKGh0dHBzOi8vd3d3LnZlYW1seS5jb20vKQotIFtWTVdhcmVdKGh0dHBzOi8vd3d3LnZtd2FyZS5jb20vKQotIFt3YnQtc29sdXRpb25zXShodHRwczovL3d3dy53YnQtc29sdXRpb25zLmRlLykKLSBbV29sZWV0XShodHRwczovL3d3dy53b2xlZXQuaW8vKQotIFtXU08yXShodHRwczovL3dzbzIuY29tLykKLSBbVm91Y2hlcnkuaW9dKGh0dHBzOi8vdm91Y2hlcnkuaW8pCi0gW1hlcm9dKGh0dHBzOi8vd3d3Lnhlcm8uY29tLykKLSBbWWFob28gSmFwYW5dKGh0dHBzOi8vd3d3LnlhaG9vLmNvLmpwLykKLSBbdmlhZGVlXShodHRwczovL3d3dy52aWFkZWUuZGUvKQotIFtWb25hZ2VdKGh0dHBzOi8vdm9uYWdlLmNvbSkKLSBbWUlUVSBUZWNobm9sb2d5XShodHRwczovL3d3dy55aXR1dGVjaC5jb20vKQotIFtZZWxwXShodHRwczovL3d3dy55ZWxwLmNvbS8pCi0gW1phbGFuZG9dKGh0dHBzOi8vd3d3LnphbGFuZG8uY29tKQotIFszRFMgT3V0c2NhbGVdKGh0dHBzOi8vd3d3Lm91dHNjYWxlLmNvbS8pCgojIyBbNSAtIFByZXNlbnRhdGlvbnMvVmlkZW9zL1R1dG9yaWFscy9Cb29rc10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKLSAyMDE4LzA1LzEyIC0gW09wZW5BUEkgR2VuZXJhdG9yIC0gY29tbXVuaXR5IGRyaXZlbuOBp+aIkOmVt+OBmeOCi+OCs+ODvOODieOCuOOCp+ODjeODrOODvOOCv10oaHR0cHM6Ly9hY2tpbnRvc2guZ2l0aHViLmlvL2Jsb2cvMjAxOC8wNS8xMi9vcGVuYXBpLWdlbmVyYXRvci8pIGJ5IFvkuK3ph47mmoHkurpdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpCi0gMjAxOC8wNS8xNSAtIFtTdGFydGluZyBhIG5ldyBvcGVuLXNvdXJjZSBwcm9qZWN0XShodHRwOi8vam1pbmkuZ2l0aHViLmlvL2Jsb2cvMjAxOC8yMDE4LTA1LTE1X25ldy1vcGVuLXNvdXJjZS1wcm9qZWN0Lmh0bWwpIGJ5IFtKZXJlbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkKLSAyMDE4LzA1LzE1IC0gW1JFU1QgQVBJ5LuV5qeY44GL44KJQVBJ44Kv44Op44Kk44Ki44Oz44OI44KE44K544K/44OW44K144O844OQ44KS6Ieq5YuV55Sf5oiQ44GZ44KL44CMT3BlbkFQSSBHZW5lcmF0b3LjgI3jgqrjg7zjg5fjg7Pjgr3jg7zjgrnjgaflhazplovjgIJTd2FnZ2VyIENvZGVnZW7jgYvjgonjga7jg5Xjgqnjg7zjgq9dKGh0dHBzOi8vd3d3LnB1YmxpY2tleTEuanAvYmxvZy8xOC9yZXN0X2FwaWFwaW9wZW5hcGlfZ2VuZXJhdG9yc3dhZ2dlcl9nZW5lcmF0b3IuaHRtbCkgYnkgW1B1YmxpY2tleV0oaHR0cHM6Ly93d3cucHVibGlja2V5MS5qcCkKLSAyMDE4LzA2LzA4IC0gW1N3YWdnZXIgQ29kZWdlbiBpcyBub3cgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYW5ndWxhci5zY2h1bGUvYmxvZy8yMDE4LTA2LXN3YWdnZXItY29kZWdlbi1pcy1ub3ctb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtKb2hhbm5lc0hvcHBlXShodHRwczovL2dpdGh1Yi5jb20vSm9oYW5uZXNIb3BwZSkKLSAyMDE4LzA2LzIxIC0gW0Nvbm5lY3QgeW91ciBKSGlwc3RlciBhcHBzIHRvIHRoZSB3b3JsZCBvZiBBUElzIHdpdGggT3BlbkFQSSBhbmQgZ1JQQ10oaHR0cHM6Ly9mci5zbGlkZXNoYXJlLm5ldC9jaGJvcm5ldC9qaGlwc3Rlci1jb25mLTIwMTgtY29ubmVjdC15b3VyLWpoaXBzdGVyLWFwcHMtdG8tdGhlLXdvcmxkLW9mLWFwaXMtd2l0aC1vcGVuYXBpLWFuZC1ncnBjKSBieSBbQ2hyaXN0b3BoZSBCb3JuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jYm9ybmV0KSBhdCBbSkhpcHN0ZXIgQ29uZiAyMDE4XShodHRwczovL2poaXBzdGVyLWNvbmYuZ2l0aHViLmlvLykKLSAyMDE4LzA2LzIyIC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBHYXRsaW5nIENsaWVudCDjgpLnlJ/miJDjgZfjgabjgb/jgZ9dKGh0dHBzOi8vcm9oa2kuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOC8wNi8yMi8wNzMwMDApIGF0IFvjgr3jg6LjgrXjg7NdKGh0dHBzOi8vcm9oa2kuaGF0ZW5hYmxvZy5jb20vKQotIDIwMTgvMDYvMjcgLSBbTGVzc29ucyBMZWFybmVkIGZyb20gTGVhZGluZyBhbiBPcGVuLVNvdXJjZSBQcm9qZWN0IFN1cHBvcnRpbmcgMzArIFByb2dyYW1taW5nIExhbmd1YWdlc10oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vd2luZzMyOC9sZXNzb25zLWxlYXJuZWQtZnJvbS1sZWFkaW5nLWFuLW9wZW4tc291cmNlLXByb2plY3Qtc3VwcG9ydGluZy0zMC1wbHVzLXByb2dyYW1taW5nLWxhbmd1YWdlcykgLSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpIGF0IFtMaW51eENvbiArIENvbnRhaW5lckNvbiArIENsb3VkT3BlbiBDaGluYSAyMDE4XShodHRwOi8vYml0Lmx5LzJ3YURLS1gpCi0gMjAxOC8wNy8xOSAtIFtPcGVuQVBJIEdlbmVyYXRvciBDb250cmlidXRpb24gUXVpY2tzdGFydCAtIFJpbmdDZW50cmFsIEdvIFNES10oaHR0cHM6Ly9tZWRpdW0uY29tL3JpbmdjZW50cmFsLWRldmVsb3BlcnMvb3BlbmFwaS1nZW5lcmF0b3ItZm9yLWdvLWNvbnRyaWJ1dGlvbi1xdWlja3N0YXJ0LThjYzcyYmYzN2I1MykgYnkgW0pvaG4gV2FuZ10oaHR0cHM6Ly9naXRodWIuY29tL2dyb2tpZnkpCi0gMjAxOC8wOC8yMiAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBruODl+ODreOCuOOCp+OCr+ODiOani+aIkOOBquOBqeOBruODoeODol0oaHR0cHM6Ly95aW5tLmluZm8vMjAxODA4MjIvKSBieSBbWXVzdWtlIElpbnVtYV0oaHR0cHM6Ly9naXRodWIuY29tL3lpbm0pCi0gMjAxOC8wOS8xMiAtIFtSZXByZVplbiBhbmQgT3BlbkFQSSAzLjA6IE5vdyBpcyB0aGUgVGltZV0oaHR0cHM6Ly93d3cucmVwcmV6ZW4uY29tL2Jsb2cvcmVwcmV6ZW4tb3BlbmFwaS0zLjAtdXBncmFkZS1ub3ctaXMtdGhlLXRpbWUpIGJ5IFtNaWxlcyBEYWZmaW5dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL2F1dGhvci9taWxlcy1kYWZmaW4pCi0gMjAxOC8xMC8zMSAtIFtBIG5vZGUgcGFja2FnZSB3cmFwcGVyIGZvciBvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL0hhcm1vV2F0Y2gvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKQotIDIwMTgvMTEvMDMgLSBbT3BlbkFQSSBHZW5lcmF0b3IgKyBnb2xhbmcgKyBGbHV0dGVyIOOBp+OCouODl+ODqumWi+eZul0oaHR0cDovL3J5dWljaGkxMTFzdGQuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOC8xMS8wMy8yMTQwMDUpIGJ5IFtSeXVpY2hpIERhaWdvXShodHRwczovL2dpdGh1Yi5jb20vcnl1aWNoaTExMSkKLSAyMDE4LzExLzE1IC0gW+WfuuS6jm9wZW5hcGkzLjDnmoR5YW1s5paH5Lu255Sf5oiQamF2YeS7o+eggeeahOS4gOasoeWunui3tV0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l6eTE5OTM5MS9hcnRpY2xlL2RldGFpbHMvODQwMjM5ODIpIGJ5IFvnhLHprZTnjotdKGh0dHBzOi8vbWUuY3Nkbi5uZXQveXp5MTk5MzkxKQotIDIwMTgvMTEvMTggLSBbR2VuZXJhdGluZyBQSFAgbGlicmFyeSBjb2RlIGZyb20gT3BlbkFQSV0oaHR0cHM6Ly9sb3JuYWphbmUubmV0L3Bvc3RzLzIwMTgvZ2VuZXJhdGluZy1waHAtbGlicmFyeS1jb2RlLWZyb20tb3BlbmFwaSkgYnkgW0xvcm5hIEphbmVdKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC8pIGF0IFtMT1JOQUpBTkUgQmxvZ10oaHR0cHM6Ly9sb3JuYWphbmUubmV0L2Jsb2cpCi0gMjAxOC8xMS8xOSAtIFtPcGVuQVBJcyBhcmUgZXZlcnl3aGVyZV0oaHR0cHM6Ly95b3V0dS5iZS8tbERvdDRZbjdEZykgYnkgW0plcmVtaWUgQnJlc3NvbiAoVW5ibHUpXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpIGF0IFtFY2xpcHNlQ29uIEV1cm9wZSAyMDE4XShodHRwczovL3d3dy5lY2xpcHNlY29uLm9yZy9ldXJvcGUyMDE4KQotIDIwMTgvMTIvMDkgLSBbb3BlbmFwaS1nZW5lcmF0b3Ig44KS44Kr44K544K/44Oe44Kk44K644GZ44KL5pa55rOVXShodHRwczovL3FpaXRhLmNvbS93YXRpa28vaXRlbXMvMDk2MTI4N2MwMmVhYzkyMTE1NzIpIGJ5IFtAd2F0aWtvXShodHRwczovL3FpaXRhLmNvbS93YXRpa28pCi0gMjAxOS8wMS8wMyAtIFtDYWxsaW5nIGEgU3dhZ2dlciBzZXJ2aWNlIGZyb20gQXBleCB1c2luZyBvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9sZWtraW13b3JsZC5jb20vMjAxOS8wMS8wMy9jYWxsaW5nLWEtc3dhZ2dlci1zZXJ2aWNlLWZyb20tYXBleC11c2luZy1vcGVuYXBpLWdlbmVyYXRvci8pIGJ5IFtNaWtrZWwgRmxpbmR0IEhlaXN0ZXJiZXJnXShodHRwczovL2xla2tpbXdvcmxkLmNvbSkKLSAyMDE5LzAxLzEzIC0gW09wZW5BUEkgR2VuZXJhdG9y44GnUkVTVGZ1bCBBUEnjga7lrprnvqnmm7jjgYvjgonoibLjgIXoh6rli5XnlJ/miJDjgZnjgotdKGh0dHBzOi8va3kteWstZC5oYXRlbmFibG9nLmNvbS9lbnRyeS8yMDE5LzAxLzEzLzIzNDEwOCkgYnkgW0BreV95a19kXShodHRwczovL3R3aXR0ZXIuY29tL2t5X3lrX2QpCi0gMjAxOS8wMS8yMCAtIFtDb250cmFjdC1GaXJzdCBBUEkgRGV2ZWxvcG1lbnQgd2l0aCBPcGVuQVBJIEdlbmVyYXRvciBhbmQgQ29ubmV4aW9uXShodHRwczovL21lZGl1bS5jb20vY29tbWVuY2lzL2NvbnRyYWN0LWZpcnN0LWFwaS1kZXZlbG9wbWVudC13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLWFuZC1jb25uZXhpb24tYjIxYmJmMmY5MjQ0KSBieSBbQW5pbCBDYW4gQXlkaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmxjbnlkbikKLSAyMDE5LzAxLzMwIC0gW1JhcGlkIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IFdpdGggQVBJIEZpcnN0IEFwcHJvYWNoIFVzaW5nIE9wZW4tQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvcmFwaWQtYXBpLWRldmVsb3BtZW50LXVzaW5nLW9wZW4tYXBpLWdlbmVyYXRvcikgYnkgW01pbGFuIFNvbmthcl0oaHR0cHM6Ly9kem9uZS5jb20vdXNlcnMvODI4MzI5L21pbGFuX3Nvbmthci5odG1sKQotIDIwMTkvMDIvMDIgLSBb5bmz6Z2Z44KS5L+d44Gh44CB44Kz44O844OJ44KS55Sf5oiQ44Gb44KIIOOAnCBPcGVuQVBJIEdlbmVyYXRvcuiqleeUn+OBruiDjOaZr+OBqOi7jOi3oSDjgJxdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL2FraWhpdG9fbmFrYW5vL2d1bm1hd2ViMzQpIGJ5IFvkuK3ph47mmoHkurpdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpIGF0IFtHdW5tYS53ZWIgIzM0IOOCueOCreODvOODnumnhuWLlemWi+eZul0oaHR0cHM6Ly9ndW5tYXdlYi5jb25ucGFzcy5jb20vZXZlbnQvMTEzOTc0LykKLSAyMDE5LzAyLzIwIC0gW0FuIGFkdmVudHVyZSBpbiBPcGVuQVBJIFYzIGNvZGUgZ2VuZXJhdGlvbl0oaHR0cHM6Ly9tdXguY29tL2Jsb2cvYW4tYWR2ZW50dXJlLWluLW9wZW5hcGktdjMtYXBpLWNvZGUtZ2VuZXJhdGlvbi8pIGJ5IFtQaGlsIENsdWZmXShodHRwczovL211eC5jb20vYmxvZy9hdXRob3IvcGhpbGMvKQotIDIwMTkvMDIvMjYgLSBbQnVpbGRpbmcgQVBJIFNlcnZpY2VzOiBBIEJlZ2lubmVy4oCZcyBHdWlkZV0oaHR0cHM6Ly9tZWRpdW0uY29tL2dvb2dsZS1jbG91ZC9idWlsZGluZy1hcGktc2VydmljZXMtYS1iZWdpbm5lcnMtZ3VpZGUtNzI3NGFlNGM1NDdmKSBieSBbUmF0cm9zIFkuXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kpIGluIFtHb29nbGUgQ2xvdWQgUGxhdGZvcm0gQmxvZ10oaHR0cHM6Ly9tZWRpdW0uY29tL2dvb2dsZS1jbG91ZCkKLSAyMDE5LzAyLzI2IC0gW0J1aWxkaW5nIEFQSXMgd2l0aCBPcGVuQVBJOiBDb250aW51ZWRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcmF0cm9zeS9idWlsZGluZy1hcGlzLXdpdGgtb3BlbmFwaS1jb250aW51ZWQtNWQwZmFhZWQzMmViKSBieSBbUmF0cm9zIFkuXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kpIGluIFtHb29nbGUgQ2xvdWQgUGxhdGZvcm0gQmxvZ10oaHR0cHM6Ly9tZWRpdW0uY29tL2dvb2dsZS1jbG91ZCkKLSAyMDE5LTAzLTA3IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBTcHJpbmcgQm9vdCDjgaggQW5ndWxhciDjgpLjgr/jgqTjg5fjgrvjg7zjg5XjgavnuYvjgZBdKGh0dHBzOi8vcWlpdGEuY29tL2NoaWJhdG8vaXRlbXMvZTRhNzQ4ZGIxMjQwOWI0MGMwMmYpIGJ5IFtUb21vZnVtaSBDaGliYV0oaHR0cHM6Ly9naXRodWIuY29tL2NoaWJhdCkKLSAyMDE5LTAzLTE2IC0gW0EgUXVpY2sgaW50cm9kdWN0aW9uIHRvIG1hbnVhbCBPcGVuQVBJIFYzXShodHRwczovL3ZhZG9zd2FyZS5pby9wb3N0L3F1aWNrLWludHJvLXRvLW1hbnVhbC1vcGVuYXBpLXYzLykgYnkgW3ZhZG9zXShodHRwczovL2dpdGh1Yi5jb20vdDNobXJtYW4pIGF0IFtWQURPU1dBUkVdKGh0dHBzOi8vdmFkb3N3YXJlLmlvKQotIDIwMTktMDMtMjUgLSBbQWNjZXNzIGFueSBSRVNUIHNlcnZpY2Ugd2l0aCB0aGUgU0FQIFMvNEhBTkEgQ2xvdWQgU0RLXShodHRwczovL2Jsb2dzLnNhcC5jb20vMjAxOS8wMy8yNS9pbnRlZ3JhdGUtc2FwLXM0aGFuYS1jbG91ZC1zZGstd2l0aC1vcGVuLWFwaS8pIGJ5IFtBbGV4YW5kZXIgRHVlbW9udF0oaHR0cHM6Ly9wZW9wbGUuc2FwLmNvbS9hbGV4YW5kZXIuZHVlbW9udCkKLSAyMDE5LTAzLTI1IC0gW09wZW5BUEkgZ2VuZXJhdG9y44KS6Kmm44GX44Gm44G/44KLXShodHRwczovL3FpaXRhLmNvbS9hbXV5aWthbS9pdGVtcy9lOGE0NWRhYWU1OWM2OGJlMGZjOCkgYnkgW0BhbXV5aWthbV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9hbXV5aWthbSkKLSAyMDE5LTAzLTI3IC0gW09wZW5BUEkz44KS5L2/44Gj44Gm44G/44KI44GG77yBR2/oqIDoqp7jgafjgq/jg6njgqTjgqLjg7Pjg4jjgajjgrnjgr/jg5bjga7oh6rli5XnlJ/miJDjgb7jgafvvIFdKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvb3BlbmFwaTMvZ28pIGJ5IFtAZ29sZF9rb3VdKGh0dHBzOi8vdHdpdHRlci5jb20vZ29sZF9rb3UpCi0gMjAxOS0wNC0xNyAtIFtPcGVuQVBJ44Gr44KI44KL44K544Kt44O844Oe44OV44Kh44O844K544OI6ZaL55m644Gu5a6f5pa944K144Oz44OX44Or44GoQ2xvdWQgUnVu44Gr44Gk44GE44GmXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC9lbnRyeS8yMDE5LzA0LzE3LzE3NDAwMCkgYnkgW0B5dWtleTEwMzFdKGh0dHBzOi8vdHdpdHRlci5jb20veXVrZXkxMDMxKQotIDIwMTktMDQtMTggLSBbSG93IHRvIHVzZSBPcGVuQVBJMyBmb3IgQVBJIGRldmVsb3BlciAoUnVieUthaWdpIDIwMTkpXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9vdGE0MnkvaG93LXRvLXVzZS1vcGVuYXBpMy1mb3ItYXBpLWRldmVsb3BlcikgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KSBhdCBbUnVieUthaWdpIDIwMTldKGh0dHBzOi8vcnVieWthaWdpLm9yZy8yMDE5KQotIDIwMTktMDQtMjkgLSBbQSBCZWdpbm5lcidzIEd1aWRlIHRvIENvZGUgR2VuZXJhdGlvbiBmb3IgUkVTVCBBUElzIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KQotIDIwMTktMDUtMDEgLSBbRGVzaWduIGFuZCBnZW5lcmF0ZSBhIFJFU1QgQVBJIGZyb20gU3dhZ2dlciAvIE9wZW5BUEkgaW4gSmF2YSwgUHl0aG9uLCBDIyBhbmQgbW9yZV0oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS9kZXNpZ24tYW5kLWdlbmVyYXRlLWFwaS1jb2RlLWZyb20tb3BlbmFwaSkgYnkgW1NpbXBseSBIb3ddKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vKQotIDIwMTktMDUtMTcgLSBbR2VuZXJhdGUgU3ByaW5nIEJvb3QgUkVTVCBBUEkgdXNpbmcgU3dhZ2dlci9PcGVuQVBJXShodHRwczovL3d3dy40N25vcnRobGFicy5jb20va25vd2xlZGdlLWJhc2UvZ2VuZXJhdGUtc3ByaW5nLWJvb3QtcmVzdC1hcGktdXNpbmctc3dhZ2dlci1vcGVuYXBpLykgYnkgW0FudG9uaWUgWmFmaXJvdl0oaHR0cHM6Ly93d3cuNDdub3J0aGxhYnMuY29tL2F1dGhvci9hbnRvbmllLXphZmlyb3YvKQotIDIwMTktMDUtMjIgLSBbUkVTVCBBUElz5Luj56CB55Sf5oiQ5oyH5Y2XKE9wZW5BUEkgR2VuZXJhdG9yKV0oaHR0cHM6Ly9ndW0uY28vb3BlbmFwaV9nZW5lcmF0b3JfZWJvb2tfZ2IpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpLCBbWGluIE1lbmddKGh0dHBzOi8vZ2l0aHViLmNvbS94bWVuZzEpCi0gMjAxOS0wNS0yNCAtIFtSRVNUIEFQSSDku6PnorznlJ/miJDmjIfljZcgKE9wZW5BUEkgR2VuZXJhdG9yKV0oaHR0cHM6Ly9ndW0uY28vb3BlbmFwaV9nZW5lcmF0b3JfZWJvb2tfYmlnNSkgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkKLSAyMDE5LTA2LTI0IC0gW0t1YmVybmV0ZXMgQ2xpZW50cyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgva3ViZXJuZXRlcy1jbGllbnRzLWFuZC1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkgYXQgW0t1YmVybmV0ZXMgQ29udHJpYnV0b3IgU3VtbWl0cyBTaGFuZ2hhaSAyMDE5XShodHRwczovL3d3dy5sZmFzaWFsbGMuY29tL2V2ZW50cy9jb250cmlidXRvcnMtc3VtbWl0LWNoaW5hLTIwMTkvKQotIDIwMTktMDYtMjggW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHNdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvY29udGVudC9jb2Rld2luZC1vcGVuYXBpLXRvb2xzKSBpbiBbRWNsaXBzZSBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS5lY2xpcHNlLm9yZy8pIGJ5IElCTQotIDIwMTktMDYtMjkgW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHNdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1JQk0uY29kZXdpbmQtb3BlbmFwaS10b29scykgaW4gW1Zpc3VhbCBTdHVkaW8gTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS8pIGJ5IElCTQotIDIwMTktMDctMDQgLSBbUkVTVCBBUEkg44Gu44Gf44KB44Gu44Kz44O844OI44KZ55Sf5oiQ5YWl6ZaAIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2JpZzUpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpLCBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSwgW+WSjOeUsOaLk+acl10oaHR0cHM6Ly9naXRodWIuY29tL3RheHBvbikKLSAyMDE5LTA3LTA4IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBq+OCs+ODs+ODiOODquODk+ODpeODvOODiOOBl+OBn+OCieekvuWQjeOBjOi8ieOBo+OBn+ipseOAgihDQU0pIC0gQ0FNIFRFQ0ggQkxPR10oaHR0cHM6Ly90ZWNoLmNhbS1pbmMuY28uanAvZW50cnkvMjAxOS8wNy8wOC8xNDAwMDApIGJ5IFtDQU0sIEluYy5dKGh0dHBzOi8vd3d3LmNhbS1pbmMuY28uanAvKQotIDIwMTktMDctMTQgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadQeXRob27jga7jgq/jg6njgqTjgqLjg7Pjg4jjg6njgqTjg5bjg6njg6rjgpLkvZzmiJDjgZfjgZ9dKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQvaXRlbXMvZGZiOTI5MzE2YTEzMzVhMTYxYzApIGJ5IFt5dWppMzhrd210XShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210KQotIDIwMTktMDctMTkgLSBbRGV2ZWxvcGVyIEV4cGVyaWVuY2UgKERYKSBmb3IgT3Blbi1Tb3VyY2UgUHJvamVjdHM6IEhvdyB0byBFbmdhZ2UgRGV2ZWxvcGVycyBhbmQgQnVpbGQgYSBHcm93aW5nIERldmVsb3BlciBDb21tdW5pdHldKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvZGV2ZWxvcGVyLWV4cGVyaWVuY2UtZHgtZm9yLW9wZW4tc291cmNlLXByb2plY3RzLWVuZ2xpc2gtamFwYW5lc2UpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpLCBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbT3BlbiBTb3VyY2UgU3VtbWl0IEphcGFuIDIwMTldKGh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvZXZlbnRzL29wZW4tc291cmNlLXN1bW1pdC1qYXBhbi0yMDE5LykKLSAyMDE5LTA4LTE0IC0gW091ciBPcGVuQVBJIGpvdXJuZXkgd2l0aCBTdGFuZGFyZGl6aW5nIFNES3NdKGh0dHBzOi8vYml0bW92aW4uY29tL291ci1vcGVuYXBpLWpvdXJuZXktd2l0aC1zdGFuZGFyZGl6aW5nLXNka3MvKSBieSBbU2ViYXN0aWFuIEJ1cmdzdGFsbGVyXShodHRwczovL2JpdG1vdmluLmNvbS9hdXRob3Ivc2J1cmdzdGFsbGVyLykgYXQgW0JpdG1vdmluXShodHRwczovL3d3dy5iaXRtb3Zpbi5jb20pCi0gMjAxOS0wOC0xNSAtIFtBUEnjga7jgrPjg7zjg4njgpLoh6rli5XnlJ/miJDjgZXjgZvjgZ/jgYTjgaDjgZHjgarjgolnUlBD44Gn44Gq44GP44Gm44KC44KI44GP44Gq44GEP10oaHR0cHM6Ly93d3cubTN0ZWNoLmJsb2cvZW50cnkvMjAxOS8wOC8xNS8xMTAwMDApIGJ5IFtNMywgSW5jLl0oaHR0cHM6Ly9jb3Jwb3JhdGUubTMuY29tLykKLSAyMDE5LTA4LTIyIC0gW+ODnuOCpOOCr+ODreOCteODvOODk+OCueOBq+OBiuOBkeOCi1dlYiBBUEnjgrnjgq3jg7zjg57jga7nrqHnkIbilIAgR3JhcGhRTOOAgWdSUEPjgIFPcGVuQVBJ44Gu54m55b6044Go5L2/44GE44Gp44GT44KNXShodHRwczovL2VtcGxveW1lbnQuZW4tamFwYW4uY29tL2VuZ2luZWVyaHViL2VudHJ5LzIwMTkvMDgvMjIvMTAzMDAwKSBieSBbQG90YTQyeV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vdGE0MnkpCi0gMjAxOS0wOC0yNCAtIFtTd2FnZ2Vy44OJ44Kt44Ol44Oh44Oz44OI44GL44KJT3BlbkFQSSBHZW5lcmF0b3LjgpLkvb/jgaPjgabjg6Ljg4Pjgq/jgrXjg7zjg5Djg7zkvZzmiJBdKGh0dHBzOi8vcWlpdGEuY29tL21hc2F5b3NoaTAyMjIvaXRlbXMvNDg0NWU0YzcxNWQwNDU4N2MxMDQpIGJ5IFvlnYLmnKzmraPnvqldKGh0dHBzOi8vcWlpdGEuY29tL21hc2F5b3NoaTAyMjIpCi0gMjAxOS0wOC0yOSAtIFtPcGVuQVBJ5Yid5o6iXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci9hcnRpY2xlLzE0OTU5ODYpIGJ5IFtwZWFreGllXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci91c2VyLzExMTMxNTIpIGF0IFvohb7orq/kupHnpL7ljLpdKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyKQotIDIwMTktMDgtMjkgLSBb5YWo6Z2i6L+b5YyW77yaS3ViZXJuZXRlcyBDUkQgMS4xNiBHQeWJjeeeu10oaHR0cHM6Ly93d3cuc2VydmljZW1lc2hlci5jb20vYmxvZy9rdWJlcm5ldGVzLTEuMTYtY3JkLWdhLXByZXZpZXcvKSBieSBbTWluIEtpbV0oaHR0cHM6Ly9naXRodWIuY29tL3l1ZTk5NDQ4ODIpIGF0IFtTZXJ2aWNlTWVzaGVyIEJsb2ddKGh0dHBzOi8vd3d3LnNlcnZpY2VtZXNoZXIuY29tL2Jsb2cvKQotIDIwMTktMDktMDEgLSBbQ3JlYXRpbmcgYSBQSFAtU2xpbSBzZXJ2ZXIgdXNpbmcgT3BlbkFQSSAoWW91dHViZSB2aWRlbyldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9NWNKdGJJcnNZa2cpIGJ5IFtEYW5pZWwgUGVyc3Nvbl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ25HLVROMjNsc3dPNlFidldoTXR4cEEpCi0gMjAxOS0wOS0wNiAtIFtWZXJ0LnggYW5kIE9wZW5BUEldKGh0dHBzOi8vd2lzc2VsLm5ldC9ibG9nLzIwMTkvMDkvdmVydHgtYW5kLW9wZW5hcGkuaHRtbCkgYnkgW1N0ZXBoYW4gSCBXaXNzZWxdKGh0dHBzOi8vdHdpdHRlci5jb20vbm90ZXNzZW5zZWkpIGF0IFt3aXNzZWwubmV0IGJsb2ddKGh0dHBzOi8vd2lzc2VsLm5ldCkKLSAyMDE5LTA5LTA5IC0gW0Nsb3VkLW5hdGl2ZSBkZXZlbG9wbWVudCAtIENyZWF0aW5nIFJFU1RmdWwgbWljcm9zZXJ2aWNlc10oaHR0cHM6Ly9jbG91ZC5pYm0uY29tL2RvY3MvY2xvdWQtbmF0aXZlP3RvcGljPWNsb3VkLW5hdGl2ZS1yZXN0LWFwaSkgaW4gW0lCTSBDbG91ZCBEb2NzXShodHRwczovL2Nsb3VkLmlibS5jb20vZG9jcykKLSAyMDE5LTA5LTE0IC0gW0dlbmVyYXRpbmcgYW5kIENvbmZpZ3VyaW5nIGEgTWFzdGVyY2FyZCBBUEkgQ2xpZW50XShodHRwczovL2RldmVsb3Blci5tYXN0ZXJjYXJkLmNvbS9wbGF0Zm9ybS9kb2N1bWVudGF0aW9uL2dlbmVyYXRpbmctYW5kLWNvbmZpZ3VyaW5nLWEtbWFzdGVyY2FyZC1hcGktY2xpZW50LykgYXQgW01hc3RlcmNhcmQgRGV2ZWxvcGVycyBQbGF0Zm9ybV0oaHR0cHM6Ly9kZXZlbG9wZXIubWFzdGVyY2FyZC5jb20vcGxhdGZvcm0vZG9jdW1lbnRhdGlvbi8pCi0gMjAxOS0wOS0xNSAtIFtPcGVuQVBJKFN3YWdnZXIp5bCO5YWl5LiL6Kq/44G5XShodHRwczovL3FpaXRhLmNvbS9TaG9pY2hpS3VyYW9rYS9pdGVtcy9mMWY3YTNjMjM3NmY3Y2Q5YzU2YSkgYnkgW1Nob2ljaGkgS3VyYW9rYV0oaHR0cHM6Ly9xaWl0YS5jb20vU2hvaWNoaUt1cmFva2EpCi0gMjAxOS0wOS0xNyAtIFtUdXRvcmlhbDogRG9jdW1lbnRpbmcgaHR0cDRrIEFQSXMgd2l0aCBPcGVuQXBpM10oaHR0cHM6Ly93d3cuaHR0cDRrLm9yZy90dXRvcmlhbHMvZG9jdW1lbnRpbmdfYXBpc193aXRoX29wZW5hcGkvKSBieSBbaHR0cDRrXShodHRwczovL3d3dy5odHRwNGsub3JnLykKLSAyMDE5LTA5LTIyIC0gW09wZW5BUEkgM+OCkuWujOWFqOOBq+eQhuino+OBp+OBjeOCi+acrF0oaHR0cHM6Ly9ib290aC5wbS9qYS9pdGVtcy8xNTcxOTAyKSBieSBbQG90YTQyeV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vdGE0MnkpCi0gMjAxOS0wOS0yMiAtIFtSRVNUZnVsIEFQSXM6IFR1dG9yaWFsIG9mIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL0BhbWlybS5sYXZhc2FuaS9yZXN0ZnVsLWFwaXMtdHV0b3JpYWwtb2Ytb3BlbmFwaS1zcGVjaWZpY2F0aW9uLWVlYWRhMGUzOTAxZCkgYnkgW0FtaXIgTGF2YXNhbmldKGh0dHBzOi8vbWVkaXVtLmNvbS9AYW1pcm0ubGF2YXNhbmkpCi0gMjAxOS0wOS0yMiAtIFtSZWRlZmluaW5nIFNES3MgYXMgc29mdHdhcmUgZGl2ZXJzaXR5IGtpdHNdKGh0dHBzOi8vZGV2cmVsLm5ldC9kZXYtcmVsL3JlZGVmaW5pbmctc2Rrcy1hcy1zb2Z0d2FyZS1kaXZlcnNpdHkta2l0cykgYnkgW1NpZCBNYWVzdHJlIChYZXJvKV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9zaWRuZXlhbGxlbikgYXQgW0RldlJlbENvbiBTYW4gRnJhbmNpc2NvIDIwMTldKGh0dHBzOi8vc2YyMDE5LmRldnJlbC5uZXQvKQotIDIwMTktMDktMjMgLSBbc3dhZ2dlcuOBi+OCiU9wZW5BcGkgR2VuZXJhdG9y44GnU3ByaW5n44Gu44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQXShodHRwczovL3FpaXRhLmNvbS9saXR0bGVGZWV0L2l0ZW1zLzQ5MmRmMmFkNjhhMDc5OWE1ZTVlKSBieSBbQGxpdHRsZUZlZXRdKGh0dHBzOi8vcWlpdGEuY29tL2xpdHRsZUZlZXQpIGF0IFtRaWl0YV0oaHR0cHM6Ly9xaWl0YS5jb20vKQotIDIwMTktMDktMjQgLSBbRWluZSBTdHVuZGUgd2FzIG1pdCBBcGkgRmlyc3QhXShodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC9KYW5XZWluc2NoZW5rZXIvZWluZS1zdHVuZGUtd2FzLW1pdC1hcGktZmlyc3QpIGJ5IFtAamFud2VpbnNjaGVua2VyXShodHRwczovL3R3aXR0ZXIuY29tL2phbndlaW5zY2hlbmtlcikgYXQgW0phdmEgRm9ydW0gTm9yZF0oaHR0cHM6Ly9qYXZhZm9ydW1ub3JkLmRlLykKLSAyMDE5LTEwLTA5IC0gW29wZW5hcGktZ2VuZXJhdG9yIOOBp+eUn+aIkOOBl+OBnyBHbyDjgq/jg6njgqTjgqLjg7Pjg4jjgacgQmVhcmVyIOiqjeiovOOCkuOBmeOCi10oaHR0cHM6Ly9hdXRvcHAtdGVjaC5oYXRlbmFibG9nLmNvbS9lbnRyeS8yMDE5LzEwLzA5LzIyMjAzOSkgYnkgW0FraXJhIFRhbmltdXJhXShodHRwczovL2dpdGh1Yi5jb20vYXV0b3BwKQotIDIwMTktMTAtMTAgLSBbQXV0b21hdGljIEdlbmVyYXRpb24gb2YgUkVTVCBDbGllbnRzXShodHRwczovL3d3dy5tZWV0dXAuY29tL2ZyLUZSL0NyaXRlby1MYWJzLVRlY2gtVGFsa3MvZXZlbnRzLzI2NDc3NTc2OC8pIGJ5IFRob21hcyBQZXlyYXJkLCBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIgYXQgQ3JpdGVvIGluIFtGdWxsLVN0YWNrIFRlY2ggVGFsa3MgKE1lZXR1cCldKGh0dHBzOi8vd3d3Lm1lZXR1cC5jb20vZnItRlIvQ3JpdGVvLUxhYnMtVGVjaC1UYWxrcy9ldmVudHMvMjY0Nzc1NzY4LykKLSAyMDE5LTEwLTEyIC0gW09wZW5BcGnoh6rliqjnlJ/miJBjbGllbnRdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC93eGlkMjc5ODIyNi9hcnRpY2xlL2RldGFpbHMvMTAyNTI3NDY3KSBieSBb6YOR5rO95rSyXShodHRwczovL21lLmNzZG4ubmV0L3d4aWQyNzk4MjI2KQotIDIwMTktMTAtMTYgLSBbSG93IHRvIHNoaXAgQVBJcyBmYXN0ZXI/XShodHRwczovL21lZGl1bS5jb20vQGFjY291bnRzXzc2MjI0L2hvdy10by1zaGlwLWFwaXMtZmFzdGVyLWNhYmVmMmY4MTllNCkgYnkgW1NpbW9uIEd1aWxsaWFtcyBAIFBvbmlDb2RlXShodHRwczovL3Bvbmljb2RlLmRldikKLSAyMDE5LTEwLTIyIC0gW09wZW5BUEkgKyBTcHJpbmcgQm9vdChLb3RsaW4p44Gn44OV44Kh44Kk44Or44OA44Km44Oz44Ot44O844OJQVBJ44KS5L2c5oiQ44GZ44KLXShodHRwczovL3FpaXRhLmNvbS9ib3Jvbm5nby9pdGVtcy80Yjc4YjkyNTI2MjA5ZGFlYWVlOSkgYnkgW1l1a2kgRnVydWthd2FdKGh0dHBzOi8vdHdpdHRlci5jb20veXVraV9mdXJ1a2F3YTUpCi0gMjAxOS0xMC0yNCAtIFtNaWNyb3Byb2ZpbGUgT3BlbkFQSSAtIENvZGUgRmlyc3Qgb3IgRGVzaWduIEZpcnN0P10oaHR0cHM6Ly9naXRodWIuY29tL3BlLXN0L2FwaWRvY3MvYmxvYi9tYXN0ZXIvTWljcm9Qcm9maWxlLU9wZW5BUEktYWxsLXNsaWRlcy5wZGYpIGJ5IFtQZXRlciBbcMmbyoPJmV0gU3RlaW5lcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9wZXNjaGUpIGF0IFtlY2xpcHNlY29uIEV1cm9wZSAyMDE5XShodHRwczovL3d3dy5lY2xpcHNlY29uLm9yZy9ldXJvcGUyMDE5L3Nlc3Npb25zL21pY3JvcHJvZmlsZS1vcGVuYXBpLWNvZGUtZmlyc3Qtb3ItZGVzaWduLWZpcnN0KQotIDIwMTktMTEtMDYgLSBbR2VuZXJhdGluZyBBUEkgY2xpZW50cyBiYXNlZCBvbiBPcGVuQVBJIHYzIHNwZWNpZmljYXRpb25zXShodHRwczovLzk4ZWxlbWVudHMuY29tL2Jsb2cvZ2VuZXJhdGluZy1hcGktY2xpZW50cy1iYXNlZC1vbi1vcGVuYXBpLXYzLXNwZWNpZmljYXRpb25zKSBieSBbRG9taW5payBKYXN0cnrEmWJza2kgQCA5OGVsZW1lbnRzXShodHRwczovLzk4ZWxlbWVudHMuY29tKQotIDIwMTktMTEtMDYgLSBbT3BlbkFQSeOCkuWIqeeUqOOBl+OBpuiHquWJjeOBrkFQSeOCteODvOODkOODvChTaW5hdHJhKeOCkuenu+akjeOBl+OBn+aZguOBruODoeODol0oaHR0cHM6Ly9xaWl0YS5jb20vWWFzdWhpcm9BQkUvaXRlbXMvYzczOTIwZWFiMmQ5ZDZlOTdmZDkpIGJ5IFtZYXN1aGlybyBBQkVdKGh0dHBzOi8vdHdpdHRlci5jb20vWWFzdWhpcm9BQkUpCi0gMjAxOS0xMS0wNyAtIFtBUEkgRmlyc3QgZGV2ZWxvcG1lbnQgd2l0aCBPcGVuQVBJIC0gWW91IHNob3VsZCB5b3UgcHJhY3Rpc2UgaXQgIT9dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9RjlpRjNhMVo4WTgpIGJ5IFtOaWNrIFZhbiBIb29mXShodHRwczovL3d3dy5uaWNrdmFuaG9vZi5jb20vKSBhdCBbRGV2b3h4IEJlbGdpdW0gMjAxOV0oaHR0cHM6Ly9kZXZveHguYmUvKQotIDIwMTktMTEtMDggLSBbSkhpcHN0ZXIgYmV5b25kIENSVUQgLSBBUEktRmlyc3QgZm9yIEVudGVycHJpc2VzIGJ5IEVucmljbyBDb3N0YW56aV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1tMjhKRm92S1EyMCkgYnkgW0VucmljbyBDb3N0YW56aV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9lbnJpY29jb3N0YW56aSkgYXQgW0pIaXBzdGVyIENvbmYgMjAxOSBpbiBQYXJpc10oaHR0cHM6Ly9qaGlwc3Rlci1jb25mLmdpdGh1Yi5pby8pCi0gMjAxOS0xMS0xMSAtIFtUeXBlU2NyaXB0IFJFU1QgQVBJ44Kv44Op44Kk44Ki44Oz44OIXShodHRwczovL3FpaXRhLmNvbS91bmh1cnJpZWQvaXRlbXMvN2I3NGY3ZDNjNDM1NDVkYWRkMmIpIGJ5IFtAdW5odXJyaWVkXShodHRwczovL3FpaXRhLmNvbS91bmh1cnJpZWQpCi0gMjAxOS0xMS0xMSAtIFtPbmUgU3BlYyB0byBSdWxlIHRoZW0gYWxsIC0gT3BlbkFQSSBpbiBBY3Rpb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TU1heV9uaHQ4ZWMpIGJ5IFtBbmRyZWFzIExpdHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9saXR0bGRyKSBhdCBbY29kZS50YWxrcyAyMDE5XShodHRwczovL3d3dy5jb2RldGFsa3MuY29tLykKLSAyMDE5LTExLTEzIC0gW09wZW5BUEkgMy4wIEVkaXRvciBBbmQgR2VuZXJhdG9yIFdpdGggQSBTcHJpbmcgQm9vdCBFeGFtcGxlXShodHRwczovL3NpbXBseS1ob3cuY29tL2Rlc2lnbi1hbmQtZ2VuZXJhdGUtYXBpLWNvZGUtZnJvbS1vcGVuYXBpKSBhdCBbU2ltcGx5IEhvd10oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS8pCi0gMjAxOS0xMS0xNyAtIFtPcGVuQVBJIEdlbmVyYXRvciBZb3VUdWJlIHBsYXlsaXN0XShodHRwczovL3d3dy55b3V0dWJlLmNvbS9wbGF5bGlzdD9saXN0PVBMdEp5SFZNZHpmRjZmQmtPVVY1VkRWRXJQMjNDR2dISXkpIGF0IFtZb3VUdWJlXShodHRwczovL3d3dy55b3V0dWJlLmNvbSkKLSAyMDE5LTExLTIwIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJXShodHRwczovL25vdGkuc3QvbG9ybmFqYW5lL0h2REg3VS9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaSkgYnkgW0xvcm5hIE1pdGNoZWxsXShodHRwczovL3R3aXR0ZXIuY29tL2xvcm5hamFuZSkgYXQgW0dPVE8gQ29wZW5oYWdlbiAyMDE5XShodHRwczovL2dvdG9jcGguY29tLzIwMTkvKQotIDIwMTktMTEtMjAgLSBbSG93IHRvIEdlbmVyYXRlIEFuZ3VsYXIgY29kZSBmcm9tIE9wZW5BUEkgc3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vZG90bmV0dGhvdWdodHMubmV0L2hvdy10by1nZW5lcmF0ZS1hbmd1bGFyLWNvZGUtZnJvbS1vcGVuYXBpLXNwZWNpZmljYXRpb25zLykgYnkgQW51cmFqCi0gMjAxOS0xMS0yMyAtIFtTd2FnZ2VyIOOBp+OBr+OBquOBhCBPcGVuQVBJIFNwZWNpZmljYXRpb24gMy4wIOOBq+OCiOOCiyBBUEkg44K144O844OQ44O86ZaL55m6XShodHRwczovL3d3dy5zbGlkZXNoYXJlLm5ldC90ZWNoYmxvZ3lhaG9vL3N3YWdnZXItb3BlbmFwaS1zcGVjaWZpY2F0aW9uLTMwLWFwaSkgYnkgW1RldHN1eWEgTW9yaW1vdG9dKGh0dHBzOi8vZ2l0aHViLmNvbS90MnkpIGF0IFtKSlVHIENDQyAyMDE5IEZhbGxdKGh0dHBzOi8vY2NjMjAxOWZhbGwuamF2YS11c2Vycy5qcC8pCi0gMjAxOS0xMS0yNCAtIFtBY2NlbGVyYXRlIEZsdXR0ZXIgZGV2ZWxvcG1lbnQgd2l0aCBPcGVuQVBJIGFuZCBEYXJ0IGNvZGUgZ2VuZXJhdGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpcmluYXNvdXRod2VsbF8yMjAvYWNjZWxlcmF0ZS1mbHV0dGVyLWRldmVsb3BtZW50LXdpdGgtb3BlbmFwaS1hbmQtZGFydC1jb2RlLWdlbmVyYXRpb24tMWYxNmY4MzI5YTZhKSBieSBbSXJpbmEgU291dGh3ZWxsXShodHRwczovL21lZGl1bS5jb20vQGlyaW5hc291dGh3ZWxsXzIyMCkKLSAyMDE5LTExLTI1IC0gW29wZW5hcGktZ2VuZXJhdG9y44Gn5omL6Lu944Gr44K544K/44OW44K144O844OQ44Go44Kv44Op44Kk44Ki44Oz44OI44Gu55Sf5oiQXShodHRwczovL3FpaXRhLmNvbS9wb2Nob3BvY2hvMTMvaXRlbXMvOGRiNjYyZTE5MzRmYjJiNDA4YjgpIGJ5IFtAcG9jaG9wb2NobzEzXShodHRwczovL3R3aXR0ZXIuY29tL3BvY2hvcG9jaG8xMykKLSAyMDE5LTExLTI2IC0gW0NvcmRhQ29uIDIwMTkgSGlnaGxpZ2h0czogQnJhaWQgU2VydmVyIGFuZCBPcGVuQVBJIEdlbmVyYXRvciBmb3IgQ29yZGEgQ2xpZW50IEFQSeKAmXNdKGh0dHBzOi8vYmxvZy5iOWxhYi5jb20vY29yZGFjb24tMjAxOS1oaWdobGlnaHRzLWJyYWlkLXNlcnZlci1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItZm9yLWNvcmRhLWZsb3dzLWFwaS1zLWQyNDE3OWNjYjI3YykgYnkgW0FkZWwgUnVzdHVtXShodHRwczovL2Jsb2cuYjlsYWIuY29tL0BhZGVscmVzdG9tKSBhdCBbQjlsYWJdKGh0dHBzOi8vYmxvZy5iOWxhYi5jb20vKQotIDIwMTktMTItMDMgLSBbQSBSb2FkIHRvIExlc3MgQ29kaW5nOiBBdXRvLUdlbmVyYXRlIEFQSUxpYnJhcnldKGh0dHBzOi8vd3d3LmNvcmRhLm5ldC9ibG9nL2Etcm9hZC10by1sZXNzLWNvZGluZy1hdXRvLWdlbmVyYXRlLWFwaWxpYnJhcnkvKSBhdCBbQ29yZGEgQmxvZ10oaHR0cHM6Ly93d3cuY29yZGEubmV0L2Jsb2cvKQotIDIwMTktMTItMDQgLSBbQW5ndWxhcu+8i05lc3RKU++8i09wZW5BUEnvvIhTd2FnZ2Vy77yJ44Gn44Oe44Kk44Kv44Ot44K144O844OT44K544KS6KaW6YeO44Gr5YWl44KM44Gf55Kw5aKD44KS6ICD44GI44KLXShodHRwczovL3FpaXRhLmNvbS90ZXJhY3k1NS9pdGVtcy8wMzI3YzdhMTcwZWM3NzI5NzBjNikgYnkgW+OBpuOCieOBl+ODvF0oaHR0cHM6Ly90d2l0dGVyLmNvbS90ZXJhY3k1NSkKLSAyMDE5LTEyLTA1IC0gW0NvZGUgZ2VuZXJhdGlvbiBvbiB0aGUgSmF2YSBWTV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vc3VsbGlzL2NvZGUtZ2VuZXJhdGlvbi1vbi10aGUtamF2YS12bS0yMDE5LTEyLTA1KSBieSBbU2VhbiBTdWxsaXZhbl0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vc3VsbGlzKQotIDIwMTktMTItMTcgLSBbT3BlbkFQSSBHZW5lcmF0b3Ig44GnIE9BdXRoMiDjgqLjgq/jgrvjgrnjg4jjg7zjgq/jg7PnmbrooYzjga7jgrPjg7zjg4njgb7jgafnlJ/miJDjgZfjgabjgb/jgotdKGh0dHBzOi8vd3d3LnRlY2hzY29yZS5jb20vYmxvZy8yMDE5LzEyLzE3L29wZW5hcGktZ2VuZXJhdG9yLW9hdXRoMi1hY2Nlc3N0b2tlbi8pIGJ5IFtURUNIU0NPUkVdKGh0dHBzOi8vd3d3LnRlY2hzY29yZS5jb20vYmxvZy8pCi0gMjAxOS0xMi0yMyAtIFtVc2UgQWRhIGZvciBZb3VyIFdlYiBEZXZlbG9wbWVudF0oaHR0cHM6Ly93d3cuZWxlY3Ryb25pY2Rlc2lnbi5jb20vdGVjaG5vbG9naWVzL2VtYmVkZGVkLXJldm9sdXRpb24vYXJ0aWNsZS8yMTExOTE3Ny91c2UtYWRhLWZvci15b3VyLXdlYi1kZXZlbG9wbWVudCkgYnkgW1N0ZXBoYW5lIENhcnJlel0oaHR0cHM6Ly9naXRodWIuY29tL3N0Y2FycmV6KQotIDIwMTktMTItMjMgLSBbT3BlbkFQSeOBruOCueOCreODvOODnuOCkuWIhuWJsuODu+ani+mAoOWMluOBl+OBpuOBhOOBj+aWueazlV0oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvYXJ0aWNsZXMvc3RydWN0dXJlZC1vcGVuYXBpLXNjaGVtYSkgYnkgW+Wwj+mjr+WhmumBlOS5n10oaHR0cHM6Ly9naXRodWIuY29tL3QyaDUpIGF0IFtHaUZULCBJbmNdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwLykKLSAyMDIwLTAxLTE3IC0gW09wZW5BUEkgZGVtbyBmb3IgUHVscCAzLjAgR0FdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bUZCUC1NMFpQZncmdD0xNzhzKSBieSBbUHVscF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ0k0M0ZmczRWUER2N2F3WHZ2QkpmUlEpIGF0IFtZb3V0dWJlXShodHRwczovL3d3dy55b3V0dWJlLmNvbS8pCi0gMjAyMC0wMS0xOSAtIFtXaHkgZG9jdW1lbnQgYSBSRVNUIEFQSSBhcyBjb2RlP10oaHR0cHM6Ly9kZXYudG8vcm9sZnN0cmVlZmtlcmsvd2h5LWRvY3VtZW50LWEtcmVzdC1hcGktYXMtY29kZS01ZTdwKSBieSBbUm9sZiBTdHJlZWZrZXJrXShodHRwczovL2dpdGh1Yi5jb20vcnBzdHJlZWYpIGF0IFtERVYgQ29tbXVuaXR5XShodHRwczovL2Rldi50bykKLSAyMDIwLTAxLTI4IC0gW0dldCBZb3VyIFNlcnZlcmxlc3MgU3dhZ2dlciBCYWNrIHdpdGggT3BlbkFQSV0oaHR0cHM6Ly9kZXYudG8vbWF0dHR5bGVyL2dldC15b3VyLXNlcnZlcmxlc3Mtc3dhZ2dlci1iYWNrLXdpdGgtb3BlbmFwaS00OGdjKSBieSBbTWF0dCBUeWxlcl0oaHR0cHM6Ly9kZXYudG8vbWF0dHR5bGVyKQotIDIwMjAtMDEtMzAgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljgbjjga7jgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjg4hdKGh0dHBzOi8vd3d3Lnl1dGFrYTBtLndvcmsvZW50cnkvMjAyMC8wMS8zMC8xNjM5MDUpIGJ5IFt5dXRha2EwbV0oaHR0cHM6Ly9naXRodWIuY29tL3l1dGFrYTBtKQotIDIwMjAtMDItMDEgLSBbVXNpbmcgT3BlbkFQSSB0byBNYXhpbWlzZSBZb3VyIFB1bHAgMyBFeHBlcmllbmNlXShodHRwczovL2Zvc2RlbS5vcmcvMjAyMC9zY2hlZHVsZS9ldmVudC9vcGVuYXBpLykgYnkgW0Rlbm5pcyBLbGliYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9ka2xpYmFuLykgYXQgW0ZPU0RFTV0oaHR0cHM6Ly9mb3NkZW0ub3JnLykKLSAyMDIwLTAyLTA3IC0gW1doeSB5b3Ugc2hvdWxkIHVzZSBPcGVuQVBJIGZvciB5b3VyIEFQSSBkZXNpZ25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9emhiN3ZVQXBMVzgmdD05MjdzKSBieSBbTmljayBWYW4gSG9vZl0oaHR0cHM6Ly9hcGljb25mZXJlbmNlLm5ldC9zcGVha2VyL25pY2stdmFuLWhvb2YvKSBhdCBbQVBJIENvbmZlcmVuY2VdKGh0dHBzOi8vYXBpY29uZmVyZW5jZS5uZXQvKQotIDIwMjAtMDItMTcgLSBbUnVieW5ldGVzOiB1c2luZyBPcGVuQVBJIHRvIHZhbGlkYXRlIEt1YmVybmV0ZXMgY29uZmlnc10oaHR0cHM6Ly93d3cuYnJpZ2h0Ym94LmNvbS9ibG9nLzIwMjAvMDIvMTcvdXNpbmctb3BlbmFwaS10by12YWxpZGF0ZS1rdWJlcm5ldGVzLWNvbmZpZ3MvKSBieSBOZWlsIFdpbHNvbiBhdCBbQnJpZ2h0Ym94XShodHRwczovL3d3dy5icmlnaHRib3guY29tLykKLSAyMDIwLTAyLTIwIC0gW0J1aWxkaW5nIFNES3MgZm9yIHRoZSBmdXR1cmVdKGh0dHBzOi8vZGV2YmxvZy54ZXJvLmNvbS9idWlsZGluZy1zZGtzLWZvci10aGUtZnV0dXJlLWI3OWZmNzI2ZGZkNikgYnkgW1NpZCBNYWVzdHJlIChYZXJvKV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9zaWRuZXlhbGxlbikKLSAyMDIwLTAyLTI3IC0gW051eHTliKnnlKjjg5fjg63jg4Djgq/jg4jjgadJRTEx44Go5Luy6Imv44GP44GZ44KL44Gf44KB44GuRTJFXShodHRwczovL3RlY2gubWVkcGVlci5jby5qcC9lbnRyeS9lMmUtaWUxMSkgYXQgW01lZHBlZXIuY28uanAgVGVjaCBCbG9nXShodHRwczovL3RlY2gubWVkcGVlci5jby5qcC8pCi0gMjAyMC0wMi0yOSAtIFtQcm92aWRpbmcgU3VwcG9ydCB0byBJb1QgRGV2aWNlcyBEZXBsb3llZCBpbiBEaXNjb25uZWN0ZWQgUnVyYWwgRW52aXJvbm1lbnQgKENvbmZlcmVuY2UgcGFwZXIpXShodHRwczovL2xpbmsuc3ByaW5nZXIuY29tL2NoYXB0ZXIvMTAuMTAwNy85NzgtMy0wMzAtNDE0OTQtOF8xNCkgYnkgU2VyZ2lvIExhc28sIERhbmllbCBGbG9yZXMtTWFydMOtbiwgSnVhbiBMdWlzIEhlcnJlcmFDYXJsb3MsIENhbmFsSnVhbiBNYW51ZWwsIE11cmlsbG9KYXZpZXIgQmVycm9jYWwKLSAyMDIwLTAzLTAyIC0gW0hvdyBUbyBHZW5lcmF0ZSBBbmd1bGFyICYgU3ByaW5nIENvZGUgRnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vd3d3Lm1va2thcHBzLmRlL2Jsb2cvaG93LXRvLWdlbmVyYXRlLWFuZ3VsYXItYW5kLXNwcmluZy1jb2RlLWZyb20tb3Blbi1hcGktc3BlY2lmaWNhdGlvbi8pIGJ5IFtNaWNoYWVsIEhvZmZtYW5uXShodHRwczovL3d3dy5tb2trYXBwcy5kZS8pCi0gMjAyMC0wMy0wMiAtIFtPcGVuQVBJIEdlbmVyYXRvciArIFR5cGVTY3JpcHQg44Gn5aeL44KB44KL6Ieq5YuV55Sf5oiQ44Gu5Z6L44Gr5a6I44KJ44KM44Gf6LGK44GL44Gq44Kv44Op44Kk44Ki44Oz44OI55Sf5rS7XShodHRwczovL2dpZnQtdGVjaC5jby5qcC9hcnRpY2xlcy9vcGVuYXBpLWdlbmVyYXRvci10eXBlc2NyaXB0KSBieSBb5LqU55m+6JS1IOebtOaouV0oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvbWVtYmVycy9uYW9raWlvcm9pKSBhdCBbR2lGVOagquW8j+S8muekvl0oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvKQotIDIwMjAtMDMtMTAgLSBbT3BlbkFQSSBHZW5lcmF0b3IgTWVldHVwICMxXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9ha2loaXRvX25ha2Fuby9vcGVuYXBpLWdlbmVyYXRvci1tZWV0dXAtbnVtYmVyLTEpIGJ5IFvkuK3ph47mmoHkurpdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpIGF0IFtPcGVuQVBJIEdlbmVyYXRvciBNZWV0dXAgIzFdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3ItbWVldHVwLmNvbm5wYXNzLmNvbS9ldmVudC8xNjgxODcvKQotIDIwMjAtMDMtMTUgLSBbTG9hZCBUZXN0aW5nIFlvdXIgQVBJIHdpdGggU3dhZ2dlci9PcGVuQVBJIGFuZCBrNl0oaHR0cHM6Ly9rNi5pby9ibG9nL2xvYWQtdGVzdGluZy15b3VyLWFwaS13aXRoLXN3YWdnZXItb3BlbmFwaS1hbmQtazYpCi0gMjAyMC0wNC0xMyAtIFvkv7rnmoTjgJBPQVPjgJHjgajjga7lkJHjgY3lkIjjgYTmlrkgKOeIhumAn+OBp09wZW5BUEnjgajlj4vpgZTjgavjgarjgo3jgYYpXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC9lbnRyeS8yMDIwLzA0LzEzLzEwMDAwMCkgaW4gW09QVGltIEJsb2ddKGh0dHBzOi8vdGVjaC1ibG9nLm9wdGltLmNvLmpwLykKLSAyMDIwLTA0LTIyIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ub3JkaWNhcGlzLmNvbS9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbS3Jpc3RvcGhlciBTYW5kb3ZhbF0oaHR0cHM6Ly9ub3JkaWNhcGlzLmNvbS9hdXRob3Ivc2FuZG92YWxlZmZlY3QvKSBpbiBbTm9yZGljIEFQSXNdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vKQotIDIwMjAtMDQtMjcgLSBbSG93IHdlIHVzZSBPcGVuIEFQSSB2MyBzcGVjaWZpY2F0aW9uIHRvIGF1dG8tZ2VuZXJhdGUgQVBJIGRvY3VtZW50YXRpb24sIGNvZGUtc25pcHBldHMgYW5kIGNsaWVudHNdKGh0dHBzOi8vbWVkaXVtLmNvbS9wZGYtZ2VuZXJhdG9yLWFwaS9ob3ctd2UtdXNlLW9wZW4tYXBpLXYzLXNwZWNpZmljYXRpb24tdG8tYXV0by1nZW5lcmF0ZS1hcGktZG9jdW1lbnRhdGlvbi1jb2RlLXNuaXBwZXRzLWFuZC1jbGllbnRzLWQxMjdhM2NlYTc4NCkgYnkgW1RhbmVsIFTDpGhlcMO1bGRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AdGFuZWwudGFoZXBvbGQpCi0gMjAyMC0wNS0wOSAtIFtPcGVuQVBJ44Gn44GK5omL6Lu944Gr44Oi44OD44KvQVBJ44K144O844OQ44O844KS5YuV44GL44GZXShodHRwczovL3FpaXRhLmNvbS9rYXNhX2xlL2l0ZW1zLzk3Y2E2YThkZDQ2MDU2OTVjMjVjKSBieSBbU2FjaGllIEthbWJhXShodHRwczovL3FpaXRhLmNvbS9rYXNhX2xlKQotIDIwMjAtMDUtMTggLSBbU3ByaW5nIEJvb3QgUkVTVCB3aXRoIE9wZW5BUEkgM10oaHR0cHM6Ly9kZXYudG8vYWxmb256amFuZnJpdGh6L3NwcmluZy1ib290LXJlc3Qtd2l0aC1vcGVuYXBpLTMtNTlqbSkgYnkgW0FsZm9ueiBKYW4gRnJpdGh6XShodHRwczovL2Rldi50by9hbGZvbnpqYW5mcml0aHopCi0gMjAyMC0wNS0xOSAtIFtEZWFkIFNpbXBsZSBBUElzIHdpdGggT3BlbiBBUEldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9c0lhWG1SNnhSQXcpIGJ5IFtDaHJpcyBUYW5rZXJzbGV5XShodHRwczovL2dpdGh1Yi5jb20vZHJhZ29ubWFudGFuaykgYXQgW05leG1vXShodHRwczovL2RldmVsb3Blci5uZXhtby5jb20vKQotIDIwMjAtMDUtMjIgLSBbVHlwZVNjcmlwdCBSRVNUIEFQSSBDbGllbnRdKGh0dHBzOi8vZGV2LnRvL3VuaHVycmllZC90eXBlc2NyaXB0LXJlc3QtYXBpLWNsaWVudC00aW4zKSBieSBbInVuaHVycmllZCJdKGh0dHBzOi8vZGV2LnRvL3VuaHVycmllZCkKLSAyMDIwLTA1LTI4IC0gW+OAkOS9v+eUqCBsb3RpZnkgKyBTd2FnZ2VyIOW7uue9ruWPr+WFseeUqOeahCBMSU5FIE5vdGlmeSBib3TjgJEgLSAjTmlKaWEgQCBDaGF0Ym90IERldmVsb3BlciBUYWl3YW4g56ysICMxOSDlsI/ogZpdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9YWdZVno2ZHpoMUkpIGJ5IFtDaGF0Ym90IERldmVsb3BlciBUYWl3YW5dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUN4ZVlVeVpObkhtcFgyM1lORi1ld3Z3KQotIDIwMjAtMDUtMjggLSBbQnVpbGRpbmcgQVBJcyB3aXRoIExhcmF2ZWwgdXNpbmcgT3BlbkFQSV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj14ZXhMdlFxQWhpQSkgYnkgW0NocmlzIFRhbmtlcnNsZXldKGh0dHBzOi8vZ2l0aHViLmNvbS9kcmFnb25tYW50YW5rKSBhdCBbTGFyYWNvbiBFVV0oaHR0cHM6Ly9sYXJhY29uLmV1LykKLSAyMDIwLTA2LTEyIC0gW0ludGVyb3BlcmFiaWxpdHkgYnkgY29uc3RydWN0aW9uOiBjb2RlIGdlbmVyYXRpb24gZm9yIEFycm93aGVhZCBDbGllbnRzXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcvZG9jdW1lbnQvOTI3NDc0NikgYnkgTWljaGVsZSBBbGJhbm8sIEJyaWFuIE5pZWxzZW4gYXQgWzIwMjAgSUVFRSBDb25mZXJlbmNlIG9uIEluZHVzdHJpYWwgQ3liZXJwaHlzaWNhbCBTeXN0ZW1zIChJQ1BTKV0oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL3hwbC9jb25ob21lLzkyNzQ1NDQvcHJvY2VlZGluZykKLSAyMDIwLTA2LTIzIC0gW+aWsOimj+OCteODvOODkOODvOOCouODl+ODquOCseODvOOCt+ODp+ODs+OBq1R5cGVTY3JpcHTjgpLmjqHnlKjjgZfjgabjgb/jgZ9dKGh0dHBzOi8vd3d3LmNhbS1pbmMuY28uanAvbmV3cy8yMDIwMDYyMykgYXQgW0NBTSBUZWNoIEJsb2ddKGh0dHBzOi8vd3d3LmNhbS1pbmMuY28uanAvbmV3cy90ZWNoLWJsb2cvKQotIDIwMjAtMDYtMjkgLSBbQXJ0aWZhY3QgQWJzdHJhY3Q6IERlcGxveW1lbnQgb2YgQVBJcyBvbiBBbmRyb2lkIE1vYmlsZSBEZXZpY2VzIGFuZCBNaWNyb2NvbnRyb2xsZXJzXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcvZG9jdW1lbnQvOTEyNzM1MykgYnkgW1NlcmdpbyBMYXNvIDsgTWFyaW5vIExpbmFqZSA7IEpvc2UgR2FyY2lhLUFsb25zbyA7IEp1YW4gTS4gTXVyaWxsbyA7IEphdmllciBCZXJyb2NhbF0oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkxMjczNTMvYXV0aG9ycyNhdXRob3JzKSBhdCBbMjAyMCBJRUVFIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBQZXJ2YXNpdmUgQ29tcHV0aW5nIGFuZCBDb21tdW5pY2F0aW9ucyAoUGVyQ29tKV0oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL3hwbC9jb25ob21lLzkxMjU0NDkvcHJvY2VlZGluZykKLSAyMDIwLTA3LTA3IC0gWzUgQmVzdCBBUEkgRG9jdW1lbnRhdGlvbiBUb29sc10oaHR0cHM6Ly9ibG9nLmRyZWFtZmFjdG9yeS5jb20vNS1iZXN0LWFwaS1kb2N1bWVudGF0aW9uLXRvb2xzLykgYnkgU3VzYW5uYSBCb3VzZSBhdCBbRHJlYW1GYWN0b3J5IEJsb2ddKGh0dHBzOi8vYmxvZy5kcmVhbWZhY3RvcnkuY29tLykKLSAyMDIwLTA3LTEyIC0gW09wZW4gQVBJIDMuMOOBruWumue+qeOBi+OCiWdvbGFuZ+OBruOCteODvOODkOOCs+ODvOODieOBruOCueOCseODq+ODiOODs+OCkuS9nOaIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vcHJvZmVzc29yL2l0ZW1zLzRjYmQwNGVjMDg0ZDEzMDU3YmMyKSBieSBbQHByb2Zlc3NvciAoUWlpdGEgQmxvZyldKGh0dHBzOi8vcWlpdGEuY29tL3Byb2Zlc3NvcikKLSAyMDIwLTA3LTIwIC0gW0RhdGFkb2cgQVBJIGNsaWVudCBsaWJyYXJpZXMgbm93IGF2YWlsYWJsZSBmb3IgSmF2YSBhbmQgR29dKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20vYmxvZy9qYXZhLWdvLWxpYnJhcmllcy8pIGJ5IEpvcmRhbiBPYmV5IGF0IFtEYXRhZG9nIEJsb2ddKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20vYmxvZykKLSAyMDIwLTA3LTIzIC0gW0dlbmVyYXRlIENsaWVudCBTREsgZm9yIC5ORVQgQ29yZSB1c2luZyBPcGVuIEFwaV0oaHR0cHM6Ly9kZXYudG8vbm8wbGF3MS9nZW5lcmF0ZS1jbGllbnQtc2RrLWZvci1uZXQtY29yZS11c2luZy1vcGVuLWFwaS0yZGdoKSBieSBbTnVubyBSZWlzXShodHRwczovL2Rldi50by9ubzBsYXcxKQotIDIwMjAtMDctMjYgLSBbRGFydOOBrmh0dHBfaW50ZXJjZXB0b3Ljg6njgqTjg5bjg6njg6rjgpLkvb/jgYbjgajphY3liJfjga7jgq/jgqjjg6rjg5Hjg6njg6Hjg7zjgr/jgYzmtojjgYjjgabjgZfjgb7jgYbku7bjga7lv5zmgKXlh6bnva5dKGh0dHBzOi8vcWlpdGEuY29tL2d5YW1vdG8vaXRlbXMvZWVlZmY4MWI2NzcwNDg3MzE5ZWQpIGJ5IFtAZ3lhbW90b10oaHR0cHM6Ly9xaWl0YS5jb20vZ3lhbW90bykKLSAyMDIwLTA4LTAxIC0gW0dlbmVyYXRlIEFuZ3VsYXIgUmVhY3RpdmVGb3JtcyBmcm9tIFN3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly9kZXYudG8vbWFydGlubWN3aG9ydGVyL2dlbmVyYXRlLWFuZ3VsYXItcmVhY3RpdmVmb3Jtcy1mcm9tLXN3YWdnZXItb3BlbmFwaS0zNWg5KSBieSBbTWFydGluIE1jV2hvcnRlcl0oaHR0cHM6Ly9kZXYudG8vbWFydGlubWN3aG9ydGVyKQotIDIwMjAtMDgtMDMgLSBbQ3JpYW5kbyBCaWJsaW90ZWNhcyBwYXJhIEFQSXMgUkVTVGZ1bCBjb20gT3BlbkFQSSwgU3dhZ2dlciBFZGl0b3IgZSBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9tZWRpdW0uY29tL0BldmVyaXNCcmFzaWwvY3JpYW5kby1iaWJsaW90ZWNhcy1wYXJhLWFwaXMtcmVzdGZ1bC1jb20tb3BlbmFwaS1zd2FnZ2VyLWVkaXRvci1lLW9wZW5hcGktZ2VuZXJhdG9yLTc1MzQ5YTY0MjBmZCkgYnkgW2V2ZXJpcyBCcmFzaWwgKGFuIE5UVCBEQVRBIENvbXBhbnkpXShodHRwczovL21lZGl1bS5jb20vQGV2ZXJpc0JyYXNpbCkKLSAyMDIwLTA4LTE5IC0gW+ODnuOCpOOCr+ODreOCteODvOODk+OCueOCkumAo+aQuuOBl+OBpuOBv+OCiOOBhl0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2FydGljbGUvMTc3MDQpIGJ5IFvlsqHkupUg6KOV55+iKOOBiuOBi+OBhCDjgobjgYbjgoQpXShodHRwczovL3RoaW5raXQuY28uanAvYXV0aG9yLzE3NTg4KSwgW+aziSDli50o44GE44Ga44G/IOOBvuOBleOCiyldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hdXRob3IvMTc3MDUpIGF0IFtUaGluayBJVO+8iOOCt+ODs+OCr+OCpOODg+ODiO+8iV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwLykKLSAyMDIwLTA4LTI1IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBqCBUeXBlU2NyaXB0IOOBp+Wei+WuieWFqOOBq+ODleODreODs+ODiOOCqOODs+ODiemWi+eZuuOCkuOBl+OBpuOBhOOCi+ipsV0oaHR0cHM6Ly90ZWNoLnNtYXJ0aHIuanAvZW50cnkvMjAyMC8wOC8yNS8xMzU2MzEpIGF0IFtTbWFydEhSIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoLnNtYXJ0aHIuanAvKQotIDIwMjAtMDktMTAgLSBbSW50cm9kdWN0aW9uIHRvIE9wZW5BUEkgd2l0aCBJbnN0YW5hXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nL2ludHJvZHVjdGlvbi10by1vcGVuYXBpLXdpdGgtaW5zdGFuYS8pIGJ5IFtDZWRyaWMgWmllbF0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy9hdXRob3IvY2VkcmljemllbC8pIGF0IFtJbnN0YW5hIEJsb2ddKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvKQotIDIwMjAtMDktMTcgLSBbR2VuZXJhdGUgUG93ZXJTaGVsbFNESyB1c2luZyBvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnaHVmei5sZWFybi9nZW5lcmF0ZS1wb3dlcnNoZWxsc2RrLXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLTMzYjcwMDg5MWUzMykgYnkgW0dodWZyYW4gWmFoaWRpXShodHRwczovL21lZGl1bS5jb20vQGdodWZ6LmxlYXJuKQotIDIwMjAtMDktMjQgLSBbSG93IHRvIGF1dG9tYXRlIEFQSSBjb2RlIGdlbmVyYXRpb24gKE9wZW5BUEkvU3dhZ2dlcikgYW5kIGJvb3N0IHByb2R1Y3Rpdml0eSAtIFR1dG9yaWFsIHdpdGggUmVhY3QgTmF0aXZlIGZlYXR1cmluZyBUeXBlU2NyaXB0XShodHRwczovL21lZGl1bS5jb20vQHNjZWxlc2tpL2hvdy10by1hdXRvbWF0ZS1hcGktY29kZS1nZW5lcmF0aW9uLW9wZW5hcGktc3dhZ2dlci1hbmQtYm9vc3QtcHJvZHVjdGl2aXR5LTExNzZhMDA1NmQ4YSkgYnkgW1NhbmppbiBDZWxlc2tpXShodHRwczovL21lZGl1bS5jb20vQHNjZWxlc2tpKQotIDIwMjAtMDktMjUgLSBbR2VuZXJhdGUgT3BlbkFQSSBBbmd1bGFyIENsaWVudF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BwZ3Vzby9nZW5lcmF0ZS1vcGVuYXBpLWFuZ3VsYXItY2xpZW50LThjOTI4OGU4YmJkNCkgYnkgW1BhdHJpY10oaHR0cHM6Ly9tZWRpdW0uY29tL0BwZ3VzbykKLSAyMDIwLTEwLTI0IC0gW1dvcmtpbmcgd2l0aCBNaWNyb3NvZnQgSWRlbnRpdHkgLSBSZWFjdCBOYXRpdmUgQ2xpZW50XShodHRwczovL3d3dy5qb3NlcGhndWFkYWduby5uZXQvMjAyMC8xMC8yNC93b3JraW5nLXdpdGgtbWljcm9zb2Z0LWlkZW50aXR5LXJlYWN0LW5hdGl2ZS1jbGllbnQpIGJ5IFtKb3NlcGggR3VhZGFnbm9dKGh0dHBzOi8vd3d3Lmpvc2VwaGd1YWRhZ25vLm5ldC8pCi0gMjAyMC0xMC0zMSAtIFtbQjJdIE9wZW5BUEkgU3BlY2lmaWNhdGlvbuycvOuhnCDtg4DsnoUt7IS47J207ZSE7ZWY6rKMIEFQSSDqsJzrsJztlZjquLA6IO2drOunne2OuCBWUyDsoIjrp53tjrhdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9SjRKSExFU0FpRmspIGJ5IOy1nO2DnOqxtCBhdCBbRkVDb25mIDIwMjBdKGh0dHBzOi8vMjAyMC5mZWNvbmYua3IvKQotIDIwMjAtMTEtMDUgLSBbQXV0b21hdGVkIFJFU1QtQXBpIENvZGUgR2VuZXJhdGlvbjogV2llIElULVN5c3RlbWUgbWl0ZWluYW5kZXIgc3ByZWNoZW5dKGh0dHBzOi8vd3d3Lm1hc3NpdmVhcnQuY29tL2Jsb2cvYXV0b21hdGVkLXJlc3QtYXBpLWNvZGUtZ2VuZXJhdGlvbi13aWUtaXQtc3lzdGVtZS1taXRlaW5hbmRlci1zcHJlY2hlbikgYnkgU3RlZmFuIFJvdHRlbnN0ZWluZXIgYXQgW01BU1NJVkUgQVJUIEJsb2ddKGh0dHBzOi8vd3d3Lm1hc3NpdmVhcnQuY29tL2Jsb2cpCi0gMjAyMC0xMi0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp0dv44GuQVBJ44K144O844OQ44O8L+OCr+ODqeOCpOOCouODs+ODiOOCs+ODvOODieOCkuiHquWLleeUn+aIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vc2FraS1lbmdpbmVlcmluZy9pdGVtcy9iMjBkOGI2MDc0YzRkYTk2NjRhNSkgYnkgW0BzYWtpLWVuZ2luZWVyaW5nXShodHRwczovL3FpaXRhLmNvbS9zYWtpLWVuZ2luZWVyaW5nKQotIDIwMjAtMTItMDQgLSBbU2NhbGluZyB0aGUgVGVzdCBDb3ZlcmFnZSBvZiBPcGVuQVBJIEdlbmVyYXRvciBmb3IgMzArIFByb2dyYW1taW5nIExhbmd1YWdlc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj03TGtlOWRIUnFUMCkgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbT3BlbiBTb3VyY2UgU3VtbWl0IEphcGFuICsgQXV0b21vdGl2ZSBMaW51eCBTdW1taXQgMjAyMF0oaHR0cHM6Ly9ldmVudHMubGludXhmb3VuZGF0aW9uLm9yZy9hcmNoaXZlLzIwMjAvb3Blbi1zb3VyY2Utc3VtbWl0LWphcGFuLykgKFtTbGlkZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvc2NhbGluZy10aGUtdGVzdC1jb3ZlcmFnZS1vZi1vcGVuYXBpLWdlbmVyYXRvci1mb3ItMzAtcGx1cy1wcm9ncmFtbWluZy1sYW5ndWFnZXMpKQotIDIwMjAtMTItMDkgLSBb44OX44Ot44K444Kn44Kv44OI44GrT3BlbkFQSSBHZW5lcmF0b3Ljgafoh6rli5XnlJ/miJDjgZXjgozjgZ/lnovku5jjgY1BUEkgQ2xpZW5044KS5bCO5YWl44GX44Gf6KmxXShodHRwczovL3FpaXRhLmNvbS95b3NoaWZ1amlUL2l0ZW1zLzkwNWMxODcwMGVkZTIzZjQwODQwKSBieSBbQHlvc2hpZnVqaVRdKGh0dHBzOi8vZ2l0aHViLmNvbS95b3NoaWZ1amlUKQotIDIwMjAtMTItMTUgLSBbTmV4dC5qcyArIE5lc3RKUyArIEdyYXBoUUzjgaflpInljJbjgavov73lvpPjgZnjgovjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njgbgg44CcIOOCt+ODp+ODg+ODlOODs+OCsOOCr+ODvOODneODs+OBruS6i+S+i+e0ueS7i10oaHR0cHM6Ly90ZWNoYmxvZy55YWhvby5jby5qcC9lbnRyeS8yMDIwMTIxNTMwMDUyOTUyLykgYnkgW+Wwj+WAiSDpmbhdKGh0dHBzOi8vZ2l0aHViLmNvbS9vZ3VndTkpIGF0IFtZYWhvbyEgSkFQQU4gVGVjaCBCbG9nXShodHRwczovL3RlY2hibG9nLnlhaG9vLmNvLmpwLykKLSAyMDIxLTAxLTA4IC0gW0hlbGxvLCBOZXcgQVBJIOKAkyBQYXJ0IDFdKGh0dHBzOi8vd3d3Lm5naW54LmNvbS9ibG9nL2hlbGxvLW5ldy1hcGktcGFydC0xLykgYnkgW0plcmVteSBTY2h1bG1hbl0oaHR0cHM6Ly93d3cubmdpbnguY29tL3Blb3BsZS9qZXJlbXktc2NodWxtYW4vKSBhdCBbTWFqb3IgTGVhZ3VlIEJhc2ViYWxsXShodHRwczovL3d3dy5tbGIuY29tKQotIDIwMjEtMDEtMTggLSBb44CM44Ki44OX44Oq6ZaL55m644GC44KL44GC44KL44CN44KS55aR44GG44GT44Go44GL44KJ5aeL44G+44Gj44Gf44CBQVBJIENsaWVudOOCs+ODvOODieOBruiHquWLleeUn+aIkOOAkOODh+ODluOCueODiDIwMjDjgJFdKGh0dHBzOi8vY29kZXppbmUuanAvYXJ0aWNsZS9kZXRhaWwvMTM0MDY/cD0yKSBieSBbQ29kZVppbmXnt6jpm4bpg6hdKGh0dHBzOi8vY29kZXppbmUuanAvYXV0aG9yLzEpCi0gMjAyMS0wMi0wNSAtIFtSRVNULUFQSS1Sb3VuZHRyaXAgd2l0aCBTcHJpbmdEb2MgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2Jsb2cudmlhZGVlLmRlL2VuL3Jlc3QtYXBpLXJvdW5kdHJpcCkgYnkgW0JlbmphbWluIEtsYXR0XShodHRwczovL3R3aXR0ZXIuY29tL2JlbmtsYXR0KSBhdCBbdmlhZGVlXShodHRwczovL3d3dy52aWFkZWUuZGUvZW4vKQotIDIwMjEtMDItMTcgLSBbUkVTVC1BUEktUm91bmR0cmlwIHdpdGggU3ByaW5nRG9jIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9tZWRpdW0uY29tL25lcmQtZm9yLXRlY2gvcmVzdC1hcGktcm91bmR0cmlwLXdpdGgtc3ByaW5nZG9jLWFuZC1vcGVuYXBpLWdlbmVyYXRvci0zMGJkMjdjY2Y2OTgpIGJ5IFtjbG91ZCBAdmlhZGVlXShodHRwczovL2Nsb3VkLXZpYWRlZS5tZWRpdW0uY29tLykKLSAyMDIxLTAzLTA4IC0gW09wZW5BUEkgR2VuZXJhdG9yIOW3peWFt+eahOi6uuWdkeWwneivlV0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTMwMTk3MDEvYXJ0aWNsZS9kZXRhaWxzLzExNDUzMTk3NSkgYnkgW+eLrOWutumbqOWkqV0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTMwMTk3MDEpIGF0IFtDU0RO5a6Y5pa55Y2a5a6iXShodHRwczovL2Jsb2cuY3Nkbi5uZXQvKQotIDIwMjEtMDMtMTYgLSBb5aaC5L2V5Z+65LqOIFN3YWdnZXIg5L2/55SoIE9wZW5BUEkgR2VuZXJhdG9yIOeUn+aIkCBKTWV0ZXIg6ISa5pys77yfXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci9hcnRpY2xlLzE4MDI3MDQpIGJ5IFvpq5jmpbxaZWVdKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL3VzZXIvNTgzNjI1NSkgYXQgW+iFvuiur+S6keS4k+agj10oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvY29sdW1uKQotIDIwMjEtMDMtMjQgLSBbb3BlbmFwaS1nZW5lcmF0b3ItY2xpIOOBq+OCiOOCiyBUeXBlU2NyaXB0IOWei+Wumue+qV0oaHR0cHM6Ly96ZW5uLmRldi90YWtlcGVwZS9hcnRpY2xlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGktdHMpIGJ5IFtUYWtlZnVtaSBZb3NoaWldKGh0dHBzOi8vemVubi5kZXYvdGFrZXBlcGUpCi0gMjAyMS0wMy0yOCAtIFtUcnlpbmcgb3V0IE5lc3RKUyBwYXJ0IDQ6IEdlbmVyYXRlIFR5cGVzY3JpcHQgY2xpZW50cyBmcm9tIE9wZW5BUEkgZG9jdW1lbnRzXShodHRwczovL2Rldi50by9hcm5hdWRjb3J0aXNzZS90cnlpbmctb3V0LW5lc3Rqcy1wYXJ0LTQtZ2VuZXJhdGUtdHlwZXNjcmlwdC1jbGllbnRzLWZyb20tb3BlbmFwaS1kb2N1bWVudHMtMjhtaykgYnkgW0FybmF1ZCBDb3J0aXNzZV0oaHR0cHM6Ly9kZXYudG8vYXJuYXVkY29ydGlzc2UpCi0gMjAyMS0wMy0zMSAtIFtPcGVuIEFQSSBTZXJ2ZXIgSW1wbGVtZW50YXRpb24gVXNpbmcgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9qYXZhLW9wZW5hcGktZ2VuZXJhdG9yLXNlcnZlcikgYXQgW0JhZWxkdW5nXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vKQotIDIwMjEtMDMtMzEgLSBb5L2/55SoT3BlbkFQSSBHZW5lcmF0b3Llr6bnj75PcGVuIEFQSSBTZXJ2ZXJdKGh0dHBzOi8vd3d3LjFqdS5vcmcvYXJ0aWNsZS9qYXZhLW9wZW5hcGktZ2VuZXJhdG9yLXNlcnZlcikgYXQgW+WEhOiBmue2sl0oaHR0cHM6Ly93d3cuMWp1Lm9yZy8pCi0gMjAyMS0wNC0xOSAtIFtJbnRyb2R1Y2luZyBUd2lsaW/igJlzIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiBCZXRhXShodHRwczovL3d3dy50d2lsaW8uY29tL2Jsb2cvaW50cm9kdWNpbmctdHdpbGlvLW9wZW4tYXBpLXNwZWNpZmljYXRpb24tYmV0YSkgYnkgW0dBUkVUSCBQQVVMIEpPTkVTXShodHRwczovL3d3dy50d2lsaW8uY29tL2Jsb2cvYXV0aG9yL2dwaikgYXQgW1R3aWxpbyBCbG9nXShodHRwczovL3d3dy50d2lsaW8uY29tL2Jsb2cpCi0gMjAyMS0wNC0yMiAtIFtMZXZlcmFnaW5nIE9wZW5BcGkgc3RyZW5ndGhzIGluIGEgTWljcm8tU2VydmljZSBlbnZpcm9ubWVudF0oaHR0cHM6Ly9tZWRpdW0uY29tL3VuaWJ1ZGR5LXRlY2hub2xvZ3ktYmxvZy9sZXZlcmFnaW5nLW9wZW5hcGktc3RyZW5ndGhzLWluLWEtbWljcm8tc2VydmljZS1lbnZpcm9ubWVudC0zZDdmOWU3YzI2ZmYpIGJ5IE5pY29sYXMgSmVsbGFiIGF0IFtVbmlidWRkeSBUZWNobm9sb2d5IEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS91bmlidWRkeS10ZWNobm9sb2d5LWJsb2cpCi0gMjAyMS0wNC0yNyAtIFtGcm9tIHplcm8gdG8gcHVibGlzaGluZyBQb3dlclNoZWxsIEFQSSBjbGllbnRzIGluIFBvd2VyU2hlbGwgR2FsbGVyeSB3aXRoaW4gbWludXRlc10oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vd2luZzMyOC9mcm9tLXplcm8tdG8tcHVibGlzaGluZy1wb3dlcnNoZWxsLWFwaS1jbGllbnRzLWluLXBvd2Vyc2hlbGwtZ2FsbGVyeS13aXRoaW4tbWludXRlcykgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbUG93ZXJTaGVsbCArIERldk9wcyBHbG9iYWwgU3VtbWl0IDIwMjFdKGh0dHBzOi8vZXZlbnRzLmRldm9wc2NvbGxlY3RpdmUub3JnL2V2ZW50L3Bvd2Vyc2hlbGwtZGV2b3BzLWdsb2JhbC1zdW1taXQtMjAyMS8pCi0gMjAyMS0wNS0zMSAtIFtGbHV0dGVy44GnT3BlbiBBcGkgR2VuZXJhdG9yKFN3YWdnZXIp44KS5L2/44GGXShodHRwczovL2Fha2lyYS5hcHAvYmxvZy8yMDIxLzA1L2ZsdXR0ZXItb3Blbi1hcGkvKSBieSBbQUFraXJhXShodHRwczovL3R3aXR0ZXIuY29tL19hX2FraXJhKQotIDIwMjEtMDYtMjIgLSBbUmVzdCBBUEkgRG9jdW1lbnRhdGlvbiBhbmQgQ2xpZW50IEdlbmVyYXRpb24gV2l0aCBPcGVuQVBJXShodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9yZXN0LWFwaS1kb2N1bWVudGF0aW9uLWFuZC1jbGllbnQtZ2VuZXJhdGlvbi13aXRoKSBieSBbUHJhc2FudGggR3VsbGFwYWxsaV0oaHR0cHM6Ly9kem9uZS5jb20vdXNlcnMvMTAxMTc5Ny9wcmFzYW50aG5hdGguZ0BnbWFpbC5jb20uaHRtbCkKLSAyMDIxLTA3LTE2IC0gW+mKgOihjOS6i+alreOBruOCteODvOODkOODvOOCteOCpOODiemWi+eZuuOBq+OBpOOBhOOBpiAvIExJTkUg5Lqs6YO96ZaL55m65a6kIOOCqOODs+OCuOODi+OCouaOoeeUqOiqrOaYjuS8ml0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1ZcnJLUUh4TFBwUSkgYnkg6YeO55Sw6Kqg5Lq6LCBSb2JlcnQgTWl0Y2hlbGwKLSAyMDIxLTA3LTE5IC0gW09wZW5BUEkgY29kZSBnZW5lcmF0aW9uIHdpdGgga290bGluXShodHRwczovL3N5bGhhcmUuZ2l0aHViLmlvLzIwMjEvMDcvMTkvT3BlbmFwaS1zd2FnZ2VyLWNvZGVnZW4td2l0aC1rb3RsaW4uaHRtbCkgYnkgW3N5bGhhcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9zeWxoYXJlKQotIDIwMjEtMDctMjkgLSBbSG93IFRvIFJld3JpdGUgYSBIdWdlIENvZGViYXNlXShodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9ob3ctdG8tcmV3cml0ZS1hLWh1Z2UtY29kZS1iYXNlKSBieSBbQ3VydGlzIFBvZV0oaHR0cHM6Ly9kem9uZS5jb20vdXNlcnMvNDU2NTQ0Ni9wdWJsaXVzb3ZpZGl1cy5odG1sKQotIDIwMjEtMDgtMjEgLSBbR2VuZXJhdGluZyBDbGllbnQgQVBJcyB1c2luZyBTd2FnZ2VyIFBhcnQgMV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BmbG93c3F1YWQvZ2VuZXJhdGluZy1jbGllbnQtYXBpcy11c2luZy1zd2FnZ2VyLXBhcnQtMS0yZDQ2ZjEzZjVlOTIpIGJ5IFtGbG93U3F1YWQuaW9dKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmxvd3NxdWFkKQotIDIwMjEtMDktMTEgLSBbSW52b2tpbmcgQVdTIFBhcmFsbGVsQ2x1c3RlciBBUEldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9wYXJhbGxlbGNsdXN0ZXIvbGF0ZXN0L3VnL2FwaS1yZWZlcmVuY2UtdjMuaHRtbCkgYXQgW0FXUyBQYXJhbGxlbENsdXN0ZXIgQVBJIG9mZmljaWFsIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9wYXJhbGxlbGNsdXN0ZXIvbGF0ZXN0L3VnL2FwaS1yZWZlcmVuY2UtdjMuaHRtbCkKLSAyMDIxLTA5LTIwIC0gW09wZW5BUEkgR2VuZXJhdG9yIC0gVGhlIEJhYmVsIEZpc2ggb2YgdGhlIEFQSSBXb3JsZF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1zMnpNdHdkNWtsZykgYnkgW0NsaWZmYW5vIFN1YmFnaW8gKFByaW5jaXBhbCBFbmdpbmVlciBhdCBTaGluZSBTb2x1dGlvbnMpXShodHRwczovL2dpdGh1Yi5jb20vY2xpZmZhbm8pIGF0IFtBcGlkYXlzIExJVkUgQXVzdHJhbGlhIDIwMjFdKGh0dHBzOi8vd3d3LmFwaWRheXMuZ2xvYmFsL2F1c3RyYWxpYTIwMjEvKQotIDIwMjEtMTAtMDIgLSBbSG93IHRvIFdyaXRlIEZld2VyIExpbmVzIG9mIENvZGUgd2l0aCB0aGUgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vaGFja2Vybm9vbi5jb20vaG93LXRvLXdyaXRlLWZld2VyLWxpbmVzLW9mLWNvZGUtd2l0aC10aGUtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtNaWtoYWlsIEFsZmFdKGh0dHBzOi8vaGFja2Vybm9vbi5jb20vdS9hbHBoYW1pa2xlKQotIDIwMjEtMTAtMTIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgOiA0MDAwIMOpdG9pbGVzIHN1ciBHaXRIdWIgZXQgZGVzIHNwYWdoZXR0aXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9OWhFc05CU3FURmspIGJ5IFtKw6lyw6ltaWUgQnJlc3Nvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBhdCBbRGV2b3h4IEZSIDIwMjFdKGh0dHBzOi8vY2ZwLmRldm94eC5mci8yMDIxL3NwZWFrZXIvamVyZW1pZV9icmVzc29uKQotIDIwMjEtMTAtMTcgLSBbR2VuZXJhdGUgYSBUeXBlU2NyaXB0IEhUVFAgQ2xpZW50IEZyb20gQW4gT3BlbkFQSSBTcGVjIEluIERvdE5FVCA1XShodHRwczovL3JpY2hhcmR3aWxsaXMuaW5mby9ibG9nL2dlbmVyYXRlLWEtdHlwZS1zY3JpcHQtaHR0cC1jbGllbnQtZnJvbS1hbi1vcGVuLWFwaS1zcGVjLWluLWRvdC1uZXQtNSkgYnkgW1JpY2hhcmQgV2lsbGlzXShodHRwczovL2dpdGh1Yi5jb20vYmFkc3ludGF4KQotIDIwMjEtMTEtMDYgLSBb44K544K/44O844OI44Ki44OD44OX44Gu6ZaL55m644Gn5oSP6K2Y44GX44Gf44GT44GoXShodHRwczovL3plbm4uZGV2L3dvb19ub28vYXJ0aWNsZXMvNWNiMDlmOGUyODk5YWU3ODJhZDEpIGJ5IFt3b28tbm9vXShodHRwczovL3plbm4uZGV2L3dvb19ub28pCi0gMjAyMS0xMS0wOSAtIFtFZmZlY3RpdmUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYXBleGxhYnMuYWkvcG9zdC9lZmZlY3RpdmUtc29mdHdhcmUtZGV2ZWxvcG1lbnQtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IEFqaWwgT29tbWUKLSAyMDIxLTEyLTA3IC0gW0FuIEludHJvZHVjdGlvbiB0byBPcGVuQVBJXShodHRwczovL2JldHRlcnByb2dyYW1taW5nLnB1Yi80LXVzZS1jYXNlcy1vZi1vcGVuYXBpLXdoaWNoLWFyZS1nb29kLXRvLWtub3ctMWEwNDFmNGFkNzFlKSBieSBbTmEnYW1hbiBIaXJzY2hmZWxkXShodHRwczovL25hYW1hbmhpcnNjaGZlbGQubWVkaXVtLmNvbS8pCi0gMjAyMi0wMS0wMiAtIFtUb3dhcmRzIGEgc2VjdXJlIEFQSSBjbGllbnQgZ2VuZXJhdG9yIGZvciBJb1QgZGV2aWNlc10oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDEuMDAyNzApIGJ5IEFuZGVycyBBYWVuIFNwcmluZ2JvcmcsIE1hcnRpbiBLYWxkYWhsIEFuZGVyc2VuLCBLYWFyZSBIb2xsYW5kIEhhdHRlbCwgTWljaGVsZSBBbGJhbm8KLSAyMDIyLTAyLTAyIC0gW1VzZSBPcGVuQXBpIGdlbmVyYXRvciB0byBzaGFyZSB5b3VyIG1vZGVscyBiZXR3ZWVuIEZsdXR0ZXIgYW5kIHlvdXIgYmFja2VuZF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1rUFc3Y2N1OVl2aykgYnkgW0d1aWxsYXVtZSBCZXJub3NdKGh0dHBzOi8vZmViMjAyMi5mbHV0dGVydmlraW5ncy5jb20vc3BlYWtlcnMvZ3VpbGxhdW1lX2Jlcm5vcykgYXQgW0ZsdXR0ZXIgVmlraW5ncyBDb25mZXJlbmNlIDIwMjIgKEh5YnJpZCldKGh0dHBzOi8vZmViMjAyMi5mbHV0dGVydmlraW5ncy5jb20vKQotIDIwMjItMDMtMTUgLSBbT3BlbkFQSSBTcGVj44Gn44OP44Kk44OV44Oz5Yy65YiH44KK44GuRW51beWApOOCkk9wZW5BUEkgR2VuZXJhdG9y44Gn5Ye65Yqb44GZ44KL44Go44CB44OP44Kk44OV44Oz5Yy65YiH44KK44Gu44G+44G+5Ye65Yqb44GV44KM44KLXShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210L2l0ZW1zLzgyNGQ3NGQ0ODg5MDU1YWIzN2Q4KSBieSBbeXVqaTM4a3dtdF0oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdCkKLSAyMDIyLTA0LTAxIC0gW09wZW5BUEkgR2VuZXJhdG9y44Gu44Kz44O844OJ55Sf5oiQ44GoU3ByaW5nIEZyYW1ld29ya+OBruOCq+OCueOCv+ODoOODh+ODvOOCv+ODkOOCpOODs+ODh+OCo+ODs+OCsOOCkuWFseWtmOOBleOBm+OCi10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9jb2V4aXN0ZW5jZS1vZi1vcGVuYXBpLWFuZC1zcHJpbmcpIGluIFtaT1pPIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS8pCi0gMjAyMi0wNC0wNiAtIFtFZmZlY3RpdmUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYXBleGxhYnMuYWkvcG9zdC9vcGVuYXBpLWdlbmVyYXRvcikgYnkgQWppbCBPb21tZW4gKFNlbmlvciBGbHV0dGVyIERldmVsb3BlcikKLSAyMDIyLTA1LTEzIC0gW0EgUGF0aCBGcm9tIGFuIEFQSSBUbyBDbGllbnQgTGlicmFyaWVzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVhDOG9Wbl9lZlR3KSBieSBbRmlsaXAgU3JuZWNdKGh0dHBzOi8vd3d3LmRldm94eC5jby51ay90YWxrLz9pZD0xMTIxMSkgYXQgSW5mb2JpcAotIDIwMjItMDYtMDEgLSBbQVBJIEZpcnN0LCB1c2luZyBPcGVuQVBJIGFuZCBTcHJpbmcgQm9vdF0oaHR0cHM6Ly9tZWRpdW0uY29tL3hnZWVrcy9hcGktZmlyc3QtdXNpbmctb3BlbmFwaS1hbmQtc3ByaW5nLWJvb3QtMjYwMmMwNGJiMGQzKSBieSBbTWljYWVsIEVzdHLDoXp1bGFzIFZpYW5uYV0oaHR0cHM6Ly9lc3RyYXp1bGFzLm1lZGl1bS5jb20vKQotIDIwMjItMDYtMTAgLSBbQXV0b2dlbmVyYXRpbmcgQ2xpZW50cyB3aXRoIEZhc3RBUEkgYW5kIEdpdGh1YiBBY3Rpb25zXShodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS9wb3N0L2F1dG9nZW5lcmF0aW5nLWNsaWVudHMtd2l0aC1mYXN0YXBpLWFuZC1naXRodWItYWN0aW9ucykgYnkgW0FuZHJldyBJc3JhZWxdKGh0dHBzOi8vd3d3LnByb3BlbGF1dGguY29tL2F1dGhvci9hbmRyZXcpCi0gMjAyMi0wNi0xMiAtIFtNdXN0YWNoZSB0ZW1wbGF0ZXMgd2l0aCBPcGVuQVBJIHNwZWNzXShodHRwczovL21lZGl1bS5jb20vZ2Vla2N1bHR1cmUvbXVzdGFjaGUtdGVtcGxhdGVzLXdpdGgtb3BlbmFwaS1zcGVjcy1mMjQ3MTFjNjdkZWMpIGJ5IFtCZXBwZSBDYXRhbmVzZV0oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZSkKLSAyMDIyLTA3LTAxIC0gW0dlbmVyYXRlIEFQSSBjb250cmFjdCB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBNYXZlbiBwbHVnaW5dKGh0dHBzOi8vaHVvbmdkYW5qYXZhLmNvbS9nZW5lcmF0ZS1hcGktY29udHJhY3QtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luLmh0bWwpIGJ5IFtLaGFuaCBOZ3V5ZW5dKGh0dHBzOi8vaHVvbmdkYW5qYXZhLmNvbS8pCi0gMjAyMi0wNy0yMiAtIFvkvb/nlKhPcGVuQVBJIEdlbmVyYXRvciBNYXZlbiBwbHVnaW7lvIDlj5FhcGnkvJjlhYjnmoRqYXZh5a6i5oi356uv5ZKM5pyN5Yqh56uv5Luj56CBXShodHRwczovL2Jsb2cucm9jY29zaGkudG9wLzIwMjIvamF2YS9vcGVuYXBpLWdlbmVyYXRvciVFNyU5QSU4NCVFNCVCRCVCRiVFNyU5NCVBOC8pIGJ5IFtMaW5jZXN0XShodHRwczovL2dpdGh1Yi5jb20vTGluY2VzdCkKLSAyMDIyLTA4LTAxIC0gW1R1dG9yaWFsOiBFdHN5IE9wZW4gQVBJIHYzIChydWJ5KV0oaHR0cHM6Ly9ibG9nLnRqb3lhbC5kZXYvZXRzeS1vcGVuLWFwaS12My8pIGJ5IFtUaGllcnJ5IEpveWFsXShodHRwczovL2dpdGh1Yi5jb20vdGpveWFsKQotIDIwMjItMDktMDMgLSBbT3BlbkFQSSBHZW5lcmF0b3IgRm9yIEdvIFdlYiBEZXZlbG9wbWVudF0oaHR0cHM6Ly9ibG9nLmtldmluaHUubWUvMjAyMi8wOS8wMy8wMy1vcGVuYXBpLWdlbmVyYXRvci8pIGJ5IFtLZXZpbiBIdV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9PbGRndW5peCkKLSAyMDIyLTEwLTAxIC0gW09wZW5BUEkgR2VuZXJhdG9y44KS44Kr44K544K/44Oe44Kk44K644GX44Gf44Kz44O844OJ44KS55Sf5oiQ44GZ44KL77yIU3dhZ2dlciBDb2RlZ2Vu44Go44G744G85ZCM44GY77yJXShodHRwczovL25haW5haXN0YXIuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAyMi8xMC8wMy8xMjAwMDApIGJ5IFvjgY3jgorkuLhdKGh0dHBzOi8vdHdpdHRlci5jb20vbmFpbmFpc3RhcikKLSAyMDIyLTEwLTIxIC0gW0tvdGxpbu+8iFNwcmluZyBCb29077yJ44GuIEFQSSDjgpIgT3BlbkFQSSBHZW5lcmF0b3Ig44Gn6Ieq5YuV55Sf5oiQXShodHRwczovL3plbm4uZGV2L21za3NnbS9hcnRpY2xlcy8yMDIyMTAyMS1rb3RsaW4tc3ByaW5nLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbbXNrc2dtXShodHRwczovL3plbm4uZGV2L21za3NnbSkKLSAyMDIyLTEwLTI2IC0gW1F1YXJrdXMgSW5zaWdodHMgIzEwNjogUXVhcmtpdmVyc2UgRXh0ZW5zaW9uIFNwb3RsaWdodDogT3BlbkFwaSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9X3NfaWY2OXQyaVEpIGJ5IFtRdWFya3VzaW9dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2MvUXVhcmt1c2lvKQotIDIwMjItMTEtMjggLSBbVGhlIFJFU1QgQVBJIGltcGxlbWVudGF0aW9uIGZsb3ddKGh0dHBzOi8vdG1zdnIuY29tL29wZW5hcGktY29kZS1nZW5lcmF0aW9uLWZvci1yZXN0LWFwaXMvKSBieSBbSW1yZSBUw7Ztw7ZzdsOhcmldKGh0dHBzOi8vdG1zdnIuY29tL2F1dGhvci9pbXJlLykKLSAyMDIyLTEyLTEzIC0gW0FQSS1GaXJzdCB3aXRoIFNwcmluZyBXZWJGbHV4IGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ib290dGVjaG5vbG9naWVzLWNpLm1lZGl1bS5jb20vYXBpLWZpcnN0LXdpdGgtc3ByaW5nLXdlYmZsdXgtYW5kLW9wZW5hcGktZ2VuZXJhdG9yLTM4Yjc4MDRjNGVkNCkgYnkgW0VyaWMgQW5pY2V0XShodHRwczovL2Jvb3R0ZWNobm9sb2dpZXMtY2kubWVkaXVtLmNvbS8pCi0gMjAyMy0wMS0wNiAtIFtNYWpvciBJbXByb3ZlbWVudHMgd2l0aCBIZWxpZG9uIGFuZCBPcGVuQVBJXShodHRwczovL21lZGl1bS5jb20vaGVsaWRvbi9tYWpvci1pbXByb3ZlbWVudHMtd2l0aC1oZWxpZG9uLWFuZC1vcGVuYXBpLWY3NmEwOTUxNTA4ZSkgYnkgW1RpbSBRdWlubl0oaHR0cHM6Ly9tZWRpdW0uY29tL0B0cXVpbm5vNjAwKQotIDIwMjMtMDItMDIgLSBbUmVwbGFjaW5nIFBvc3RtYW4gd2l0aCB0aGUgSmV0YnJhaW5zIEhUVFAgQ2xpZW50XShodHRwczovL2xlbmdyYW5kLmZyL3JlcGxhY2luZy1wb3N0bWFuLWluLXNlY29uZHMtd2l0aC10aGUtamV0YnJhaW5zLWh0dHAtY2xpZW50LykgYnkgW2p1bGllbiBMZW5ncmFuZC1MYW1iZXJ0XShodHRwczovL2dpdGh1Yi5jb20vamxlbmdyYW5kKQotIDIwMjMtMDMtMTUgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgavpganjgZfjgZ9PcGVuQVBJ44Gu5pu444GN5pa5XShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L2hvdy10by13cml0ZS1vcGVuYXBpLWZvci1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW1pPWk8gVGVjaCBCbG9nXShodHRwczovL3RlY2hibG9nLnpvem8uY29tLykKLSAyMDIzLTAzLTE5IC0gW0VYT0dFTTogRXh0ZW5kaW5nIE9wZW5BUEkgR2VuZXJhdG9yIGZvciBNb25pdG9yaW5nIG9mIFJFU1RmdWwgQVBJc10oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMxLTI2NTA3LTVfMTApIGJ5IERhbmllbCBGcmlpcyBIb2x0ZWJvLCBKYW5uaWsgTHVjYXMgU29tbWVyLCBNYWdudXMgTcO4bGdhYXJkIEx1bmQsIEFsZXNzYW5kcm8gVGlibywgSnVuaW9yIERvbmdvICYgTWljaGVsZSBBbGJhbm8gYXQgIklDU09DIDIwMjI6IFNlcnZpY2UtT3JpZW50ZWQgQ29tcHV0aW5nIOKAkyBJQ1NPQyAyMDIyIFdvcmtzaG9wcyIKLSAyMDIzLTAzLTI4IC0gW0FQSS1GaXJzdCBEZXNpZ24gd2l0aCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3B1bHNlL2FwaS1maXJzdC1kZXNpZ24tb3BlbmFwaS1nZW5lcmF0b3Itam9uYXRoYW4tbWFuZXJhLykgYnkgW0pvbmF0aGFuIE1hbmVyYV0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL21hbmVyYWpvbmEvKQotIDIwMjMtMDMtMjggLSBb44OP44Oz44K644Kq44Oz44Gn5a2m44G244K144O844OQ44O844K144Kk44OJIEtvdGxpbu+8iFNwcmluZyBCb290JkFycm93Jk9wZW5BUEkgR2VuZXJhdG9y77yJdjEuMC4xXShodHRwczovL3plbm4uZGV2L21za3NnbS9ib29rcy9pbXBsZW1lbnRpbmctc2VydmVyLXNpZGUta290bGluLWRldmVsb3BtZW50KSBieSBbbXNrXShodHRwczovL3plbm4uZGV2L21za3NnbSkKLSAyMDIzLTA0LTAxIC0gW09wZW5BUEkgQ2xpZW50IENvZGUgR2VuZXJhdGlvbl0oaHR0cHM6Ly90ZXN0aW5nYm9zcy5jb20vYmxvZy9vcGVuYXBpLWNsaWVudC1nZW5lcmF0aW9uLykgYnkgS3dvIERpbmcKLSAyMDIzLTA0LTI3IC0gW0NyZWF0ZSBhbiBBbmd1bGFyIENsaWVudCB1c2luZyBPcGVuQVBJIFNwZWNpZmljYXRpb25zXShDcmVhdGUgYW4gQW5ndWxhciBDbGllbnQgdXNpbmcgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucykgYnkgW1BhdHJpY10oaHR0cHM6Ly9wZ3Vzby5tZWRpdW0uY29tLykKLSAyMDIzLTA1LTE2IC0gW0FkeWVuIGZvciBKYXZhIGRldmVsb3BlcnNdKGh0dHBzOi8vd3d3LmFkeWVuLmNvbS9ibG9nL2FkeWVuLWphdmEtbGlicmFyeSkgYnkgW0JlcHBlIENhdGFuZXNlLCBEZXZlbG9wZXIgQWR2b2NhdGUsIEFkeWVuXShodHRwczovL2dpdGh1Yi5jb20vZ2NhdGFuZXNlKQotIDIwMjMtMDUtMTggLSBb5aaC5L2V5Z+65LqOIFN3YWdnZXIg5L2/55SoIE9wZW5BUEkgR2VuZXJhdG9yIOeUn+aIkCBKTWV0ZXIg6ISa5pys77yfXShodHRwczovL2Jsb2cuNTFjdG8uY29tL3VfMTUxODE1NzIvNjI5NDk3NCkgYnkgW+mrmOalvO+8iFplZSldKGh0dHBzOi8vYmxvZy41MWN0by5jb20vdV8xNTE4MTU3MikKLSAyMDIzLTA2LTI4IC0gW0dlbmVyYXRlIEFQSSBjb250cmFjdCB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBNYXZlbiBwbHVnaW5dKGh0dHBzOi8vaHVvbmdkYW5qYXZhLmNvbS9nZW5lcmF0ZS1hcGktY29udHJhY3QtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luLmh0bWwpIGJ5IFtLaGFuaCBOZ3V5ZW5dKGh0dHBzOi8vaHVvbmdkYW5qYXZhLmNvbS8pCi0gMjAyMy0wNi0zMCAtIFtHZW5lcmF0ZSBDbGllbnQgU0RLcyB3aXRoIE9wZW5BcGkgR2VuZXJhdG9yIGluIFNwcmluZ2Jvb3RdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcmFtYXZhdGh2aW5heWFrL2dlbmVyYXRlLWNsaWVudC1zZGtzLXdpdGgtb3BlbmFwaS1nZW5lcmF0b3ItaW4tc3ByaW5nYm9vdC1mOWYwMTJlNzNjMGIpIGJ5IFtWaW5heWFrIFJhbWF2YXRoXShodHRwczovL21lZGl1bS5jb20vQHJhbWF2YXRodmluYXlhaykKLSAyMDIzLTEyLTEwIC0gW1VuaXR544GnT3BlbkFQSSBHZW5lcmF0b3LjgpLkvb/jgYZdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9Q2JOd0tWVjVMUk0pIGJ5IFtTb3VwIFRvcmldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0Bzb3VwdG9yaTg0MTcpCi0gMjAyNC0wMS0yNCAtIFtDb21tZW50IGfDqW7DqXJlciBkZXMgc3R1YnMgd2lyZW1vY2sgYXZlYyBvcGVuYXBpIGdlbmVyYXRvcl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0wamhPTmZCcmNLdykgYnkgW0FsZXhpcyBDb3V2cmV1cl0oaHR0cHM6Ly9naXRodWIuY29tL2Fjb3V2cmV1cikKLSAyMDI0LTAzLTA0IC0gW0dlbmVyYXRpbmcgVHlwZVNjcmlwdCBUeXBlcyB3aXRoIE9wZW5BUEkgZm9yIFJFU1QgQVBJIENvbnN1bXB0aW9uXShodHRwczovL3d3dy5wdWxscmVxdWVzdC5jb20vYmxvZy9nZW5lcmF0aW5nLXR5cGVzY3JpcHQtdHlwZXMtd2l0aC1vcGVuYXBpLWZvci1yZXN0LWFwaS1jb25zdW1wdGlvbi8pIGJ5IFtQdWxsUmVxdWVzdF0oaHR0cHM6Ly93d3cucHVsbHJlcXVlc3QuY29tLykKLSAyMDI0LTAzLTA3IC0gW0Z1bGx5IHR5cGVkIFdlYiBBcHBzIHdpdGggT3BlbkFQSSAoUGFydCAxKV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnZm94MTk4NC9mdWxseS10eXBlZC13ZWItYXBwcy13aXRoLW9wZW5hcGktcGFydC0xLTU5NWQ1NTc2NjY3MCkgYnkgW0d1aWxsYXVtZSBSZW5hcmRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2ZveDE5ODQpCi0gMjAyNC0wMy0wOCAtIFtMYXJhdmVsIE9wZW5BUEnjgavjgojjgosgIui+m+OBj+OBquOBhCIg44K544Kt44O844Oe6aeG5YuV6ZaL55m6XShodHRwczovL2ZvcnRlZS5qcC9waHBlcmthaWdpLTIwMjQvcHJvcG9zYWwvOWUyZTZjMzgtZDA3OC00ZWZhLTk5YjQtODNlYmY5MDMzYjM0KSBieSBbS2VudGFyb3VUYWtlZGFdKGh0dHBzOi8vdHdpdHRlci5jb20vS2VudGFyb3VUYWtlZGEpCgojIyBbNiAtIEFib3V0IFVzXSgjdGFibGUtb2YtY29udGVudHMpCgpXaGF0J3MgdGhlIGRlc2lnbiBwaGlsb3NvcGh5IG9yIHByaW5jaXBsZSBiZWhpbmQgT3BlbkFQSSBHZW5lcmF0b3I/CgpXZSBmb2N1cyBvbiBkZXZlbG9wZXIgZXhwZXJpZW5jZS4gVGhlIGdlbmVyYXRvcnMgc2hvdWxkIHByb2R1Y2UgY29kZSwgY29uZmlnLCBkb2N1bWVudGF0aW9uLCBhbmQgbW9yZSB0aGF0IGFyZSBlYXNpbHkgdW5kZXJzdGFuZGFibGUgYW5kIGNvbnN1bWFibGUgYnkgdXNlcnMuIFdlIGZvY3VzZWQgb24gc2ltcGxlIHVzZSBjYXNlcyB0byBzdGFydCB3aXRoIChib3R0b20tdXAgYXBwcm9hY2gpLiBTaW5jZSB0aGVuIHRoZSBwcm9qZWN0IGFuZCB0aGUgY29tbXVuaXR5IGhhdmUgZ3Jvd24gYSBsb3Q6IDYwMGsgd2Vla2x5IGRvd25sb2FkcyB2aWEgTlBNIENMSSB3cmFwcGVyLCAzME0gZG93bmxvYWRzIHZpYSBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZG9ja2VyIGltYWdlIGp1c3QgdG8gaGlnaGxpZ2h0IGEgZmV3LiBXZSd2ZSBncmFkdWFsbHkgc3VwcG9ydGVkIG1vcmUgZmVhdHVyZXMgKGUuZy4gb25lT2YsIGFueU9mIGludHJvZHVjZWQgaW4gT3BlbkFQSSAzLjApIGluIHZhcmlvdXMgZ2VuZXJhdG9ycyBhbmQgd2Ugd2lsbCBjb250aW51ZSB0aGlzIGFwcHJvYWNoIHRvIGRlbGl2ZXIgc29tZXRoaW5nIGJhc2VkIG9uIG91ciB1bmRlcnN0YW5kaW5nIG9mIHVzZXIgZGVtYW5kIGFuZCB3aGF0IHRoZXkgd2FudCwgYW5kIGNvbnRpbnVlIHRvIGFkZCBzdXBwb3J0IG9mIG5ldyBmZWF0dXJlcyBpbnRyb2R1Y2VkIGluIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiAoc3VjaCBhcyB2My4xIGFuZCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbikuCgojIyMgWzYuMSAtIE9wZW5BUEkgR2VuZXJhdG9yIENvcmUgVGVhbV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKT3BlbkFQSSBHZW5lcmF0b3IgY29yZSB0ZWFtIG1lbWJlcnMgYXJlIGNvbnRyaWJ1dG9ycyB3aG8gaGF2ZSBiZWVuIG1ha2luZyBzaWduaWZpY2FudCBjb250cmlidXRpb25zIChyZXZpZXcgaXNzdWVzLCBmaXggYnVncywgbWFrZSBlbmhhbmNlbWVudHMsIGV0YykgdG8gdGhlIHByb2plY3Qgb24gYSByZWd1bGFyIGJhc2lzLgoKIyMjIyBDb3JlIFRlYW0gTWVtYmVycwoqIFtAd2luZzMyOF0oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpICgyMDE1LzA3KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKKiBbQGppbXNjaHViZXJ0XShodHRwczovL2dpdGh1Yi5jb20vamltc2NodWJlcnQpICgyMDE2LzA1KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiogW0BjYm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkgKDIwMTYvMDUpCiogW0BqbWluaV0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSAoMjAxOC8wNCkgIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qbWluaSkKKiBbQGV0aGVyZWFsam95XShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJlYWxqb3kpICgyMDE5LzA2KQoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIyMgVGVtcGxhdGUgQ3JlYXRvcgoKKipOT1RFKio6IEVtYmVkZGVkIHRlbXBsYXRlcyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gX011c3RhY2hlXyBmb3JtYXQuIFN1cHBvcnQgZm9yIGFsbCBvdGhlciBmb3JtYXRzIGlzIGV4cGVyaW1lbnRhbCBhbmQgc3ViamVjdCB0byBjaGFuZ2UgYXQgYW55IHRpbWUuCgpIZXJlIGlzIGEgbGlzdCBvZiB0ZW1wbGF0ZSBjcmVhdG9yczoKICogQVBJIENsaWVudHM6CiAgICogQWRhOiBAc3RjYXJyZXoKICAgKiBBcGV4OiBAYXNuZWxsaW5nCiAgICogQmFzaDogQGJrcnl6YQogICAqIEM6IEBQb3dlck9mQ3JlYXRpb24gQHpoZW1hbnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3poZW1hbnQpCiAgICogQysrIFJFU1Q6IEBEYW5pZWxrdTE1CiAgICogQysrIFRpbnk6IEBBbmRlcnNTcHJpbmdib3JnIEBrYWFyZUhIIEBtaWNoZWxlYWxiYW5vIEBta2FrYmFzCiAgICogQysrIFVFNDogQEthaG5jb2RlCiAgICogQyMgKC5ORVQgMi4wKTogQHdobwogICAqIEMjICguTkVUIFN0YW5kYXJkIDEuMyApOiBAR3JvbnNhawogICAqIEMjICguTkVUIDQuNSByZWZhY3RvcmVkKTogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBDIyAoR2VuZXJpY0hvc3QpOiBAZGV2aGwtbGFicwogICAqIEMjIChIdHRwQ2xpZW50KTogQEJsYWNrY2xhd3MKICAgKiBDbG9qdXJlOiBAeGhoCiAgICogQ3J5c3RhbDogQHdpbmczMjgKICAgKiBEYXJ0OiBAeWlzc2FjaGFyCiAgICogRGFydCAocmVmYWN0b3IpOiBAam9lcm5haHJlbnMKICAgKiBEYXJ0IDI6IEBzd2lwZXNpZ2h0CiAgICogRGFydCAoSmFndWFyKTogQGphdW1hcmQKICAgKiBEYXJ0IChEaW8pOiBAam9zaC1idXJ0b24KICAgKiBFbGl4aXI6IEBuaWt1CiAgICogRWxtOiBAZXJpa3RpbQogICAqIEVpZmZlbDogQGp2ZWxpbGxhCiAgICogRXJsYW5nOiBAdHNsb3VnaHRlcgogICAqIEVybGFuZyAoUHJvcEVyKTogQGpmYWNvcnJvIEByb2JlcnRvYWxvaQogICAqIEdyb292eTogQHZpY3RvcmdpdAogICAqIEdvOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBHbyAocmV3cml0dGVuIGluIDIuMy4wKTogQGFudGloYXgKICAgKiBIYXNrZWxsIChodHRwLWNsaWVudCk6IEBqb25zY2hvbmluZwogICAqIEphdmEgKEZlaWduKTogQGRhdmlka2lzcwogICAqIEphdmEgKFJldHJvZml0KTogQDBsZWdnCiAgICogSmF2YSAoUmV0cm9maXQyKTogQGVtaWxpYW5vYm9uYXNzaQogICAqIEphdmEgKEplcnNleTIpOiBAeGhoCiAgICogSmF2YSAob2todHRwLWdzb24pOiBAeGhoCiAgICogSmF2YSAoUmVzdFRlbXBsYXRlKTogQG5icnVubwogICAqIEphdmEgKFNwcmluZyA1IFdlYkNsaWVudCk6IEBkYW9ub21pYwogICAqIEphdmEgKFNwcmluZyA2IFJlc3RDbGllbnQpOiBAbmlja2xhczI3NTEKICAgKiBKYXZhIChSRVNURWFzeSk6IEBnYXlhdGhyaWdzCiAgICogSmF2YSAoVmVydHgpOiBAbG9wZXNtY2MKICAgKiBKYXZhIChHb29nbGUgQVBJcyBDbGllbnQgTGlicmFyeSk6IEBjaGFybGVzY2FwcHMKICAgKiBKYXZhIChSZXN0LWFzc3VyZWQpOiBAdmljbG92c2t5CiAgICogSmF2YSAoSmF2YSAxMSBOYXRpdmUgSFRUUCBjbGllbnQpOiBAYmJkb3VnbGFzCiAgICogSmF2YSAoQXBhY2hlIEh0dHBDbGllbnQgNS54KTogQGhhcnJ5d2hpdGU0IEBhbmRyZXZlZ2FzCiAgICogSmF2YSAoSGVsaWRvbik6IEBzcGVyaWNhcyBAdGpxdWlubm8gQHR2YWxsaW4KICAgKiBKYXZhc2NyaXB0L05vZGVKUzogQGpmaWFsYQogICAqIEphdmFTY3JpcHQgKEFwb2xsbyBEYXRhU291cmNlKTogQGVyaXRobWV0aWMKICAgKiBKYXZhU2NyaXB0IChDbG9zdXJlLWFubm90YXRlZCBBbmd1bGFyKSBAYWNoZXcyMgogICAqIEphdmFTY3JpcHQgKEZsb3cgdHlwZXMpIEBqYXlwZWEKICAgKiBKZXRicmFpbnMgSFRUUCBDbGllbnQgOiBAamxlbmdyYW5kCiAgICogSk1ldGVyOiBAZGF2aWRraXNzCiAgICogSnVsaWE6IEB0YW5tYXlrbQogICAqIEtvdGxpbjogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBLb3RsaW4gKE11bHRpUGxhdGZvcm0pOiBAYW5kcmV3ZW1lcnkKICAgKiBLb3RsaW4gKFZvbGxleSk6IEBhbGlzdGVycwogICAqIEtvdGxpbiAoanZtLXNwcmluZy13ZWJjbGllbnQpOiBAc3RlZmFua29wcGllcgogICAqIEtvdGxpbiAoanZtLXNwcmluZy1yZXN0Y2xpZW50KTogQHN0ZWZhbmtvcHBpZXIKICAgKiBMdWE6IEBkYXVybmltYXRvcgogICAqIE40SlM6IEBtbWV3cy1uNAogICAqIE5pbTogQGhva2Ftb3RvCiAgICogT0NhbWw6IEBjZ2Vuc291bAogICAqIFBlcmw6IEB3aW5nMzI4IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQogICAqIFBIUCAoR3V6emxlKTogQGJhYXJ0b3N6CiAgICogUEhQICh3aXRoIERhdGEgVHJhbnNmZXIpOiBAQXJ0aWN1cwogICAqIFBvd2VyU2hlbGw6IEBiZWF0Y3JhY2tlcgogICAqIFBvd2VyU2hlbGwgKHJlZmFjdG9yZWQgaW4gNS4wLjApOiBAd2luZzMyOAogICAqIFB5dGhvbjogQHNwYWNldGhlciBbOmhlYXJ0Ol1bc3BhY2V0aGVyIHNwb25zb3JzaGlwXQogICAqIFB5dGhvbi1FeHBlcmltZW50YWw6IEBzcGFjZXRoZXIgWzpoZWFydDpdW3NwYWNldGhlciBzcG9uc29yc2hpcF0KICAgKiBQeXRob24gKHJlZmFjdG9yZWQgaW4gNy4wLjApOiBAd2luZzMyOAogICAqIFI6IEByYW1ub3YKICAgKiBSdWJ5IChGYXJhZGF5KTogQG1lZ2FuZW11cmEgQGRrbGliYW4KICAgKiBSdWJ5IChIVFRQWCk6IEBob25leXJ5ZGVyY2h1Y2sKICAgKiBSdXN0OiBAZmFyY2FsbGVyCiAgICogUnVzdCAocnVzdC1zZXJ2ZXIpOiBAbWV0YXN3aXRjaAogICAqIFNjYWxhIChzY2FsYXogJiBodHRwNHMpOiBAdGJyb3duMTk3OQogICAqIFNjYWxhIChBa2thKTogQGNjaGFmZXIKICAgKiBTY2FsYSAoc3R0cCk6IEBjaGFtZWxlb244MgogICAqIFNjYWxhIChzdHRwNCk6IEBmbHNoODYKICAgKiBTY2FsYSAoUGVra28pOiBAbWlja2FlbG1hZ25pZXoKICAgKiBTY2FsYSAoaHR0cDRzKTogQEplbm55TGVhaHkKICAgKiBTd2lmdDogQHRrcXVibwogICAqIFN3aWZ0IDM6IEBoZXhlbG9uCiAgICogU3dpZnQgNDogQGVoeWNoZQogICAqIFN3aWZ0IDU6IEA0YnJ1bnUKICAgKiBTd2lmdCA2OiBANGJydW51CiAgICogU3dpZnQgQ29tYmluZTogQGR5ZHVzMHgxNAogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXIxKTogQG1oYXJkb3JmCiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjIpOiBAcm9uaS1mcmFudGNoaQogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXI2KTogQGFrZWhpcgogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXI3KTogQHRvcGNlCiAgICogVHlwZVNjcmlwdCAoQXhpb3MpOiBAbmljb2tvZW5pZwogICAqIFR5cGVTY3JpcHQgKEZldGNoKTogQGxlb255dQogICAqIFR5cGVTY3JpcHQgKEludmVyc2lmeSk6IEBndWFsdGllcmltCiAgICogVHlwZVNjcmlwdCAoalF1ZXJ5KTogQGJoZXJpbGEKICAgKiBUeXBlU2NyaXB0IChOZXN0anMpOiBAdmZyYW5rNjYKICAgKiBUeXBlU2NyaXB0IChOb2RlKTogIEBtaGFyZG9yZgogICAqIFR5cGVTY3JpcHQgKFJ4anMpOiBAZGVueW8KICAgKiBUeXBlU2NyaXB0IChyZWR1eC1xdWVyeSk6IEBwZXRlam9oYW5zb254bwogICAqIFhvam86IEBUb3BoZWVlCiAgICogWmFwaWVyOiBAdmFsbW96LCBAZW1ham8KICogU2VydmVyIFN0dWJzCiAgICogQWRhOiBAc3RjYXJyZXoKICAgKiBDIyBBU1AuTkVUIDU6IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogQyMgQVNQLk5FVCBDb3JlIDMuMDogQEEtSm9zaGkKICAgKiBDIyBBUFMuTkVUIENvcmUgMy4xOiBAcGhhdGNoZXIKICAgKiBDIyBBenVyZSBmdW5jdGlvbnM6IEBBYnJobTc3ODYKICAgKiBDIyBOYW5jeUZYOiBAbXN0ZWZhbml1awogICAqIEMrKyAoUXQ1IFFIdHRwRW5naW5lKTogQGV0aGVyZWFsam95CiAgICogQysrIFBpc3RhY2hlOiBAc2VieW1pYW5vCiAgICogQysrIFJlc3RiZWQ6IEBzdGtyd29yawogICAqIEVybGFuZyBTZXJ2ZXI6IEBnYWxheGllIEBuZWxzb252aWRlcwogICAqIEYjIChHaXJhZmZlKSBTZXJ2ZXI6IEBubWZpc2hlcgogICAqIEdvIFNlcnZlcjogQGd1b2h1YW5nCiAgICogR28gU2VydmVyIChyZWZhY3RvcmVkIGluIDcuMC4wKTogQGx3ajUKICAgKiBHbyAoRWNobykgU2VydmVyOiBAcGg0cjVoNGQKICAgKiBHbyAoR2luKSBTZXJ2ZXI6IEBrZW1va2VtbwogICAqIEdyYXBoUUwgRXhwcmVzcyBTZXJ2ZXI6IEByZW5lcGFyZG9uCiAgICogSGFza2VsbCBTZXJ2YW50OiBAYWxnYXMKICAgKiBIYXNrZWxsIFllc29kOiBAeW90c3V5YQogICAqIEphdmEgQ2FtZWw6IEBjYXJuZXZhbGVnaWFjb21vCiAgICogSmF2YSBNU0Y0SjogQHNhbmplZXdhLW1hbGFsZ29kYQogICAqIEphdmEgU3ByaW5nIEJvb3Q6IEBkaXlmcgogICAqIEphdmEgVW5kZXJ0b3c6IEBzdGV2ZWh1CiAgICogSmF2YSBQbGF5IEZyYW1ld29yazogQEpGQ290ZQogICAqIEphdmEgUEtNU1Q6IEBhbnNodTIxODUgQHNhbnNodW1hbiBAcmt1bWFyLXBrIEBuaW5vZHBpbGxhaQogICAqIEphdmEgVmVydC54OiBAbHdsZWUyNjA4CiAgICogSmF2YSBNaWNyb25hdXQ6IEBhbmRyaXktZG15dHJ1awogICAqIEphdmEgSGVsaWRvbjogQHNwZXJpY2FzIEB0anF1aW5ubyBAdHZhbGxpbgogICAqIEphdmEgV2lyZU1vY2s6IFtAYWNvdXZyZXVyXShodHRwczovL2dpdGh1Yi5jb20vYWNvdXZyZXVyKQogICAqIEpBWC1SUyBSZXN0RWFzeTogQGNoYW1lbGVvbjgyCiAgICogSkFYLVJTIENYRjogQGhpdmVzaGlwCiAgICogSkFYLVJTIENYRiAoQ0RJKTogQG5pY2tjbWF5bmFyZAogICAqIEpBWC1SUyBSZXN0RWFzeSAoSkJvc3MgRUFQKTogQGpmaWFsYQogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChTcHJpbmcgQm9vdCk6IEBkcjRrZTYxNgogICAqIEtvdGxpbiAoVmVydHgpOiBAV29veW1lCiAgICogS290bGluIChKQVgtUlMpOiBAYW50dGlsZXBwYQogICAqIEtvdGxpbiBXaXJlTW9jazogQHN0ZWZhbmtvcHBpZXIKICAgKiBOb2RlSlMgRXhwcmVzczogQFlpc2hUaXNoCiAgICogUEhQIEZsaWdodDogQGRhbmllbC1zYwogICAqIFBIUCBMYXJhdmVsOiBAcmVuZXBhcmRvbgogICAqIFBIUCBMdW1lbjogQGFiY3N1bgogICAqIFBIUCBNZXp6aW8gKHdpdGggUGF0aCBIYW5kbGVyKTogQEFydGljdXMKICAgKiBQSFAgU2xpbTogQGpmYXN0bmFjaHQKICAgKiBQSFAgU2xpbTQ6IFtAeWJlbGVua29dKGh0dHBzOi8vZ2l0aHViLmNvbS95YmVsZW5rbykKICAgKiBQSFAgU3ltZm9ueTogQGtzbTIKICAgKiBQSFAgU3ltZm9ueTY6IEBCZW5qYW1pbkhhZQogICAqIFB5dGhvbiBGYXN0QVBJOiBAa3JqYWticmphawogICAqIFB5dGhvbiBBSU9IVFRQOgogICAqIFJ1Ynkgb24gUmFpbHMgNTogQHpseAogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBTY2FsYSBBa2thOiBAQm91aWxsaWUKICAgKiBTY2FsYSBDYXNrOiBAYWFyb25wCiAgICogU2NhbGEgRmluY2g6IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogU2NhbGEgTGFnb206IEBnbWt1bWFyMjAwNQogICAqIFNjYWxhIFBsYXk6IEBhZGlnZXJiZXIKICogRG9jdW1lbnRhdGlvbgogICAqIEFzY2lpRG9jOiBAbWFuLWF0LWhvbWUKICAgKiBIVE1MIERvYyAyOiBAamhpdGNoY29jawogICAqIENvbmZsdWVuY2UgV2lraTogQGpoaXRjaGNvY2sKICAgKiBQbGFudFVNTDogQHBidXJscwogKiBDb25maWd1cmF0aW9uCiAgICogQXBhY2hlMjogQHN0a3J3b3JrCiAgICogazY6IEBtb3N0YWZhCiAqIFNjaGVtYQogICAqIEF2cm86IEBzZ2Fkb3VhcgogICAqIEdyYXBoUUw6IEB3aW5nMzI4IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQogICAqIEt0b3JtOiBATHVpei1Nb25hZAogICAqIE15U1FMOiBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pCiAgICogUG9zdG1hbiBDb2xsZWN0aW9uOiBAZ2NhdGFuZXNlCiAgICogUHJvdG9jb2wgQnVmZmVyOiBAd2luZzMyOAogICAqIFdTREw6IEBhZGVzc29EcGQKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMjIEhvdyB0byBqb2luIHRoZSBjb3JlIHRlYW0KCkhlcmUgYXJlIHRoZSByZXF1aXJlbWVudHMgdG8gYmVjb21lIGEgY29yZSB0ZWFtIG1lbWJlcjoKLSByYW5rIHdpdGhpbiB0b3AgNTAgaW4gaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9ncmFwaHMvY29udHJpYnV0b3JzCiAgLSB0byBjb250cmlidXRlLCBoZXJlIGFyZSBzb21lIGdvb2QgW3N0YXJ0aW5nIHBvaW50c10oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9pc3N1ZXM/cT1pcyUzQW9wZW4raXMlM0Fpc3N1ZStsYWJlbCUzQSUyMmhlbHArd2FudGVkJTIyKQotIHJlZ3VsYXIgY29udHJpYnV0aW9ucyB0byB0aGUgcHJvamVjdAogIC0gYWJvdXQgMyBob3VycyBwZXIgd2VlawogIC0gZm9yIGNvbnRyaWJ1dGlvbiwgaXQgY2FuIGJlIGFkZHJlc3NpbmcgaXNzdWVzLCByZXZpZXdpbmcgUFJzIHN1Ym1pdHRlZCBieSBvdGhlcnMsIHN1Ym1pdHRpbmcgUFIgdG8gZml4IGJ1Z3Mgb3IgbWFrZSBlbmhhbmNlbWVudHMsIGV0YwogIC0gbXVzdCBiZSBhY3RpdmUgaW4gdGhlIHBhc3QgMyBtb250aHMgYXQgdGhlIHRpbWUgb2YgYXBwbGljYXRpb24KCiBUbyBqb2luIHRoZSBjb3JlIHRlYW0sIHBsZWFzZSByZWFjaCBvdXQgdG8gdGVhbUBvcGVuYXBpdG9vbHMub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIFRvIGJlY29tZSBhIFRlbXBsYXRlIENyZWF0b3IsIHNpbXBseSBzdWJtaXQgYSBQUiBmb3IgbmV3IEFQSSBjbGllbnQgKGUuZy4gUnVzdCwgRWxpeGlyKSBvciBzZXJ2ZXIgc3R1YiAoZS5nLiBSdWJ5IEdyYXBlKSBnZW5lcmF0b3IuCgojIyMgWzYuMiAtIE9wZW5BUEkgR2VuZXJhdG9yIFRlY2huaWNhbCBDb21taXR0ZWVdKCN0YWJsZS1vZi1jb250ZW50cykKCk1lbWJlcnMgb2YgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIHRlY2huaWNhbCBjb21taXR0ZWUgc2hvdWxkZXIgdGhlIGZvbGxvd2luZyByZXNwb25zaWJpbGl0aWVzOgoKLSBQcm92aWRlcyBndWlkYW5jZSBhbmQgZGlyZWN0aW9uIHRvIG90aGVyIHVzZXJzCi0gUmV2aWV3cyBwdWxsIHJlcXVlc3RzIGFuZCBpc3N1ZXMKLSBJbXByb3ZlcyB0aGUgZ2VuZXJhdG9yIGJ5IG1ha2luZyBlbmhhbmNlbWVudHMsIGZpeGluZyBidWdzIG9yIHVwZGF0aW5nIGRvY3VtZW50YXRpb25zCi0gU2V0cyB0aGUgdGVjaG5pY2FsIGRpcmVjdGlvbiBvZiB0aGUgZ2VuZXJhdG9yCgpXaG8gaXMgZWxpZ2libGU/IFRob3NlIHdobyB3YW50IHRvIGpvaW4gbXVzdCBoYXZlIGF0IGxlYXN0IDMgUFJzIG1lcmdlZCBpbnRvIGEgZ2VuZXJhdG9yLiAoRXhjZXB0aW9ucyBjYW4gYmUgZ3JhbnRlZCB0byB0ZW1wbGF0ZSBjcmVhdG9ycyBvciBjb250cmlidXRvcnMgd2hvIGhhdmUgbWFkZSBhIGxvdCBvZiBjb2RlIGNoYW5nZXMgd2l0aCBsZXNzIHRoYW4gMyBtZXJnZWQgUFJzKQoKSWYgeW91IHdhbnQgdG8gam9pbiB0aGUgY29tbWl0dGVlLCBwbGVhc2Uga2luZGx5IGFwcGx5IGJ5IHNlbmRpbmcgYW4gZW1haWwgdG8gdGVhbUBvcGVuYXBpdG9vbHMub3JnIHdpdGggeW91ciBHaXRodWIgSUQuCgojIyMjIE1lbWJlcnMgb2YgVGVjaG5pY2FsIENvbW1pdHRlZQoKfCBMYW5ndWFnZXMvR2VuZXJhdG9ycyAgfCBNZW1iZXIgKGpvaW4gZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IEFjdGlvblNjcmlwdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBZGEgICAgICAgICAgICAgICAgICAgfCBAc3RjYXJyZXogKDIwMTgvMDIpIEBtaWNoZWxlYWxiYW5vICgyMDE4LzAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQW5kcm9pZCAgICAgICAgICAgICAgIHwgQGphei1haCAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFwZXggICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBCYXNoICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGJrcnl6YSAoMjAxNy8wOCkgQGtlbmpvbmVzLWNpc2NvICgyMDE3LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQyAgICAgICAgICAgICAgICAgICAgIHwgQHpoZW1hbnQgKDIwMTgvMTEpIEBpdHl1aHVpICgyMDE5LzEyKSBAbWljaGVsZWFsYmFubyAoMjAyMC8wMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMrKyAgICAgICAgICAgICAgICAgICB8IEByYXZpbmlrYW0gKDIwMTcvMDcpIEBzdGtyd29yayAoMjAxNy8wNykgQGV0aGVyZWFsam95ICgyMDE4LzAyKSBAbWFydGluZGVsaWxsZSAoMjAxOC8wMykgQG11dHRsZXl4ZCAoMjAxOS8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDIyAgICAgICAgICAgICAgICAgICAgfCBAbWFuZHJlYW4gKDIwMTcvMDgpIEBzaGliYXlhbiAoMjAyMC8wMikgQEJsYWNrY2xhd3MgKDIwMjEvMDMpIEBsdWNhbWF6emFudGkgKDIwMjEvMDUpIEBpQmljaGEgKDIwMjMvMDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IENsb2p1cmUgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDcnlzdGFsICAgICAgICAgICAgICAgfCBAY3lhbmdsZSAoMjAyMS8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRGFydCAgICAgICAgICAgICAgICAgIHwgQGphdW1hcmQgKDIwMTgvMDkpIEBqb3NoLWJ1cnRvbiAoMjAxOS8xMikgQGFtb25kbmV0ICgyMDE5LzEyKSBAc2J1LVdCVCAoMjAyMC8xMikgQGt1aG5yb3lhbCAoMjAyMC8xMikgQGFnaWxvYiAoMjAyMC8xMikgQGFobWVkbmZ3ZWxhICgyMDIxLzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVpZmZlbCAgICAgICAgICAgICAgICB8IEBqdmVsaWxsYSAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFbGl4aXIgICAgICAgICAgICAgICAgfCBAbXJtc3RuICgyMDE4LzEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWxtICAgICAgICAgICAgICAgICAgIHwgQGVyaWt0aW0gKDIwMTgvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVybGFuZyAgICAgICAgICAgICAgICB8IEB0c2xvdWdodGVyICgyMDE3LzExKSBAamZhY29ycm8gKDIwMTgvMTApIEByb2JlcnRvYWxvaSAoMjAxOC8xMCkgQG5lbHNvbnZpZGVzICgyMDI0LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBGIyAgICAgICAgICAgICAgICAgICAgfCBAbm1maXNoZXIgKDIwMTkvMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR28gICAgICAgICAgICAgICAgICAgIHwgQGFudGloYXggKDIwMTcvMTEpIEBncm9raWZ5ICgyMDE4LzA3KSBAa2Vtb2tlbW8gKDIwMTgvMDkpIEBqaXJpa3VuY2FyICgyMDIxLzAxKSBAcGg0cjVoNGQgKDIwMjEvMDQpIEBsd2o1ICgyMDIzLzA0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHcmFwaFFMICAgICAgICAgICAgICAgfCBAcmVuZXBhcmRvbiAoMjAxOC8xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR3Jvb3Z5ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEhhc2tlbGwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKYXZhICAgICAgICAgICAgICAgICAgfCBAYmJkb3VnbGFzICgyMDE3LzA3KSBAc3JlZXNoYXMgKDIwMTcvMDgpIEBqZmlhbGEgKDIwMTcvMDgpIEBsdWtveWFub3YgKDIwMTcvMDkpIEBjYm9ybmV0ICgyMDE3LzA5KSBAamVmZjlmaW5nZXIgKDIwMTgvMDEpIEBrYXJpc21hbm4gKDIwMTkvMDMpIEBab216b2cgKDIwMTkvMDQpIEBsd2xlZTI2MDggKDIwMTkvMTApIEBtYXJ0aW4tbWZnICgyMDIzLzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEphdmEgU3ByaW5nICAgICAgICAgICB8IEBjYWNoZXNjcnViYmVyICgyMDIyLzAyKSBAd2Vsc2htICgyMDIyLzAyKSBATWVsbGVEICgyMDIyLzAyKSBAYXRleHRvciAoMjAyMi8wMikgQG1hbmVkZXY3OSAoMjAyMi8wMikgQGphdmlzc3QgKDIwMjIvMDIpIEBib3JzY2ggKDIwMjIvMDIpIEBiYW5sZXZlbnRlICgyMDIyLzAyKSBAWm9tem9nICgyMDIyLzA5KSBAbWFydGluLW1mZyAoMjAyMy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSk1ldGVyICAgICAgICAgICAgICAgIHwgQGthbm5reW8gKDIwMjEvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEpldGJyYWlucyBIVFRQIENsaWVudCB8IEBqbGVuZ3JhbmQgKDIwMjMvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKdWxpYSAgICAgICAgICAgICAgICAgfCBAdGFubWF5a20gKDIwMjMvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgS290bGluICAgICAgICAgICAgICAgIHwgQGRyNGtlNjE2ICgyMDE4LzA4KSBAa2FyaXNtYW5uICgyMDE5LzAzKSBAWm9tem9nICgyMDE5LzA0KSBAYW5kcmV3ZW1lcnkgKDIwMTkvMTApIEA0YnJ1bnUgKDIwMTkvMTEpIEB5dXRha2EwbSAoMjAyMC8wMykgQHN0ZWZhbmtvcHBpZXIgKDIwMjIvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTHVhICAgICAgICAgICAgICAgICAgIHwgQGRhdXJuaW1hdG9yICgyMDE3LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE40SlMgICAgICAgICAgICAgICAgICB8IEBtbWV3cy1uNCAoMjAyMy8wMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBOaW0gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTm9kZUpTL0phdmFzY3JpcHQgICAgIHwgQENvZGVOaW5qYWkgKDIwMTcvMDcpIEBmcm9sICgyMDE3LzA3KSBAY2xpZmZhbm8gKDIwMTcvMDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE9iakMgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPQ2FtbCAgICAgICAgICAgICAgICAgfCBAY2dlbnNvdWwgKDIwMTkvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUGVybCAgICAgICAgICAgICAgICAgIHwgQHdpbmczMjggKDIwMTcvMDcpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KSBAeXVlOTk0NDg4MiAoMjAxOS8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBIUCAgICAgICAgICAgICAgICAgICB8IEBqZWJlbnRpZXIgKDIwMTcvMDcpLCBAZGthcmxvdmkgKDIwMTcvMDcpLCBAbWFuZHJlYW4gKDIwMTcvMDgpLCBAamZhc3RuYWNodCAoMjAxNy8wOSksIFtAeWJlbGVua29dKGh0dHBzOi8vZ2l0aHViLmNvbS95YmVsZW5rbykgKDIwMTgvMDcpLCBAcmVuZXBhcmRvbiAoMjAxOC8xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQb3dlclNoZWxsICAgICAgICAgICAgfCBAd2luZzMyOCAoMjAyMC8wNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUHl0aG9uICAgICAgICAgICAgICAgIHwgQGNib3JuZXQgKDIwMTcvMDkpIEB0b21wbHVzICgyMDE4LzEwKSBAa3JqYWticmphayAoMjAyMy8wMikgQGZhMDMxMSAoMjAyMy8xMCkgQG11bHRhbmkgKDIwMjMvMTApIHwKfCBSICAgICAgICAgICAgICAgICAgICAgfCBAUmFtYW50aCAoMjAxOS8wNykgQHNhaWdpcmlkaGFyMjEgKDIwMTkvMDcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUnVieSAgICAgICAgICAgICAgICAgIHwgQGNsaWZmYW5vICgyMDE3LzA3KSBAemx4ICgyMDE3LzA5KSBAYXV0b3BwICgyMDE5LzAyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJ1c3QgICAgICAgICAgICAgICAgICB8IEBmcm9sICgyMDE3LzA3KSBAZmFyY2FsbGVyICgyMDE3LzA4KSBAcmljaGFyZHdoaXVrICgyMDE5LzA3KSBAcGFsYWRpbnpoICgyMDIwLzA1KSBAamFjb2ItcHJvICgyMDIyLzEwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTY2FsYSAgICAgICAgICAgICAgICAgfCBAY2xhc25ha2UgKDIwMTcvMDcpLCBAc2hpamlua3VpICAoMjAxOC8wMSksIEByYW16aW1hYWxlaiAoMjAxOC8wMyksIEBjaGFtZWxlb244MiAoMjAyMC8wMyksIEBCb3VpbGxpZSAoMjAyMC8wNCkgQGZpc2g4NiAoMjAyMy8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU3dpZnQgICAgICAgICAgICAgICAgIHwgQGpnYXZyaXMgKDIwMTcvMDcpIEBlaHljaGUgKDIwMTcvMDgpIEBFZHViaXRzICgyMDE3LzA5KSBAamF6LWFoICgyMDE3LzA5KSBANGJydW51ICgyMDE5LzExKSBAZHlkdXMweDE0ICgyMDIzLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFR5cGVTY3JpcHQgICAgICAgICAgICB8IEBUaUZ1ICgyMDE3LzA3KSBAdGF4cG9uICgyMDE3LzA3KSBAc2ViYXN0aWFuaGFhcyAoMjAxNy8wNykgQGtlbmlzdGV3YXJkICgyMDE3LzA3KSBAVnJvbGlqa3ggKDIwMTcvMDkpIEBtYWNqb2hubnkgKDIwMTgvMDEpIEB0b3BjZSAoMjAxOC8xMCkgQGFrZWhpciAoMjAxOS8wNykgQHBldGVqb2hhbnNvbnhvICgyMDE5LzExKSBAYW1ha2hyb3YgKDIwMjAvMDIpIEBkYXZpZGdhbWVybyAoMjAyMi8wMykgQG1rdXNha2EgKDIwMjIvMDQpIEBqb3NjaGEgKDIwMjQvMTApICAgIHwKfCBYb2pvICAgICAgICAgICAgICAgICAgfCBAVG9waGVlZSAoMjAyMy8wNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgoKUGFzdCBNZW1iZXJzIG9mIFRlY2huaWNhbCBDb21taXR0ZWU6CnwgTGFuZ3VhZ2VzL0dlbmVyYXRvcnMgICAgICAgICB8IE1lbWJlciAoam9pbiBkYXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFB5dGhvbiAgICAgICAgICAgIHwgQHRheHBvbiAoMjAxNy8wNykgQGZyb2wgKDIwMTcvMDcpIEBtYm9obG9vbCAoMjAxNy8wNykgQGNib3JuZXQgKDIwMTcvMDkpIEBrZW5qb25lcy1jaXNjbyAoMjAxNy8xMSkgQHRvbXBsdXMgKDIwMTgvMTApIEBhcnVuLW5hbGxhICgyMDE5LzExKSAgfAoKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMgWzYuMyAtIEhpc3Rvcnkgb2YgT3BlbkFQSSBHZW5lcmF0b3JdKCN0YWJsZS1vZi1jb250ZW50cykKCk9wZW5BUEkgR2VuZXJhdG9yIGlzIGEgZm9yayBvZiBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKS4gSW4gdmlldyBvZiB0aGUgaXNzdWVzIHdpdGggdGhlIFN3YWdnZXIgQ29kZWdlbiAzLjAuMCAoYmV0YSkgcmVsZWFzZSBhbmQgdGhlIGRpc2FncmVlbWVudCBvbiB0aGUgcHJvamVjdCdzIGRpcmVjdGlvbiwgbW9yZSB0aGFuIDQwIHRvcCBjb250cmlidXRvcnMgYW5kIHRlbXBsYXRlIGNyZWF0b3JzIG9mIFN3YWdnZXIgQ29kZWdlbiBkZWNpZGVkIHRvIGZvcmsgU3dhZ2dlciBDb2RlZ2VuIGFuZCBtYWludGFpbiBhIGNvbW11bml0eS1kcml2ZW4gdmVyc2lvbiBjYWxsZWQgIk9wZW5BUEkgR2VuZXJhdG9yIi4gUGxlYXNlIHJlZmVyIHRvIHRoZSBbUSZBXShkb2NzL3FuYS5tZCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgojIyMjIEZvdW5kaW5nIE1lbWJlcnMgKGFscGhhYmV0aWNhbCBvcmRlcik6CgotIFtBa2loaXRvIE5ha2Fub10oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkKLSBbQXJ0ZW0gT2NoZXJlZGtvXShodHRwczovL2dpdGh1Yi5jb20vZ2FsYXhpZSkKLSBbQXJ0aHVyIE1vZ2xpZXZdKGh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpY3VzKQotIFtCYXJ0ZWsgS3J5emFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ia3J5emEpCi0gW0JlbiBXZWxsc10oaHR0cHM6Ly9naXRodWIuY29tL2J2d2VsbHMpCi0gW0JlbmphbWluIEdpbGxdKGh0dHBzOi8vZ2l0aHViLmNvbS9iamdpbGwpCi0gW0NocmlzdG9waGUgQm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkKLSBbQ2xpZmZhbm8gU3ViYWdpb10oaHR0cHM6Ly9naXRodWIuY29tL2NsaWZmYW5vKQotIFtEYWlraSBNYXRzdWRhdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kLWRhdGUpCi0gW0RhbmllbF0oaHR0cHM6Ly9naXRodWIuY29tL0RhbmllbGt1MTUpCi0gW0VtaWxpYW5vIEJvbmFzc2ldKGh0dHBzOi8vZ2l0aHViLmNvbS9lbWlsaWFub2JvbmFzc2kpCi0gW0VyaWsgVGltbWVyc10oaHR0cHM6Ly9naXRodWIuY29tL2VyaWt0aW0pCi0gW0VzdGViYW4gR2VocmluZ10oaHR0cHM6Ly9naXRodWIuY29tL21hY2pvaG5ueSkKLSBbR3VzdGF2byBQYXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXN0YXZvYXBheikKLSBbSmF2aWVyIFZlbGlsbGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdmVsaWxsYSkKLSBbSmVhbi1GcmFuw6dvaXMgQ8O0dMOpXShodHRwczovL2dpdGh1Yi5jb20vSkZDb3RlKQotIFtKaW0gU2NodWJlcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qaW1zY2h1YmVydCkKLSBbSm9uIFNjaG9uaW5nXShodHRwczovL2dpdGh1Yi5jb20vam9uc2Nob25pbmcpCi0gW0rDqXLDqW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qbWluaSkKLSBbSsO2cm4gQWhyZW5zXShodHRwczovL2dpdGh1Yi5jb20vamF5ZWFybikKLSBbS2VuaSBTdGV3YXJkXShodHRwczovL2dpdGh1Yi5jb20va2VuaXN0ZXdhcmQpCi0gW01hcmNpbiBTdGVmYW5pdWtdKGh0dHBzOi8vZ2l0aHViLmNvbS9tc3RlZmFuaXVrKQotIFtNYXJ0aW4gRGVsaWxsZV0oaHR0cHM6Ly9naXRodWIuY29tL01hcnRpbkRlbGlsbGUpCi0gW01hc2FoaXJvIFlhbWF1Y2hpXShodHRwczovL2dpdGh1Yi5jb20vYWxnYXMpCi0gW01pY2hlbGUgQWxiYW5vXShodHRwczovL2dpdGh1Yi5jb20vbWljaGVsZWFsYmFubykKLSBbUmFtemkgTWFhbGVqXShodHRwczovL2dpdGh1Yi5jb20vcmFtemltYWFsZWopCi0gW1JhdmluZHJhIE5pa2FtXShodHRwczovL2dpdGh1Yi5jb20vcmF2aW5pa2FtKQotIFtSaWNhcmRvIENhcmRvbmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaWNhcmRvbmEpCi0gW1NlYmFzdGlhbiBIYWFzXShodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuaGFhcykKLSBbU2ViYXN0aWFuIE1hbmRyZWFuXShodHRwczovL2dpdGh1Yi5jb20vbWFuZHJlYW4pCi0gW1NyZWVuaWRoaSBTcmVlc2hhXShodHRwczovL2dpdGh1Yi5jb20vc3JlZXNoYXMpCi0gW1N0ZWZhbiBLcmlzbWFubl0oaHR0cHM6Ly9naXRodWIuY29tL3N0a3J3b3JrKQotIFtTdGVwaGFuZSBDYXJyZXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGNhcnJleikKLSBbVGFrdXJvIFdhZGFdKGh0dHBzOi8vZ2l0aHViLmNvbS90YXhwb24pCi0gW1RvbWFzeiBQcnVzXShodHRwczovL2dpdGh1Yi5jb20vdG9tcGx1cykKLSBbVHJpc3RhbiBTbG91Z2h0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS90c2xvdWdodGVyKQotIFtWaWN0b3IgT3Jsb3Zza3ldKGh0dHBzOi8vZ2l0aHViLmNvbS92aWNsb3Zza3kpCi0gW1ZpY3RvciBUcmFraHRlbmJlcmddKGh0dHBzOi8vZ2l0aHViLmNvbS92aWN0b3JnaXQpCi0gW1ZsYWQgRnJvbG92XShodHRwczovL2dpdGh1Yi5jb20vZnJvbCkKLSBbVmxhZGltaXIgUG91emFub3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYXJjYWxsZXIpCi0gW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KQotIFtYaW4gTWVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3htZW5nMSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3VzZXIvb3ZlcnZpZXc/dT0xNjQzNTM4NSkKLSBbWHUgSHVpIEh1aV0oaHR0cHM6Ly9naXRodWIuY29tL3hoaCkKLSBbYW50aWhheF0oaHR0cHM6Ly9naXRodWIuY29tL2FudGloYXgpCi0gW2JlYXRjcmFja2VyXShodHRwczovL2dpdGh1Yi5jb20vYmVhdGNyYWNrZXIpCi0gW2RhdXJuaW1hdG9yXShodHRwczovZ2l0aHViLmNvbS9kYXVybmltYXRvcikKLSBbZXRoZXJlYWxqb3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmVhbGpveSkKLSBbamZpYWxhXShodHRwczovL2dpdGh1Yi5jb20vamZpYWxhKQotIFtsdWtveWFub3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtveWFub3YpCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMgWzcgLSBMaWNlbnNlXSgjdGFibGUtb2YtY29udGVudHMpCi0tLS0tLS0KCkNvcHlyaWdodCAyMDE4IE9wZW5BUEktR2VuZXJhdG9yIENvbnRyaWJ1dG9ycyAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKQpDb3B5cmlnaHQgMjAxOCBTbWFydEJlYXIgU29mdHdhcmUKCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCBbYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMF0oaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCkKClVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgotLS0K + readmeEtag: '"aede9d3f51841d3c1f68e38c9d24d3f9214c58c7"' + readmeLastModified: Wed, 09 Oct 2024 03:15:25 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-08T03:22:05Z' + updated: '2024-10-09T03:15:30Z' language: Java archived: false - stars: 21503 + stars: 21519 watchers: 220 - forks: 6507 + forks: 6509 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"8397cb442ac0c699f579ada156432a8af1f52aa8b5e5943a5e021517993577ce"' - repoLastModified: Tue, 08 Oct 2024 03:22:05 GMT + repoEtag: '"92a266924f3a0deace8b9eb08b3b32029383bbdfb4eaa7e47b41ec25c837165b"' + repoLastModified: Wed, 09 Oct 2024 03:15:30 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-07T22:44:15Z' + updated: '2024-10-09T01:42:22Z' language: C# archived: false - stars: 2876 + stars: 2879 watchers: 43 - forks: 198 + forks: 199 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"eb4550f04741a29766e1565048f061b3d2a6f95dcfc76075df93bd9a112d83d6"' - repoLastModified: Mon, 07 Oct 2024 22:44:15 GMT + repoEtag: '"644503a72143e5a9820d040d6664d3fb25885822b62d92b0b8f0dd443a5d9ae4"' + repoLastModified: Wed, 09 Oct 2024 01:42:22 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt @@ -1151,13 +1151,13 @@ id: d604cd88daaabccb12202f2d3d4429d5 repositoryMetadata: base64Readme: >- - IyBGYWJyaWt0IGAvy4hmYS1icmlrdC9gIC0gS290bGluIGNvZGUgZnJvbSBPcGVuQVBJIDMKCi0tLQoKKiBbSW50cm9kdWN0aW9uXSgjaW50cm9kdWN0aW9uKQoqIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQoqIFtFeGFtcGxlc10oI2V4YW1wbGVzKQoqIFtVc2FnZSBJbnN0cnVjdGlvbnNdKCN1c2FnZS1pbnN0cnVjdGlvbnMpCiAgKiBbQ29tbWFuZCBMaW5lXSgjY29tbWFuZC1saW5lKQogICogW0dyYWRsZSB3LyBjdXN0b20gdGFza10oI2dyYWRsZS13LWN1c3RvbS10YXNrKQogICogW0dyYWRsZSB3LyBwbHVnaW5dKCNncmFkbGUtdy1wbHVnaW4pCiAgKiBbTWF2ZW5dKCNtYXZlbikKKiBbQ29uZmlndXJhdGlvbiBPcHRpb25zXSgjY29uZmlndXJhdGlvbi1vcHRpb25zKQoqIFtCdWlsZGluZyBMb2NhbGx5XSgjYnVpbGRpbmctbG9jYWxseSkKKiBbUHVibGlzaGluZ10oI3B1Ymxpc2hpbmcpCiogW1NwZWNpZmljIEZlYXR1cmVzXSgjc3BlY2lmaWMtZmVhdHVyZXMpCgotLS0KCiMjIEludHJvZHVjdGlvbgoKVGhpcyBsaWJyYXJ5IHdhcyBidWlsdCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcGxleCBtb2RlbGluZyBmZWF0dXJlcyBhdmFpbGFibGUgaW4gT3BlbkFQSSAzLiBJdCBnZW5lcmF0ZXMgS290bGluIGRhdGEgY2xhc3NlcyB3aXRoIGFkdmFuY2VkIHN1cHBvcnQgZm9yIGZlYXR1cmVzIHN1Y2ggYXM6IAogLSBOdWxsIFNhZmV0eQogLSBJbmxpbmVkIHNjaGVtYSBkZWZpbml0aW9ucwogLSBFbnVtZXJhdGlvbnMgCiAtIFNlYWxlZCBDbGFzc2VzCiAtIFBvbHltb3JwaGlzbSAoYEBKc29uU3ViVHlwZXNgKQogLSBNYXBzIG9mIE1hcHMgb2YgTWFwcwogLSBHcmFhbFZNIE5hdGl2ZSBSZWZsZWN0aW9uIFJlZ2lzdHJhdGlvbgogLSBKc29uIE1lcmdlIFBhdGNoICh2aWEgYEpzb25OdWxsYWJsZWApIChhZGQgYHgtanNvbi1tZXJnZS1wYXRjaDogdHJ1ZWAgdG8gc2NoZW1hcykKIC0gT3ZlcnJpZGUgSmFja3NvbiBJbmNsdWRlIE5vbk51bGwgKHZpYSBgSnNvbkluY2x1ZGVgKSAoYWRkIGB4LWphY2tzb24taW5jbHVkZS1ub24tbnVsbDogdHJ1ZWAgdG8gc2NoZW1hcykKIAphcyB3ZWxsIGFzIEhUVFAgY2xpZW50cyBhbmQgY29udHJvbGxlcnMgZm9yIGEgbnVtYmVyIG9mIHBvcHVsYXIgZnJhbWV3b3JrcyAoc2VlIFtGZWF0dXJlc10oI2ZlYXR1cmVzKSkuCgpNb3JlIHRoYW4ganVzdCBib290c3RyYXBwaW5nLCB0aGlzIGxpYnJhcnkgY2FuIGJlIHBlcm1hbmVudGx5IGludGVncmF0ZWQgaW50byBhIGdyYWRsZSBvciBtYXZlbiBidWlsZCBhbmQgd2lsbCBlbnN1cmUgY29udHJhY3QgYW5kIGNvZGUgYWx3YXlzIG1hdGNoLCBldmVuIGFzIEFQSXMgZXZvbHZlIGluIGNvbXBsZXhpdHkuIAoKVGhlIHRlYW0gdGhhdCBidWlsdCB0aGlzIHRvb2wgaW5pdGlhbGx5IGNvbnRyaWJ1dGVkIHRvIHRoZSBLb3RsaW4gY29kZSBnZW5lcmF0aW9uIGFiaWxpdHkgaW4gW09wZW5BcGlUb29sc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciksIGJ1dCByZWFjaGVkIHRoZSBsaW1pdHMgb2Ygd2hhdCBjb3VsZCBiZSBhY2hpZXZlZCB3aXRoIHRlbXBsYXRlLWJhc2VkIGdlbmVyYXRpb24uIFRoaXMgbGlicmFyeSBsZXZlcmFnZXMgdGhlIHJpY2ggT3BlbkFQSSAzIG1vZGVsIHByb3ZpZGVkIGJ5IFtLYWlaZW4tT3BlbkFwaS1QYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZXByZVplbi9LYWlaZW4tT3BlbkFwaS1QYXJzZXIpIGFuZCB1c2VzIFtLb3RsaW4gUG9ldF0oaHR0cHM6Ly9zcXVhcmUuZ2l0aHViLmlvL2tvdGxpbnBvZXQvKSB0byBwcm9ncmFtbWF0aWNhbGx5IGNvbnN0cnVjdCBLb3RsaW4gY2xhc3NlcyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS4gCgpJdCB3YXMgYnVpbHQgYXQgW1phbGFuZG8gVGVjaF0oaHR0cHM6Ly9vcGVuc291cmNlLnphbGFuZG8uY29tLykgYW5kIGlzIGJhdHRsZS10ZXN0ZWQgaW4gcHJvZHVjdGlvbiB0aGVyZS4gSXQgaXMgcGFydGljdWxhcmx5IHdlbGwtc3VpdGVkIHRvIEFQSSdzIGJ1aWx0IGFjY29yZGluZyB0byBaYWxhbmRvJ3MgW1JFU1QgQVBJIGd1aWRlbGluZXNdKGh0dHBzOi8vb3BlbnNvdXJjZS56YWxhbmRvLmNvbS9yZXN0ZnVsLWFwaS1ndWlkZWxpbmVzLykuCgpUaGUgbGlicmFyeSBpcyBbYXZhaWxhYmxlIG9uIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9jb20uY2pib29tcy9mYWJyaWt0KSBhdCB0aGUgZm9sbG93aW5nIGNvb3JkaW5hdGVzOgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPmNvbS5jamJvb21zPC9ncm91cElkPgogIDxhcnRpZmFjdElkPmZhYnJpa3Q8L2FydGlmYWN0SWQ+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyBGZWF0dXJlcwoKVGhlIGxpYnJhcnkgY3VycmVudGx5IGhhcyBzdXBwb3J0IGZvciBnZW5lcmF0aW5nOgoKKiBNb2RlbHMKICAqICoqSmFja3NvbioqIGFubm90YXRlZCAqKmRhdGEgY2xhc3NlcyoqCiogQ2xpZW50cwogICogKipPa0h0dHAgQ2xpZW50KiogLSB3aXRoIHRoZSBvcHRpb24gZm9yIGEgcmVzaWxpZW5jZTRqIGZhdWx0LXRvbGVyYW5jZSB3cmFwcGVyCiAgKiAqKk9wZW5GZWlnbioqIGFubm90YXRlZCBjbGllbnQgaW50ZXJmYWNlcwoqIENvbnRyb2xsZXJzCiAgKiAqKlNwcmluZyBNVkMqKiBhbm5vdGF0ZWQgY29udHJvbGxlciBpbnRlcmZhY2VzCiAgKiAqKk1pY3JvbmF1dCoqIEhUVFAgYW5ub3RhdGVkIGNvbnRyb2xsZXIgaW50ZXJmYWNlcwogICogKipLdG9yIHNlcnZlcioqIHJvdXRlcyBhbmQgY29udHJvbGxlciBpbnRlcmZhY2VzCgojIyBFeGFtcGxlcwoKQ29uc3VsdCB0ZXN0IGRpcmVjdG9yeSBmb3IgT3BlbkFQSSBjb2RlIGdlbmVyYXRpb24gZXhhbXBsZXMuIAoKSXQgZm9ybXMgYSBsaXZpbmcgZG9jdW1lbnRhdGlvbiBmdWxsIG9mIFtjb2RlIGV4YW1wbGVzXShzcmMvdGVzdC9yZXNvdXJjZXMvZXhhbXBsZXMpIGdlbmVyYXRlZCBmcm9tIGRpZmZlcmVudCBPcGVuQVBJIDMgcGVybXV0YXRpb25zLgoKRnVydGhlcm1vcmUsIHRoZSBbZW5kLXRvLWVuZCB0ZXN0c10oL2VuZDJlbmQtdGVzdHMpIGRlbW9uc3RyYXRlIGhvdyB0byBpbnRlZ3JhdGUgdGhlIGxpYnJhcnkgdXNpbmcgR3JhZGxlLgoKIyMgVXNhZ2UgSW5zdHJ1Y3Rpb25zCgpUaGUgbGlicmFyeSBjYW4gYmUgdXNlZCBpbiBhIHZhcmlldHkgb2Ygd2F5cywgaW5jbHVkaW5nIGFzIGEgY29tbWFuZCBsaW5lIHRvb2wsIGEgR3JhZGxlIHRhc2ssIG9yIGEgTWF2ZW4gcGx1Z2luLgoKUGxlYXNlIHJlZmVyIHRvIFtDb25maWd1cmF0aW9uIE9wdGlvbnNdKCNjb25maWd1cmF0aW9uLW9wdGlvbnMpIHNlY3Rpb24gZm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgcGFyYW1ldGVycy4KCiMjIyBDb21tYW5kIExpbmUKCkZhYnJpa3QgaXMgcGFja2FnZWQgYXMgYW4gZXhlY3V0YWJsZSBqYXIsIGFsbG93aW5nIGl0IHRvIGJlIGludGVncmF0ZWQgaW50byBhbnkgYnVpbGQgdG9vbC4gCgpUaGUgQ0xJIGNhbiBiZSBpbnZva2VkIGFzIGZvbGxvd3M6CgpgYGAKamF2YSAtamFyIGZhYnJpa3QuamFyIFwKICAgIC0tb3V0cHV0LWRpcmVjdG9yeSAnL3RtcCcgXAogICAgLS1iYXNlLXBhY2thZ2UgJ2NvbS5leGFtcGxlJyBcCiAgICAtLWFwaS1maWxlICcvcGF0aC10by1hcGkvb3Blbi1hcGkueWFtbCcgXAogICAgLS10YXJnZXRzICdjbGllbnQnIFwKICAgIC0tdGFyZ2V0cyAnaHR0cF9tb2RlbHMnIFwKICAgIC0taHR0cC1jbGllbnQtb3B0cyByZXNpbGllbmNlNGoKYGBgCgojIyMgR3JhZGxlIHcvIGN1c3RvbSB0YXNrCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBHcmFkbGUgdGFzayB3aXRoIGNvZGUgZ2VuZXJhdGVkIHRvIHRoZSBgYnVpbGQvZ2VuZXJhdGVkYCBkaXJlY3RvcnksIGFuZCBleGVjdXRpb24gbGlua2VkIHRvIHRoZSBjb21waWxlIHRhc2suIAoKYGBga290bGluCnZhbCBmYWJyaWt0OiBDb25maWd1cmF0aW9uIGJ5IGNvbmZpZ3VyYXRpb25zLmNyZWF0aW5nCgp2YWwgZ2VuZXJhdGlvbkRpciA9ICIkYnVpbGREaXIvZ2VuZXJhdGVkIgp2YWwgYXBpRmlsZSA9ICIkYnVpbGREaXIvcGF0aC10by1hcGkvb3Blbi1hcGkueWFtbCIKCnNvdXJjZVNldHMgewogICAgbWFpbiB7IGphdmEuc3JjRGlycygiJGdlbmVyYXRpb25EaXIvc3JjL21haW4va290bGluIikgfQogICAgdGVzdCB7IGphdmEuc3JjRGlycygiJGdlbmVyYXRpb25EaXIvc3JjL3Rlc3Qva290bGluIikgfQogICAgLi4uCn0KCnRhc2tzIHsgICAKICAgIC4uLgogICAgdmFsIGdlbmVyYXRlQ29kZSBieSBjcmVhdGluZyhKYXZhRXhlYzo6Y2xhc3MpIHsKICAgICAgICBpbnB1dHMuZmlsZXMoYXBpRmlsZSkKICAgICAgICBvdXRwdXRzLmRpcihnZW5lcmF0aW9uRGlyKQogICAgICAgIG91dHB1dHMuY2FjaGVJZiB7IHRydWUgfQogICAgICAgIGNsYXNzcGF0aChmYWJyaWt0KQogICAgICAgIG1haW5DbGFzcy5zZXQoImNvbS5jamJvb21zLmZhYnJpa3QuY2xpLkNvZGVHZW4iKQogICAgICAgIGFyZ3MgPSBsaXN0T2YoCiAgICAgICAgICAgICItLW91dHB1dC1kaXJlY3RvcnkiLCBnZW5lcmF0aW9uRGlyLAogICAgICAgICAgICAiLS1iYXNlLXBhY2thZ2UiLCAiY29tLmV4YW1wbGUiLAogICAgICAgICAgICAiLS1hcGktZmlsZSIsIGFwaUZpbGUsCiAgICAgICAgICAgICItLXRhcmdldHMiLCAiaHR0cF9tb2RlbHMiLAogICAgICAgICAgICAiLS10YXJnZXRzIiwgImNsaWVudCIsCiAgICAgICAgICAgICItLWh0dHAtY2xpZW50LW9wdHMiLCAicmVzaWxpZW5jZTRqIgogICAgICAgICkKICAgIH0KICAgIHdpdGhUeXBlPG9yZy5qZXRicmFpbnMua290bGluLmdyYWRsZS50YXNrcy5Lb3RsaW5Db21waWxlPiB7CiAgICAgICAga290bGluT3B0aW9ucy5qdm1UYXJnZXQgPSAiMTciCiAgICAgICAgZGVwZW5kc09uKGdlbmVyYXRlQ29kZSkKICAgIH0KfQoKZGVwZW5kZW5jaWVzIHsKICAgICBmYWJyaWt0KCJjb20uY2pib29tczpmYWJyaWt0OisiKSAvLyBUaGlzIHNob3VsZCBiZSBwaW5uZWQgIAogICAgIC4uLgp9CmBgYAoKIyMjIEdyYWRsZSB3LyBwbHVnaW4KClRoZSBbRmFicmlrdCBHcmFkbGUgcGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vYWNhbmRhL2ZhYnJpa3QtZ3JhZGxlLXBsdWdpbikgc2VydmVzIGFzIGEgY29udmVuaWVudCB3cmFwcGVyIGZvciBGYWJyaWt0LCAKYWxsb3dpbmcgc2VhbWxlc3MgaW50ZWdyYXRpb24gb2YgY29kZSBnZW5lcmF0aW9uIGludG8gYSBHcmFkbGUgYnVpbGQuCgoqKk5vdGU6KiogU2luY2UgdGhlIHBsdWdpbiBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgRmFicmlrdCBsaWJyYXJ5LCBwbGVhc2UgcmVmZXIgdG8gdGhlCltDb25maWd1cmF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYWNhbmRhL2ZhYnJpa3QtZ3JhZGxlLXBsdWdpbj90YWI9cmVhZG1lLW92LWZpbGUjY29uZmlndXJhdGlvbikgc2VjdGlvbiBvZiB0aGUgCnBsdWdpbidzIFJFQURNRSBmb3IgdGhlIG1vc3QgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGl0LgoKTGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBsdWdpbjogWyFbR3JhZGxlIFBsdWdpbiBQb3J0YWwgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ncmFkbGUtcGx1Z2luLXBvcnRhbC92L2NoLmFjYW5kYS5ncmFkbGUuZmFicmlrdD9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9wbHVnaW5zLmdyYWRsZS5vcmcvcGx1Z2luL2NoLmFjYW5kYS5ncmFkbGUuZmFicmlrdCkKCmBgYGtvdGxpbgpwbHVnaW5zIHsKICAgIC8vIGZpbmQgbGF0ZXN0IHZlcnNpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9hY2FuZGEvZmFicmlrdC1ncmFkbGUtcGx1Z2luL3JlbGVhc2VzCiAgICBpZCgiY2guYWNhbmRhLmdyYWRsZS5mYWJyaWt0IikgdmVyc2lvbiAiMS4zLjAiCn0KCmZhYnJpa3QgewogICAgZ2VuZXJhdGUoImRvZyIpIHsKICAgICAgICBhcGlGaWxlID0gZmlsZSgic3JjL21haW4vb3BlbmFwaS9kb2cueWFtbCIpCiAgICAgICAgYmFzZVBhY2thZ2UgPSAiY29tLmV4YW1wbGUuYXBpIgogICAgfQp9CmBgYAoKIyMjIE1hdmVuCgpUaGUgW2V4ZWMtbWF2ZW4tcGx1Z2luXShodHRwOi8vd3d3Lm1vam9oYXVzLm9yZy9leGVjLW1hdmVuLXBsdWdpbi9leGFtcGxlcy9leGFtcGxlLWV4ZWMtdXNpbmctcGx1Z2luLWRlcGVuZGVuY2llcy5odG1sKSBpcyBjYXBhYmxlIG9mIGRvd25sb2FkaW5nIHRoZSBGYWJyaWt0IGxpYnJhcnkgZnJvbSBNYXZlbiBDZW50cmFsIGFuZCBleGVjdXRpbmcgaXRzIG1haW4gbWV0aG9kIHdpdGggZGVmaW5lZCBhcmd1bWVudHMuCgojIyBDb25maWd1cmF0aW9uIE9wdGlvbnMKClRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIGF2YWlsYWJsZSBDTEkgcGFyYW1ldGVycyBmb3IgY29udHJvbGxpbmcgd2hhdCBnZXRzIGdlbmVyYXRlZC4gVGhpcyBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZCB1c2luZzogYC4vZ3JhZGxldyBwcmludENvZGVHZW5Vc2FnZWAKCnwgUGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgICBgLS1hcGktZmlsZWAgICAgICAgICAgICAgICAgfCBUaGlzIG11c3QgYmUgYSB2YWxpZCBPcGVuIEFQSSB2MyBzcGVjLiBBbGwgY29kZSBnZW5lcmF0aW9uIHdpbGwgYmUgYmFzZWQgb2ZmIHRoaXMgaW5wdXQuIHwKfCAgIGAtLWFwaS1mcmFnbWVudGAgICAgICAgICAgICB8IEEgcGFydGlhbCBPcGVuIEFQSSB2MyBmcmFnbWVudCwgdG8gYmUgY29tYmluZWQgd2l0aCB0aGUgcHJpbWFyeSBBUEkgZm9yIGNvZGUgZ2VuZXJhdGlvbiBwdXJwb3Nlcy4gfAp8ICogYC0tYmFzZS1wYWNrYWdlYCAgICAgICAgICAgIHwgVGhlIGJhc2UgcGFja2FnZSB3aGljaCBhbGwgY29kZSB3aWxsIGJlIGdlbmVyYXRlZCB1bmRlci4gfAp8ICAgYC0tZXh0ZXJuYWwtcmVmLXJlc29sdXRpb25gIHwgU3BlY2lmeSB0byB3aGljaCBkZWdyZWUgcmVmZXJlbmNlZCBzY2hlbWFzIGZyb20gZXh0ZXJuYWwgZmlsZXMgYXJlIGluY2x1ZGVkIGluIG1vZGVsIGdlbmVyYXRpb24uIERlZmF1bHQ6IFRBUkdFVEVEIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFRBUkdFVEVEYCAtIEdlbmVyYXRlIG1vZGVscyBvbmx5IGZvciBkaXJlY3RseSByZWZlcmVuY2VkIHNjaGVtYXMgaW4gZXh0ZXJuYWwgQVBJIGZpbGVzLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBBR0dSRVNTSVZFYCAtIFJlZmVyZW5jaW5nIGFueSBzY2hlbWEgaW4gYW4gZXh0ZXJuYWwgQVBJIGZpbGUgdHJpZ2dlcnMgZ2VuZXJhdGlvbiBvZiBldmVyeSBleHRlcm5hbCBzY2hlbWEgaW4gdGhhdCBmaWxlLiB8CnwgICBgLS1odHRwLWNsaWVudC1vcHRzYCAgICAgICAgfCBTZWxlY3QgdGhlIG9wdGlvbnMgZm9yIHRoZSBodHRwIGNsaWVudCBjb2RlIHRoYXQgeW91IHdhbnQgdG8gYmUgZ2VuZXJhdGVkLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgQU5ZIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBSRVNJTElFTkNFNEpgIC0gR2VuZXJhdGVzIGEgZmF1bHQgdG9sZXJhbmNlIHNlcnZpY2UgZm9yIHRoZSBjbGllbnQgdXNpbmcgdGhlIGZvbGxvd2luZyBsaWJyYXJ5ICJpby5naXRodWIucmVzaWxpZW5jZTRqOnJlc2lsaWVuY2U0ai1hbGw6KyIgKG9ubHkgZm9yIE9rSHR0cCBjbGllbnRzKSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBTVVNQRU5EX01PRElGSUVSYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIHN1c3BlbmQgbW9kaWZpZXIgdG8gdGhlIGdlbmVyYXRlZCBjbGllbnQgZnVuY3Rpb25zIChvbmx5IGZvciBPcGVuRmVpZ24gY2xpZW50cykgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1BSSU5HX1JFU1BPTlNFX0VOVElUWV9XUkFQUEVSYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFNwcmluZy1SZXNwb25zZUVudGl0eSBnZW5lcmljIGFyb3VuZCB0aGUgcmVzcG9uc2UgdG8gYmUgYWJsZSB0byBnZXQgcmVzcG9uc2UgaGVhZGVycyBhbmQgc3RhdHVzIChvbmx5IGZvciBPcGVuRmVpZ24gY2xpZW50cykuIHwKfCAgIGAtLWh0dHAtY2xpZW50LXRhcmdldGAgICAgICB8IE9wdGlvbmFsbHkgc2VsZWN0IHRoZSB0YXJnZXQgY2xpZW50IHRoYXQgeW91IHdhbnQgdG8gYmUgZ2VuZXJhdGVkLiBEZWZhdWx0cyB0byBPS19IVFRQIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE9LX0hUVFBgIC0gR2VuZXJhdGUgT2tIdHRwIGNsaWVudC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgT1BFTl9GRUlHTmAgLSBHZW5lcmF0ZSBPcGVuRmVpZ24gY2xpZW50LiB8CnwgICBgLS1odHRwLWNvbnRyb2xsZXItb3B0c2AgICAgfCBTZWxlY3QgdGhlIG9wdGlvbnMgZm9yIHRoZSBjb250cm9sbGVycyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1VTUEVORF9NT0RJRklFUmAgLSBUaGlzIG9wdGlvbiBhZGRzIHRoZSBzdXNwZW5kIG1vZGlmaWVyIHRvIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQVVUSEVOVElDQVRJT05gIC0gVGhpcyBvcHRpb24gYWRkcyB0aGUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVyIHRvIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQ09NUExFVElPTl9TVEFHRWAgLSBUaGlzIG9wdGlvbiBtYWtlcyBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgaGF2ZSBUeXBlIENvbXBsZXRpb25TdGFnZTxUPiAod29ya3Mgb25seSB3aXRoIFNwcmluZyBDb250cm9sbGVyIGdlbmVyYXRvcikgfAp8ICAgYC0taHR0cC1jb250cm9sbGVyLXRhcmdldGAgIHwgT3B0aW9uYWxseSBzZWxlY3QgdGhlIHRhcmdldCBmcmFtZXdvcmsgZm9yIHRoZSBjb250cm9sbGVycyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gRGVmYXVsdHMgdG8gU3ByaW5nIENvbnRyb2xsZXJzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFNQUklOR2AgLSBHZW5lcmF0ZSBmb3IgU3ByaW5nIGZyYW1ld29yay4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUYCAtIEdlbmVyYXRlIGZvciBNaWNyb25hdXQgZnJhbWV3b3JrLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBLVE9SYCAtIEdlbmVyYXRlIGZvciBLdG9yIHNlcnZlci4gfAp8ICAgYC0taHR0cC1tb2RlbC1vcHRzYCAgICAgICAgIHwgU2VsZWN0IHRoZSBvcHRpb25zIGZvciB0aGUgaHR0cCBtb2RlbHMgdGhhdCB5b3Ugd2FudCB0byBiZSBnZW5lcmF0ZWQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFhfRVhURU5TSUJMRV9FTlVNU2AgLSBUaGlzIG9wdGlvbiB0cmVhdHMgeC1leHRlbnNpYmxlLWVudW1zIGFzIGVudW1zIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEpBVkFfU0VSSUFMSVpBVElPTmAgLSBUaGlzIG9wdGlvbiBhZGRzIEphdmEgU2VyaWFsaXphYmxlIGludGVyZmFjZSB0byB0aGUgZ2VuZXJhdGVkIG1vZGVscyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBRVUFSS1VTX1JFRkxFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBAUmVnaXN0ZXJGb3JSZWZsZWN0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiBSZXF1aXJlcyBkZXBlbmRlbmN5ICInaW8ucXVhcmt1czpxdWFya3VzLWNvcmU6KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUX0lOVFJPU1BFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBASW50cm9zcGVjdGVkIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiBSZXF1aXJlcyBkZXBlbmRlbmN5ICInaW8ubWljcm9uYXV0Om1pY3JvbmF1dC1jb3JlOisiIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE1JQ1JPTkFVVF9SRUZMRUNUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgQFJlZmxlY3RpdmVBY2Nlc3MgdG8gdGhlIGdlbmVyYXRlZCBtb2RlbHMuIFJlcXVpcmVzIGRlcGVuZGVuY3kgIidpby5taWNyb25hdXQ6bWljcm9uYXV0LWNvcmU6KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSU5DTFVERV9DT01QQU5JT05fT0JKRUNUYCAtIFRoaXMgb3B0aW9uIGFkZHMgYSBjb21wYW5pb24gb2JqZWN0IHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBTRUFMRURfSU5URVJGQUNFU19GT1JfT05FX09GYCAtIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2YgaW50ZXJmYWNlcyBmb3IgZGlzY3JpbWluYXRlZCBvbmVPZiB0eXBlcyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBOT05fTlVMTF9NQVBfVkFMVUVTYCAtIFRoaXMgb3B0aW9uIG1ha2VzIG1hcCB2YWx1ZXMgbm9uLW51bGwuIFRoZSBkZWZhdWx0IChzaW5jZSB2MTUpIGFuZCBtb3N0IHNwZWMgY29tcGxpYW50IGlzIG1ha2UgbWFwIHZhbHVlcyBudWxsYWJsZSB8CnwgICBgLS1odHRwLW1vZGVsLXN1ZmZpeGAgICAgICAgfCBTcGVjaWZ5IGN1c3RvbSBzdWZmaXggZm9yIGFsbCBnZW5lcmF0ZWQgbW9kZWwgY2xhc3Nlcy4gRGVmYXVsdHMgdG8gbm8gc3VmZml4LiB8CnwgICBgLS1vdXRwdXQtZGlyZWN0b3J5YCAgICAgICAgfCBBbGxvd3MgdGhlIGdlbmVyYXRpb24gZGlyIHRvIGJlIG92ZXJyaWRkZW4uIERlZmF1bHRzIHRvIGN1cnJlbnQgZGlyIHwKfCAgIGAtLXJlc291cmNlcy1wYXRoYCAgICAgICAgICB8IEFsbG93cyB0aGUgcGF0aCBmb3IgZ2VuZXJhdGVkIHJlc291cmNlcyB0byBiZSBvdmVycmlkZGVuLiBEZWZhdWx0cyB0byBgc3JjL21haW4vcmVzb3VyY2VzYCB8CnwgICBgLS1zcmMtcGF0aGAgICAgICAgICAgICAgICAgfCBBbGxvd3MgdGhlIHBhdGggZm9yIGdlbmVyYXRlZCBzb3VyY2UgZmlsZXMgdG8gYmUgb3ZlcnJpZGRlbi4gRGVmYXVsdHMgdG8gYHNyYy9tYWluL2tvdGxpbmAgfAp8ICAgYC0tdGFyZ2V0c2AgICAgICAgICAgICAgICAgIHwgVGFyZ2V0cyBhcmUgdGhlIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSFRUUF9NT0RFTFNgIC0gSmFja3NvbiBhbm5vdGF0ZWQgZGF0YSBjbGFzc2VzIHRvIHJlcHJlc2VudCB0aGUgc2NoZW1hIG9iamVjdHMgZGVmaW5lZCBpbiB0aGUgaW5wdXQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYENPTlRST0xMRVJTYCAtIFNwcmluZyAvIE1pY3JvbmF1dCAvIEt0b3IgSFRUUCBjb250cm9sbGVycyBmb3IgZWFjaCBvZiB0aGUgZW5kcG9pbnRzIGRlZmluZWQgaW4gdGhlIGlucHV0LiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBDTElFTlRgIC0gU2ltcGxlIGh0dHAgcmVzdCBjbGllbnQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFFVQVJLVVNfUkVGTEVDVElPTl9DT05GSUdgIC0gVGhpcyBvcHRpb25zIGdlbmVyYXRlcyB0aGUgcmVmbGVjdGlvbi1jb25maWcuanNvbiBmaWxlIGZvciBxdWFya3VzIGludGVncmF0aW9uIHByb2plY3RzIHwKfCAgIGAtLXR5cGUtb3ZlcnJpZGVzYCAgICAgICAgICB8IFNwZWNpZnkgbm9uLWRlZmF1bHQga290bGluIHR5cGVzIGZvciBjZXJ0YWluIE9BUyB0eXBlcy4gRm9yIGV4YW1wbGUsIGdlbmVyYXRlIGBJbnN0YW50YCBpbnN0ZWFkIG9mIGBPZmZzZXREYXRlVGltZWAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgREFURVRJTUVfQVNfSU5TVEFOVGAgLSBVc2UgYEluc3RhbnRgIGFzIHRoZSBkYXRldGltZSB0eXBlLiBEZWZhdWx0cyB0byBgT2Zmc2V0RGF0ZVRpbWVgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYERBVEVUSU1FX0FTX0xPQ0FMREFURVRJTUVgIC0gVXNlIGBMb2NhbERhdGVUaW1lYCBhcyB0aGUgZGF0ZXRpbWUgdHlwZS4gRGVmYXVsdHMgdG8gYE9mZnNldERhdGVUaW1lYCB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBCWVRFQVJSQVlfQVNfSU5QVVRTVFJFQU1gIC0gVXNlIGBJbnB1dFN0cmVhbWAgYXMgQnl0ZUFycmF5IHR5cGUuIERlZmF1bHRzIHRvIGBCeXRlQXJyYXlgIHwKfCAgIGAtLXZhbGlkYXRpb24tbGlicmFyeWAgICAgICB8IFNwZWNpZnkgd2hpY2ggdmFsaWRhdGlvbiBsaWJyYXJ5IHRvIHVzZSBmb3IgYW5ub3RhdGlvbnMgaW4gZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMuIERlZmF1bHQ6IEpBVkFYX1ZBTElEQVRJT04gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIE9ORSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSkFWQVhfVkFMSURBVElPTmAgLSBVc2UgYGphdmF4LnZhbGlkYXRpb25gIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzIChkZWZhdWx0KSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBKQUtBUlRBX1ZBTElEQVRJT05gIC0gVXNlIGBqYWthcnRhLnZhbGlkYXRpb25gIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE5PX1ZBTElEQVRJT05gIC0gVXNlIG5vIHZhbGlkYXRpb24gYW5ub3RhdGlvbnMgaW4gZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMgfAoKIyMgQnVpbGRpbmcgTG9jYWxseQoKRmFicmlrdCBpcyBidWlsdCB3aXRoIEdyYWRsZSBhbmQgcmVxdWlyZXMgYW4gaW5pdGlhbGlzZWQgZ2l0IHJlcG9zaXRvcnkuIFRoZSBlYXNpZXN0IHdheSB0byBidWlsZCBpdCBpcyB0byBjbG9uZSB0aGUgcmVwbyBsb2NhbGx5IGJlZm9yZSBleGVjdXRpbmcgdGhlIGJ1aWxkIGNvbW1hbmQ6CmBgYApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206Y2pib29tcy9mYWJyaWt0LmdpdApjZCBmYWJyaWt0LwouL2dyYWRsZXcgY2xlYW4gYnVpbGQKYGBgCgojIyBQdWJsaXNoaW5nClRoaXMgbGlicmFyeSBpcyBwdWJsaXNoZWQgdG8gW1NvbmF0eXBlJ3MgT1NTXShodHRwczovL3MwMS5vc3Muc29uYXR5cGUub3JnLyN3ZWxjb21lKSBzdGFnaW5nIHJlcG9zaXRvcnkgdXNpbmcgR2l0aHViIGFjdGlvbnMgd2hlbiBhIHJlbGVhc2UgaXMgZHJhZnRlZC4gSXQgY2FuIGJlIG1hbnVhbGx5IHByb21vdGVkIGZyb20gdGhlcmUgdG8gdGhlIHJlbGVhc2UgcmVwb3NpdG9yeSB3aGljaCBpcyBpbmRleGVkIGJ5IE1hdmVuIENlbnRyYWwuCgojIyBTcGVjaWZpYyBGZWF0dXJlcwoKIyMjIFBvbHltb3JwaGlzbSB2aWEgYGFsbE9mYAoKVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyBgYWxsT2ZgIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHBvbHltb3JwaGljIEtvdGxpbiBkYXRhIGNsYXNzZXMuIEl0IGRvZXMgdGhlIGZvbGxvd2luZzoKLSBBIGBDaGlsZERlZmluaXRpb25gIHNjaGVtYSBkZWZpbmVzIGJvdGggdGhlIGRpc2NyaW1pbmF0b3IgbWFwcGluZyBkZXRhaWxzIGFuZCB0aGUgc2NoZW1hIGZvciB0aGUgZGlzY3JpbWluYXRvciBwcm9wZXJ0eS4gSW4gdGhpcyBjYXNlIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5IGlzIGFuIGVudW1lcmF0aW9uCi0gSW4gZWFjaCBjaGlsZCBzY2hlbWEsIGBhbGxPZmAgaXMgdXNlZCB0byBtZXJnZSB0aGUgYENoaWxkRGVmaW5pdGlvbmAgd2l0aCB0aGUgY2hpbGQncyBjdXN0b20gc2NoZW1hLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCBlYWNoIGNoaWxkIHNjaGVtYSBpbmhlcml0cyB0aGUgY29ycmVjdCBkaXNjcmltaW5hdG9yIHByb3BlcnR5LgotIEluIHRoZSBgUmVzcG9uc2VzYCBzY2hlbWEgYSBgb25lT2ZgIGxpc3RzIG9ubHkgY2hpbGQgc2NoZW1hcy4gVGhpcyB3aWxsIGJlIGRldGVjdGVkIGJ5IEZhYnJpa3QgYW5kIGl0IHdpbGwgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgcGFyZW50IHR5cGVzOiBgTGlzdDxDaGlsZERlZmluaXRpb24+YAoKX05PVEU6IEEgbmV3IGZlYXR1cmUgaGFzIGJlZW4gYWRkZWQgdGhhdCBhbGxvd3MgUG9seW1vcnBoaXNtIHRvIGJlIGFjaGlldmVkIHVzaW5nIG9ubHkgYSBbZGlzY3JpbWluYXRlZCBvbmVPZl0oc3JjL3Rlc3QvcmVzb3VyY2VzL2V4YW1wbGVzL2Rpc2NyaW1pbmF0ZWRPbmVPZikuIFRoaXMgZmVhdHVyZSBtYWtlcyB1c2Ugb2YgS290bGluIGBzZWFsZWQgaW50ZXJmYWNlYCBhbmQgbXVzdCBiZSBleHBsaWNpdGx5IGVuYWJsZWQgdmlhIGAtLWh0dHAtbW9kZWwtb3B0cywgU0VBTEVEX0lOVEVSRkFDRVNfRk9SX09ORV9PRmBfCgpgYGB5bWwKb3BlbmFwaTogMy4wLjAKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ2hpbGREZWZpbml0aW9uOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgZGlzY3JpbWluYXRvcjoKICAgICAgICBwcm9wZXJ0eU5hbWU6IHNvbWVfZW51bQogICAgICAgIG1hcHBpbmc6CiAgICAgICAgICBvYmpfb25lX29ubHk6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9EaXNjcmltaW5hdGVkQ2hpbGQxJwogICAgICAgICAgb2JqX3R3b19maXJzdDogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDInCiAgICAgICAgICBvYmpfdHdvX3NlY29uZDogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDInCiAgICAgICAgICBvYmpfdGhyZWU6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9kaXNjcmltaW5hdGVkX2NoaWxkXzMnCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZGlzY3JpbWluYXRpbmdfcHJvcGVydHk6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvQ2hpbGREaXNjcmltaW5hdG9yJwoKICAgIENoaWxkRGlzY3JpbWluYXRvcjoKICAgICAgdHlwZTogc3RyaW5nCiAgICAgIGVudW06CiAgICAgICAgLSBvYmpfb25lX29ubHkKICAgICAgICAtIG9ial90d29fZmlyc3QKICAgICAgICAtIG9ial90d29fc2Vjb25kCiAgICAgICAgLSBvYmpfdGhyZWUKCiAgICBEaXNjcmltaW5hdGVkQ2hpbGQxOgogICAgICBhbGxPZjoKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DaGlsZERlZmluaXRpb24nCiAgICAgICAgLSB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHNvbWVfcHJvcDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKCiAgICBEaXNjcmltaW5hdGVkQ2hpbGQyOgogICAgICBhbGxPZjoKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DaGlsZERlZmluaXRpb24nCiAgICAgICAgLSB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHNvbWVfcHJvcDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKCiAgICBkaXNjcmltaW5hdGVkX2NoaWxkXzM6CiAgICAgIGFsbE9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NoaWxkRGVmaW5pdGlvbicKCiAgICBSZXNwb25zZXM6CiAgICAgIHR5cGU6ICJvYmplY3QiCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZW50cmllczoKICAgICAgICAgIHR5cGU6ICJhcnJheSIKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBvbmVPZjoKICAgICAgICAgICAgICAtICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9EaXNjcmltaW5hdGVkQ2hpbGQyIgogICAgICAgICAgICAgIC0gJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDIiCiAgICAgICAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvZGlzY3JpbWluYXRlZF9jaGlsZF8zIgpgYGAKYGBga290bGluCkBKc29uVHlwZUluZm8oCiAgICB1c2UgPSBKc29uVHlwZUluZm8uSWQuTkFNRSwKICAgIGluY2x1ZGUgPSBKc29uVHlwZUluZm8uQXMuRVhJU1RJTkdfUFJPUEVSVFksCiAgICBwcm9wZXJ0eSA9ICJzb21lX2VudW0iLAogICAgdmlzaWJsZSA9IHRydWUKKQpASnNvblN1YlR5cGVzKAogICAgSnNvblN1YlR5cGVzLlR5cGUoCiAgICAgICAgdmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQxOjpjbGFzcywKICAgICAgICBuYW1lID0KICAgICAgICAib2JqX29uZV9vbmx5IgogICAgKSwKICAgIEpzb25TdWJUeXBlcy5UeXBlKAogICAgICAgIHZhbHVlID0gRGlzY3JpbWluYXRlZENoaWxkMjo6Y2xhc3MsCiAgICAgICAgbmFtZSA9CiAgICAgICAgIm9ial90d29fZmlyc3QiCiAgICApLAogICAgSnNvblN1YlR5cGVzLlR5cGUoCiAgICAgICAgdmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQyOjpjbGFzcywKICAgICAgICBuYW1lID0KICAgICAgICAib2JqX3R3b19zZWNvbmQiCiAgICApLAogICAgSnNvblN1YlR5cGVzLlR5cGUodmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQzOjpjbGFzcywgbmFtZSA9ICJvYmpfdGhyZWUiKQopCnNlYWxlZCBjbGFzcyBDaGlsZERlZmluaXRpb24oKSB7CiAgICBhYnN0cmFjdCB2YWwgc29tZUVudW06IENoaWxkRGlzY3JpbWluYXRvcgp9CgplbnVtIGNsYXNzIENoaWxkRGlzY3JpbWluYXRvcigKICAgIEBKc29uVmFsdWUKICAgIHZhbCB2YWx1ZTogU3RyaW5nCikgewogICAgT0JKX09ORV9PTkxZKCJvYmpfb25lX29ubHkiKSwKCiAgICBPQkpfVFdPX0ZJUlNUKCJvYmpfdHdvX2ZpcnN0IiksCgogICAgT0JKX1RXT19TRUNPTkQoIm9ial90d29fc2Vjb25kIiksCgogICAgT0JKX1RIUkVFKCJvYmpfdGhyZWUiKTsKCiAgICBjb21wYW5pb24gb2JqZWN0IHsKICAgICAgICBwcml2YXRlIHZhbCBtYXBwaW5nOiBNYXA8U3RyaW5nLCBDaGlsZERpc2NyaW1pbmF0b3I+ID0KICAgICAgICAgICAgdmFsdWVzKCkuYXNzb2NpYXRlQnkoQ2hpbGREaXNjcmltaW5hdG9yOjp2YWx1ZSkKCiAgICAgICAgZnVuIGZyb21WYWx1ZSh2YWx1ZTogU3RyaW5nKTogQ2hpbGREaXNjcmltaW5hdG9yPyA9IG1hcHBpbmdbdmFsdWVdCiAgICB9Cn0KCmRhdGEgY2xhc3MgRGlzY3JpbWluYXRlZENoaWxkMSgKICAgIEBwYXJhbTpKc29uUHJvcGVydHkoInNvbWVfcHJvcCIpCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic29tZV9wcm9wIikKICAgIHZhbCBzb21lUHJvcDogU3RyaW5nPyA9IG51bGwsCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic29tZV9lbnVtIikKICAgIEBnZXQ6Tm90TnVsbAogICAgb3ZlcnJpZGUgdmFsIHNvbWVFbnVtOiBDaGlsZERpc2NyaW1pbmF0b3IgPSBDaGlsZERpc2NyaW1pbmF0b3IuT0JKX09ORV9PTkxZCikgOiBDaGlsZERlZmluaXRpb24oKQoKZGF0YSBjbGFzcyBEaXNjcmltaW5hdGVkQ2hpbGQyKAogICAgQGdldDpKc29uUHJvcGVydHkoInNvbWVfZW51bSIpCiAgICBAZ2V0Ok5vdE51bGwKICAgIG92ZXJyaWRlIHZhbCBzb21lRW51bTogQ2hpbGREaXNjcmltaW5hdG9yLAogICAgQHBhcmFtOkpzb25Qcm9wZXJ0eSgic29tZV9wcm9wIikKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX3Byb3AiKQogICAgdmFsIHNvbWVQcm9wOiBTdHJpbmc/ID0gbnVsbAopIDogQ2hpbGREZWZpbml0aW9uKCkKCmRhdGEgY2xhc3MgRGlzY3JpbWluYXRlZENoaWxkMygKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX2VudW0iKQogICAgQGdldDpOb3ROdWxsCiAgICBvdmVycmlkZSB2YWwgc29tZUVudW06IENoaWxkRGlzY3JpbWluYXRvciA9IENoaWxkRGlzY3JpbWluYXRvci5PQkpfVEhSRUUKKSA6IENoaWxkRGVmaW5pdGlvbigpCgpkYXRhIGNsYXNzIFJlc3BvbnNlcygKICAgIEBwYXJhbTpKc29uUHJvcGVydHkoImVudHJpZXMiKQogICAgQGdldDpKc29uUHJvcGVydHkoImVudHJpZXMiKQogICAgQGdldDpWYWxpZAogICAgdmFsIGVudHJpZXM6IExpc3Q8Q2hpbGREZWZpbml0aW9uPj8gPSBudWxsCikKYGBgCg== - readmeEtag: '"e841493c7743ca5514373c66a15145bdd88d8302"' - readmeLastModified: Wed, 02 Oct 2024 16:53:10 GMT + IyBGYWJyaWt0IGAvy4hmYS1icmlrdC9gIC0gS290bGluIGNvZGUgZnJvbSBPcGVuQVBJIDMKCi0tLQoKKiBbSW50cm9kdWN0aW9uXSgjaW50cm9kdWN0aW9uKQoqIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQoqIFtFeGFtcGxlc10oI2V4YW1wbGVzKQoqIFtVc2FnZSBJbnN0cnVjdGlvbnNdKCN1c2FnZS1pbnN0cnVjdGlvbnMpCiAgKiBbQ29tbWFuZCBMaW5lXSgjY29tbWFuZC1saW5lKQogICogW0dyYWRsZSB3LyBjdXN0b20gdGFza10oI2dyYWRsZS13LWN1c3RvbS10YXNrKQogICogW0dyYWRsZSB3LyBwbHVnaW5dKCNncmFkbGUtdy1wbHVnaW4pCiAgKiBbTWF2ZW5dKCNtYXZlbikKKiBbQ29uZmlndXJhdGlvbiBPcHRpb25zXSgjY29uZmlndXJhdGlvbi1vcHRpb25zKQoqIFtCdWlsZGluZyBMb2NhbGx5XSgjYnVpbGRpbmctbG9jYWxseSkKKiBbUHVibGlzaGluZ10oI3B1Ymxpc2hpbmcpCiogW1NwZWNpZmljIEZlYXR1cmVzXSgjc3BlY2lmaWMtZmVhdHVyZXMpCgotLS0KCiMjIEludHJvZHVjdGlvbgoKVGhpcyBsaWJyYXJ5IHdhcyBidWlsdCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcGxleCBtb2RlbGluZyBmZWF0dXJlcyBhdmFpbGFibGUgaW4gT3BlbkFQSSAzLiBJdCBnZW5lcmF0ZXMgS290bGluIGRhdGEgY2xhc3NlcyB3aXRoIGFkdmFuY2VkIHN1cHBvcnQgZm9yIGZlYXR1cmVzIHN1Y2ggYXM6IAogLSBOdWxsIFNhZmV0eQogLSBJbmxpbmVkIHNjaGVtYSBkZWZpbml0aW9ucwogLSBFbnVtZXJhdGlvbnMgCiAtIFNlYWxlZCBDbGFzc2VzCiAtIFBvbHltb3JwaGlzbSAoYEBKc29uU3ViVHlwZXNgKQogLSBNYXBzIG9mIE1hcHMgb2YgTWFwcwogLSBHcmFhbFZNIE5hdGl2ZSBSZWZsZWN0aW9uIFJlZ2lzdHJhdGlvbgogLSBKc29uIE1lcmdlIFBhdGNoICh2aWEgYEpzb25OdWxsYWJsZWApIChhZGQgYHgtanNvbi1tZXJnZS1wYXRjaDogdHJ1ZWAgdG8gc2NoZW1hcykKIC0gT3ZlcnJpZGUgSmFja3NvbiBJbmNsdWRlIE5vbk51bGwgKHZpYSBgSnNvbkluY2x1ZGVgKSAoYWRkIGB4LWphY2tzb24taW5jbHVkZS1ub24tbnVsbDogdHJ1ZWAgdG8gc2NoZW1hcykKIAphcyB3ZWxsIGFzIEhUVFAgY2xpZW50cyBhbmQgY29udHJvbGxlcnMgZm9yIGEgbnVtYmVyIG9mIHBvcHVsYXIgZnJhbWV3b3JrcyAoc2VlIFtGZWF0dXJlc10oI2ZlYXR1cmVzKSkuCgpNb3JlIHRoYW4ganVzdCBib290c3RyYXBwaW5nLCB0aGlzIGxpYnJhcnkgY2FuIGJlIHBlcm1hbmVudGx5IGludGVncmF0ZWQgaW50byBhIGdyYWRsZSBvciBtYXZlbiBidWlsZCBhbmQgd2lsbCBlbnN1cmUgY29udHJhY3QgYW5kIGNvZGUgYWx3YXlzIG1hdGNoLCBldmVuIGFzIEFQSXMgZXZvbHZlIGluIGNvbXBsZXhpdHkuIAoKVGhlIHRlYW0gdGhhdCBidWlsdCB0aGlzIHRvb2wgaW5pdGlhbGx5IGNvbnRyaWJ1dGVkIHRvIHRoZSBLb3RsaW4gY29kZSBnZW5lcmF0aW9uIGFiaWxpdHkgaW4gW09wZW5BcGlUb29sc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvciksIGJ1dCByZWFjaGVkIHRoZSBsaW1pdHMgb2Ygd2hhdCBjb3VsZCBiZSBhY2hpZXZlZCB3aXRoIHRlbXBsYXRlLWJhc2VkIGdlbmVyYXRpb24uIFRoaXMgbGlicmFyeSBsZXZlcmFnZXMgdGhlIHJpY2ggT3BlbkFQSSAzIG1vZGVsIHByb3ZpZGVkIGJ5IFtLYWlaZW4tT3BlbkFwaS1QYXJzZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9SZXByZVplbi9LYWlaZW4tT3BlbkFwaS1QYXJzZXIpIGFuZCB1c2VzIFtLb3RsaW4gUG9ldF0oaHR0cHM6Ly9zcXVhcmUuZ2l0aHViLmlvL2tvdGxpbnBvZXQvKSB0byBwcm9ncmFtbWF0aWNhbGx5IGNvbnN0cnVjdCBLb3RsaW4gY2xhc3NlcyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS4gCgpJdCB3YXMgYnVpbHQgYXQgW1phbGFuZG8gVGVjaF0oaHR0cHM6Ly9vcGVuc291cmNlLnphbGFuZG8uY29tLykgYW5kIGlzIGJhdHRsZS10ZXN0ZWQgaW4gcHJvZHVjdGlvbiB0aGVyZS4gSXQgaXMgcGFydGljdWxhcmx5IHdlbGwtc3VpdGVkIHRvIEFQSSdzIGJ1aWx0IGFjY29yZGluZyB0byBaYWxhbmRvJ3MgW1JFU1QgQVBJIGd1aWRlbGluZXNdKGh0dHBzOi8vb3BlbnNvdXJjZS56YWxhbmRvLmNvbS9yZXN0ZnVsLWFwaS1ndWlkZWxpbmVzLykuCgpUaGUgbGlicmFyeSBpcyBbYXZhaWxhYmxlIG9uIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9jb20uY2pib29tcy9mYWJyaWt0KSBhdCB0aGUgZm9sbG93aW5nIGNvb3JkaW5hdGVzOgoKYGBgeG1sCjxkZXBlbmRlbmN5PgogIDxncm91cElkPmNvbS5jamJvb21zPC9ncm91cElkPgogIDxhcnRpZmFjdElkPmZhYnJpa3Q8L2FydGlmYWN0SWQ+CjwvZGVwZW5kZW5jeT4KYGBgCgojIyBGZWF0dXJlcwoKVGhlIGxpYnJhcnkgY3VycmVudGx5IGhhcyBzdXBwb3J0IGZvciBnZW5lcmF0aW5nOgoKKiBNb2RlbHMKICAqICoqSmFja3NvbioqIGFubm90YXRlZCAqKmRhdGEgY2xhc3NlcyoqCiogQ2xpZW50cwogICogKipPa0h0dHAgQ2xpZW50KiogLSB3aXRoIHRoZSBvcHRpb24gZm9yIGEgcmVzaWxpZW5jZTRqIGZhdWx0LXRvbGVyYW5jZSB3cmFwcGVyCiAgKiAqKk9wZW5GZWlnbioqIGFubm90YXRlZCBjbGllbnQgaW50ZXJmYWNlcwoqIENvbnRyb2xsZXJzCiAgKiAqKlNwcmluZyBNVkMqKiBhbm5vdGF0ZWQgY29udHJvbGxlciBpbnRlcmZhY2VzCiAgKiAqKk1pY3JvbmF1dCoqIEhUVFAgYW5ub3RhdGVkIGNvbnRyb2xsZXIgaW50ZXJmYWNlcwogICogKipLdG9yIHNlcnZlcioqIHJvdXRlcyBhbmQgY29udHJvbGxlciBpbnRlcmZhY2VzCgojIyBFeGFtcGxlcwoKQ29uc3VsdCB0ZXN0IGRpcmVjdG9yeSBmb3IgT3BlbkFQSSBjb2RlIGdlbmVyYXRpb24gZXhhbXBsZXMuIAoKSXQgZm9ybXMgYSBsaXZpbmcgZG9jdW1lbnRhdGlvbiBmdWxsIG9mIFtjb2RlIGV4YW1wbGVzXShzcmMvdGVzdC9yZXNvdXJjZXMvZXhhbXBsZXMpIGdlbmVyYXRlZCBmcm9tIGRpZmZlcmVudCBPcGVuQVBJIDMgcGVybXV0YXRpb25zLgoKRnVydGhlcm1vcmUsIHRoZSBbZW5kLXRvLWVuZCB0ZXN0c10oL2VuZDJlbmQtdGVzdHMpIGRlbW9uc3RyYXRlIGhvdyB0byBpbnRlZ3JhdGUgdGhlIGxpYnJhcnkgdXNpbmcgR3JhZGxlLgoKIyMgVXNhZ2UgSW5zdHJ1Y3Rpb25zCgpUaGUgbGlicmFyeSBjYW4gYmUgdXNlZCBpbiBhIHZhcmlldHkgb2Ygd2F5cywgaW5jbHVkaW5nIGFzIGEgY29tbWFuZCBsaW5lIHRvb2wsIGEgR3JhZGxlIHRhc2ssIG9yIGEgTWF2ZW4gcGx1Z2luLgoKUGxlYXNlIHJlZmVyIHRvIFtDb25maWd1cmF0aW9uIE9wdGlvbnNdKCNjb25maWd1cmF0aW9uLW9wdGlvbnMpIHNlY3Rpb24gZm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgcGFyYW1ldGVycy4KCiMjIyBDb21tYW5kIExpbmUKCkZhYnJpa3QgaXMgcGFja2FnZWQgYXMgYW4gZXhlY3V0YWJsZSBqYXIsIGFsbG93aW5nIGl0IHRvIGJlIGludGVncmF0ZWQgaW50byBhbnkgYnVpbGQgdG9vbC4gCgpUaGUgQ0xJIGNhbiBiZSBpbnZva2VkIGFzIGZvbGxvd3M6CgpgYGAKamF2YSAtamFyIGZhYnJpa3QuamFyIFwKICAgIC0tb3V0cHV0LWRpcmVjdG9yeSAnL3RtcCcgXAogICAgLS1iYXNlLXBhY2thZ2UgJ2NvbS5leGFtcGxlJyBcCiAgICAtLWFwaS1maWxlICcvcGF0aC10by1hcGkvb3Blbi1hcGkueWFtbCcgXAogICAgLS10YXJnZXRzICdjbGllbnQnIFwKICAgIC0tdGFyZ2V0cyAnaHR0cF9tb2RlbHMnIFwKICAgIC0taHR0cC1jbGllbnQtb3B0cyByZXNpbGllbmNlNGoKYGBgCgojIyMgR3JhZGxlIHcvIGN1c3RvbSB0YXNrCgpIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBHcmFkbGUgdGFzayB3aXRoIGNvZGUgZ2VuZXJhdGVkIHRvIHRoZSBgYnVpbGQvZ2VuZXJhdGVkYCBkaXJlY3RvcnksIGFuZCBleGVjdXRpb24gbGlua2VkIHRvIHRoZSBjb21waWxlIHRhc2suIAoKYGBga290bGluCnZhbCBmYWJyaWt0OiBDb25maWd1cmF0aW9uIGJ5IGNvbmZpZ3VyYXRpb25zLmNyZWF0aW5nCgp2YWwgZ2VuZXJhdGlvbkRpciA9ICIkYnVpbGREaXIvZ2VuZXJhdGVkIgp2YWwgYXBpRmlsZSA9ICIkYnVpbGREaXIvcGF0aC10by1hcGkvb3Blbi1hcGkueWFtbCIKCnNvdXJjZVNldHMgewogICAgbWFpbiB7IGphdmEuc3JjRGlycygiJGdlbmVyYXRpb25EaXIvc3JjL21haW4va290bGluIikgfQogICAgdGVzdCB7IGphdmEuc3JjRGlycygiJGdlbmVyYXRpb25EaXIvc3JjL3Rlc3Qva290bGluIikgfQogICAgLi4uCn0KCnRhc2tzIHsgICAKICAgIC4uLgogICAgdmFsIGdlbmVyYXRlQ29kZSBieSBjcmVhdGluZyhKYXZhRXhlYzo6Y2xhc3MpIHsKICAgICAgICBpbnB1dHMuZmlsZXMoYXBpRmlsZSkKICAgICAgICBvdXRwdXRzLmRpcihnZW5lcmF0aW9uRGlyKQogICAgICAgIG91dHB1dHMuY2FjaGVJZiB7IHRydWUgfQogICAgICAgIGNsYXNzcGF0aChmYWJyaWt0KQogICAgICAgIG1haW5DbGFzcy5zZXQoImNvbS5jamJvb21zLmZhYnJpa3QuY2xpLkNvZGVHZW4iKQogICAgICAgIGFyZ3MgPSBsaXN0T2YoCiAgICAgICAgICAgICItLW91dHB1dC1kaXJlY3RvcnkiLCBnZW5lcmF0aW9uRGlyLAogICAgICAgICAgICAiLS1iYXNlLXBhY2thZ2UiLCAiY29tLmV4YW1wbGUiLAogICAgICAgICAgICAiLS1hcGktZmlsZSIsIGFwaUZpbGUsCiAgICAgICAgICAgICItLXRhcmdldHMiLCAiaHR0cF9tb2RlbHMiLAogICAgICAgICAgICAiLS10YXJnZXRzIiwgImNsaWVudCIsCiAgICAgICAgICAgICItLWh0dHAtY2xpZW50LW9wdHMiLCAicmVzaWxpZW5jZTRqIgogICAgICAgICkKICAgIH0KICAgIHdpdGhUeXBlPG9yZy5qZXRicmFpbnMua290bGluLmdyYWRsZS50YXNrcy5Lb3RsaW5Db21waWxlPiB7CiAgICAgICAga290bGluT3B0aW9ucy5qdm1UYXJnZXQgPSAiMTciCiAgICAgICAgZGVwZW5kc09uKGdlbmVyYXRlQ29kZSkKICAgIH0KfQoKZGVwZW5kZW5jaWVzIHsKICAgICBmYWJyaWt0KCJjb20uY2pib29tczpmYWJyaWt0OisiKSAvLyBUaGlzIHNob3VsZCBiZSBwaW5uZWQgIAogICAgIC4uLgp9CmBgYAoKIyMjIEdyYWRsZSB3LyBwbHVnaW4KClRoZSBbRmFicmlrdCBHcmFkbGUgcGx1Z2luXShodHRwczovL2dpdGh1Yi5jb20vYWNhbmRhL2ZhYnJpa3QtZ3JhZGxlLXBsdWdpbikgc2VydmVzIGFzIGEgY29udmVuaWVudCB3cmFwcGVyIGZvciBGYWJyaWt0LCAKYWxsb3dpbmcgc2VhbWxlc3MgaW50ZWdyYXRpb24gb2YgY29kZSBnZW5lcmF0aW9uIGludG8gYSBHcmFkbGUgYnVpbGQuCgoqKk5vdGU6KiogU2luY2UgdGhlIHBsdWdpbiBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgRmFicmlrdCBsaWJyYXJ5LCBwbGVhc2UgcmVmZXIgdG8gdGhlCltDb25maWd1cmF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vYWNhbmRhL2ZhYnJpa3QtZ3JhZGxlLXBsdWdpbj90YWI9cmVhZG1lLW92LWZpbGUjY29uZmlndXJhdGlvbikgc2VjdGlvbiBvZiB0aGUgCnBsdWdpbidzIFJFQURNRSBmb3IgdGhlIG1vc3QgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIGl0LgoKTGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBsdWdpbjogWyFbR3JhZGxlIFBsdWdpbiBQb3J0YWwgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ncmFkbGUtcGx1Z2luLXBvcnRhbC92L2NoLmFjYW5kYS5ncmFkbGUuZmFicmlrdD9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9wbHVnaW5zLmdyYWRsZS5vcmcvcGx1Z2luL2NoLmFjYW5kYS5ncmFkbGUuZmFicmlrdCkKCmBgYGtvdGxpbgpwbHVnaW5zIHsKICAgIC8vIGZpbmQgbGF0ZXN0IHZlcnNpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9hY2FuZGEvZmFicmlrdC1ncmFkbGUtcGx1Z2luL3JlbGVhc2VzCiAgICBpZCgiY2guYWNhbmRhLmdyYWRsZS5mYWJyaWt0IikgdmVyc2lvbiAiMS40LjAiCn0KCmZhYnJpa3QgewogICAgZ2VuZXJhdGUoImRvZyIpIHsKICAgICAgICBhcGlGaWxlID0gZmlsZSgic3JjL21haW4vb3BlbmFwaS9kb2cueWFtbCIpCiAgICAgICAgYmFzZVBhY2thZ2UgPSAiY29tLmV4YW1wbGUuYXBpIgogICAgfQp9CmBgYAoKIyMjIE1hdmVuCgpUaGUgW2V4ZWMtbWF2ZW4tcGx1Z2luXShodHRwOi8vd3d3Lm1vam9oYXVzLm9yZy9leGVjLW1hdmVuLXBsdWdpbi9leGFtcGxlcy9leGFtcGxlLWV4ZWMtdXNpbmctcGx1Z2luLWRlcGVuZGVuY2llcy5odG1sKSBpcyBjYXBhYmxlIG9mIGRvd25sb2FkaW5nIHRoZSBGYWJyaWt0IGxpYnJhcnkgZnJvbSBNYXZlbiBDZW50cmFsIGFuZCBleGVjdXRpbmcgaXRzIG1haW4gbWV0aG9kIHdpdGggZGVmaW5lZCBhcmd1bWVudHMuCgojIyBDb25maWd1cmF0aW9uIE9wdGlvbnMKClRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIGF2YWlsYWJsZSBDTEkgcGFyYW1ldGVycyBmb3IgY29udHJvbGxpbmcgd2hhdCBnZXRzIGdlbmVyYXRlZC4gVGhpcyBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZCB1c2luZzogYC4vZ3JhZGxldyBwcmludENvZGVHZW5Vc2FnZWAKCnwgUGFyYW1ldGVyICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgICBgLS1hcGktZmlsZWAgICAgICAgICAgICAgICAgfCBUaGlzIG11c3QgYmUgYSB2YWxpZCBPcGVuIEFQSSB2MyBzcGVjLiBBbGwgY29kZSBnZW5lcmF0aW9uIHdpbGwgYmUgYmFzZWQgb2ZmIHRoaXMgaW5wdXQuIHwKfCAgIGAtLWFwaS1mcmFnbWVudGAgICAgICAgICAgICB8IEEgcGFydGlhbCBPcGVuIEFQSSB2MyBmcmFnbWVudCwgdG8gYmUgY29tYmluZWQgd2l0aCB0aGUgcHJpbWFyeSBBUEkgZm9yIGNvZGUgZ2VuZXJhdGlvbiBwdXJwb3Nlcy4gfAp8ICogYC0tYmFzZS1wYWNrYWdlYCAgICAgICAgICAgIHwgVGhlIGJhc2UgcGFja2FnZSB3aGljaCBhbGwgY29kZSB3aWxsIGJlIGdlbmVyYXRlZCB1bmRlci4gfAp8ICAgYC0tZXh0ZXJuYWwtcmVmLXJlc29sdXRpb25gIHwgU3BlY2lmeSB0byB3aGljaCBkZWdyZWUgcmVmZXJlbmNlZCBzY2hlbWFzIGZyb20gZXh0ZXJuYWwgZmlsZXMgYXJlIGluY2x1ZGVkIGluIG1vZGVsIGdlbmVyYXRpb24uIERlZmF1bHQ6IFRBUkdFVEVEIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFRBUkdFVEVEYCAtIEdlbmVyYXRlIG1vZGVscyBvbmx5IGZvciBkaXJlY3RseSByZWZlcmVuY2VkIHNjaGVtYXMgaW4gZXh0ZXJuYWwgQVBJIGZpbGVzLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBBR0dSRVNTSVZFYCAtIFJlZmVyZW5jaW5nIGFueSBzY2hlbWEgaW4gYW4gZXh0ZXJuYWwgQVBJIGZpbGUgdHJpZ2dlcnMgZ2VuZXJhdGlvbiBvZiBldmVyeSBleHRlcm5hbCBzY2hlbWEgaW4gdGhhdCBmaWxlLiB8CnwgICBgLS1odHRwLWNsaWVudC1vcHRzYCAgICAgICAgfCBTZWxlY3QgdGhlIG9wdGlvbnMgZm9yIHRoZSBodHRwIGNsaWVudCBjb2RlIHRoYXQgeW91IHdhbnQgdG8gYmUgZ2VuZXJhdGVkLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDSE9PU0UgQU5ZIE9GOiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBSRVNJTElFTkNFNEpgIC0gR2VuZXJhdGVzIGEgZmF1bHQgdG9sZXJhbmNlIHNlcnZpY2UgZm9yIHRoZSBjbGllbnQgdXNpbmcgdGhlIGZvbGxvd2luZyBsaWJyYXJ5ICJpby5naXRodWIucmVzaWxpZW5jZTRqOnJlc2lsaWVuY2U0ai1hbGw6KyIgKG9ubHkgZm9yIE9rSHR0cCBjbGllbnRzKSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBTVVNQRU5EX01PRElGSUVSYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIHN1c3BlbmQgbW9kaWZpZXIgdG8gdGhlIGdlbmVyYXRlZCBjbGllbnQgZnVuY3Rpb25zIChvbmx5IGZvciBPcGVuRmVpZ24gY2xpZW50cykgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1BSSU5HX1JFU1BPTlNFX0VOVElUWV9XUkFQUEVSYCAtIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFNwcmluZy1SZXNwb25zZUVudGl0eSBnZW5lcmljIGFyb3VuZCB0aGUgcmVzcG9uc2UgdG8gYmUgYWJsZSB0byBnZXQgcmVzcG9uc2UgaGVhZGVycyBhbmQgc3RhdHVzIChvbmx5IGZvciBPcGVuRmVpZ24gY2xpZW50cykuIHwKfCAgIGAtLWh0dHAtY2xpZW50LXRhcmdldGAgICAgICB8IE9wdGlvbmFsbHkgc2VsZWN0IHRoZSB0YXJnZXQgY2xpZW50IHRoYXQgeW91IHdhbnQgdG8gYmUgZ2VuZXJhdGVkLiBEZWZhdWx0cyB0byBPS19IVFRQIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE9LX0hUVFBgIC0gR2VuZXJhdGUgT2tIdHRwIGNsaWVudC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgT1BFTl9GRUlHTmAgLSBHZW5lcmF0ZSBPcGVuRmVpZ24gY2xpZW50LiB8CnwgICBgLS1odHRwLWNvbnRyb2xsZXItb3B0c2AgICAgfCBTZWxlY3QgdGhlIG9wdGlvbnMgZm9yIHRoZSBjb250cm9sbGVycyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgU1VTUEVORF9NT0RJRklFUmAgLSBUaGlzIG9wdGlvbiBhZGRzIHRoZSBzdXNwZW5kIG1vZGlmaWVyIHRvIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQVVUSEVOVElDQVRJT05gIC0gVGhpcyBvcHRpb24gYWRkcyB0aGUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVyIHRvIHRoZSBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgQ09NUExFVElPTl9TVEFHRWAgLSBUaGlzIG9wdGlvbiBtYWtlcyBnZW5lcmF0ZWQgY29udHJvbGxlciBmdW5jdGlvbnMgaGF2ZSBUeXBlIENvbXBsZXRpb25TdGFnZTxUPiAod29ya3Mgb25seSB3aXRoIFNwcmluZyBDb250cm9sbGVyIGdlbmVyYXRvcikgfAp8ICAgYC0taHR0cC1jb250cm9sbGVyLXRhcmdldGAgIHwgT3B0aW9uYWxseSBzZWxlY3QgdGhlIHRhcmdldCBmcmFtZXdvcmsgZm9yIHRoZSBjb250cm9sbGVycyB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gRGVmYXVsdHMgdG8gU3ByaW5nIENvbnRyb2xsZXJzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBPTkUgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFNQUklOR2AgLSBHZW5lcmF0ZSBmb3IgU3ByaW5nIGZyYW1ld29yay4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUYCAtIEdlbmVyYXRlIGZvciBNaWNyb25hdXQgZnJhbWV3b3JrLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBLVE9SYCAtIEdlbmVyYXRlIGZvciBLdG9yIHNlcnZlci4gfAp8ICAgYC0taHR0cC1tb2RlbC1vcHRzYCAgICAgICAgIHwgU2VsZWN0IHRoZSBvcHRpb25zIGZvciB0aGUgaHR0cCBtb2RlbHMgdGhhdCB5b3Ugd2FudCB0byBiZSBnZW5lcmF0ZWQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENIT09TRSBBTlkgT0Y6IHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFhfRVhURU5TSUJMRV9FTlVNU2AgLSBUaGlzIG9wdGlvbiB0cmVhdHMgeC1leHRlbnNpYmxlLWVudW1zIGFzIGVudW1zIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYEpBVkFfU0VSSUFMSVpBVElPTmAgLSBUaGlzIG9wdGlvbiBhZGRzIEphdmEgU2VyaWFsaXphYmxlIGludGVyZmFjZSB0byB0aGUgZ2VuZXJhdGVkIG1vZGVscyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBRVUFSS1VTX1JFRkxFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBAUmVnaXN0ZXJGb3JSZWZsZWN0aW9uIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiBSZXF1aXJlcyBkZXBlbmRlbmN5ICInaW8ucXVhcmt1czpxdWFya3VzLWNvcmU6KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgTUlDUk9OQVVUX0lOVFJPU1BFQ1RJT05gIC0gVGhpcyBvcHRpb24gYWRkcyBASW50cm9zcGVjdGVkIHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiBSZXF1aXJlcyBkZXBlbmRlbmN5ICInaW8ubWljcm9uYXV0Om1pY3JvbmF1dC1jb3JlOisiIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE1JQ1JPTkFVVF9SRUZMRUNUSU9OYCAtIFRoaXMgb3B0aW9uIGFkZHMgQFJlZmxlY3RpdmVBY2Nlc3MgdG8gdGhlIGdlbmVyYXRlZCBtb2RlbHMuIFJlcXVpcmVzIGRlcGVuZGVuY3kgIidpby5taWNyb25hdXQ6bWljcm9uYXV0LWNvcmU6KyIgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSU5DTFVERV9DT01QQU5JT05fT0JKRUNUYCAtIFRoaXMgb3B0aW9uIGFkZHMgYSBjb21wYW5pb24gb2JqZWN0IHRvIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBTRUFMRURfSU5URVJGQUNFU19GT1JfT05FX09GYCAtIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2YgaW50ZXJmYWNlcyBmb3IgZGlzY3JpbWluYXRlZCBvbmVPZiB0eXBlcyB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBOT05fTlVMTF9NQVBfVkFMVUVTYCAtIFRoaXMgb3B0aW9uIG1ha2VzIG1hcCB2YWx1ZXMgbm9uLW51bGwuIFRoZSBkZWZhdWx0IChzaW5jZSB2MTUpIGFuZCBtb3N0IHNwZWMgY29tcGxpYW50IGlzIG1ha2UgbWFwIHZhbHVlcyBudWxsYWJsZSB8CnwgICBgLS1odHRwLW1vZGVsLXN1ZmZpeGAgICAgICAgfCBTcGVjaWZ5IGN1c3RvbSBzdWZmaXggZm9yIGFsbCBnZW5lcmF0ZWQgbW9kZWwgY2xhc3Nlcy4gRGVmYXVsdHMgdG8gbm8gc3VmZml4LiB8CnwgICBgLS1vdXRwdXQtZGlyZWN0b3J5YCAgICAgICAgfCBBbGxvd3MgdGhlIGdlbmVyYXRpb24gZGlyIHRvIGJlIG92ZXJyaWRkZW4uIERlZmF1bHRzIHRvIGN1cnJlbnQgZGlyIHwKfCAgIGAtLXJlc291cmNlcy1wYXRoYCAgICAgICAgICB8IEFsbG93cyB0aGUgcGF0aCBmb3IgZ2VuZXJhdGVkIHJlc291cmNlcyB0byBiZSBvdmVycmlkZGVuLiBEZWZhdWx0cyB0byBgc3JjL21haW4vcmVzb3VyY2VzYCB8CnwgICBgLS1zcmMtcGF0aGAgICAgICAgICAgICAgICAgfCBBbGxvd3MgdGhlIHBhdGggZm9yIGdlbmVyYXRlZCBzb3VyY2UgZmlsZXMgdG8gYmUgb3ZlcnJpZGRlbi4gRGVmYXVsdHMgdG8gYHNyYy9tYWluL2tvdGxpbmAgfAp8ICAgYC0tdGFyZ2V0c2AgICAgICAgICAgICAgICAgIHwgVGFyZ2V0cyBhcmUgdGhlIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiB0aGF0IHlvdSB3YW50IHRvIGJlIGdlbmVyYXRlZC4gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSFRUUF9NT0RFTFNgIC0gSmFja3NvbiBhbm5vdGF0ZWQgZGF0YSBjbGFzc2VzIHRvIHJlcHJlc2VudCB0aGUgc2NoZW1hIG9iamVjdHMgZGVmaW5lZCBpbiB0aGUgaW5wdXQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYENPTlRST0xMRVJTYCAtIFNwcmluZyAvIE1pY3JvbmF1dCAvIEt0b3IgSFRUUCBjb250cm9sbGVycyBmb3IgZWFjaCBvZiB0aGUgZW5kcG9pbnRzIGRlZmluZWQgaW4gdGhlIGlucHV0LiB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBDTElFTlRgIC0gU2ltcGxlIGh0dHAgcmVzdCBjbGllbnQuIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYFFVQVJLVVNfUkVGTEVDVElPTl9DT05GSUdgIC0gVGhpcyBvcHRpb25zIGdlbmVyYXRlcyB0aGUgcmVmbGVjdGlvbi1jb25maWcuanNvbiBmaWxlIGZvciBxdWFya3VzIGludGVncmF0aW9uIHByb2plY3RzIHwKfCAgIGAtLXR5cGUtb3ZlcnJpZGVzYCAgICAgICAgICB8IFNwZWNpZnkgbm9uLWRlZmF1bHQga290bGluIHR5cGVzIGZvciBjZXJ0YWluIE9BUyB0eXBlcy4gRm9yIGV4YW1wbGUsIGdlbmVyYXRlIGBJbnN0YW50YCBpbnN0ZWFkIG9mIGBPZmZzZXREYXRlVGltZWAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIEFOWSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgREFURVRJTUVfQVNfSU5TVEFOVGAgLSBVc2UgYEluc3RhbnRgIGFzIHRoZSBkYXRldGltZSB0eXBlLiBEZWZhdWx0cyB0byBgT2Zmc2V0RGF0ZVRpbWVgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYERBVEVUSU1FX0FTX0xPQ0FMREFURVRJTUVgIC0gVXNlIGBMb2NhbERhdGVUaW1lYCBhcyB0aGUgZGF0ZXRpbWUgdHlwZS4gRGVmYXVsdHMgdG8gYE9mZnNldERhdGVUaW1lYCB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBCWVRFQVJSQVlfQVNfSU5QVVRTVFJFQU1gIC0gVXNlIGBJbnB1dFN0cmVhbWAgYXMgQnl0ZUFycmF5IHR5cGUuIERlZmF1bHRzIHRvIGBCeXRlQXJyYXlgIHwKfCAgIGAtLXZhbGlkYXRpb24tbGlicmFyeWAgICAgICB8IFNwZWNpZnkgd2hpY2ggdmFsaWRhdGlvbiBsaWJyYXJ5IHRvIHVzZSBmb3IgYW5ub3RhdGlvbnMgaW4gZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMuIERlZmF1bHQ6IEpBVkFYX1ZBTElEQVRJT04gfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ0hPT1NFIE9ORSBPRjogfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBgSkFWQVhfVkFMSURBVElPTmAgLSBVc2UgYGphdmF4LnZhbGlkYXRpb25gIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzIChkZWZhdWx0KSB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIGBKQUtBUlRBX1ZBTElEQVRJT05gIC0gVXNlIGBqYWthcnRhLnZhbGlkYXRpb25gIGFubm90YXRpb25zIGluIGdlbmVyYXRlZCBtb2RlbCBjbGFzc2VzIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgYE5PX1ZBTElEQVRJT05gIC0gVXNlIG5vIHZhbGlkYXRpb24gYW5ub3RhdGlvbnMgaW4gZ2VuZXJhdGVkIG1vZGVsIGNsYXNzZXMgfAoKIyMgQnVpbGRpbmcgTG9jYWxseQoKRmFicmlrdCBpcyBidWlsdCB3aXRoIEdyYWRsZSBhbmQgcmVxdWlyZXMgYW4gaW5pdGlhbGlzZWQgZ2l0IHJlcG9zaXRvcnkuIFRoZSBlYXNpZXN0IHdheSB0byBidWlsZCBpdCBpcyB0byBjbG9uZSB0aGUgcmVwbyBsb2NhbGx5IGJlZm9yZSBleGVjdXRpbmcgdGhlIGJ1aWxkIGNvbW1hbmQ6CmBgYApnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206Y2pib29tcy9mYWJyaWt0LmdpdApjZCBmYWJyaWt0LwouL2dyYWRsZXcgY2xlYW4gYnVpbGQKYGBgCgojIyBQdWJsaXNoaW5nClRoaXMgbGlicmFyeSBpcyBwdWJsaXNoZWQgdG8gW1NvbmF0eXBlJ3MgT1NTXShodHRwczovL3MwMS5vc3Muc29uYXR5cGUub3JnLyN3ZWxjb21lKSBzdGFnaW5nIHJlcG9zaXRvcnkgdXNpbmcgR2l0aHViIGFjdGlvbnMgd2hlbiBhIHJlbGVhc2UgaXMgZHJhZnRlZC4gSXQgY2FuIGJlIG1hbnVhbGx5IHByb21vdGVkIGZyb20gdGhlcmUgdG8gdGhlIHJlbGVhc2UgcmVwb3NpdG9yeSB3aGljaCBpcyBpbmRleGVkIGJ5IE1hdmVuIENlbnRyYWwuCgojIyBTcGVjaWZpYyBGZWF0dXJlcwoKIyMjIFBvbHltb3JwaGlzbSB2aWEgYGFsbE9mYAoKVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyBgYWxsT2ZgIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHBvbHltb3JwaGljIEtvdGxpbiBkYXRhIGNsYXNzZXMuIEl0IGRvZXMgdGhlIGZvbGxvd2luZzoKLSBBIGBDaGlsZERlZmluaXRpb25gIHNjaGVtYSBkZWZpbmVzIGJvdGggdGhlIGRpc2NyaW1pbmF0b3IgbWFwcGluZyBkZXRhaWxzIGFuZCB0aGUgc2NoZW1hIGZvciB0aGUgZGlzY3JpbWluYXRvciBwcm9wZXJ0eS4gSW4gdGhpcyBjYXNlIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5IGlzIGFuIGVudW1lcmF0aW9uCi0gSW4gZWFjaCBjaGlsZCBzY2hlbWEsIGBhbGxPZmAgaXMgdXNlZCB0byBtZXJnZSB0aGUgYENoaWxkRGVmaW5pdGlvbmAgd2l0aCB0aGUgY2hpbGQncyBjdXN0b20gc2NoZW1hLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCBlYWNoIGNoaWxkIHNjaGVtYSBpbmhlcml0cyB0aGUgY29ycmVjdCBkaXNjcmltaW5hdG9yIHByb3BlcnR5LgotIEluIHRoZSBgUmVzcG9uc2VzYCBzY2hlbWEgYSBgb25lT2ZgIGxpc3RzIG9ubHkgY2hpbGQgc2NoZW1hcy4gVGhpcyB3aWxsIGJlIGRldGVjdGVkIGJ5IEZhYnJpa3QgYW5kIGl0IHdpbGwgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgcGFyZW50IHR5cGVzOiBgTGlzdDxDaGlsZERlZmluaXRpb24+YAoKX05PVEU6IEEgbmV3IGZlYXR1cmUgaGFzIGJlZW4gYWRkZWQgdGhhdCBhbGxvd3MgUG9seW1vcnBoaXNtIHRvIGJlIGFjaGlldmVkIHVzaW5nIG9ubHkgYSBbZGlzY3JpbWluYXRlZCBvbmVPZl0oc3JjL3Rlc3QvcmVzb3VyY2VzL2V4YW1wbGVzL2Rpc2NyaW1pbmF0ZWRPbmVPZikuIFRoaXMgZmVhdHVyZSBtYWtlcyB1c2Ugb2YgS290bGluIGBzZWFsZWQgaW50ZXJmYWNlYCBhbmQgbXVzdCBiZSBleHBsaWNpdGx5IGVuYWJsZWQgdmlhIGAtLWh0dHAtbW9kZWwtb3B0cywgU0VBTEVEX0lOVEVSRkFDRVNfRk9SX09ORV9PRmBfCgpgYGB5bWwKb3BlbmFwaTogMy4wLjAKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgQ2hpbGREZWZpbml0aW9uOgogICAgICB0eXBlOiBvYmplY3QKICAgICAgZGlzY3JpbWluYXRvcjoKICAgICAgICBwcm9wZXJ0eU5hbWU6IHNvbWVfZW51bQogICAgICAgIG1hcHBpbmc6CiAgICAgICAgICBvYmpfb25lX29ubHk6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9EaXNjcmltaW5hdGVkQ2hpbGQxJwogICAgICAgICAgb2JqX3R3b19maXJzdDogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDInCiAgICAgICAgICBvYmpfdHdvX3NlY29uZDogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDInCiAgICAgICAgICBvYmpfdGhyZWU6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9kaXNjcmltaW5hdGVkX2NoaWxkXzMnCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZGlzY3JpbWluYXRpbmdfcHJvcGVydHk6CiAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvQ2hpbGREaXNjcmltaW5hdG9yJwoKICAgIENoaWxkRGlzY3JpbWluYXRvcjoKICAgICAgdHlwZTogc3RyaW5nCiAgICAgIGVudW06CiAgICAgICAgLSBvYmpfb25lX29ubHkKICAgICAgICAtIG9ial90d29fZmlyc3QKICAgICAgICAtIG9ial90d29fc2Vjb25kCiAgICAgICAgLSBvYmpfdGhyZWUKCiAgICBEaXNjcmltaW5hdGVkQ2hpbGQxOgogICAgICBhbGxPZjoKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DaGlsZERlZmluaXRpb24nCiAgICAgICAgLSB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHNvbWVfcHJvcDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKCiAgICBEaXNjcmltaW5hdGVkQ2hpbGQyOgogICAgICBhbGxPZjoKICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9DaGlsZERlZmluaXRpb24nCiAgICAgICAgLSB0eXBlOiBvYmplY3QKICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgIHNvbWVfcHJvcDoKICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKCiAgICBkaXNjcmltaW5hdGVkX2NoaWxkXzM6CiAgICAgIGFsbE9mOgogICAgICAgIC0gJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0NoaWxkRGVmaW5pdGlvbicKCiAgICBSZXNwb25zZXM6CiAgICAgIHR5cGU6ICJvYmplY3QiCiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgZW50cmllczoKICAgICAgICAgIHR5cGU6ICJhcnJheSIKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBvbmVPZjoKICAgICAgICAgICAgICAtICRyZWY6ICIjL2NvbXBvbmVudHMvc2NoZW1hcy9EaXNjcmltaW5hdGVkQ2hpbGQyIgogICAgICAgICAgICAgIC0gJHJlZjogIiMvY29tcG9uZW50cy9zY2hlbWFzL0Rpc2NyaW1pbmF0ZWRDaGlsZDIiCiAgICAgICAgICAgICAgLSAkcmVmOiAiIy9jb21wb25lbnRzL3NjaGVtYXMvZGlzY3JpbWluYXRlZF9jaGlsZF8zIgpgYGAKYGBga290bGluCkBKc29uVHlwZUluZm8oCiAgICB1c2UgPSBKc29uVHlwZUluZm8uSWQuTkFNRSwKICAgIGluY2x1ZGUgPSBKc29uVHlwZUluZm8uQXMuRVhJU1RJTkdfUFJPUEVSVFksCiAgICBwcm9wZXJ0eSA9ICJzb21lX2VudW0iLAogICAgdmlzaWJsZSA9IHRydWUKKQpASnNvblN1YlR5cGVzKAogICAgSnNvblN1YlR5cGVzLlR5cGUoCiAgICAgICAgdmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQxOjpjbGFzcywKICAgICAgICBuYW1lID0KICAgICAgICAib2JqX29uZV9vbmx5IgogICAgKSwKICAgIEpzb25TdWJUeXBlcy5UeXBlKAogICAgICAgIHZhbHVlID0gRGlzY3JpbWluYXRlZENoaWxkMjo6Y2xhc3MsCiAgICAgICAgbmFtZSA9CiAgICAgICAgIm9ial90d29fZmlyc3QiCiAgICApLAogICAgSnNvblN1YlR5cGVzLlR5cGUoCiAgICAgICAgdmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQyOjpjbGFzcywKICAgICAgICBuYW1lID0KICAgICAgICAib2JqX3R3b19zZWNvbmQiCiAgICApLAogICAgSnNvblN1YlR5cGVzLlR5cGUodmFsdWUgPSBEaXNjcmltaW5hdGVkQ2hpbGQzOjpjbGFzcywgbmFtZSA9ICJvYmpfdGhyZWUiKQopCnNlYWxlZCBjbGFzcyBDaGlsZERlZmluaXRpb24oKSB7CiAgICBhYnN0cmFjdCB2YWwgc29tZUVudW06IENoaWxkRGlzY3JpbWluYXRvcgp9CgplbnVtIGNsYXNzIENoaWxkRGlzY3JpbWluYXRvcigKICAgIEBKc29uVmFsdWUKICAgIHZhbCB2YWx1ZTogU3RyaW5nCikgewogICAgT0JKX09ORV9PTkxZKCJvYmpfb25lX29ubHkiKSwKCiAgICBPQkpfVFdPX0ZJUlNUKCJvYmpfdHdvX2ZpcnN0IiksCgogICAgT0JKX1RXT19TRUNPTkQoIm9ial90d29fc2Vjb25kIiksCgogICAgT0JKX1RIUkVFKCJvYmpfdGhyZWUiKTsKCiAgICBjb21wYW5pb24gb2JqZWN0IHsKICAgICAgICBwcml2YXRlIHZhbCBtYXBwaW5nOiBNYXA8U3RyaW5nLCBDaGlsZERpc2NyaW1pbmF0b3I+ID0KICAgICAgICAgICAgdmFsdWVzKCkuYXNzb2NpYXRlQnkoQ2hpbGREaXNjcmltaW5hdG9yOjp2YWx1ZSkKCiAgICAgICAgZnVuIGZyb21WYWx1ZSh2YWx1ZTogU3RyaW5nKTogQ2hpbGREaXNjcmltaW5hdG9yPyA9IG1hcHBpbmdbdmFsdWVdCiAgICB9Cn0KCmRhdGEgY2xhc3MgRGlzY3JpbWluYXRlZENoaWxkMSgKICAgIEBwYXJhbTpKc29uUHJvcGVydHkoInNvbWVfcHJvcCIpCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic29tZV9wcm9wIikKICAgIHZhbCBzb21lUHJvcDogU3RyaW5nPyA9IG51bGwsCiAgICBAZ2V0Okpzb25Qcm9wZXJ0eSgic29tZV9lbnVtIikKICAgIEBnZXQ6Tm90TnVsbAogICAgb3ZlcnJpZGUgdmFsIHNvbWVFbnVtOiBDaGlsZERpc2NyaW1pbmF0b3IgPSBDaGlsZERpc2NyaW1pbmF0b3IuT0JKX09ORV9PTkxZCikgOiBDaGlsZERlZmluaXRpb24oKQoKZGF0YSBjbGFzcyBEaXNjcmltaW5hdGVkQ2hpbGQyKAogICAgQGdldDpKc29uUHJvcGVydHkoInNvbWVfZW51bSIpCiAgICBAZ2V0Ok5vdE51bGwKICAgIG92ZXJyaWRlIHZhbCBzb21lRW51bTogQ2hpbGREaXNjcmltaW5hdG9yLAogICAgQHBhcmFtOkpzb25Qcm9wZXJ0eSgic29tZV9wcm9wIikKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX3Byb3AiKQogICAgdmFsIHNvbWVQcm9wOiBTdHJpbmc/ID0gbnVsbAopIDogQ2hpbGREZWZpbml0aW9uKCkKCmRhdGEgY2xhc3MgRGlzY3JpbWluYXRlZENoaWxkMygKICAgIEBnZXQ6SnNvblByb3BlcnR5KCJzb21lX2VudW0iKQogICAgQGdldDpOb3ROdWxsCiAgICBvdmVycmlkZSB2YWwgc29tZUVudW06IENoaWxkRGlzY3JpbWluYXRvciA9IENoaWxkRGlzY3JpbWluYXRvci5PQkpfVEhSRUUKKSA6IENoaWxkRGVmaW5pdGlvbigpCgpkYXRhIGNsYXNzIFJlc3BvbnNlcygKICAgIEBwYXJhbTpKc29uUHJvcGVydHkoImVudHJpZXMiKQogICAgQGdldDpKc29uUHJvcGVydHkoImVudHJpZXMiKQogICAgQGdldDpWYWxpZAogICAgdmFsIGVudHJpZXM6IExpc3Q8Q2hpbGREZWZpbml0aW9uPj8gPSBudWxsCikKYGBgCg== + readmeEtag: '"23695921ce2b4a1a764cda0213f8a3b06b363133"' + readmeLastModified: Tue, 08 Oct 2024 19:49:39 GMT repositoryId: 229844927 description: Generates Kotlin Code from OpenApi3 Specifications created: '2019-12-24T00:56:42Z' - updated: '2024-10-07T13:31:38Z' + updated: '2024-10-08T19:49:43Z' 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: '"5d5d059984b2187f0c987357883a7b5ccf70f424506addefc6407e39e2655e0a"' - repoLastModified: Mon, 07 Oct 2024 13:31:38 GMT + repoEtag: '"0445ef0bec2f8b1b02baa1a02acfb073646897dbeb1016d03565c79a21b89a4b"' + repoLastModified: Tue, 08 Oct 2024 19:49:43 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -1359,17 +1359,17 @@ repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' - updated: '2024-10-07T15:59:07Z' + updated: '2024-10-09T03:05:23Z' language: JavaScript archived: false - stars: 8896 + stars: 8899 watchers: 262 forks: 2254 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"e9f4e755b6369f411985d2b380f27bfb7e1843a1b706a70da74c4a505e1b412a"' - repoLastModified: Mon, 07 Oct 2024 15:59:07 GMT + repoEtag: '"c3c33da7f9bebe91b5d141615675c197321086884cbe2099d364c9150810359c"' + repoLastModified: Wed, 09 Oct 2024 03:05:23 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true @@ -1522,7 +1522,7 @@ owner: Apicurio logo: https://avatars.githubusercontent.com/u/28107283?v=4 license: Apache-2.0 - repoEtag: '"15780c74a35c5221e2207fa64a2593ceb6f1a8b36439ac74021ef29226e6f995"' + repoEtag: '"94fee2de9f1f35e732657bcc912e50690a9fe3735556c0e564b9f8868066940f"' repoLastModified: Wed, 02 Oct 2024 14:58:22 GMT foundInMaster: true homepage: https://github.com/Apicurio/apicurio-studio @@ -1729,17 +1729,17 @@ Turn any OpenAPI2/3 and Postman Collection file into an API server with mocking, transformations and validations. created: '2016-03-18T03:52:09Z' - updated: '2024-10-06T02:37:48Z' + updated: '2024-10-09T02:40:10Z' language: TypeScript archived: false - stars: 4261 + stars: 4264 watchers: 55 forks: 345 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"7ede5217186a088efc475688efc5acc3b97f2cabedd5db2992727dcd622e1b40"' - repoLastModified: Sun, 06 Oct 2024 02:37:48 GMT + repoEtag: '"5c2ce450dc06c9997a4a41efdc7f5b6797360094f802acc8781826953471b99b"' + repoLastModified: Wed, 09 Oct 2024 02:40:10 GMT foundInMaster: true useMasterProperties: true id: 15aad8cd322242e03733b07f2a37890a @@ -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-07T19:34:03Z' + updated: '2024-10-08T06:15:38Z' language: Java archived: false - stars: 1366 + stars: 1367 watchers: 22 forks: 213 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 - repoEtag: '"f5a79f5e12f1bc83dd9e6dc76a615736dd230dd22a1862c10475dad34f2c58e1"' - repoLastModified: Mon, 07 Oct 2024 19:34:03 GMT + repoEtag: '"2a9a340a6c7f5f347f9ced0d816c6fe5e2fda0b8d52f6a87124662cfc239ce3b"' + repoLastModified: Tue, 08 Oct 2024 06:15:38 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-08T01:22:31Z' + updated: '2024-10-08T20:40:21Z' language: TypeScript archived: false - stars: 3480 + stars: 3481 watchers: 29 forks: 498 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT - repoEtag: '"3b35392e6af28b8c95fa881005781898122eb0e486c160dc4d6eceb4b93d0bbe"' - repoLastModified: Tue, 08 Oct 2024 01:22:31 GMT + repoEtag: '"414ed07e811e30c3b46e37576afb106d0d756091fac0343b9f4c43df791fc944"' + repoLastModified: Tue, 08 Oct 2024 20:40:21 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-07T22:15:49Z' + updated: '2024-10-09T03:32:45Z' language: TypeScript archived: false - stars: 1110 + stars: 1122 watchers: 8 forks: 92 owner: hey-api logo: https://avatars.githubusercontent.com/u/164436240?v=4 license: NOASSERTION - repoEtag: '"560d75ca4d475e95148a49a7a4528b4e0148a3fcaf3d0a3637122e33b18ca213"' - repoLastModified: Mon, 07 Oct 2024 22:15:49 GMT + repoEtag: '"0a2231a2f0cf4b52a130fdbe9fa816860f1bb7ef3143ee3d7b606ce02e9eb0de"' + repoLastModified: Wed, 09 Oct 2024 03:32:45 GMT category: - Converters - SDK @@ -2024,17 +2024,17 @@ repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' - updated: '2024-10-07T21:44:05Z' + updated: '2024-10-08T19:42:50Z' language: Java archived: false - stars: 1108 + stars: 1109 watchers: 82 forks: 532 owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"e3850559c1efc853e03feeaca5b8d750b97fe82cc919b3eab5bf1af772ef91a4"' - repoLastModified: Mon, 07 Oct 2024 21:44:05 GMT + repoEtag: '"548f4ab4d06fe6c6c46549c496c9ed3f8e82853978c9c09f959bfd8eb8535c85"' + repoLastModified: Tue, 08 Oct 2024 19:42:50 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: '"ce363a02042db48f87c5b8223afdc1f8a649818dbe41732a41ad4f8f071c0686"' + repoEtag: '"95a9a9115883e96f3dd31c2012e40b7ff9627722e4aef58c11fff76e48b5bcd0"' 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-07T15:42:36Z' + updated: '2024-10-08T04:45:09Z' language: TypeScript archived: false - stars: 8556 + stars: 8557 watchers: 214 forks: 960 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT - repoEtag: '"b78ccd95344b7864b7c71f3aa0ddcab6a3c9f5037d09771cd732001595340614"' - repoLastModified: Mon, 07 Oct 2024 15:42:36 GMT + repoEtag: '"b3b4ecf30f02866521582d6c9c2b78826958c6c2a335b88d34809ac420b4c654"' + repoLastModified: Tue, 08 Oct 2024 04:45:09 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ @@ -2231,17 +2231,17 @@ repositoryId: 39904377 description: Open source API management platform created: '2015-07-29T16:34:52Z' - updated: '2024-10-02T04:47:23Z' + updated: '2024-10-08T20:05:15Z' language: PHP archived: false - stars: 1853 + stars: 1855 watchers: 58 - forks: 221 + forks: 222 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 - repoEtag: '"5df0302887bcbc4cce5cc970ccf74678358f489f8880ca665b6f90652115a346"' - repoLastModified: Wed, 02 Oct 2024 04:47:23 GMT + repoEtag: '"3c29c231056c13d27a835cf461b1a56888fbb4a00ef0c981323c7e7759ed4242"' + repoLastModified: Tue, 08 Oct 2024 20:05:15 GMT foundInMaster: true id: 5458da680012a142d20e79ac150bc4ab - source: @@ -2347,17 +2347,17 @@ repositoryId: 105440153 description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:' created: '2017-10-01T12:20:24Z' - updated: '2024-10-07T22:07:56Z' + updated: '2024-10-08T22:51:04Z' language: TypeScript archived: false stars: 1683 watchers: 31 - forks: 469 + forks: 470 owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT - repoEtag: '"de0f705ee6596171abd6d660065ae3fc9c81a6e0f440a8463faee39d843bd304"' - repoLastModified: Mon, 07 Oct 2024 22:07:56 GMT + repoEtag: '"557de76d1c38bd13c4bbab78cb033d4757799bb109a9ccbfab40b232be69893a"' + repoLastModified: Tue, 08 Oct 2024 22:51:04 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-07T08:16:50Z' + updated: '2024-10-08T09:16:24Z' language: JavaScript archived: false - stars: 4188 + stars: 4189 watchers: 75 forks: 279 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT - repoEtag: '"d90c7d05a6ac01b2ed573b7ee4e23817fdf3455cc2cf13004a7ab025746e6992"' - repoLastModified: Mon, 07 Oct 2024 08:16:50 GMT + repoEtag: '"808c79f87361ae7d5f48af7098787de6a55bee83893edff6235486765f8d8fd0"' + repoLastModified: Tue, 08 Oct 2024 09:16:24 GMT foundInMaster: true id: bb2e4b0879fce0d8706dcebfd2c10a4c - source: https://openapi.tools/ @@ -2498,7 +2498,7 @@ owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT - repoEtag: '"5da0572fb46febd2ecf7d4580196afaf78e24f095a533c18ea7761c0fdb138cc"' + repoEtag: '"d64518c51593f0136ac20f6074b6bb43d40c94f40467d2400d44c0eb8648ffca"' repoLastModified: Sat, 05 Oct 2024 18:19:48 GMT foundInMaster: true id: 3a27bc1a71642e0c1c020c41dc66e206 @@ -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-07T23:20:37Z' + updated: '2024-10-09T00:16:06Z' language: TypeScript archived: false - stars: 2481 + stars: 2484 watchers: 34 forks: 233 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"4070828ae99b1a7e6b3a9000e13859628a93be232a66921a416ddb2018521a27"' - repoLastModified: Mon, 07 Oct 2024 23:20:37 GMT + repoEtag: '"040165c82f36d20bff47977236c3009c656b3fe9ac8866db9203ca336d0dfac0"' + repoLastModified: Wed, 09 Oct 2024 00:16:06 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ @@ -2721,11 +2721,11 @@ archived: false stars: 204 watchers: 8 - forks: 40 + forks: 43 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"03b77579280f46c1dac37022cdd1a6d327a8d956ca0832b7c7f4f3bdd1371a71"' + repoEtag: '"db9b819f1cc9a9acad83c3a1fd16951c2f9d11dfd321102769a6e670e405fe66"' repoLastModified: Thu, 03 Oct 2024 06:59:57 GMT foundInMaster: true id: 30d322c922366df3f6f8fb9c681b2139 @@ -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-07T11:21:39Z' + updated: '2024-10-08T12:42:27Z' language: TypeScript archived: false - stars: 914 + stars: 916 watchers: 29 forks: 139 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"d48f8bfcee09ee87f8f0786def151a90dbe4805c58e720349063790bf68f37c0"' - repoLastModified: Mon, 07 Oct 2024 11:21:39 GMT + repoEtag: '"0789738f4e2a65c0e814eba66d73f205829cd6517fd735be49f33f3fe209d527"' + repoLastModified: Tue, 08 Oct 2024 12:42:27 GMT category: - Description Validators - Documentation @@ -2972,17 +2972,17 @@ repositoryId: 18997610 description: Swagger Spec to Java POJOs created: '2014-04-21T16:00:22Z' - updated: '2024-10-07T05:55:41Z' + updated: '2024-10-09T03:03:43Z' language: Java archived: false - stars: 782 + stars: 783 watchers: 46 forks: 527 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"f8cb5892958ca6d4826229e7187e1a5fe9a8b3af6ad29f81496e8b48aa83399d"' - repoLastModified: Mon, 07 Oct 2024 05:55:41 GMT + repoEtag: '"aba84255c04d5e27931de7f8c50f6c6f801046d865864d63ddf5274cf34178af"' + repoLastModified: Wed, 09 Oct 2024 03:03:43 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-07T18:11:29Z' + updated: '2024-10-09T03:19:03Z' language: JavaScript archived: false - stars: 1097 + stars: 1098 watchers: 19 forks: 155 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT - repoEtag: '"a73919004af1426889c8a090810c7041cc62ef433b4845964b5524a857159e1c"' - repoLastModified: Mon, 07 Oct 2024 18:11:29 GMT + repoEtag: '"9ae87d10e31c1c1d1dae8f41d9f99b3fbecfba35aedde3151d13f83a6e8b2822"' + repoLastModified: Wed, 09 Oct 2024 03:19:03 GMT category: Parsers foundInMaster: true name: APIDevTools/swagger-parser @@ -3161,15 +3161,15 @@ v3: true repositoryMetadata: base64Readme: >- - WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKUGxlYXNlLCBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGJ5IGJlY29taW5nIGEgc3BvbnNvci4KCkhlcmUncyBzb21lIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIF9raW4tb3BlbmFwaV86CiAgKiBbZ2l0aHViLmNvbS9hLWgvcmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL2EtaC9yZXN0KSAtICJHZW5lcmF0ZSBPcGVuQVBJIDMuMCBzcGVjaWZpY2F0aW9ucyBmcm9tIEdvIGNvZGUgd2l0aG91dCBhbm5vdGF0aW9ucyBvciBtYWdpYyBjb21tZW50cyIKICAqIFtnaXRodWIuY29tL1R1ZmluL29hc2RpZmZdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmKSAtICJBIGRpZmYgdG9vbCBmb3IgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMiCiAgKiBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0KSAtICJMaWdodHdlaWdodCwgYmxhemluZyBmYXN0LCBjcm9zcy1wbGF0Zm9ybSBPcGVuQVBJIDMgbW9jayBzZXJ2ZXIgd2l0aCB2YWxpZGF0aW9uIgogICogW2dpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbikgLSAiR2VuZXJhdGUgR28gY2xpZW50IGFuZCBzZXJ2ZXIgYm9pbGVycGxhdGUgZnJvbSBPcGVuQVBJIDMgc3BlY2lmaWNhdGlvbnMiCiAgKiBbZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9kdW5nbGFzL3Z1bGNhaW4pIC0gIlVzZSBIVFRQLzIgU2VydmVyIFB1c2ggdG8gY3JlYXRlIGZhc3QgYW5kIGlkaW9tYXRpYyBjbGllbnQtZHJpdmVuIFJFU1QgQVBJcyIKICAqIFtnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaF0oaHR0cHM6Ly9naXRodWIuY29tL2RhbmllbGd0YXlsb3IvcmVzdGlzaCkgLSAiLi4uYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVC1pc2ggSFRUUCBBUElzIHdpdGggc29tZSBuaWNlIGZlYXR1cmVzIGJ1aWx0LWluIgogICogW2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYV0oaHR0cHM6Ly9naXRodWIuY29tL2dvYWRlc2lnbi9nb2EpIC0gIkRlc2lnbi1iYXNlZCBBUElzIGFuZCBtaWNyb3NlcnZpY2VzIGluIEdvIgogICogW2dpdGh1Yi5jb20vaGFzaGljb3JwL25vbWFkLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaSkgLSAiTm9tYWQgaXMgYW4gZWFzeS10by11c2UsIGZsZXhpYmxlLCBhbmQgcGVyZm9ybWFudCB3b3JrbG9hZCBvcmNoZXN0cmF0b3IgdGhhdCBjYW4gZGVwbG95IGEgbWl4IG9mIG1pY3Jvc2VydmljZSwgYmF0Y2gsIGNvbnRhaW5lcml6ZWQsIGFuZCBub24tY29udGFpbmVyaXplZCBhcHBsaWNhdGlvbnMuIE5vbWFkIGlzIGVhc3kgdG8gb3BlcmF0ZSBhbmQgc2NhbGUgYW5kIGhhcyBuYXRpdmUgQ29uc3VsIGFuZCBWYXVsdCBpbnRlZ3JhdGlvbnMuIgogICogW2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpXShodHRwczovL2dpdGxhYi5jb20vamFtaWV0YW5uYS9odHRwdGVzdC1vcGVuYXBpKSAoWypibG9nIHBvc3QqXShodHRwczovL3d3dy5qdnQubWUvcG9zdHMvMjAyMi8wNS8yMi9nby1vcGVuYXBpLWNvbnRyYWN0LXRlc3QvKSkgLSAiR28gT3BlbkFQSSBDb250cmFjdCBWZXJpZmljYXRpb24gZm9yIHVzZSB3aXRoIGBuZXQvaHR0cGAiCiAgKiBbZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9TSU1JVEdST1VQL29wZW5hcGlnZW5lcmF0b3IpIC0gIk9wZW5hcGkgdjMgbWljcm9zZXJ2aWNlcyBnZW5lcmF0b3IiCiAgKiBbaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0c3ZlbHRvcy9hZGRvbi1jb250cm9sbGVyKSAtICJLdWJlcm5ldGVzIGFkZC1vbiBjb250cm9sbGVyIGRlc2lnbmVkIHRvIG1hbmFnZSB0ZW5zIG9mIGNsdXN0ZXJzLiIKICAqIChGZWVsIGZyZWUgdG8gYWRkIHlvdXIgcHJvamVjdCBieSBbY3JlYXRpbmcgYW4gaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzL25ldykgb3IgYSBwdWxsIHJlcXVlc3QpCgojIyBBbHRlcm5hdGl2ZXMKKiBbbGlib3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpIGEgZnVsbHkgZmVhdHVyZWQsIGhpZ2ggcGVyZm9ybWFuY2UgT3BlbkFQSSAzLjEsIDMuMCBhbmQgU3dhZ2dlciBwYXJzZXIsIGxpYnJhcnksIHZhbGlkYXRvciBhbmQgdG9vbGtpdAoqIFtnby1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyKSBzdGF0ZWQgWypPcGVuQVBJdjMgd29uJ3QgYmUgc3VwcG9ydGVkKl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9pc3N1ZXMvMTEyMiNpc3N1ZWNvbW1lbnQtNTc1OTY4NDk5KQoqIFtzd2FnZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZykgaGFzIGFuIFtvcGVuIGlzc3VlIG9uIE9wZW5BUEl2M10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnby9zd2FnL2lzc3Vlcy8zODYpCiogW2dvLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpKSdzIFtzcGVjM10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMpCgkqIGFuIGl0ZXJhdGlvbiBvbiBbc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYykgKGZvciBPcGVuQVBJdjIpCgkqIHNlZSBbUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjMy90cmVlLzNmYWI5ZmFhOTA5NGUwNmViZDE5ZGVkN2VhOTZkMTU2YzIyODNkY2Ejb2FpLW9iamVjdC1tb2RlbC0tLSkgZm9yIHRoZSBtaXNzaW5nIHBhcnRzCgpCZSBzdXJlIHRvIGNoZWNrIFtPcGVuQVBJIEluaXRpYXRpdmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkpJ3MgW2dyZWF0IHRvb2xpbmcgbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvSU1QTEVNRU5UQVRJT05TLm1kKSBhcyB3ZWxsIGFzIFtPcGVuQVBJLlRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKS4KCiMgU3RydWN0dXJlCiAgKiBfb3BlbmFwaTJfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAyIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpMmNvbnZfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyY29udikpCiAgICAqIENvbnZlcnRzIE9wZW5BUEkgMiBmaWxlcyBpbnRvIE9wZW5BUEkgMyBmaWxlcy4KICAqIF9vcGVuYXBpM18gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMpKQogICAgKiBTdXBwb3J0IGZvciBPcGVuQVBJIDMgZmlsZXMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24sIGFuZCB2YWxpZGF0aW9uLgogICogX29wZW5hcGkzZmlsdGVyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlcikpCiAgICAqIFZhbGlkYXRlcyBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKICAgICogUHJvdmlkZXMgYSBbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkgcm91dGVyIGZvciBPcGVuQVBJIG9wZXJhdGlvbnMKICAqIF9vcGVuYXBpM2dlbl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNnZW4pKQogICAgKiBHZW5lcmF0ZXMgYCpvcGVuYXBpMy5TY2hlbWFgIHZhbHVlcyBmb3IgR28gdHlwZXMuCgojIFNvbWUgcmVjaXBlcwojIyBWYWxpZGF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQKYGBgc2hlbGwKZ28gcnVuIGdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2NtZC92YWxpZGF0ZUBsYXRlc3QgWy0tY2lyY3VsYXJdIFstLWRlZmF1bHRzXSBbLS1leGFtcGxlc10gWy0tZXh0XSBbLS1wYXR0ZXJuc10gLS0gPGxvY2FsIFlBTUwgb3IgSlNPTiBmaWxlPgpgYGAKCiMjIExvYWRpbmcgT3BlbkFQSSBkb2N1bWVudApVc2UgYG9wZW5hcGkzLkxvYWRlcmAsIHdoaWNoIHJlc29sdmVzIGFsbCByZWZlcmVuY2VzOgpgYGBnbwpsb2FkZXIgOj0gb3BlbmFwaTMuTmV3TG9hZGVyKCkKZG9jLCBlcnIgOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgibXktb3BlbmFwaS1zcGVjLmpzb24iKQpgYGAKCiMjIEdldHRpbmcgT3BlbkFQSSBvcGVyYXRpb24gdGhhdCBtYXRjaGVzIHJlcXVlc3QKYGBgZ28KbG9hZGVyIDo9IG9wZW5hcGkzLk5ld0xvYWRlcigpCmRvYywgXyA6PSBsb2FkZXIuTG9hZEZyb21EYXRhKFtdYnl0ZShgLi4uYCkpCl8gPSBkb2MuVmFsaWRhdGUobG9hZGVyLkNvbnRleHQpCnJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCnJvdXRlLCBwYXRoUGFyYW1zLCBfIDo9IHJvdXRlci5GaW5kUm91dGUoaHR0cFJlcXVlc3QpCi8vIERvIHNvbWV0aGluZyB3aXRoIHJvdXRlLk9wZXJhdGlvbgpgYGAKCiMjIFZhbGlkYXRpbmcgSFRUUCByZXF1ZXN0cy9yZXNwb25zZXMKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZm10IgoJIm5ldC9odHRwIgoKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMyIKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlciIKCSJnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9yb3V0ZXJzL2dvcmlsbGFtdXgiCikKCmZ1bmMgbWFpbigpIHsKCWN0eCA6PSBjb250ZXh0LkJhY2tncm91bmQoKQoJbG9hZGVyIDo9ICZvcGVuYXBpMy5Mb2FkZXJ7Q29udGV4dDogY3R4LCBJc0V4dGVybmFsUmVmc0FsbG93ZWQ6IHRydWV9Cglkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgiLi4uL015LU9wZW5BUEl2My1BUEkueW1sIikKCS8vIFZhbGlkYXRlIGRvY3VtZW50CglfID0gZG9jLlZhbGlkYXRlKGN0eCkKCXJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCglodHRwUmVxLCBfIDo9IGh0dHAuTmV3UmVxdWVzdChodHRwLk1ldGhvZEdldCwgIi9pdGVtcyIsIG5pbCkKCgkvLyBGaW5kIHJvdXRlCglyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXEpCgoJLy8gVmFsaWRhdGUgcmVxdWVzdAoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglfID0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXF1ZXN0KGN0eCwgcmVxdWVzdFZhbGlkYXRpb25JbnB1dCkKCgkvLyBIYW5kbGUgdGhhdCByZXF1ZXN0CgkvLyAtLT4gWU9VUiBDT0RFIEdPRVMgSEVSRSA8LS0KCXJlc3BvbnNlSGVhZGVycyA6PSBodHRwLkhlYWRlcnsiQ29udGVudC1UeXBlIjogW11zdHJpbmd7ImFwcGxpY2F0aW9uL2pzb24ifX0KCXJlc3BvbnNlQ29kZSA6PSAyMDAKCXJlc3BvbnNlQm9keSA6PSBbXWJ5dGUoYHt9YCkKCgkvLyBWYWxpZGF0ZSByZXNwb25zZQoJcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlc3BvbnNlVmFsaWRhdGlvbklucHV0ewoJCVJlcXVlc3RWYWxpZGF0aW9uSW5wdXQ6IHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQsCgkJU3RhdHVzOiAgICAgICAgICAgICAgICAgcmVzcG9uc2VDb2RlLAoJCUhlYWRlcjogICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVycywKCX0KCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0LlNldEJvZHlCeXRlcyhyZXNwb25zZUJvZHkpCglfID0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXNwb25zZShjdHgsIHJlc3BvbnNlVmFsaWRhdGlvbklucHV0KQp9CmBgYAoKIyMgQ3VzdG9tIGNvbnRlbnQgdHlwZSBmb3IgYm9keSBvZiBIVFRQIHJlcXVlc3QvcmVzcG9uc2UKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IHBhcnNlcyBhIGJvZHkgb2YgdGhlIEhUVFAgcmVxdWVzdCBhbmQgcmVzcG9uc2UKaWYgaXQgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbnRlbnQgdHlwZXM6IGAidGV4dC9wbGFpbiJgIG9yIGAiYXBwbGljYXRpb24vanNvbiJgLgpUbyBzdXBwb3J0IG90aGVyIGNvbnRlbnQgdHlwZXMgeW91IG11c3QgcmVnaXN0ZXIgZGVjb2RlcnMgZm9yIHRoZW06CgpgYGBnbwpmdW5jIG1haW4oKSB7CgkvLyAuLi4KCgkvLyBSZWdpc3RlciBhIGJvZHkncyBkZWNvZGVyIGZvciBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglvcGVuYXBpM2ZpbHRlci5SZWdpc3RlckJvZHlEZWNvZGVyKCJhcHBsaWNhdGlvbi94bWwiLCB4bWxCb2R5RGVjb2RlcikKCgkvLyBOb3cgeW91IGNhbiB2YWxpZGF0ZSBIVFRQIHJlcXVlc3QgdGhhdCBjb250YWlucyBhIGJvZHkgd2l0aCBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglyZXF1ZXN0VmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0ewoJCVJlcXVlc3Q6ICAgIGh0dHBSZXEsCgkJUGF0aFBhcmFtczogcGF0aFBhcmFtcywKCQlSb3V0ZTogICAgICByb3V0ZSwKCX0KCWlmIGVyciA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlcXVlc3QoY3R4LCByZXF1ZXN0VmFsaWRhdGlvbklucHV0KTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQoKCS8vIC4uLgoKCS8vIEFuZCB5b3UgY2FuIHZhbGlkYXRlIEhUVFAgcmVzcG9uc2UgdGhhdCBjb250YWlucyBhIGJvZHkgd2l0aCBjb250ZW50IHR5cGUgImFwcGxpY2F0aW9uL3htbCIuCglpZiBlcnIgOj0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXNwb25zZShjdHgsIHJlc3BvbnNlVmFsaWRhdGlvbklucHV0KTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQp9CgpmdW5jIHhtbEJvZHlEZWNvZGVyKGJvZHkgaW8uUmVhZGVyLCBoIGh0dHAuSGVhZGVyLCBzY2hlbWEgKm9wZW5hcGkzLlNjaGVtYVJlZiwgZW5jRm4gb3BlbmFwaTNmaWx0ZXIuRW5jb2RpbmdGbikgKGRlY29kZWQgYW55LCBlcnIgZXJyb3IpIHsKCS8vIERlY29kZSBib2R5IHRvIGEgcHJpbWl0aXZlLCBbXWFueSwgb3IgbWFwW3N0cmluZ11hbnkuCn0KYGBgCgojIyBDdXN0b20gZnVuY3Rpb24gdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheSBpdGVtcwoKQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgY2hlY2tzIHVuaXF1ZSBpdGVtcyB1c2luZyB0aGUgZm9sbG93aW5nIHByZWRlZmluZWQgZnVuY3Rpb246CgpgYGBnbwpmdW5jIGlzU2xpY2VPZlVuaXF1ZUl0ZW1zKHhzIFtdYW55KSBib29sIHsKCXMgOj0gbGVuKHhzKQoJbSA6PSBtYWtlKG1hcFtzdHJpbmddc3RydWN0e30sIHMpCglmb3IgXywgeCA6PSByYW5nZSB4cyB7CgkJa2V5LCBfIDo9IGpzb24uTWFyc2hhbCgmeCkKCQltW3N0cmluZyhrZXkpXSA9IHN0cnVjdHt9e30KCX0KCXJldHVybiBzID09IGxlbihtKQp9CmBgYAoKSW4gdGhlIHByZWRlZmluZWQgZnVuY3Rpb24gYGpzb24uTWFyc2hhbGAgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHN0cmluZyB0aGF0IGNhbgpiZSB1c2VkIGFzIGEgbWFwIGtleSB3aGljaCBpcyB0byBjaGVjayB0aGUgdW5pcXVlbmVzcyBvZiBhbiBhcnJheQp3aGVuIHRoZSBhcnJheSBpdGVtcyBhcmUgb2JqZWN0cyBvciBhcnJheXMuIFlvdSBjYW4gcmVnaXN0ZXIKeW91IG93biBmdW5jdGlvbiBhY2NvcmRpbmcgdG8geW91ciBpbnB1dCBkYXRhIHRvIGdldCBiZXR0ZXIgcGVyZm9ybWFuY2U6CgpgYGBnbwpmdW5jIG1haW4oKSB7CgkvLyAuLi4KCgkvLyBSZWdpc3RlciBhIGN1c3RvbWl6ZWQgZnVuY3Rpb24gdXNlZCB0byBjaGVjayB1bmlxdWVuZXNzIG9mIGFycmF5LgoJb3BlbmFwaTMuUmVnaXN0ZXJBcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcihhcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcikKCgkvLyAuLi4gb3RoZXIgdmFsaWRhdGUgY29kZXMKfQoKZnVuYyBhcnJheVVuaXF1ZUl0ZW1zQ2hlY2tlcihpdGVtcyBbXWFueSkgYm9vbCB7CgkvLyBDaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5wdXQgc2xpY2UKfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGFuZ2Ugc2NoZW1hIGVycm9yIG1lc3NhZ2VzCgpCeSBkZWZhdWx0LCB0aGUgZXJyb3IgbWVzc2FnZSByZXR1cm5lZCB3aGVuIHZhbGlkYXRpbmcgYSB2YWx1ZSBpbmNsdWRlcyB0aGUgZXJyb3IgcmVhc29uLCB0aGUgc2NoZW1hLCBhbmQgdGhlIGlucHV0IHZhbHVlLgoKRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKYGBganNvbgp7CiAgInR5cGUiOiAic3RyaW5nIiwKICAiYWxsT2YiOiBbCiAgICB7ICJwYXR0ZXJuIjogIltBLVpdIiB9LAogICAgeyAicGF0dGVybiI6ICJbYS16XSIgfSwKICAgIHsgInBhdHRlcm4iOiAiWzAtOV0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlshQCMkJV4mKigpXys9LT9+XSIgfQogIF0KfQpgYGAKClBhc3NpbmcgdGhlIGlucHV0IHZhbHVlIGAic2VjcmV0ImAgdG8gdGhpcyBzY2hlbWEgd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZXJyb3IgbWVzc2FnZToKCmBgYApzdHJpbmcgZG9lc24ndCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICJbQS1aXSIKU2NoZW1hOgogIHsKICAgICJwYXR0ZXJuIjogIltBLVpdIgogIH0KClZhbHVlOgogICJzZWNyZXQiCmBgYAoKSW5jbHVkaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBjYW4gYmUgaGVscGZ1bCBmb3IgZGVidWdnaW5nLCBidXQgaXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3Igc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VjcmV0cy4KClRvIGRpc2FibGUgdGhlIGV4dHJhIGRldGFpbHMgaW4gdGhlIHNjaGVtYSBlcnJvciBtZXNzYWdlLCB5b3UgY2FuIHNldCB0aGUgYG9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkYCBvcHRpb24gdG8gYHRydWVgOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gRGlzYWJsZSBzY2hlbWEgZXJyb3IgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMKCW9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkID0gdHJ1ZQoKCS8vIC4uLiBvdGhlciB2YWxpZGF0ZSBjb2Rlcwp9CmBgYAoKVGhpcyB3aWxsIHNob3J0ZW4gdGhlIGVycm9yIG1lc3NhZ2UgdG8gcHJlc2VudCBvbmx5IHRoZSByZWFzb246CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iCmBgYAoKRm9yIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBwYXNzIGEgY3VzdG9tIGBvcGVuYXBpM2ZpbHRlci5PcHRpb25zYCBvYmplY3QgdG8gYG9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXRgIHRoYXQgaW5jbHVkZXMgYSBgb3BlbmFwaTNmaWx0ZXIuQ3VzdG9tU2NoZW1hRXJyb3JGdW5jYC4KCmBgYGdvCmZ1bmMgdmFsaWRhdGlvbk9wdGlvbnMoKSAqb3BlbmFwaTNmaWx0ZXIuT3B0aW9ucyB7CglvcHRpb25zIDo9ICZvcGVuYXBpM2ZpbHRlci5PcHRpb25ze30KCW9wdGlvbnMuV2l0aEN1c3RvbVNjaGVtYUVycm9yRnVuYyhzYWZlRXJyb3JNZXNzYWdlKQoJcmV0dXJuIG9wdGlvbnMKfQoKZnVuYyBzYWZlRXJyb3JNZXNzYWdlKGVyciAqb3BlbmFwaTMuU2NoZW1hRXJyb3IpIHN0cmluZyB7CglyZXR1cm4gZXJyLlJlYXNvbgp9CmBgYAoKVGhpcyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIHRvIHJldHVybiBvbmx5IHRoZSBgUmVhc29uYCBmaWVsZCwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBub3QgaW5jbHVkZSB0aGUgb3JpZ2luYWwgdmFsdWUuCgojIyBSZWNvbmNpbGluZyBjb21wb25lbnQgJHJlZiB0eXBlcwoKYFJlZmVyZW5jZXNDb21wb25lbnRJblJvb3REb2N1bWVudGAgaXMgYSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgY29tcG9uZW50IHJlZmVyZW5jZQpjb2luY2lkZXMgd2l0aCBhIHJlZmVyZW5jZSBpbiB0aGUgcm9vdCBkb2N1bWVudCdzIGNvbXBvbmVudCBvYmplY3RzIGZpeGVkIGZpZWxkcy4KClRoaXMgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHR3byBzY2hlbWEgZGVmaW5pdGlvbnMgYXJlIG9mIHRoZSBzYW1lIHN0cnVjdHVyZSwgaGVscGZ1bCBmb3IKY29kZSBnZW5lcmF0aW9uIHRvb2xzIHdoZW4gZ2VuZXJhdGluZyBnbyB0eXBlIG1vZGVscy4KCmBgYGdvCmRvYywgZXJyID0gbG9hZGVyLkxvYWRGcm9tRmlsZSgib3BlbmFwaS55bWwiKQoKZm9yIF8sIHBhdGggOj0gcmFuZ2UgZG9jLlBhdGhzLkluTWF0Y2hpbmdPcmRlcigpIHsKCXBhdGhJdGVtIDo9IGRvYy5QYXRocy5GaW5kKHBhdGgpCgoJaWYgcGF0aEl0ZW0uR2V0ID09IG5pbCB8fCBwYXRoSXRlbS5HZXQuUmVzcG9uc2VzLlN0YXR1cygyMDApIHsKCQljb250aW51ZQoJfQoKCWZvciBfLCBzIDo9IHJhbmdlIHBhdGhJdGVtLkdldC5SZXNwb25zZXMuU3RhdHVzKDIwMCkuVmFsdWUuQ29udGVudCB7CgkJbmFtZSwgbWF0Y2ggOj0gUmVmZXJlbmNlc0NvbXBvbmVudEluUm9vdERvY3VtZW50KGRvYywgcy5TY2hlbWEpCgkJZm10LlByaW50bG4ocGF0aCwgbWF0Y2gsIG5hbWUpIC8vIC9yZWNvcmQgdHJ1ZSAjL2NvbXBvbmVudHMvc2NoZW1hcy9Cb29rUmVjb3JkCgl9Cn0KYGBgCgojIyBDSEFOR0VMT0c6IFN1Yi12MSBicmVha2luZyBBUEkgY2hhbmdlcwoKIyMjIHYwLjEyNy4wCiogRG93bmdyYWRlZCBgZ2l0aHViLmNvbS9nb3JpbGxhL211eGAgZGVwIGZyb20gYDEuOC4xYCB0byBgMS44LjBgLgoKIyMjIHYwLjEyNi4wCiogYG9wZW5hcGkzLkNpcmN1bGFyUmVmZXJlbmNlRXJyb3JgIGFuZCBgb3BlbmFwaTMuQ2lyY3VsYXJSZWZlcmVuY2VDb3VudGVyYCBhcmUgcmVtb3ZlZC4gYG9wZW5hcGkzLkxvYWRlcmAgbm93IGltcGxlbWVudHMgcmVmZXJlbmNlIGJhY2t0cmFja2luZywgc28gYW55IGtpbmQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgcHJvcGVybHkgcmVzb2x2ZWQuCiogYEludGVybmFsaXplUmVmc2Agbm93IHRha2VzIGEgcmVmTmFtZVJlc29sdmVyIHRoYXQgaGFzIGFjY2VzcyB0byBgb3BlbmFwaTMuVGAgYW5kIG1vcmUgcHJvcGVydGllcyBvZiB0aGUgcmVmZXJlbmNlIG5lZWRpbmcgcmVzb2x2aW5nLgoqIFRoZSBgRGVmYXVsdFJlZk5hbWVSZXNvbHZlcmAgaGFzIGJlZW4gdXBkYXRlZCwgY2hvb3NpbmcgbmFtZXMgdGhhdCB3aWxsIGJlIGxlc3MgbGlrZWx5IHRvIGNvbGxpZGUgd2l0aCBlYWNoIG90aGVyLiBCZWNhdXNlIG9mIHRoaXMgaW50ZXJuYWxpemVkIHNwZWNzIHdpbGwgbGlrZWx5IGNoYW5nZSBzbGlnaHRseS4KKiBgb3BlbmFwaTMuRm9ybWF0YCBhbmQgYG9wZW5hcGkzLkZvcm1hdENhbGxiYWNrYCBhcmUgcmVtb3ZlZCBhbmQgdGhlIHR5cGUgb2YgYG9wZW5hcGkzLlNjaGVtYVN0cmluZ0Zvcm1hdHNgIGhhcyBjaGFuZ2VkLgoKIyMjIHYwLjEyNS4wCiogVGhlIGBvcGVuYXBpM2ZpbHRlci5FcnJGdW5jYCBhbmQgYG9wZW5hcGkzZmlsdGVyLkxvZ0Z1bmNgIGZ1bmMgdHlwZXMgbm93IHRha2UgdGhlIHZhbGlkYXRlZCByZXF1ZXN0J3MgY29udGV4dCBhcyBmaXJzdCBhcmd1bWVudC4KCiMjIyB2MC4xMjQuMAoqIGBvcGVuYXBpMy5TY2hlbWEuVHlwZWAgJiBgb3BlbmFwaTIuUGFyYW1ldGVyLlR5cGVgIGZpZWxkcyB3ZW50IGZyb20gYSBgc3RyaW5nYCB0byB0aGUgdHlwZSBgKlR5cGVgIHdpdGggbWV0aG9kczogYEluY2x1ZGVzYCwgYElzYCwgYFBlcm1pdHNgICYgYFNsaWNlYC4KCiMjIyB2MC4xMjIuMAoqIGBQYXRoc2AgZmllbGQgb2YgYG9wZW5hcGkzLlRgIGlzIG5vdyBhIHBvaW50ZXIKKiBgUmVzcG9uc2VzYCBmaWVsZCBvZiBgb3BlbmFwaTMuT3BlcmF0aW9uYCBpcyBub3cgYSBwb2ludGVyCiogYG9wZW5hcGkzLlBhdGhzYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlBhdGhJdGVtYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgb3BlbmFwaTMuQ2FsbGJhY2tgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUGF0aEl0ZW1gIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGBvcGVuYXBpMy5SZXNwb25zZXNgIHdlbnQgZnJvbSBgbWFwW3N0cmluZ10qUmVzcG9uc2VSZWZgIHRvIGEgc3RydWN0IHdpdGggYW4gYEV4dGVuc2lvbnNgIGZpZWxkIGFuZCBtZXRob2RzOiBgU2V0YCwgYFZhbHVlYCwgYExlbmAsIGBNYXBgLCBhbmQgYE5ldypgLgoqIGAob3BlbmFwaTMuUmVzcG9uc2VzKS5HZXQoaW50KWAgcmVuYW1lZCB0byBgKCpvcGVuYXBpMy5SZXNwb25zZXMpLlN0YXR1cyhpbnQpYAoKIyMjIHYwLjEyMS4wCiogSW50cm9kdWNlIGBvcGVuYXBpMy5SZXF1ZXN0Qm9kaWVzYCAoYW4gYWxpYXMgb24gYG1hcFtzdHJpbmddKm9wZW5hcGkzLlJlc3BvbnNlUmVmYCkgYW5kIHVzZSBpdCBpbiBwbGFjZSBvZiBgb3BlbmFwaTMuUmVzcG9uc2VzYCBmb3IgZmllbGQgYG9wZW5hcGkzLkNvbXBvbmVudHMuUmVzcG9uc2VzYC4KCiMjIyB2MC4xMTYuMAoqIERyb3BwZWQgYG9wZW5hcGkzZmlsdGVyLkRlZmF1bHRPcHRpb25zYC4gVXNlIGAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9YCBkaXJlY3RseSBpbnN0ZWFkLgoKIyMjIHYwLjExMy4wCiogVGhlIHN0cmluZyBmb3JtYXQgYGVtYWlsYCBoYXMgYmVlbiByZW1vdmVkIGJ5IGRlZmF1bHQuIFRvIHVzZSBpdCBwbGVhc2UgY2FsbCBgb3BlbmFwaTMuRGVmaW5lU3RyaW5nRm9ybWF0KCJlbWFpbCIsIG9wZW5hcGkzLkZvcm1hdE9mU3RyaW5nRm9yRW1haWwpYC4KKiBGaWVsZCBgb3BlbmFwaTMuVC5Db21wb25lbnRzYCBpcyBub3cgYSBwb2ludGVyLgoqIEZpZWxkcyBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBhbmQgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc0FsbG93ZWRgIGFyZSByZXBsYWNlZCBieSBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLlNjaGVtYWAgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXMuSGFzYCByZXNwZWN0aXZlbHkuCiogVHlwZSBgb3BlbmFwaTMuRXh0ZW5zaW9uUHJvcHNgIGlzIG5vdyBqdXN0IGBtYXBbc3RyaW5nXWFueWAgYW5kIGV4dGVuc2lvbnMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYEV4dGVuc2lvbnNgIGZpZWxkLgoKIyMjIHYwLjExMi4wCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuRXhhbXBsZXNWYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hRm9ybWF0VmFsaWRhdGlvbkVuYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCiogYChvcGVuYXBpMy5WYWxpZGF0aW9uT3B0aW9ucykuU2NoZW1hUGF0dGVyblZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KCiMjIyB2MC4xMTEuMAoqIENoYW5nZWQgYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0KSBlcnJvcmAgdG8gYGZ1bmMgKCpfKSBWYWxpZGF0ZShjdHggY29udGV4dC5Db250ZXh0LCBvcHRzIC4uLlZhbGlkYXRpb25PcHRpb24pIGVycm9yYC4KKiBgb3BlbmFwaTMuV2l0aFZhbGlkYXRpb25PcHRpb25zKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgKlZhbGlkYXRpb25PcHRpb25zKSBjb250ZXh0LkNvbnRleHRgIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBvcGVuYXBpMy5XaXRoVmFsaWRhdGlvbk9wdGlvbnMoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAuLi5WYWxpZGF0aW9uT3B0aW9uKSBjb250ZXh0LkNvbnRleHRgLgoKIyMjIHYwLjEwMS4wCiogYG9wZW5hcGkzLlNjaGVtYUZvcm1hdFZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgYW4gb3B0aW9uIGBvcGVuYXBpMy5FbmFibGVTY2hlbWFGb3JtYXRWYWxpZGF0aW9uKClgIHBhc3NlZCB0byBgb3BlbmFwaTMuVC5WYWxpZGF0ZWAuIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyBhbHNvIG5vdyB0byBub3QgdmFsaWRhdGUgZm9ybWF0cywgYXMgdGhlIE9wZW5BUEkgc3BlYyBtZW50aW9ucyB0aGUgYGZvcm1hdGAgaXMgYW4gb3BlbiB2YWx1ZS4KCiMjIyB2MC44NC4wCiogVGhlIHByb3RvdHlwZSBvZiBgb3BlbmFwaTNnZW4uTmV3U2NoZW1hUmVmRm9yVmFsdWVgIGNoYW5nZWQ6CgkqIEl0IG5vIGxvbmdlciByZXR1cm5zIGEgbWFwIGJ1dCB0aGF0IGlzIHN0aWxsIGFjY2Vzc2libGUgdW5kZXIgdGhlIGZpZWxkIGAoKkdlbmVyYXRvcikuU2NoZW1hUmVmc2AuCgkqIEl0IG5vdyB0YWtlcyBpbiBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IChiYXNpY2FsbHkgYGRvYy5Db21wb25lbnRzLlNjaGVtYXNgKSB3aGljaCBnZXRzIHdyaXR0ZW4gdG8gc28gYCRyZWZgIGN5Y2xlcyBjYW4gYmUgcHJvcGVybHkgaGFuZGxlZC4KCiMjIyB2MC42MS4wCiogUmVuYW1lZCBgb3BlbmFwaTIuU3dhZ2dlcmAgdG8gYG9wZW5hcGkyLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkyY29udi5Gcm9tVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LkZyb21WM2AuCiogUmVuYW1lZCBgb3BlbmFwaTJjb252LlRvVjNTd2FnZ2VyYCB0byBgb3BlbmFwaTJjb252LlRvVjNgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbURhdGFgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbURhdGFXaXRoUGF0aGAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRGF0YVdpdGhQYXRoYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21GaWxlYCB0byBgb3BlbmFwaTMuTG9hZEZyb21GaWxlYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21VUklgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbVVSSWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTmV3U3dhZ2dlckxvYWRlcmAgdG8gYG9wZW5hcGkzLk5ld0xvYWRlcmAuCiogUmVuYW1lZCBgb3BlbmFwaTMuU3dhZ2dlcmAgdG8gYG9wZW5hcGkzLlRgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLlN3YWdnZXJMb2FkZXJgIHRvIGBvcGVuYXBpMy5Mb2FkZXJgLgoqIFJlbmFtZWQgYG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRpb25IYW5kbGVyLlN3YWdnZXJGaWxlYCB0byBgb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGlvbkhhbmRsZXIuRmlsZWAuCiogUmVuYW1lZCBgcm91dGVycy5Sb3V0ZS5Td2FnZ2VyYCB0byBgcm91dGVycy5Sb3V0ZS5TcGVjYC4KCiMjIyB2MC41MS4wCiogVHlwZSBgb3BlbmFwaTNmaWx0ZXIuUm91dGVgIG1vdmVkIHRvIGByb3V0ZXJzYCAoYW5kIGBSb3V0ZS5IYW5kbGVyYCB3YXMgZHJvcHBlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzMyOSkKKiBUeXBlIGBvcGVuYXBpM2ZpbHRlci5Sb3V0ZUVycm9yYCBtb3ZlZCB0byBgcm91dGVyc2AgKHNvIGRpZCBgRXJyUGF0aE5vdEZvdW5kYCBhbmQgYEVyck1ldGhvZE5vdEFsbG93ZWRgIHdoaWNoIGFyZSBub3cgYFJvdXRlRXJyb3JgcykKKiBSb3V0ZXJzJyBgRmluZFJvdXRlKC4uLilgIG1ldGhvZCBub3cgdGFrZXMgb25seSBvbmUgYXJndW1lbnQ6IGAqaHR0cC5SZXF1ZXN0YAoqIGBnZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIuUm91dGVyYCBtb3ZlZCB0byBgZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvbGVnYWN5YAoqIGBvcGVuYXBpM2ZpbHRlci5OZXdSb3V0ZXIoKWAgYW5kIGl0cyByZWxhdGVkIGBXaXRoU3dhZ2dlckZyb21GaWxlKHN0cmluZylgLCBgV2l0aFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCwgYEFkZFN3YWdnZXJGcm9tRmlsZShzdHJpbmcpYCBhbmQgYEFkZFN3YWdnZXIoKm9wZW5hcGkzLlN3YWdnZXIpYCBhcmUgYWxsIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgYDxyb3V0ZXIgcGFja2FnZT4uTmV3Um91dGVyKCpvcGVuYXBpMy5Td2FnZ2VyKWAKCSogTk9URTogdGhlIGBOZXdSb3V0ZXIoZG9jKWAgY2FsbCBub3cgcmVxdWlyZXMgdGhhdCB0aGUgdXNlciBlbnN1cmVzIGBkb2NgIGlzIHZhbGlkIChgZG9jLlZhbGlkYXRlKCkgIT0gbmlsYCkuIFRoaXMgdXNlZCB0byBiZSBhc3NlcnRlZC4KCiMjIyB2MC40Ny4wCkZpZWxkIGAoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIpLkxvYWRTd2FnZ2VyRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoKm9wZW5hcGkzLlN3YWdnZXIsIGVycm9yKWAgd2FzIHJlbW92ZWQgYWZ0ZXIgdGhlIGFkZGl0aW9uIG9mIHRoZSBmaWVsZCBgKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyKS5SZWFkRnJvbVVSSUZ1bmNgIG9mIHR5cGUgYGZ1bmMoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIsICp1cmwuVVJMKSAoW11ieXRlLCBlcnJvcilgLgo= - readmeEtag: '"690ef903cb342d822a999b26d34a1d4fc3b0aa68"' - readmeLastModified: Thu, 22 Aug 2024 12:26:31 GMT + WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKUGxlYXNlLCBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGJ5IGJlY29taW5nIGEgc3BvbnNvci4KCkhlcmUncyBzb21lIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIF9raW4tb3BlbmFwaV86CiAgKiBbZ2l0aHViLmNvbS9nby1mdWVnby9mdWVnb10oaHR0cHM6Ly9naXRodWIuY29tL2dvLWZ1ZWdvL2Z1ZWdvKSAtICJGcmFtZXdvcmsgZ2VuZXJhdGluZyBPcGVuQVBJIDMgc3BlYyBmcm9tIHNvdXJjZSBjb2RlIgogICogW2dpdGh1Yi5jb20vYS1oL3Jlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9hLWgvcmVzdCkgLSAiR2VuZXJhdGUgT3BlbkFQSSAzLjAgc3BlY2lmaWNhdGlvbnMgZnJvbSBHbyBjb2RlIHdpdGhvdXQgYW5ub3RhdGlvbnMgb3IgbWFnaWMgY29tbWVudHMiCiAgKiBbZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmXShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZikgLSAiQSBkaWZmIHRvb2wgZm9yIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzIgogICogW2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL2FwaXNwcm91dCkgLSAiTGlnaHR3ZWlnaHQsIGJsYXppbmcgZmFzdCwgY3Jvc3MtcGxhdGZvcm0gT3BlbkFQSSAzIG1vY2sgc2VydmVyIHdpdGggdmFsaWRhdGlvbiIKICAqIFtnaXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vZGVlcG1hcC9vYXBpLWNvZGVnZW4pIC0gIkdlbmVyYXRlIEdvIGNsaWVudCBhbmQgc2VydmVyIGJvaWxlcnBsYXRlIGZyb20gT3BlbkFQSSAzIHNwZWNpZmljYXRpb25zIgogICogW2dpdGh1Yi5jb20vZHVuZ2xhcy92dWxjYWluXShodHRwczovL2dpdGh1Yi5jb20vZHVuZ2xhcy92dWxjYWluKSAtICJVc2UgSFRUUC8yIFNlcnZlciBQdXNoIHRvIGNyZWF0ZSBmYXN0IGFuZCBpZGlvbWF0aWMgY2xpZW50LWRyaXZlbiBSRVNUIEFQSXMiCiAgKiBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2gpIC0gIi4uLmEgQ0xJIGZvciBpbnRlcmFjdGluZyB3aXRoIFJFU1QtaXNoIEhUVFAgQVBJcyB3aXRoIHNvbWUgbmljZSBmZWF0dXJlcyBidWlsdC1pbiIKICAqIFtnaXRodWIuY29tL2dvYWRlc2lnbi9nb2FdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb2FkZXNpZ24vZ29hKSAtICJEZXNpZ24tYmFzZWQgQVBJcyBhbmQgbWljcm9zZXJ2aWNlcyBpbiBHbyIKICAqIFtnaXRodWIuY29tL2hhc2hpY29ycC9ub21hZC1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL25vbWFkLW9wZW5hcGkpIC0gIk5vbWFkIGlzIGFuIGVhc3ktdG8tdXNlLCBmbGV4aWJsZSwgYW5kIHBlcmZvcm1hbnQgd29ya2xvYWQgb3JjaGVzdHJhdG9yIHRoYXQgY2FuIGRlcGxveSBhIG1peCBvZiBtaWNyb3NlcnZpY2UsIGJhdGNoLCBjb250YWluZXJpemVkLCBhbmQgbm9uLWNvbnRhaW5lcml6ZWQgYXBwbGljYXRpb25zLiBOb21hZCBpcyBlYXN5IHRvIG9wZXJhdGUgYW5kIHNjYWxlIGFuZCBoYXMgbmF0aXZlIENvbnN1bCBhbmQgVmF1bHQgaW50ZWdyYXRpb25zLiIKICAqIFtnaXRsYWIuY29tL2phbWlldGFubmEvaHR0cHRlc3Qtb3BlbmFwaV0oaHR0cHM6Ly9naXRsYWIuY29tL2phbWlldGFubmEvaHR0cHRlc3Qtb3BlbmFwaSkgKFsqYmxvZyBwb3N0Kl0oaHR0cHM6Ly93d3cuanZ0Lm1lL3Bvc3RzLzIwMjIvMDUvMjIvZ28tb3BlbmFwaS1jb250cmFjdC10ZXN0LykpIC0gIkdvIE9wZW5BUEkgQ29udHJhY3QgVmVyaWZpY2F0aW9uIGZvciB1c2Ugd2l0aCBgbmV0L2h0dHBgIgogICogW2dpdGh1Yi5jb20vU0lNSVRHUk9VUC9vcGVuYXBpZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vU0lNSVRHUk9VUC9vcGVuYXBpZ2VuZXJhdG9yKSAtICJPcGVuYXBpIHYzIG1pY3Jvc2VydmljZXMgZ2VuZXJhdG9yIgogICogW2h0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZWN0c3ZlbHRvcy9hZGRvbi1jb250cm9sbGVyXShodHRwczovL2dpdGh1Yi5jb20vcHJvamVjdHN2ZWx0b3MvYWRkb24tY29udHJvbGxlcikgLSAiS3ViZXJuZXRlcyBhZGQtb24gY29udHJvbGxlciBkZXNpZ25lZCB0byBtYW5hZ2UgdGVucyBvZiBjbHVzdGVycy4iCiAgKiAoRmVlbCBmcmVlIHRvIGFkZCB5b3VyIHByb2plY3QgYnkgW2NyZWF0aW5nIGFuIGlzc3VlXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2lzc3Vlcy9uZXcpIG9yIGEgcHVsbCByZXF1ZXN0KQoKIyMgQWx0ZXJuYXRpdmVzCiogW2xpYm9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKSBhIGZ1bGx5IGZlYXR1cmVkLCBoaWdoIHBlcmZvcm1hbmNlIE9wZW5BUEkgMy4xLCAzLjAgYW5kIFN3YWdnZXIgcGFyc2VyLCBsaWJyYXJ5LCB2YWxpZGF0b3IgYW5kIHRvb2xraXQKKiBbZ28tc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlcikgc3RhdGVkIFsqT3BlbkFQSXYzIHdvbid0IGJlIHN1cHBvcnRlZCpdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1zd2FnZ2VyL2dvLXN3YWdnZXIvaXNzdWVzLzExMjIjaXNzdWVjb21tZW50LTU3NTk2ODQ5OSkKKiBbc3dhZ2dvXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dvL3N3YWcpIGhhcyBhbiBbb3BlbiBpc3N1ZSBvbiBPcGVuQVBJdjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZy9pc3N1ZXMvMzg2KQoqIFtnby1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaSkncyBbc3BlYzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMzKQoJKiBhbiBpdGVyYXRpb24gb24gW3NwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpL3NwZWMpIChmb3IgT3BlbkFQSXYyKQoJKiBzZWUgW1JFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMvdHJlZS8zZmFiOWZhYTkwOTRlMDZlYmQxOWRlZDdlYTk2ZDE1NmMyMjgzZGNhI29haS1vYmplY3QtbW9kZWwtLS0pIGZvciB0aGUgbWlzc2luZyBwYXJ0cwoKQmUgc3VyZSB0byBjaGVjayBbT3BlbkFQSSBJbml0aWF0aXZlXShodHRwczovL2dpdGh1Yi5jb20vT0FJKSdzIFtncmVhdCB0b29saW5nIGxpc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFzdGVyL0lNUExFTUVOVEFUSU9OUy5tZCkgYXMgd2VsbCBhcyBbT3BlbkFQSS5Ub29sc10oaHR0cHM6Ly9vcGVuYXBpLnRvb2xzLykuCgojIFN0cnVjdHVyZQogICogX29wZW5hcGkyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMikpCiAgICAqIFN1cHBvcnQgZm9yIE9wZW5BUEkgMiBmaWxlcywgaW5jbHVkaW5nIHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbiwgYW5kIHZhbGlkYXRpb24uCiAgKiBfb3BlbmFwaTJjb252XyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpMmNvbnYpKQogICAgKiBDb252ZXJ0cyBPcGVuQVBJIDIgZmlsZXMgaW50byBPcGVuQVBJIDMgZmlsZXMuCiAgKiBfb3BlbmFwaTNfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAzIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpM2ZpbHRlcl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIpKQogICAgKiBWYWxpZGF0ZXMgSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzCiAgICAqIFByb3ZpZGVzIGEgW2dvcmlsbGEvbXV4XShodHRwczovL2dpdGh1Yi5jb20vZ29yaWxsYS9tdXgpIHJvdXRlciBmb3IgT3BlbkFQSSBvcGVyYXRpb25zCiAgKiBfb3BlbmFwaTNnZW5fIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZ2VuKSkKICAgICogR2VuZXJhdGVzIGAqb3BlbmFwaTMuU2NoZW1hYCB2YWx1ZXMgZm9yIEdvIHR5cGVzLgoKIyBTb21lIHJlY2lwZXMKIyMgVmFsaWRhdGluZyBhbiBPcGVuQVBJIGRvY3VtZW50CmBgYHNoZWxsCmdvIHJ1biBnaXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9jbWQvdmFsaWRhdGVAbGF0ZXN0IFstLWNpcmN1bGFyXSBbLS1kZWZhdWx0c10gWy0tZXhhbXBsZXNdIFstLWV4dF0gWy0tcGF0dGVybnNdIC0tIDxsb2NhbCBZQU1MIG9yIEpTT04gZmlsZT4KYGBgCgojIyBMb2FkaW5nIE9wZW5BUEkgZG9jdW1lbnQKVXNlIGBvcGVuYXBpMy5Mb2FkZXJgLCB3aGljaCByZXNvbHZlcyBhbGwgcmVmZXJlbmNlczoKYGBgZ28KbG9hZGVyIDo9IG9wZW5hcGkzLk5ld0xvYWRlcigpCmRvYywgZXJyIDo9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIm15LW9wZW5hcGktc3BlYy5qc29uIikKYGBgCgojIyBHZXR0aW5nIE9wZW5BUEkgb3BlcmF0aW9uIHRoYXQgbWF0Y2hlcyByZXF1ZXN0CmBgYGdvCmxvYWRlciA6PSBvcGVuYXBpMy5OZXdMb2FkZXIoKQpkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRGF0YShbXWJ5dGUoYC4uLmApKQpfID0gZG9jLlZhbGlkYXRlKGxvYWRlci5Db250ZXh0KQpyb3V0ZXIsIF8gOj0gZ29yaWxsYW11eC5OZXdSb3V0ZXIoZG9jKQpyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXF1ZXN0KQovLyBEbyBzb21ldGhpbmcgd2l0aCByb3V0ZS5PcGVyYXRpb24KYGBgCgojIyBWYWxpZGF0aW5nIEhUVFAgcmVxdWVzdHMvcmVzcG9uc2VzCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJjb250ZXh0IgoJImZtdCIKCSJuZXQvaHR0cCIKCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMiCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNmaWx0ZXIiCgkiZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvcm91dGVycy9nb3JpbGxhbXV4IgopCgpmdW5jIG1haW4oKSB7CgljdHggOj0gY29udGV4dC5CYWNrZ3JvdW5kKCkKCWxvYWRlciA6PSAmb3BlbmFwaTMuTG9hZGVye0NvbnRleHQ6IGN0eCwgSXNFeHRlcm5hbFJlZnNBbGxvd2VkOiB0cnVlfQoJZG9jLCBfIDo9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIi4uLi9NeS1PcGVuQVBJdjMtQVBJLnltbCIpCgkvLyBWYWxpZGF0ZSBkb2N1bWVudAoJXyA9IGRvYy5WYWxpZGF0ZShjdHgpCglyb3V0ZXIsIF8gOj0gZ29yaWxsYW11eC5OZXdSb3V0ZXIoZG9jKQoJaHR0cFJlcSwgXyA6PSBodHRwLk5ld1JlcXVlc3QoaHR0cC5NZXRob2RHZXQsICIvaXRlbXMiLCBuaWwpCgoJLy8gRmluZCByb3V0ZQoJcm91dGUsIHBhdGhQYXJhbXMsIF8gOj0gcm91dGVyLkZpbmRSb3V0ZShodHRwUmVxKQoKCS8vIFZhbGlkYXRlIHJlcXVlc3QKCXJlcXVlc3RWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXR7CgkJUmVxdWVzdDogICAgaHR0cFJlcSwKCQlQYXRoUGFyYW1zOiBwYXRoUGFyYW1zLAoJCVJvdXRlOiAgICAgIHJvdXRlLAoJfQoJXyA9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpCgoJLy8gSGFuZGxlIHRoYXQgcmVxdWVzdAoJLy8gLS0+IFlPVVIgQ09ERSBHT0VTIEhFUkUgPC0tCglyZXNwb25zZUhlYWRlcnMgOj0gaHR0cC5IZWFkZXJ7IkNvbnRlbnQtVHlwZSI6IFtdc3RyaW5neyJhcHBsaWNhdGlvbi9qc29uIn19CglyZXNwb25zZUNvZGUgOj0gMjAwCglyZXNwb25zZUJvZHkgOj0gW11ieXRlKGB7fWApCgoJLy8gVmFsaWRhdGUgcmVzcG9uc2UKCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXNwb25zZVZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0VmFsaWRhdGlvbklucHV0OiByZXF1ZXN0VmFsaWRhdGlvbklucHV0LAoJCVN0YXR1czogICAgICAgICAgICAgICAgIHJlc3BvbnNlQ29kZSwKCQlIZWFkZXI6ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCgl9CglyZXNwb25zZVZhbGlkYXRpb25JbnB1dC5TZXRCb2R5Qnl0ZXMocmVzcG9uc2VCb2R5KQoJXyA9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVzcG9uc2UoY3R4LCByZXNwb25zZVZhbGlkYXRpb25JbnB1dCkKfQpgYGAKCiMjIEN1c3RvbSBjb250ZW50IHR5cGUgZm9yIGJvZHkgb2YgSFRUUCByZXF1ZXN0L3Jlc3BvbnNlCgpCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBwYXJzZXMgYSBib2R5IG9mIHRoZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlCmlmIGl0IGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb250ZW50IHR5cGVzOiBgInRleHQvcGxhaW4iYCBvciBgImFwcGxpY2F0aW9uL2pzb24iYC4KVG8gc3VwcG9ydCBvdGhlciBjb250ZW50IHR5cGVzIHlvdSBtdXN0IHJlZ2lzdGVyIGRlY29kZXJzIGZvciB0aGVtOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBib2R5J3MgZGVjb2RlciBmb3IgY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJb3BlbmFwaTNmaWx0ZXIuUmVnaXN0ZXJCb2R5RGVjb2RlcigiYXBwbGljYXRpb24veG1sIiwgeG1sQm9keURlY29kZXIpCgoJLy8gTm93IHlvdSBjYW4gdmFsaWRhdGUgSFRUUCByZXF1ZXN0IHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglpZiBlcnIgOj0gb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGVSZXF1ZXN0KGN0eCwgcmVxdWVzdFZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCgkvLyAuLi4KCgkvLyBBbmQgeW91IGNhbiB2YWxpZGF0ZSBIVFRQIHJlc3BvbnNlIHRoYXQgY29udGFpbnMgYSBib2R5IHdpdGggY29udGVudCB0eXBlICJhcHBsaWNhdGlvbi94bWwiLgoJaWYgZXJyIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVzcG9uc2UoY3R4LCByZXNwb25zZVZhbGlkYXRpb25JbnB1dCk7IGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KfQoKZnVuYyB4bWxCb2R5RGVjb2Rlcihib2R5IGlvLlJlYWRlciwgaCBodHRwLkhlYWRlciwgc2NoZW1hICpvcGVuYXBpMy5TY2hlbWFSZWYsIGVuY0ZuIG9wZW5hcGkzZmlsdGVyLkVuY29kaW5nRm4pIChkZWNvZGVkIGFueSwgZXJyIGVycm9yKSB7CgkvLyBEZWNvZGUgYm9keSB0byBhIHByaW1pdGl2ZSwgW11hbnksIG9yIG1hcFtzdHJpbmddYW55Lgp9CmBgYAoKIyMgQ3VzdG9tIGZ1bmN0aW9uIHRvIGNoZWNrIHVuaXF1ZW5lc3Mgb2YgYXJyYXkgaXRlbXMKCkJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGNoZWNrcyB1bmlxdWUgaXRlbXMgdXNpbmcgdGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9uOgoKYGBgZ28KZnVuYyBpc1NsaWNlT2ZVbmlxdWVJdGVtcyh4cyBbXWFueSkgYm9vbCB7CglzIDo9IGxlbih4cykKCW0gOj0gbWFrZShtYXBbc3RyaW5nXXN0cnVjdHt9LCBzKQoJZm9yIF8sIHggOj0gcmFuZ2UgeHMgewoJCWtleSwgXyA6PSBqc29uLk1hcnNoYWwoJngpCgkJbVtzdHJpbmcoa2V5KV0gPSBzdHJ1Y3R7fXt9Cgl9CglyZXR1cm4gcyA9PSBsZW4obSkKfQpgYGAKCkluIHRoZSBwcmVkZWZpbmVkIGZ1bmN0aW9uIGBqc29uLk1hcnNoYWxgIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzdHJpbmcgdGhhdCBjYW4KYmUgdXNlZCBhcyBhIG1hcCBrZXkgd2hpY2ggaXMgdG8gY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgYW4gYXJyYXkKd2hlbiB0aGUgYXJyYXkgaXRlbXMgYXJlIG9iamVjdHMgb3IgYXJyYXlzLiBZb3UgY2FuIHJlZ2lzdGVyCnlvdSBvd24gZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHlvdXIgaW5wdXQgZGF0YSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBjdXN0b21pemVkIGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheS4KCW9wZW5hcGkzLlJlZ2lzdGVyQXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIpCgoJLy8gLi4uIG90aGVyIHZhbGlkYXRlIGNvZGVzCn0KCmZ1bmMgYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoaXRlbXMgW11hbnkpIGJvb2wgewoJLy8gQ2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIGlucHV0IHNsaWNlCn0KYGBgCgojIyBDdXN0b20gZnVuY3Rpb24gdG8gY2hhbmdlIHNjaGVtYSBlcnJvciBtZXNzYWdlcwoKQnkgZGVmYXVsdCwgdGhlIGVycm9yIG1lc3NhZ2UgcmV0dXJuZWQgd2hlbiB2YWxpZGF0aW5nIGEgdmFsdWUgaW5jbHVkZXMgdGhlIGVycm9yIHJlYXNvbiwgdGhlIHNjaGVtYSwgYW5kIHRoZSBpbnB1dCB2YWx1ZS4KCkZvciBleGFtcGxlLCBnaXZlbiB0aGUgZm9sbG93aW5nIHNjaGVtYToKCmBgYGpzb24KewogICJ0eXBlIjogInN0cmluZyIsCiAgImFsbE9mIjogWwogICAgeyAicGF0dGVybiI6ICJbQS1aXSIgfSwKICAgIHsgInBhdHRlcm4iOiAiW2Etel0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlswLTldIiB9LAogICAgeyAicGF0dGVybiI6ICJbIUAjJCVeJiooKV8rPS0/fl0iIH0KICBdCn0KYGBgCgpQYXNzaW5nIHRoZSBpbnB1dCB2YWx1ZSBgInNlY3JldCJgIHRvIHRoaXMgc2NoZW1hIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2U6CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iClNjaGVtYToKICB7CiAgICAicGF0dGVybiI6ICJbQS1aXSIKICB9CgpWYWx1ZToKICAic2VjcmV0IgpgYGAKCkluY2x1ZGluZyB0aGUgb3JpZ2luYWwgdmFsdWUgaW4gdGhlIGVycm9yIG1lc3NhZ2UgY2FuIGJlIGhlbHBmdWwgZm9yIGRlYnVnZ2luZywgYnV0IGl0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBzdWNoIGFzIHNlY3JldHMuCgpUbyBkaXNhYmxlIHRoZSBleHRyYSBkZXRhaWxzIGluIHRoZSBzY2hlbWEgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBzZXQgdGhlIGBvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZGAgb3B0aW9uIHRvIGB0cnVlYDoKCmBgYGdvCmZ1bmMgbWFpbigpIHsKCS8vIC4uLgoKCS8vIERpc2FibGUgc2NoZW1hIGVycm9yIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzCglvcGVuYXBpMy5TY2hlbWFFcnJvckRldGFpbHNEaXNhYmxlZCA9IHRydWUKCgkvLyAuLi4gb3RoZXIgdmFsaWRhdGUgY29kZXMKfQpgYGAKClRoaXMgd2lsbCBzaG9ydGVuIHRoZSBlcnJvciBtZXNzYWdlIHRvIHByZXNlbnQgb25seSB0aGUgcmVhc29uOgoKYGBgCnN0cmluZyBkb2Vzbid0IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gIltBLVpdIgpgYGAKCkZvciBtb3JlIGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIGVycm9yIG1lc3NhZ2UsIHlvdSBjYW4gcGFzcyBhIGN1c3RvbSBgb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc2Agb2JqZWN0IHRvIGBvcGVuYXBpM2ZpbHRlci5SZXF1ZXN0VmFsaWRhdGlvbklucHV0YCB0aGF0IGluY2x1ZGVzIGEgYG9wZW5hcGkzZmlsdGVyLkN1c3RvbVNjaGVtYUVycm9yRnVuY2AuCgpgYGBnbwpmdW5jIHZhbGlkYXRpb25PcHRpb25zKCkgKm9wZW5hcGkzZmlsdGVyLk9wdGlvbnMgewoJb3B0aW9ucyA6PSAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9CglvcHRpb25zLldpdGhDdXN0b21TY2hlbWFFcnJvckZ1bmMoc2FmZUVycm9yTWVzc2FnZSkKCXJldHVybiBvcHRpb25zCn0KCmZ1bmMgc2FmZUVycm9yTWVzc2FnZShlcnIgKm9wZW5hcGkzLlNjaGVtYUVycm9yKSBzdHJpbmcgewoJcmV0dXJuIGVyci5SZWFzb24KfQpgYGAKClRoaXMgd2lsbCBjaGFuZ2UgdGhlIHNjaGVtYSB2YWxpZGF0aW9uIGVycm9ycyB0byByZXR1cm4gb25seSB0aGUgYFJlYXNvbmAgZmllbGQsIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gbm90IGluY2x1ZGUgdGhlIG9yaWdpbmFsIHZhbHVlLgoKIyMgUmVjb25jaWxpbmcgY29tcG9uZW50ICRyZWYgdHlwZXMKCmBSZWZlcmVuY2VzQ29tcG9uZW50SW5Sb290RG9jdW1lbnRgIGlzIGEgdXNlZnVsIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNvbXBvbmVudCByZWZlcmVuY2UKY29pbmNpZGVzIHdpdGggYSByZWZlcmVuY2UgaW4gdGhlIHJvb3QgZG9jdW1lbnQncyBjb21wb25lbnQgb2JqZWN0cyBmaXhlZCBmaWVsZHMuCgpUaGlzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBpZiB0d28gc2NoZW1hIGRlZmluaXRpb25zIGFyZSBvZiB0aGUgc2FtZSBzdHJ1Y3R1cmUsIGhlbHBmdWwgZm9yCmNvZGUgZ2VuZXJhdGlvbiB0b29scyB3aGVuIGdlbmVyYXRpbmcgZ28gdHlwZSBtb2RlbHMuCgpgYGBnbwpkb2MsIGVyciA9IGxvYWRlci5Mb2FkRnJvbUZpbGUoIm9wZW5hcGkueW1sIikKCmZvciBfLCBwYXRoIDo9IHJhbmdlIGRvYy5QYXRocy5Jbk1hdGNoaW5nT3JkZXIoKSB7CglwYXRoSXRlbSA6PSBkb2MuUGF0aHMuRmluZChwYXRoKQoKCWlmIHBhdGhJdGVtLkdldCA9PSBuaWwgfHwgcGF0aEl0ZW0uR2V0LlJlc3BvbnNlcy5TdGF0dXMoMjAwKSB7CgkJY29udGludWUKCX0KCglmb3IgXywgcyA6PSByYW5nZSBwYXRoSXRlbS5HZXQuUmVzcG9uc2VzLlN0YXR1cygyMDApLlZhbHVlLkNvbnRlbnQgewoJCW5hbWUsIG1hdGNoIDo9IFJlZmVyZW5jZXNDb21wb25lbnRJblJvb3REb2N1bWVudChkb2MsIHMuU2NoZW1hKQoJCWZtdC5QcmludGxuKHBhdGgsIG1hdGNoLCBuYW1lKSAvLyAvcmVjb3JkIHRydWUgIy9jb21wb25lbnRzL3NjaGVtYXMvQm9va1JlY29yZAoJfQp9CmBgYAoKIyMgQ0hBTkdFTE9HOiBTdWItdjEgYnJlYWtpbmcgQVBJIGNoYW5nZXMKCiMjIyB2MC4xMjcuMAoqIERvd25ncmFkZWQgYGdpdGh1Yi5jb20vZ29yaWxsYS9tdXhgIGRlcCBmcm9tIGAxLjguMWAgdG8gYDEuOC4wYC4KCiMjIyB2MC4xMjYuMAoqIGBvcGVuYXBpMy5DaXJjdWxhclJlZmVyZW5jZUVycm9yYCBhbmQgYG9wZW5hcGkzLkNpcmN1bGFyUmVmZXJlbmNlQ291bnRlcmAgYXJlIHJlbW92ZWQuIGBvcGVuYXBpMy5Mb2FkZXJgIG5vdyBpbXBsZW1lbnRzIHJlZmVyZW5jZSBiYWNrdHJhY2tpbmcsIHNvIGFueSBraW5kIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgc2hvdWxkIGJlIHByb3Blcmx5IHJlc29sdmVkLgoqIGBJbnRlcm5hbGl6ZVJlZnNgIG5vdyB0YWtlcyBhIHJlZk5hbWVSZXNvbHZlciB0aGF0IGhhcyBhY2Nlc3MgdG8gYG9wZW5hcGkzLlRgIGFuZCBtb3JlIHByb3BlcnRpZXMgb2YgdGhlIHJlZmVyZW5jZSBuZWVkaW5nIHJlc29sdmluZy4KKiBUaGUgYERlZmF1bHRSZWZOYW1lUmVzb2x2ZXJgIGhhcyBiZWVuIHVwZGF0ZWQsIGNob29zaW5nIG5hbWVzIHRoYXQgd2lsbCBiZSBsZXNzIGxpa2VseSB0byBjb2xsaWRlIHdpdGggZWFjaCBvdGhlci4gQmVjYXVzZSBvZiB0aGlzIGludGVybmFsaXplZCBzcGVjcyB3aWxsIGxpa2VseSBjaGFuZ2Ugc2xpZ2h0bHkuCiogYG9wZW5hcGkzLkZvcm1hdGAgYW5kIGBvcGVuYXBpMy5Gb3JtYXRDYWxsYmFja2AgYXJlIHJlbW92ZWQgYW5kIHRoZSB0eXBlIG9mIGBvcGVuYXBpMy5TY2hlbWFTdHJpbmdGb3JtYXRzYCBoYXMgY2hhbmdlZC4KCiMjIyB2MC4xMjUuMAoqIFRoZSBgb3BlbmFwaTNmaWx0ZXIuRXJyRnVuY2AgYW5kIGBvcGVuYXBpM2ZpbHRlci5Mb2dGdW5jYCBmdW5jIHR5cGVzIG5vdyB0YWtlIHRoZSB2YWxpZGF0ZWQgcmVxdWVzdCdzIGNvbnRleHQgYXMgZmlyc3QgYXJndW1lbnQuCgojIyMgdjAuMTI0LjAKKiBgb3BlbmFwaTMuU2NoZW1hLlR5cGVgICYgYG9wZW5hcGkyLlBhcmFtZXRlci5UeXBlYCBmaWVsZHMgd2VudCBmcm9tIGEgYHN0cmluZ2AgdG8gdGhlIHR5cGUgYCpUeXBlYCB3aXRoIG1ldGhvZHM6IGBJbmNsdWRlc2AsIGBJc2AsIGBQZXJtaXRzYCAmIGBTbGljZWAuCgojIyMgdjAuMTIyLjAKKiBgUGF0aHNgIGZpZWxkIG9mIGBvcGVuYXBpMy5UYCBpcyBub3cgYSBwb2ludGVyCiogYFJlc3BvbnNlc2AgZmllbGQgb2YgYG9wZW5hcGkzLk9wZXJhdGlvbmAgaXMgbm93IGEgcG9pbnRlcgoqIGBvcGVuYXBpMy5QYXRoc2Agd2VudCBmcm9tIGBtYXBbc3RyaW5nXSpQYXRoSXRlbWAgdG8gYSBzdHJ1Y3Qgd2l0aCBhbiBgRXh0ZW5zaW9uc2AgZmllbGQgYW5kIG1ldGhvZHM6IGBTZXRgLCBgVmFsdWVgLCBgTGVuYCwgYE1hcGAsIGFuZCBgTmV3KmAuCiogYG9wZW5hcGkzLkNhbGxiYWNrYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlBhdGhJdGVtYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgb3BlbmFwaTMuUmVzcG9uc2VzYCB3ZW50IGZyb20gYG1hcFtzdHJpbmddKlJlc3BvbnNlUmVmYCB0byBhIHN0cnVjdCB3aXRoIGFuIGBFeHRlbnNpb25zYCBmaWVsZCBhbmQgbWV0aG9kczogYFNldGAsIGBWYWx1ZWAsIGBMZW5gLCBgTWFwYCwgYW5kIGBOZXcqYC4KKiBgKG9wZW5hcGkzLlJlc3BvbnNlcykuR2V0KGludClgIHJlbmFtZWQgdG8gYCgqb3BlbmFwaTMuUmVzcG9uc2VzKS5TdGF0dXMoaW50KWAKCiMjIyB2MC4xMjEuMAoqIEludHJvZHVjZSBgb3BlbmFwaTMuUmVxdWVzdEJvZGllc2AgKGFuIGFsaWFzIG9uIGBtYXBbc3RyaW5nXSpvcGVuYXBpMy5SZXNwb25zZVJlZmApIGFuZCB1c2UgaXQgaW4gcGxhY2Ugb2YgYG9wZW5hcGkzLlJlc3BvbnNlc2AgZm9yIGZpZWxkIGBvcGVuYXBpMy5Db21wb25lbnRzLlJlc3BvbnNlc2AuCgojIyMgdjAuMTE2LjAKKiBEcm9wcGVkIGBvcGVuYXBpM2ZpbHRlci5EZWZhdWx0T3B0aW9uc2AuIFVzZSBgJm9wZW5hcGkzZmlsdGVyLk9wdGlvbnN7fWAgZGlyZWN0bHkgaW5zdGVhZC4KCiMjIyB2MC4xMTMuMAoqIFRoZSBzdHJpbmcgZm9ybWF0IGBlbWFpbGAgaGFzIGJlZW4gcmVtb3ZlZCBieSBkZWZhdWx0LiBUbyB1c2UgaXQgcGxlYXNlIGNhbGwgYG9wZW5hcGkzLkRlZmluZVN0cmluZ0Zvcm1hdCgiZW1haWwiLCBvcGVuYXBpMy5Gb3JtYXRPZlN0cmluZ0ZvckVtYWlsKWAuCiogRmllbGQgYG9wZW5hcGkzLlQuQ29tcG9uZW50c2AgaXMgbm93IGEgcG9pbnRlci4KKiBGaWVsZHMgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc2AgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXNBbGxvd2VkYCBhcmUgcmVwbGFjZWQgYnkgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllcy5TY2hlbWFgIGFuZCBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLkhhc2AgcmVzcGVjdGl2ZWx5LgoqIFR5cGUgYG9wZW5hcGkzLkV4dGVuc2lvblByb3BzYCBpcyBub3cganVzdCBgbWFwW3N0cmluZ11hbnlgIGFuZCBleHRlbnNpb25zIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIGBFeHRlbnNpb25zYCBmaWVsZC4KCiMjIyB2MC4xMTIuMAoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLkV4YW1wbGVzVmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLlNjaGVtYUZvcm1hdFZhbGlkYXRpb25FbmFibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoqIGAob3BlbmFwaTMuVmFsaWRhdGlvbk9wdGlvbnMpLlNjaGVtYVBhdHRlcm5WYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHVuZXhwb3J0ZWQuCgojIyMgdjAuMTExLjAKKiBDaGFuZ2VkIGBmdW5jICgqXykgVmFsaWRhdGUoY3R4IGNvbnRleHQuQ29udGV4dCkgZXJyb3JgIHRvIGBmdW5jICgqXykgVmFsaWRhdGUoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAuLi5WYWxpZGF0aW9uT3B0aW9uKSBlcnJvcmAuCiogYG9wZW5hcGkzLldpdGhWYWxpZGF0aW9uT3B0aW9ucyhjdHggY29udGV4dC5Db250ZXh0LCBvcHRzICpWYWxpZGF0aW9uT3B0aW9ucykgY29udGV4dC5Db250ZXh0YCBwcm90b3R5cGUgY2hhbmdlZCB0byBgb3BlbmFwaTMuV2l0aFZhbGlkYXRpb25PcHRpb25zKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgLi4uVmFsaWRhdGlvbk9wdGlvbikgY29udGV4dC5Db250ZXh0YC4KCiMjIyB2MC4xMDEuMAoqIGBvcGVuYXBpMy5TY2hlbWFGb3JtYXRWYWxpZGF0aW9uRGlzYWJsZWRgIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3VyIG9mIGFuIG9wdGlvbiBgb3BlbmFwaTMuRW5hYmxlU2NoZW1hRm9ybWF0VmFsaWRhdGlvbigpYCBwYXNzZWQgdG8gYG9wZW5hcGkzLlQuVmFsaWRhdGVgLiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgYWxzbyBub3cgdG8gbm90IHZhbGlkYXRlIGZvcm1hdHMsIGFzIHRoZSBPcGVuQVBJIHNwZWMgbWVudGlvbnMgdGhlIGBmb3JtYXRgIGlzIGFuIG9wZW4gdmFsdWUuCgojIyMgdjAuODQuMAoqIFRoZSBwcm90b3R5cGUgb2YgYG9wZW5hcGkzZ2VuLk5ld1NjaGVtYVJlZkZvclZhbHVlYCBjaGFuZ2VkOgoJKiBJdCBubyBsb25nZXIgcmV0dXJucyBhIG1hcCBidXQgdGhhdCBpcyBzdGlsbCBhY2Nlc3NpYmxlIHVuZGVyIHRoZSBmaWVsZCBgKCpHZW5lcmF0b3IpLlNjaGVtYVJlZnNgLgoJKiBJdCBub3cgdGFrZXMgaW4gYW4gYWRkaXRpb25hbCBhcmd1bWVudCAoYmFzaWNhbGx5IGBkb2MuQ29tcG9uZW50cy5TY2hlbWFzYCkgd2hpY2ggZ2V0cyB3cml0dGVuIHRvIHNvIGAkcmVmYCBjeWNsZXMgY2FuIGJlIHByb3Blcmx5IGhhbmRsZWQuCgojIyMgdjAuNjEuMAoqIFJlbmFtZWQgYG9wZW5hcGkyLlN3YWdnZXJgIHRvIGBvcGVuYXBpMi5UYC4KKiBSZW5hbWVkIGBvcGVuYXBpMmNvbnYuRnJvbVYzU3dhZ2dlcmAgdG8gYG9wZW5hcGkyY29udi5Gcm9tVjNgLgoqIFJlbmFtZWQgYG9wZW5hcGkyY29udi5Ub1YzU3dhZ2dlcmAgdG8gYG9wZW5hcGkyY29udi5Ub1YzYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21EYXRhYCB0byBgb3BlbmFwaTMuTG9hZEZyb21EYXRhYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Mb2FkU3dhZ2dlckZyb21EYXRhV2l0aFBhdGhgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbURhdGFXaXRoUGF0aGAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRmlsZWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRmlsZWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tVVJJYCB0byBgb3BlbmFwaTMuTG9hZEZyb21VUklgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLk5ld1N3YWdnZXJMb2FkZXJgIHRvIGBvcGVuYXBpMy5OZXdMb2FkZXJgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLlN3YWdnZXJgIHRvIGBvcGVuYXBpMy5UYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyYCB0byBgb3BlbmFwaTMuTG9hZGVyYC4KKiBSZW5hbWVkIGBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0aW9uSGFuZGxlci5Td2FnZ2VyRmlsZWAgdG8gYG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRpb25IYW5kbGVyLkZpbGVgLgoqIFJlbmFtZWQgYHJvdXRlcnMuUm91dGUuU3dhZ2dlcmAgdG8gYHJvdXRlcnMuUm91dGUuU3BlY2AuCgojIyMgdjAuNTEuMAoqIFR5cGUgYG9wZW5hcGkzZmlsdGVyLlJvdXRlYCBtb3ZlZCB0byBgcm91dGVyc2AgKGFuZCBgUm91dGUuSGFuZGxlcmAgd2FzIGRyb3BwZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2lzc3Vlcy8zMjkpCiogVHlwZSBgb3BlbmFwaTNmaWx0ZXIuUm91dGVFcnJvcmAgbW92ZWQgdG8gYHJvdXRlcnNgIChzbyBkaWQgYEVyclBhdGhOb3RGb3VuZGAgYW5kIGBFcnJNZXRob2ROb3RBbGxvd2VkYCB3aGljaCBhcmUgbm93IGBSb3V0ZUVycm9yYHMpCiogUm91dGVycycgYEZpbmRSb3V0ZSguLi4pYCBtZXRob2Qgbm93IHRha2VzIG9ubHkgb25lIGFyZ3VtZW50OiBgKmh0dHAuUmVxdWVzdGAKKiBgZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyLlJvdXRlcmAgbW92ZWQgdG8gYGdldGtpbi9raW4tb3BlbmFwaS9yb3V0ZXJzL2xlZ2FjeWAKKiBgb3BlbmFwaTNmaWx0ZXIuTmV3Um91dGVyKClgIGFuZCBpdHMgcmVsYXRlZCBgV2l0aFN3YWdnZXJGcm9tRmlsZShzdHJpbmcpYCwgYFdpdGhTd2FnZ2VyKCpvcGVuYXBpMy5Td2FnZ2VyKWAsIGBBZGRTd2FnZ2VyRnJvbUZpbGUoc3RyaW5nKWAgYW5kIGBBZGRTd2FnZ2VyKCpvcGVuYXBpMy5Td2FnZ2VyKWAgYXJlIGFsbCByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGA8cm91dGVyIHBhY2thZ2U+Lk5ld1JvdXRlcigqb3BlbmFwaTMuU3dhZ2dlcilgCgkqIE5PVEU6IHRoZSBgTmV3Um91dGVyKGRvYylgIGNhbGwgbm93IHJlcXVpcmVzIHRoYXQgdGhlIHVzZXIgZW5zdXJlcyBgZG9jYCBpcyB2YWxpZCAoYGRvYy5WYWxpZGF0ZSgpICE9IG5pbGApLiBUaGlzIHVzZWQgdG8gYmUgYXNzZXJ0ZWQuCgojIyMgdjAuNDcuMApGaWVsZCBgKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyKS5Mb2FkU3dhZ2dlckZyb21VUklGdW5jYCBvZiB0eXBlIGBmdW5jKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyLCAqdXJsLlVSTCkgKCpvcGVuYXBpMy5Td2FnZ2VyLCBlcnJvcilgIHdhcyByZW1vdmVkIGFmdGVyIHRoZSBhZGRpdGlvbiBvZiB0aGUgZmllbGQgYCgqb3BlbmFwaTMuU3dhZ2dlckxvYWRlcikuUmVhZEZyb21VUklGdW5jYCBvZiB0eXBlIGBmdW5jKCpvcGVuYXBpMy5Td2FnZ2VyTG9hZGVyLCAqdXJsLlVSTCkgKFtdYnl0ZSwgZXJyb3IpYC4K + readmeEtag: '"41335937a8f364ae5918b807df60131154f15183"' + readmeLastModified: Tue, 08 Oct 2024 08:58:50 GMT repositoryId: 94029207 description: >- OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) created: '2017-06-11T20:12:06Z' - updated: '2024-10-07T06:55:17Z' + updated: '2024-10-08T08:58:54Z' language: Go archived: false stars: 2580 @@ -3178,8 +3178,8 @@ owner: getkin logo: https://avatars.githubusercontent.com/u/40365715?v=4 license: MIT - repoEtag: '"a66989d14167f8559d9e4f479db95f1c5eafa4374543d92a2d8a61a9cfc51e15"' - repoLastModified: Mon, 07 Oct 2024 06:55:17 GMT + repoEtag: '"56fde4297c32d954347956e5c66f24faa43359b4d2602f0c0bad8bb213c387e7"' + repoLastModified: Tue, 08 Oct 2024 08:58:54 GMT foundInMaster: true v2: true id: f6838ce08e87fa4c3dc813c97193ece3 @@ -3378,17 +3378,17 @@ in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model. created: '2017-07-14T00:24:14Z' - updated: '2024-10-04T07:44:13Z' + updated: '2024-10-08T22:21:08Z' language: C# archived: false - stars: 1393 + stars: 1394 watchers: 64 forks: 230 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"93efb5e4f27da62aaa183e19c61822bce3104c4f7d474a267137a6a6134eb2f1"' - repoLastModified: Fri, 04 Oct 2024 07:44:13 GMT + repoEtag: '"b4bc59ce51d40ce25af7a1926470aeb881ef19b36ba39b2164b9d56133576a68"' + repoLastModified: Tue, 08 Oct 2024 22:21:08 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 - source: @@ -3693,11 +3693,11 @@ archived: false stars: 6736 watchers: 167 - forks: 1291 + forks: 1290 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT - repoEtag: '"ca1e13be38f2cc95ad1dcf1381868d9a91608d00cc174984cc9abff2d9664989"' + repoEtag: '"42ef8b19192cfb1136b8711440fb57b16068563f7939f743a1efb5fdef6b3419"' repoLastModified: Mon, 07 Oct 2024 16:45:25 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 @@ -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-07T23:21:58Z' + updated: '2024-10-08T07:44:25Z' language: Mustache archived: false - stars: 16942 + stars: 16944 watchers: 413 - forks: 6029 + forks: 6031 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"a3ece29d0a42cffd4832129e3f5932d87b1411c4137df15374c616c5d37ee9e2"' - repoLastModified: Mon, 07 Oct 2024 23:21:58 GMT + repoEtag: '"421d3704cbab6335ee10e3cbdfc25c547e88ca4d2db33b014bd02e6d2a061564"' + repoLastModified: Tue, 08 Oct 2024 07:44:25 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-07T06:35:23Z' + updated: '2024-10-09T02:19:04Z' language: TypeScript archived: false - stars: 4604 + stars: 4603 watchers: 899 forks: 734 owner: Azure logo: https://avatars.githubusercontent.com/u/6844498?v=4 license: MIT - repoEtag: '"c8cbea5f123c7fc5581978883d3aa222f15ce5799cedcf4cca92505087088972"' - repoLastModified: Mon, 07 Oct 2024 06:35:23 GMT + repoEtag: '"d0d6a6958bf4314abbe7cc074dfbf66440f763220d8e2444237dce0e3a40b489"' + repoLastModified: Wed, 09 Oct 2024 02:19:04 GMT foundInMaster: true id: 648d92bca90bf58cd74407e0bcad2936 - source: https://openapi.tools/ @@ -4189,17 +4189,17 @@ Black-box fuzzer that fuzzes APIs based on OpenAPI specification. Find bugs for free! created: '2020-12-23T22:33:38Z' - updated: '2024-09-27T09:58:32Z' + updated: '2024-10-08T08:43:03Z' language: Rust archived: false - stars: 533 + stars: 534 watchers: 8 - forks: 22 + forks: 23 owner: matusf logo: https://avatars.githubusercontent.com/u/18228995?v=4 license: AGPL-3.0 - repoEtag: '"2ae4c8e54b42f13068ff90741a803198eae7f1af32c7ad90219f0324eaee9c98"' - repoLastModified: Fri, 27 Sep 2024 09:58:32 GMT + repoEtag: '"7e0d3311b14fe6ba5d2dbdc0d33fd56631df4a529565d30a0875f8ce45d1a9ff"' + repoLastModified: Tue, 08 Oct 2024 08:43:03 GMT id: 9e0191ba47403298459b30242dbfe9ad - source: https://openapi.tools/ name: cats @@ -4230,17 +4230,17 @@ configuration and no coding effort. Tests are self-healing and do not require maintenance. created: '2020-04-02T13:14:39Z' - updated: '2024-10-07T19:33:11Z' + updated: '2024-10-08T20:16:01Z' language: Java archived: false stars: 1175 watchers: 14 - forks: 74 + forks: 73 owner: Endava logo: https://avatars.githubusercontent.com/u/19396140?v=4 license: Apache-2.0 - repoEtag: '"26f01adcfce4b88628569bc109c57752511b9f1d86bbd0de32929e5d4c9cb048"' - repoLastModified: Mon, 07 Oct 2024 19:33:11 GMT + repoEtag: '"d6f28e779281f849f817ba4b21e1c96ac764550c87adf7c6afe734d167d51f6f"' + repoLastModified: Tue, 08 Oct 2024 20:16:01 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-08T02:05:58Z' + updated: '2024-10-08T17:35:14Z' language: HTML archived: false - stars: 5050 + stars: 5053 watchers: 23 forks: 219 owner: alufers logo: https://avatars.githubusercontent.com/u/5400940?v=4 - repoEtag: '"1afaf61f9c27ee482862df6a581493e1416f8d001140f6e1743832b601c11aae"' - repoLastModified: Tue, 08 Oct 2024 02:05:58 GMT + repoEtag: '"b759c5a82d51ac37cf08a59931abdc8b91580124916a8822a77684f2e7e6451a"' + repoLastModified: Tue, 08 Oct 2024 17:35:14 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-07T21:08:40Z' + updated: '2024-10-08T20:25:13Z' language: C# archived: false - stars: 488 + stars: 491 watchers: 16 forks: 57 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"b0fcd77abb9704679a1740816c91a89889fd0472f6710ea9e0a1b1981368bca5"' - repoLastModified: Mon, 07 Oct 2024 21:08:40 GMT + repoEtag: '"034979363b0b0c9c9e05fa0d05a7dc63b7f6e32a6e77451f6252c951403e14a9"' + repoLastModified: Tue, 08 Oct 2024 20:25:13 GMT foundInMaster: true - source: https://openapi.tools/ name: har2openapi @@ -4539,16 +4539,16 @@ repositoryId: 262170349 description: Generate openapi spec api documentation from captured har files created: '2020-05-07T22:19:19Z' - updated: '2024-09-26T22:14:38Z' + updated: '2024-10-08T15:27:12Z' language: JavaScript archived: false - stars: 150 + stars: 151 watchers: 8 forks: 22 owner: dcarr178 logo: https://avatars.githubusercontent.com/u/2379611?v=4 - repoEtag: '"76c5edb8e6660510256502a0bae99f8bd143e0c6de176d1fc50a6060c53cada3"' - repoLastModified: Thu, 26 Sep 2024 22:14:38 GMT + repoEtag: '"465e6e01a55d5af84415ca8b13116904d61ab762647e921101cd3081276c6de6"' + repoLastModified: Tue, 08 Oct 2024 15:27:12 GMT foundInMaster: true id: 4df801fc431a2975d8981b7c4879ff7a - source: https://openapi.tools/ @@ -4572,16 +4572,16 @@ repositoryId: 519317344 description: HAR to OpenAPI spec generator created: '2022-07-29T18:43:20Z' - updated: '2024-10-03T23:33:09Z' + updated: '2024-10-08T15:27:46Z' language: TypeScript archived: false - stars: 83 + stars: 84 watchers: 2 forks: 10 owner: jonluca logo: https://avatars.githubusercontent.com/u/13029040?v=4 - repoEtag: '"550d2fef3b40e29adecca41946bf739652a852e14aa139fa8c11ba62c81cfcff"' - repoLastModified: Thu, 03 Oct 2024 23:33:09 GMT + repoEtag: '"b09695f9250787876654e6794fc9951849742ddc7a2f625b28b3bd2be6052175"' + repoLastModified: Tue, 08 Oct 2024 15:27:46 GMT foundInMaster: true - source: https://openapi.tools/ name: GranthAi @@ -4686,17 +4686,17 @@ repositoryId: 381857226 description: null created: '2021-06-30T23:29:49Z' - updated: '2024-10-08T03:16:12Z' + updated: '2024-10-09T02:54:49Z' language: Java archived: false - stars: 4360 + stars: 4367 watchers: 45 - forks: 203 + forks: 204 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"fd177ef0636cf68c1a3318c11d2334d39792f282e727844cfd3b8ebe92b6c5d9"' - repoLastModified: Tue, 08 Oct 2024 03:16:12 GMT + repoEtag: '"061f85c3344f7c7669dae3e376a9944ff5a6da3657e08848dda1f629b458c0d6"' + repoLastModified: Wed, 09 Oct 2024 02:54:49 GMT category: - Auto Generators - Server Implementations @@ -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-07T15:49:03Z' + updated: '2024-10-08T06:34:09Z' language: JavaScript archived: false - stars: 915 + stars: 914 watchers: 22 forks: 196 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 - repoEtag: '"74b8830aeefe83f76e1adbb6ccf77ad6af2620488e232abcecbbabc65dec620a"' - repoLastModified: Mon, 07 Oct 2024 15:49:03 GMT + repoEtag: '"8d6e747e8666233a736d0a57312f6d138859e70a019e94fffe1b98c53ee5be3e"' + repoLastModified: Tue, 08 Oct 2024 06:34:09 GMT foundInMaster: true id: 31b717a2084e3d92f6cda2c33484c789 v3_link: true @@ -4926,7 +4926,7 @@ owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT - repoEtag: '"9d2561e7d22f640122a19fc35d525dcaa0061bb5c68ab5f52165291f32db3399"' + repoEtag: '"96fab954ebd4ead604972a6dda946ddff8d060fcb02a68d187fb3c0e7ec254c6"' 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-07T19:00:47Z' + updated: '2024-10-08T22:20:28Z' language: Java archived: false - stars: 12581 + stars: 12585 watchers: 395 forks: 2249 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 - repoEtag: '"5a66096a5192a4bad7682bd619bcd608e7c018a0b7efb0f94e19e3eec0f7a235"' - repoLastModified: Mon, 07 Oct 2024 19:00:47 GMT + repoEtag: '"6d813864b39d372afc46970f983273a528b1b546353ad4fe8370b9fcc63f85a1"' + repoLastModified: Tue, 08 Oct 2024 22:20:28 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: @@ -5364,17 +5364,17 @@ repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' - updated: '2024-10-07T20:08:01Z' + updated: '2024-10-09T03:26:28Z' language: Python archived: false - stars: 28232 + stars: 28241 watchers: 628 - forks: 6819 + forks: 6820 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION - repoEtag: '"c4dd2e140ad340c40e7841df2bc1c111e3cf0f76b848abd7219a35d6ebeb62b0"' - repoLastModified: Mon, 07 Oct 2024 20:08:01 GMT + repoEtag: '"5f3c68c50e9baf2206f7b0467d8b61f796a0398d5fa70d80e852af8dda5988fc"' + repoLastModified: Wed, 09 Oct 2024 03:26:28 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-07T23:55:25Z' + updated: '2024-10-08T16:40:12Z' language: Python archived: false - stars: 1282 + stars: 1283 watchers: 13 forks: 197 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT - repoEtag: '"2ddc3c36f44e1a7d498914ad81e060a44b4c7330a68c6a7a305ed5c6201597b2"' - repoLastModified: Mon, 07 Oct 2024 23:55:25 GMT + repoEtag: '"546e92a312735c95b36b598b8a745db435e745fc5e516be339bf1049cf94e4db"' + repoLastModified: Tue, 08 Oct 2024 16:40:12 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-07T14:30:18Z' + updated: '2024-10-09T03:28:02Z' language: TypeScript archived: false - stars: 1742 + stars: 1744 watchers: 18 forks: 202 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"189fe8818e41805208f1848cab47d646752ebee2c4fb9983ee508ee7a78397e6"' - repoLastModified: Mon, 07 Oct 2024 14:30:18 GMT + repoEtag: '"f1b77e611c92e9916c198b562bc76f64acc23e61ffec2cbe1b6ca9f2e03325fc"' + repoLastModified: Wed, 09 Oct 2024 03:28:02 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec - source: @@ -5630,11 +5630,11 @@ archived: false stars: 31 watchers: 7 - forks: 7 + forks: 6 owner: nfroidure logo: https://avatars.githubusercontent.com/u/229633?v=4 license: MIT - repoEtag: '"9386a73b63265cdfee4801e1e8a98b439d3e6d6fcb513787a93ac85148107902"' + repoEtag: '"ba23a434d610a9dd8c21a128e64f6ea00357cf7b917413688b30faf5542e78bb"' repoLastModified: Wed, 02 Oct 2024 09:23:27 GMT foundInMaster: true name: Whook @@ -5735,17 +5735,17 @@ undefined user behaviour by auditing your API specifications, validating them and running API security tests. created: '2021-11-17T07:02:22Z' - updated: '2024-10-06T10:31:08Z' + updated: '2024-10-09T00:00:38Z' language: Rust archived: false - stars: 1123 + stars: 1125 watchers: 12 - forks: 78 + forks: 80 owner: blst-security logo: https://avatars.githubusercontent.com/u/54233087?v=4 license: Apache-2.0 - repoEtag: '"868bb5843d12453a43668696041839e0c9e27a3cdcdc2525f6b3c199a359d412"' - repoLastModified: Sun, 06 Oct 2024 10:31:08 GMT + repoEtag: '"7ac76d8d39dba2e094d149ba1670619d561d4d0fafb0eff97a886d9a781fd7bc"' + repoLastModified: Wed, 09 Oct 2024 00:00:38 GMT foundInMaster: true name: Cherrybomb category: Description Validators @@ -6083,7 +6083,7 @@ owner: daveshanley logo: https://avatars.githubusercontent.com/u/187345?v=4 license: MIT - repoEtag: '"92e2ce4b18519416fe343c825fcbb8d6d1338e81d68238511ab18a6087b8cfe8"' + repoEtag: '"297747b3b6766bdbf704b02a3a8660190305ffb9d43f48cd087c01d035c9265e"' repoLastModified: Fri, 04 Oct 2024 11:10:09 GMT foundInMaster: true category: @@ -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-08T02:08:31Z' + updated: '2024-10-08T03:46:21Z' language: Go archived: false - stars: 454 + stars: 455 watchers: 7 forks: 59 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"3d7beaa27bd7e82e203b81240a71435dff13192bd47ec4c7879457e64a2ebd31"' - repoLastModified: Tue, 08 Oct 2024 02:08:31 GMT + repoEtag: '"0324e4b35aeaceb71276da95a10cd41f74c5894dba8dc6dd82ffaf33c6bdc212"' + repoLastModified: Tue, 08 Oct 2024 03:46:21 GMT category: Parsers foundInMaster: true name: libopenapi @@ -6474,7 +6474,7 @@ Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends. created: '2020-03-16T13:33:07Z' - updated: '2024-10-07T07:43:09Z' + updated: '2024-10-08T20:28:53Z' language: Kotlin archived: false stars: 275 @@ -6483,8 +6483,8 @@ owner: znsio logo: https://avatars.githubusercontent.com/u/75619722?v=4 license: MIT - repoEtag: '"959300e653019a35df824f37a0c07ed62f2f2c5163c06a92f4ed11f2fd51b32d"' - repoLastModified: Mon, 07 Oct 2024 07:43:09 GMT + repoEtag: '"8e350168587490feb183b59581c8019176b24dfca0a8d2c7a3d1afcfdc89cf36"' + repoLastModified: Tue, 08 Oct 2024 20:28:53 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -6545,17 +6545,17 @@ Library add improve test log for RSpec and WebMock, validate its according to API Blueprint and Open API, show the documentation coverage with log. created: '2017-02-06T09:32:39Z' - updated: '2024-10-02T23:37:55Z' + updated: '2024-10-08T21:03:14Z' language: Ruby archived: false - stars: 56 + stars: 57 watchers: 8 forks: 9 owner: tuwilof logo: https://avatars.githubusercontent.com/u/5956924?v=4 license: MIT - repoEtag: '"76c38e5b5fe8ba4c4c8a8b233a4bc2bddb0e7f357c137092dd2a26ba1f557526"' - repoLastModified: Wed, 02 Oct 2024 23:37:55 GMT + repoEtag: '"e181cf499e1ab9b7aa104e34804b2f2b3cac735d155043189789637fded260f9"' + repoLastModified: Tue, 08 Oct 2024 21:03:14 GMT category: - Testing - Data Validators @@ -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-07T23:32:46Z' + updated: '2024-10-08T05:50:46Z' language: Ruby archived: false - stars: 1975 + stars: 1976 watchers: 28 forks: 428 owner: rswag logo: https://avatars.githubusercontent.com/u/55741034?v=4 license: MIT - repoEtag: '"b40e2d883c6265fe0377cef163d8e7b5e3c823cd8c27f2c8da66e1e84c7451c7"' - repoLastModified: Mon, 07 Oct 2024 23:32:46 GMT + repoEtag: '"f333374cdb383863ab06e7628ac775fac23ff4fcca82976c034f499ab1a62852"' + repoLastModified: Tue, 08 Oct 2024 05:50: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-07T23:52:22Z' + updated: '2024-10-09T00:58:13Z' language: TypeScript archived: false - stars: 2617 + stars: 2622 watchers: 16 forks: 140 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: Apache-2.0 - repoEtag: '"d6176ce975b762381c2c26c98eb42838151bc79c9482bb24972af908195ef149"' - repoLastModified: Mon, 07 Oct 2024 23:52:22 GMT + repoEtag: '"1c3c0f626cdc75dd8aed41a29c7f2e7d740ed160827c7c5df26d7f66e3db19fb"' + repoLastModified: Wed, 09 Oct 2024 00:58:13 GMT foundInMaster: true sponsored: true testimonial: > @@ -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-07T22:58:19Z' + updated: '2024-10-08T13:18:08Z' language: Swift archived: false - stars: 1392 + stars: 1395 watchers: 107 forks: 115 owner: apple logo: https://avatars.githubusercontent.com/u/10639145?v=4 license: Apache-2.0 - repoEtag: '"02e96d34ee82cebbdaa52c4857ea1c2fe55cd4d268bd3ef462ce6511bbbba286"' - repoLastModified: Mon, 07 Oct 2024 22:58:19 GMT + repoEtag: '"e032ff063e62c59350c0eaba536bee26da621e6a0575397f0252053cb3f1c8d9"' + repoLastModified: Tue, 08 Oct 2024 13:18:08 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-08T00:19:20Z' + updated: '2024-10-08T18:58:56Z' language: TypeScript archived: false - stars: 420 + stars: 421 watchers: 3 forks: 8 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT - repoEtag: '"6e86cf3f8bac3d2ccf5fa5197b42590826b12cf77bbc1621f107b8ae371c67cd"' - repoLastModified: Tue, 08 Oct 2024 00:19:20 GMT + repoEtag: '"012754f34ecb2300a49bc584fb6fe0a5249f5a02098d8d91e68d2d9aa6fda419"' + repoLastModified: Tue, 08 Oct 2024 18:58:56 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-07T17:50:31Z' + updated: '2024-10-09T02:47:27Z' language: Go archived: false - stars: 825 + stars: 835 watchers: 7 forks: 41 owner: go-fuego logo: https://avatars.githubusercontent.com/u/148255240?v=4 license: MIT - repoEtag: '"f2889cb9ff730b2aad6131136ee488bf2485fe245144da3f6deed6a26b7840a5"' - repoLastModified: Mon, 07 Oct 2024 17:50:31 GMT + repoEtag: '"5d289e85964a0451e40b1268f433f6f2e19e5eae0950bfb6f853a0cd9a97fccf"' + repoLastModified: Wed, 09 Oct 2024 02:47:27 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -7257,7 +7257,7 @@ repositoryId: 245763170 description: Huma REST/HTTP API Framework for Golang with OpenAPI 3.1 created: '2020-03-08T06:19:51Z' - updated: '2024-10-08T00:58:26Z' + updated: '2024-10-09T00:04:28Z' language: Go archived: false stars: 1959 @@ -7266,8 +7266,8 @@ owner: danielgtaylor logo: https://avatars.githubusercontent.com/u/106826?v=4 license: MIT - repoEtag: '"f7c7ea0f0b120a4a82f81efe04e24cebdc8d58206379062e0e441e660fa6c078"' - repoLastModified: Tue, 08 Oct 2024 00:58:26 GMT + repoEtag: '"f86fa24814f0d0559a255af64d39922159de4e4356c07b737f833c8a8f753055"' + repoLastModified: Wed, 09 Oct 2024 00:04:28 GMT foundInMaster: true category: - Auto Generators @@ -7476,17 +7476,17 @@ repositoryId: 843437350 description: Framework for building high quality, interactive API documentation. created: '2024-08-16T14:09:50Z' - updated: '2024-10-07T18:01:20Z' + updated: '2024-10-08T16:09:01Z' language: TypeScript archived: false - stars: 66 + stars: 68 watchers: 4 forks: 3 owner: zuplo logo: https://avatars.githubusercontent.com/u/85497839?v=4 license: MIT - repoEtag: '"3240142f0311ce071efa77189301434206120d779e9acfa35d707e2fbc49fc67"' - repoLastModified: Mon, 07 Oct 2024 18:01:20 GMT + repoEtag: '"b082afed26a53d8a1ee63913e8062a08e5a6ef9bb4e9718771cf0cf972dfa675"' + repoLastModified: Tue, 08 Oct 2024 16:09:01 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-08T02:24:52Z' + updated: '2024-10-09T02:58:57Z' language: Python archived: false - stars: 76322 + stars: 76364 watchers: 679 - forks: 6437 + forks: 6440 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT - repoEtag: '"1d8c7d29ddd346f1f82780899af0a19feb9da8627cc625ebb06a0e05d7242ceb"' - repoLastModified: Tue, 08 Oct 2024 02:24:52 GMT + repoEtag: '"ed08b60bbc137e301ebca5c7bd123016a8af2b88dacece07dc595c7779d2964f"' + repoLastModified: Wed, 09 Oct 2024 02:58:57 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-08T00:54:07Z' + updated: '2024-10-09T02:38:41Z' language: JavaScript archived: false - stars: 26422 + stars: 26430 watchers: 650 - forks: 8929 + forks: 8933 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"bb896dc3a6a83797583eae2caff78bee61cfa456649925129342308e4f018369"' - repoLastModified: Tue, 08 Oct 2024 00:54:07 GMT + repoEtag: '"b6432316411857418f53bfc9708821a96c44d74aa97891e977981bda9bc5a1ff"' + repoLastModified: Wed, 09 Oct 2024 02:38:41 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-08T00:19:58Z' + updated: '2024-10-09T00:06:54Z' language: TypeScript archived: false - stars: 23397 + stars: 23408 watchers: 295 - forks: 2292 + forks: 2293 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"0f707d64eb6f1f6467fcfe1aaab7da0297e5c35c93f2320c3ec3969061971601"' - repoLastModified: Tue, 08 Oct 2024 00:19:58 GMT + repoEtag: '"8947637273182af9c117f83733623e881d3cea16af28d3bba662979e01e5d410"' + repoLastModified: Wed, 09 Oct 2024 00:06:54 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 @@ -7610,17 +7610,17 @@ 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-07T12:26:55Z' + updated: '2024-10-08T12:43:19Z' language: Java archived: false - stars: 7375 + stars: 7376 watchers: 311 - forks: 2176 + forks: 2177 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"47e2f9e57421c0d7e4a715089642377c4dac81efadfa206e2a79f0df5cf09360"' - repoLastModified: Mon, 07 Oct 2024 12:26:55 GMT + repoEtag: '"39ce8bab50e479196ceb928904aa07f7f51e87ab104a75dc6a58a00aed763d17"' + repoLastModified: Tue, 08 Oct 2024 12:43:19 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-07T22:48:23Z' + updated: '2024-10-09T01:50:54Z' language: TypeScript archived: false - stars: 6314 + stars: 6322 watchers: 60 forks: 378 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"8eed0edd3ba2913817af26bb129e3cacaa2e6974f77a978b043ccc4081af5e6f"' - repoLastModified: Mon, 07 Oct 2024 22:48:23 GMT + repoEtag: '"9b54d84acdc3d5fee94e88f3e1f614ae02a6ea79f7033c00192f9b9b9899991b"' + repoLastModified: Wed, 09 Oct 2024 01:50:54 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-08T02:48:21Z' + updated: '2024-10-09T01:36:37Z' language: Go archived: false - stars: 6127 + stars: 6140 watchers: 36 - forks: 846 + forks: 847 owner: oapi-codegen logo: https://avatars.githubusercontent.com/u/142752710?v=4 license: Apache-2.0 - repoEtag: '"95dfbfdd054521c0006b64aa80226304d8618e1b4cf7d83fdd6bacd5dadd6b84"' - repoLastModified: Tue, 08 Oct 2024 02:48:21 GMT + repoEtag: '"30c4d1f6df6afe1c1b7a742c229e33b8283b65876712aeb92740b49ffb6028ee"' + repoLastModified: Wed, 09 Oct 2024 01:36:37 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-07T22:51:52Z' + updated: '2024-10-09T01:18:15Z' language: TypeScript archived: false - stars: 5657 + stars: 5666 watchers: 25 forks: 455 owner: openapi-ts logo: https://avatars.githubusercontent.com/u/172838200?v=4 license: MIT - repoEtag: '"c8cdaf906ebb80f5f2eccd004bfe3e7f4052e5cfbc72aa2f5c9b44876e26b325"' - repoLastModified: Mon, 07 Oct 2024 22:51:52 GMT + repoEtag: '"4ce0d6d577f7b492289d8884120dedfa6911098592958b80ffcd5db57ec8bc1a"' + repoLastModified: Wed, 09 Oct 2024 01:18:15 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-07T13:01:14Z' + updated: '2024-10-08T22:13:17Z' language: HTML archived: false - stars: 4095 + stars: 4096 watchers: 74 forks: 615 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 - repoEtag: '"ffb02b7897c50b1d4f8672022e06bfd515d21ddba5ae60833bb3acaab3c0eb7b"' - repoLastModified: Mon, 07 Oct 2024 13:01:14 GMT + repoEtag: '"68db29d78b132d30982803f021772c79892063d0002d6aba90f146c85b982799"' + repoLastModified: Tue, 08 Oct 2024 22:13:17 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -7761,17 +7761,17 @@ 🌐 Wikipedia for Web APIs. Directory of REST API definitions in OpenAPI 2.0/3.x format created: '2015-02-22T19:58:12Z' - updated: '2024-10-07T02:37:36Z' + updated: '2024-10-09T03:09:21Z' language: null archived: false - stars: 3851 + stars: 3850 watchers: 113 forks: 576 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: CC0-1.0 - repoEtag: '"ab32f777a764486c07efeb9fa4a661e5e0ca5c5b686cb8921e9d760408dc35ca"' - repoLastModified: Mon, 07 Oct 2024 02:37:36 GMT + repoEtag: '"b49eafd2d53133d5fde6bb425edbb4882b26cc39264759c86023f690be485015"' + repoLastModified: Wed, 09 Oct 2024 03:09:21 GMT foundInMaster: true category: SDK id: 667f2aef78d9d19418fbd6c0a7835abb @@ -7795,7 +7795,7 @@ repositoryId: 196475719 description: Library for OpenAPI 3 with spring-boot created: '2019-07-11T23:08:20Z' - updated: '2024-10-06T20:24:20Z' + updated: '2024-10-08T19:43:26Z' language: Java archived: false stars: 3263 @@ -7804,8 +7804,8 @@ owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 - repoEtag: '"d48adeab412d11be4328eb012741fb0f6d317e170bbf137ea0db93fdf2364188"' - repoLastModified: Sun, 06 Oct 2024 20:24:20 GMT + repoEtag: '"505dc9be70c6da52b97e5c268fdc16fba2aa56dcdce421fabf5472001331b9c8"' + repoLastModified: Tue, 08 Oct 2024 19:43:26 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 - source: openapi3 tags @@ -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-07T23:23:51Z' + updated: '2024-10-08T10:18:04Z' 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: '"f1c3ff045941ce40df2591c31eafac8080b7dfc3c34244c471b8b96a14028358"' - repoLastModified: Mon, 07 Oct 2024 23:23:51 GMT + repoEtag: '"23e1c5c970ec54b25f6cd8ff04410987b9583b208d4815e9a04557baaaa0e01c"' + repoLastModified: Tue, 08 Oct 2024 10:18:04 GMT foundInMaster: true category: Code Generators id: 5f98b79464c0723b688cff46ee3500c6 @@ -7876,7 +7876,7 @@ repositoryId: 244234763 description: Sane and flexible OpenAPI 3 schema generation for Django REST framework. created: '2020-03-01T22:36:54Z' - updated: '2024-10-07T16:24:53Z' + updated: '2024-10-09T02:04:28Z' language: Python archived: false stars: 2344 @@ -7885,8 +7885,8 @@ owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause - repoEtag: '"9bf600adf5ea8e40c14e6196fa26b43f9228156a1a3a918ab71c99c3918fc848"' - repoLastModified: Mon, 07 Oct 2024 16:24:53 GMT + repoEtag: '"f995c06052d4fcdd560aa8872010782536e275c39395db2ecc2b69b21debd34e"' + repoLastModified: Wed, 09 Oct 2024 02:04:28 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-07T09:58:52Z' + updated: '2024-10-08T14:53:47Z' language: Python archived: false - stars: 2299 + stars: 2301 watchers: 19 forks: 67 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause - repoEtag: '"4794190f8aa4d0a09ae49f0b4b06ad615891e81c08e68ca4658d4d145e1375a7"' - repoLastModified: Mon, 07 Oct 2024 09:58:52 GMT + repoEtag: '"6de6c707ee41e513e770773e5fcfa5afac12f8018173ed76af1d7a8d2a45d16d"' + repoLastModified: Tue, 08 Oct 2024 14:53:47 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7937,7 +7937,7 @@ repositoryId: 203157084 description: Supercharge your API testing, catch bugs, and ensure compliance created: '2019-08-19T11:13:01Z' - updated: '2024-10-06T07:02:06Z' + updated: '2024-10-08T18:32:46Z' language: Python archived: false stars: 2252 @@ -7946,8 +7946,8 @@ owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT - repoEtag: '"a50a628abcf04ee698245ac1f6104ecb3074090416ee80025584ec840f3a593a"' - repoLastModified: Sun, 06 Oct 2024 07:02:06 GMT + repoEtag: '"5b1e3d8df2fe2b083b012dcf0e0a15f0fd5a35378d071047fb177cffd30adbc0"' + repoLastModified: Tue, 08 Oct 2024 18:32:46 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 oldLocations: @@ -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-08T03:24:46Z' + updated: '2024-10-08T13:18:33Z' language: Go archived: false - stars: 2085 + stars: 2086 watchers: 38 forks: 247 owner: google logo: https://avatars.githubusercontent.com/u/1342004?v=4 license: Apache-2.0 - repoEtag: '"e8f6b6bb40712bbe34261ddf4996be89d53ad89bd8ac3fbe35cd6242be0c16dc"' - repoLastModified: Tue, 08 Oct 2024 03:24:46 GMT + repoEtag: '"e2941f6f6bdf2467d8ed47bbbc9285a486b536e97821c9c9c811b818b5ce97fd"' + repoLastModified: Tue, 08 Oct 2024 13:18:33 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-07T23:08:54Z' + updated: '2024-10-08T12:16:16Z' language: JavaScript archived: false - stars: 1658 - watchers: 12 + stars: 1659 + watchers: 13 forks: 277 owner: rapi-doc logo: https://avatars.githubusercontent.com/u/104180085?v=4 license: MIT - repoEtag: '"31e56d2739915d3b7edb7831f8d319f554c4f1b2b8be7419b79c5fa8a9cce0f0"' - repoLastModified: Mon, 07 Oct 2024 23:08:54 GMT + repoEtag: '"80fe50a2cdc1560e2aa2b9c037d7e0db085d8b01ef86c8f06fb565018edfaea5"' + repoLastModified: Tue, 08 Oct 2024 12:16:16 GMT foundInMaster: true category: - Documentation @@ -8023,7 +8023,7 @@ A node package wrapper for https://github.com/OpenAPITools/openapi-generator created: '2018-10-26T10:21:23Z' - updated: '2024-10-05T14:49:45Z' + updated: '2024-10-08T03:50:20Z' language: TypeScript archived: false stars: 1427 @@ -8032,8 +8032,8 @@ owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"7dd5396ef6729b1b7492b568b31745e0ac3097590d41ca9a7f081ce8213b970c"' - repoLastModified: Sat, 05 Oct 2024 14:49:45 GMT + repoEtag: '"c706de91c892aa6478150c68e13c1fe55e8be4b85ad096cce0613e728a35ab06"' + repoLastModified: Tue, 08 Oct 2024 03:50:20 GMT foundInMaster: true category: - Code Generators @@ -8082,17 +8082,17 @@ repositoryId: 372032505 description: OpenAPI v3 code generator for go created: '2021-05-29T17:25:48Z' - updated: '2024-10-07T20:11:50Z' + updated: '2024-10-08T16:39:39Z' language: Go archived: false - stars: 1337 - watchers: 16 + stars: 1341 + watchers: 15 forks: 76 owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 - repoEtag: '"47b2682955eab7f9eee3693a0732c9ba43ccebf9325a93949698eab9e2e41438"' - repoLastModified: Mon, 07 Oct 2024 20:11:50 GMT + repoEtag: '"fb599cb9050b04bd9c9b586cc1bb7397faf9a3f26d74c9a27bd9231cc5d0d77e"' + repoLastModified: Tue, 08 Oct 2024 16:39:39 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-07T12:28:15Z' + updated: '2024-10-08T10:00: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: '"804e296c7df6679abb8ad17b1fa4496d5bee2a6fe7262cfebf8a47d5c66359bd"' - repoLastModified: Mon, 07 Oct 2024 12:28:15 GMT + repoEtag: '"6560a4adb8e31265761cc47a5e02068f496e438e92f644b44ac7eea90a26e03f"' + repoLastModified: Tue, 08 Oct 2024 10:00:15 GMT foundInMaster: true category: Parsers id: c1528764f05dd585ca47886dd6dabb86 @@ -8161,7 +8161,7 @@ repositoryId: 481579846 description: A library that generates OpenAPI (Swagger) docs from Zod schemas created: '2022-04-14T11:32:57Z' - updated: '2024-10-07T09:55:00Z' + updated: '2024-10-08T16:18:42Z' language: TypeScript archived: false stars: 921 @@ -8170,8 +8170,8 @@ owner: asteasolutions logo: https://avatars.githubusercontent.com/u/5244095?v=4 license: MIT - repoEtag: '"7cf0a26ae2d6416488af3dc51aae96d498f2648d0cfeb85f4ea2e0278fbe3391"' - repoLastModified: Mon, 07 Oct 2024 09:55:00 GMT + repoEtag: '"decd1e265e9d1601555406db7f38874ac179a3dadce70e887dcfacbf1dd42a75"' + repoLastModified: Tue, 08 Oct 2024 16:18:42 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -8212,17 +8212,17 @@ repositoryId: 113924383 description: Utility for comparing two OpenAPI specifications. created: '2017-12-12T00:39:30Z' - updated: '2024-10-08T01:06:53Z' + updated: '2024-10-08T22:46:09Z' language: Java archived: false - stars: 813 + stars: 817 watchers: 19 forks: 154 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"aee260143d1dcc29e509a5296c2936012a88b1b92dda52e352e59d469bff0a1b"' - repoLastModified: Tue, 08 Oct 2024 01:06:53 GMT + repoEtag: '"abf20c9f82d86d5e5afdc376d909426c55196530c68605bf4dcd6c7bf9e368e2"' + repoLastModified: Tue, 08 Oct 2024 22:46:09 GMT foundInMaster: true category: Parsers id: c128907e9d949a67c1bda0e0ceda755a @@ -8342,11 +8342,11 @@ archived: false stars: 678 watchers: 30 - forks: 320 + forks: 322 owner: apisyouwonthate logo: https://avatars.githubusercontent.com/u/35378327?v=4 license: MIT - repoEtag: '"7c8c3c1e1733f9622f01dead23f41fb779571e285bd4fc5f7c4f2529fe9e3beb"' + repoEtag: '"d12b6da0d0bdc1fb2dc350999a889085789c0c20584b16b78b8b9b7b87331905"' repoLastModified: Mon, 07 Oct 2024 11:29:35 GMT foundInMaster: true category: Description Validators @@ -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-07T12:57:33Z' + updated: '2024-10-08T03:58:08Z' language: Go archived: false - stars: 512 + stars: 513 watchers: 12 forks: 47 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 license: MIT - repoEtag: '"185df7a398546ae0e2a0ccc7bb8cf1f3391ac42690a89f09b9757bf33f3b9e98"' - repoLastModified: Mon, 07 Oct 2024 12:57:33 GMT + repoEtag: '"5af5a7e956d797fc70c111b83829ea21cf7e206990ca0741b1ac8e2d2bfa9711"' + repoLastModified: Tue, 08 Oct 2024 03:58:08 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-07T23:20:36Z' + updated: '2024-10-08T18:35:44Z' language: TypeScript archived: false - stars: 499 + stars: 500 watchers: 9 forks: 82 owner: cloud-annotations logo: https://avatars.githubusercontent.com/u/47490031?v=4 license: MIT - repoEtag: '"1bd58840a21a1e4ac460bfa5b3edb04982729ce1311323cef7de2a7355b3b5b4"' - repoLastModified: Mon, 07 Oct 2024 23:20:36 GMT + repoEtag: '"dd1d1b1cbbd698d3f759157cad182c9075032f61db5670fc577c79105c0f319f"' + repoLastModified: Tue, 08 Oct 2024 18:35:44 GMT foundInMaster: true category: SDK id: 5acf9bbe5338a800925f2b0e23eca0a1 @@ -8557,16 +8557,16 @@ repositoryId: 417437020 description: A tool for generating code base on an OpenAPI schema. created: '2021-10-15T09:08:51Z' - updated: '2024-10-04T10:21:06Z' + updated: '2024-10-08T07:30:53Z' language: TypeScript archived: false - stars: 497 + stars: 498 watchers: 6 forks: 62 owner: fabien0102 logo: https://avatars.githubusercontent.com/u/1761469?v=4 - repoEtag: '"f69fbcf26272dd0d1d4fee36ec3e684828b2a504fa6423122d424aac5e981f97"' - repoLastModified: Fri, 04 Oct 2024 10:21:06 GMT + repoEtag: '"139291c180f36f59df85ce9e6aa2e52ac45c44dcba883a0b4937b4fd67949dd8"' + repoLastModified: Tue, 08 Oct 2024 07:30:53 GMT category: Testing foundInMaster: true - source: openapi3 tags @@ -8674,7 +8674,7 @@ owner: rithvikvibhu logo: https://avatars.githubusercontent.com/u/5113343?v=4 license: MIT - repoEtag: '"79f478901e384298be1bb5a80aea192b0fbe5fd48eb778eda5b12f7e43698c28"' + repoEtag: '"a6282547b10062b68f067a3438bba8442f453ece8bb6ff9fcd2476135e961388"' repoLastModified: Mon, 09 Sep 2024 01:10:25 GMT foundInMaster: true category: SDK @@ -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-08T00:19:20Z' + updated: '2024-10-08T18:58:56Z' language: TypeScript archived: false - stars: 420 + stars: 421 watchers: 3 forks: 8 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT - repoEtag: '"6e86cf3f8bac3d2ccf5fa5197b42590826b12cf77bbc1621f107b8ae371c67cd"' - repoLastModified: Tue, 08 Oct 2024 00:19:20 GMT + repoEtag: '"012754f34ecb2300a49bc584fb6fe0a5249f5a02098d8d91e68d2d9aa6fda419"' + repoLastModified: Tue, 08 Oct 2024 18:58:56 GMT foundInMaster: true category: Parsers id: 31c759927a7f06228ec927500d9722c5 @@ -8806,7 +8806,7 @@ owner: endpoints4s logo: https://avatars.githubusercontent.com/u/67427463?v=4 license: MIT - repoEtag: '"5b38abc64b1418883da8e426fc720fae10a55a1153d1eb56778e0a5a10f50532"' + repoEtag: '"3af241bc5779df6175c2d384350d3cfd9b28b15a8881ce6270c91a3e2369d826"' repoLastModified: Mon, 23 Sep 2024 05:35:58 GMT category: Parsers foundInMaster: true @@ -8849,17 +8849,17 @@ repositoryId: 479982630 description: Clean Architecture Example using FastAPI framework created: '2022-04-10T10:23:51Z' - updated: '2024-10-04T14:53:45Z' + updated: '2024-10-08T13:22:47Z' language: Python archived: false - stars: 375 + stars: 376 watchers: 4 forks: 55 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT - repoEtag: '"87c4f2a49a75caa8aa9d95cbcd0eee5959832f2e728efb4bc7a4dbbdc52ea283"' - repoLastModified: Fri, 04 Oct 2024 14:53:45 GMT + repoEtag: '"122ce419ef75eb161258c7e514ba3ae85ebad11046aaf661ceecb63b90bd95f0"' + repoLastModified: Tue, 08 Oct 2024 13:22:47 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -9033,7 +9033,7 @@ owner: ethereum logo: https://avatars.githubusercontent.com/u/6250754?v=4 license: CC0-1.0 - repoEtag: '"0523e054073255a699906898a622f42e57c065c218b8a50918765ef1c35251df"' + repoEtag: '"979a99d048d24c075423eecb356c00bf340bf75b9bea5dbb748fccfc45b3b7b0"' repoLastModified: Mon, 07 Oct 2024 20:41:15 GMT foundInMaster: true category: @@ -9100,15 +9100,15 @@ id: 8525db62087986733db0fc4221c4b719 repositoryMetadata: base64Readme: >- - WyFbQXN5bmNBUEkgTW9kZWxpbmFdKC4vZG9jcy9pbWcvcmVhZG1lLWJhbm5lci5wbmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW2JsYWNrYm94IHBpcGVsaW5lIHN0YXR1c10oPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2FzeW5jYXBpL21vZGVsaW5hL2JsYWNrYm94LXRlc3RpbmcueW1sP2xhYmVsPWJsYWNrYm94JTIwdGVzdGluZz4pXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYWN0aW9ucy93b3JrZmxvd3MvYmxhY2tib3gtdGVzdGluZy55bWw/cXVlcnk9YnJhbmNoJTNBbWFzdGVyKyspClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hP2JyYW5jaD1tYXN0ZXIpClshW1Byb2plY3QgU3RhdHVzOiBBY3RpdmUg4oCTIFRoZSBwcm9qZWN0IGhhcyByZWFjaGVkIGEgc3RhYmxlLCB1c2FibGUgc3RhdGUgYW5kIGlzIGJlaW5nIGFjdGl2ZWx5IGRldmVsb3BlZC5dKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnL2JhZGdlcy9sYXRlc3QvYWN0aXZlLnN2ZyldKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnLyNhY3RpdmUpCiFbTWFpbnRlbmFuY2Ugc2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtcy1pby9tYWludGVuYW5jZS1zY29yZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW05wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2FzeW5jYXBpL21vZGVsaW5hKV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHMvbWFzdGVyKQpbIVtEaXNjdXNzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZGlzY3Vzc2lvbnMvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvZGlzY3Vzc2lvbnMpClshW1dlYnNpdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD13ZWJzaXRlJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW1BsYXlncm91bmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD1wbGF5Z3JvdW5kJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmclMkZwbGF5Z3JvdW5kKV0oaHR0cHM6Ly93d3cubW9kZWxpbmEub3JnL3BsYXlncm91bmQpIDwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTkzLW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCllvdXIgb25lLXN0b3AgdG9vbCBmb3IgZ2VuZXJhdGluZyBhY2N1cmF0ZSBhbmQgd2VsbC10ZXN0ZWQgbW9kZWxzIGZvciByZXByZXNlbnRpbmcgdGhlIG1lc3NhZ2UgcGF5bG9hZHMuIFVzZSBpdCBhcyBhIHRvb2wgaW4geW91ciBkZXZlbG9wbWVudCB3b3JrZmxvdywgb3IgYSBsaWJyYXJ5IGluIGEgbGFyZ2VyIGludGVncmF0aW9ucywgZW50aXJlbHkgaW4geW91ciBjb250cm9sLgoKLS0tCgo8IS0tIHRvYyBpcyBnZW5lcmF0ZWQgd2l0aCBHaXRIdWIgQWN0aW9ucyBkbyBub3QgcmVtb3ZlIHRvYyBtYXJrZXJzIC0tPgoKPCEtLSB0b2MgLS0+CgotIFtJbnN0YWxsaW5nIE1vZGVsaW5hXSgjaW5zdGFsbGluZy1tb2RlbGluYSkKLSBbQXN5bmNBUEkgQ0xJXSgjYXN5bmNhcGktY2xpKQotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtSZXF1aXJlbWVudHNdKCNyZXF1aXJlbWVudHMpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtFeGFtcGxlc10oI2V4YW1wbGVzKQotIFtWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZV0oI3ZlcnNpb25pbmctYW5kLW1haW50ZW5hbmNlKQotIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0NvbnRyaWJ1dG9yc10oI2NvbnRyaWJ1dG9ycykKCjwhLS0gdG9jc3RvcCAtLT4KCiMjIEluc3RhbGxpbmcgTW9kZWxpbmEKClJ1biB0aGlzIGNvbW1hbmQgdG8gaW5zdGFsbCBNb2RlbGluYSBpbiB5b3VyIHByb2plY3Q6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIEBhc3luY2FwaS9tb2RlbGluYQpgYGAKCiMjIEFzeW5jQVBJIENMSQoKSWYgeW91IGhhdmUgdGhlIFtBc3luY0FQSSBDTEkgaW5zdGFsbGVkXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvY2xpI2luc3RhbGxhdGlvbikgKE9OTFkgc3VwcG9ydCBBc3luY0FQSSBpbnB1dHMpLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gdXNlIFtNb2RlbGluYV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL2NsaSN1c2FnZSk6CgpgYGBiYXNoCmFzeW5jYXBpIGdlbmVyYXRlIG1vZGVscyA8bGFuZ3VhZ2U+IC4vYXN5bmNhcGkuanNvbgpgYGAKCjxoMiBhbGlnbj0iY2VudGVyIj5XaGF0IERvZXMgTW9kZWxpbmEgRG8/PC9oMj4KCjxwIGFsaWduPSJjZW50ZXIiPk1vZGVsaW5hIHB1dCBZT1UgaW4gY29udHJvbCBvZiB5b3VyIGRhdGEgbW9kZWxzLCBoZXJlIGlzIGhvdy4uLjwvcD4KCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPjxiPk1vZGVsaW5hIGxldHMgeW91IGdlbmVyYXRlIGRhdGEgbW9kZWxzIGZyb20gbWFueSB0eXBlcyBvZiA8YSBocmVmPSIjaW5wdXRzIj5pbnB1dHM8L2E+PC9iPjwvdGQ+Cjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgYXN5bmNhcGkgPSAuLi4KY29uc3QganNvbnNjaGVtYSA9IC4uLgpjb25zdCBvcGVuYXBpID0gLi4uIApjb25zdCBtZXRhbW9kZWwgPSAuLi4gCi4uLgpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoCiAgYXN5bmNhcGkgfCBqc29uc2NoZW1hIHwgb3BlbmFwaSB8IG1ldGFtb2RlbAopOwpgYGAKPC90ZD4KICA8L3RyPgogICAgPHRyPgogICAgPHRkPjxiPlVzZSB0aGUgc2FtZSBpbnB1dHMgYWNyb3NzIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IDxhIGhyZWY9IiNvdXRwdXRzIj5nZW5lcmF0b3JzPC9hPjwvYj48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBDc2hhcnBHZW5lcmF0b3IoKTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IEphdmFHZW5lcmF0b3IoKTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFJ1c3RHZW5lcmF0b3IoKTsKLi4uCmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmBgYAo8L3RkPgogIDwvdHI+CiAgICA8dHI+CiAgICA8dGQ+PGI+RWFzaWx5IGxldCB5b3UgaW50ZXJhY3Qgd2l0aCB0aGUgZ2VuZXJhdGVkIG1vZGVscy48L2I+IAoKLSBXYW50IHRvIHNob3cgdGhlIGdlbmVyYXRlZCBtb2RlbHMgb24gYSB3ZWJzaXRlPyBTdXJlISAKLSBXYW50IHRvIGdlbmVyYXRlIHRoZSBtb2RlbHMgaW50byBmaWxlcz8gU3VyZSEgCi0gV2FudCB0byBjb21iaW5lIGFsbCB0aGUgbW9kZWxzIGludG8gb25lIHNpbmdsZSBmaWxlPyBTdXJlISAKCldoYXRldmVyIGludGVyYWN0aW9uIHlvdSBuZWVkLCB5b3UgY2FuIGNyZWF0ZS48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmZvciAoY29uc3QgbW9kZWwgaW4gbW9kZWxzKSB7IAogIGNvbnN0IGdlbmVyYXRlZENvZGUgPSBtb2RlbC5yZXN1bHQ7CiAgY29uc3QgZGVwZW5kZW5jaWVzID0gbW9kZWwuZGVwZW5kZW5jaWVzOwogIGNvbnN0IG1vZGVsdHlwZSA9IG1vZGVsLnR5cGU7CiAgY29uc3QgbW9kZWxOYW1lID0gbW9kZWwubW9kZWxOYW1lOwogIC4uLgp9CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPkVhc2lseSBtb2RpZnkgaG93IG1vZGVscyBhcmUgPGEgaHJlZj0iLi9kb2NzL2NvbnN0cmFpbnRzLm1kIj5jb25zdHJhaW5lZDwvYT4gaW50byB0aGUgb3V0cHV0PC9iPjwvdGQ+Cgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKHsKICBjb25zdHJhaW50czogewogICAgbW9kZWxOYW1lOiAoe21vZGVsTmFtZX0pID0+IHsKICAgICAgLy8gSW1wbGVtZW50IHlvdXIgb3duIGNvbnN0cmFpbmluZyBsb2dpYwogICAgICByZXR1cm4gbW9kZWxOYW1lOwogICAgfQogIH0KfSk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGF5ZXIgYWRkaXRpb25hbCBvciByZXBsYWNlbWVudCBjb2RlIDxhIGhyZWY9Ii4vZG9jcy9wcmVzZXRzLm1kIj5vbiB0b3Agb2YgZWFjaCBvdGhlciB0byBjdXN0b21pemUgdGhlIG1vZGVsczwvYT4gdG8geW91ciB1c2UtY2FzZTwvYj48L3RkPgoKPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcih7CiAgcHJlc2V0czogWwogICAgewogICAgICBjbGFzczogewogICAgICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgICAgICByZXR1cm4gYCR7Y29udGVudH0KcHVibGljIG15Q3VzdG9tRnVuY3Rpb24oKTogc3RyaW5nIHsKICByZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICAgICAgfSwKICAgICAgfQogICAgfQogIF0KfSk7CmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGV0cyB5b3UgPGEgaHJlZj0iLi9kb2NzL3ByZXNldHMubWQiPmNvbWJpbmUgbXVsdGlwbGUgbGF5ZXJzIG9mIGFkZGl0aW9uYWwgb3IgcmVwbGFjZW1lbnQgY29kZTwvYT48L2I+PC90ZD4KCjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgbXlDdXN0b21GdW5jdGlvbjEgPSB7CiAgY2xhc3M6IHsKICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgIHJldHVybiBgJHtjb250ZW50fQpwdWJsaWMgbXlDdXN0b21GdW5jdGlvbigpOiBzdHJpbmcgewpyZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICB9LAogIH0KfTsKY29uc3QgbXlDdXN0b21GdW5jdGlvbjIgPSB7Li4ufTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoewogIHByZXNldHM6IFsKICAgIG15Q3VzdG9tRnVuY3Rpb24xLAogICAgbXlDdXN0b21GdW5jdGlvbjIKICBdCn0pOwpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgRmVhdHVyZXMKClRoZSBmb2xsb3dpbmcgdGFibGUgcHJvdmlkZXMgYSBzaG9ydCBzdW1tYXJ5IG9mIGF2YWlsYWJsZSBmZWF0dXJlcyBmb3Igc3VwcG9ydGVkIG91dHB1dCBsYW5ndWFnZXMuIFRvIHNlZSB0aGUgY29tcGxldGUgZmVhdHVyZSBsaXN0IGZvciBlYWNoIGxhbmd1YWdlLCBwbGVhc2UgY2xpY2sgdGhlIGluZGl2aWR1YWwgbGlua3MgZm9yIGVhY2ggbGFuZ3VhZ2UuCgo8YSBpZD0iaW5wdXRzIj48L2E+Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0aD5TdXBwb3J0ZWQgaW5wdXRzPC90aD4KICAgIDx0aD48L3RoPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1hc3luY2FwaS1kb2N1bWVudHMiPkFzeW5jQVBJPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIEFzeW5jQVBJIHZlcnNpb25zOiA8ZW0+Mi4wLjAgLT4gMi42LjA8L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIG1lc3NhZ2UgcGF5bG9hZHMuIEl0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc2NoZW1hRm9ybWF0cyBBc3luY0FQSSBTY2hlbWEgb2JqZWN0LCBKU09OIFNjaGVtYSBkcmFmdCA3LCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLWF2cm8tc2NoZW1hIj5BVlJPIDEuOTwvYT4sIDxhIGhyZWY9Ii4vZXhhbXBsZXMvYXN5bmNhcGktcmFtbC1zY2hlbWEiPlJBTUwgMS4wIGRhdGEgdHlwZTwvYT4sIGFuZCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLW9wZW5hcGktc2NoZW1hIj5PcGVuQVBJIDMuMCBTY2hlbWE8L2E+LjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLWpzb24tc2NoZW1hLWRvY3VtZW50cyI+SlNPTiBTY2hlbWE8L2E+PC90ZD4KICAgIDx0ZD5XZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hlbWEgdmVyc2lvbnM6IDxlbT5EcmFmdC00LCBEcmFmdC02IGFuZCBEcmFmdC03PC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSTwvYT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIHZlcnNpb25zOiA8ZW0+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLXN3YWdnZXItMjAtZG9jdW1lbnRzIj5Td2FnZ2VyIDIuMDwvYT4sIDxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSSAzLjAgYW5kIDMuMTwvYT48L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBheWxvYWRzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVsLWZyb20tdHlwZXNjcmlwdC10eXBlLWZpbGVzIj5UeXBlU2NyaXB0PC9hPjwvdGQ+CiAgICA8dGQ+V2UgY3VycmVudGx5IHN1cHBvcnQgVHlwZVNjcmlwdCB0eXBlcyBhcyBmaWxlIGlucHV0IGZvciBtb2RlbCBnZW5lcmF0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tbWV0YS1tb2RlbHMiPk1ldGEgbW9kZWw8L2E+PC90ZD4KICAgIDx0ZD5UaGlzIGlzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIG1vZGVsIGZvciBNb2RlbGluYSwgaXQgaXMgd2hhdCBpbnB1dHMgZ2V0cyBjb252ZXJ0ZWQgdG8sIGFuZCB3aGF0IGdlbmVyYXRvcnMgYXJlIHByb3ZpZGVkIHRvIGdlbmVyYXRlIGNvZGUuIEluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBpbnB1dCBwcm9jZXNzb3IsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIG1vZGVscyBmcm9tIHNjcmF0Y2ggYW5kIHN0aWxsIHRha2UgYWR2YW50YWdlIG9uIHRoZSBnZW5lcmF0b3JzIGFuZCB0aGUgZmVhdHVyZXMuPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGEgaWQ9Im91dHB1dHMiPjwvYT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGg+U3VwcG9ydGVkIG91dHB1dHM8L3RoPgogICAgPHRoPjwvdGg+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWphdmEtbW9kZWxzIj5KYXZhPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgZXF1YWxzLCBoYXNoQ29kZSwgdG9TdHJpbmcsIEphY2tzb24gYW5ub3RhdGlvbiwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtdHlwZXNjcmlwdC1tb2RlbHMiPlR5cGVTY3JpcHQ8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcywgaW50ZXJmYWNlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGV4YW1wbGUgY29kZSwgdW4vbWFyc2hhbCBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWMjLW1vZGVscyI+QyM8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Z2VuZXJhdGlvbiBvZiBleGFtcGxlIGNvZGUsIHNlcmlhbGl6ZXIgYW5kIGRlc2VyaWFsaXplciBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWdvLW1vZGVscyI+R288L2E+PC90ZD4KICAgIDx0ZD5TdHJ1Y3QgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1qYXZhc2NyaXB0LW1vZGVscyI+SmF2YVNjcmlwdDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1kYXJ0LW1vZGVscyI+RGFydDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IGpzb25fYW5ub3RhdGlvbjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXJ1c3QtbW9kZWxzIj5SdXN0PC9hPjwvdGQ+CiAgICA8dGQ+U3RydWN0L3R1cGxlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGBpbXBsZW1lbnQgRGVmYXVsdGAsIGdlbmVyYXRlIHNlcmRlIG1hY3JvcywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcHl0aG9uLW1vZGVscyI+UHl0aG9uPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1rb3RsaW4tbW9kZWxzIj5Lb3RsaW48L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+dXNlIG9mIGRhdGEgY2xhc3NlcyB3aGVyZSBhcHByb3ByaWF0ZSwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWNwbHVzcGx1cy1tb2RlbHMiPkMrKzwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcGhwLW1vZGVscyI+UEhQPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBkZXNjcmlwdGlvbnMsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXNjYWxhLW1vZGVscyI+U2NhbGE8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGRlc2NyaXB0aW9ucywgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgUmVxdWlyZW1lbnRzClRoZSBmb2xsb3dpbmcgYXJlIGEgcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gdXNlIE1vZGVsaW5hLgoKLSBbTm9kZUpTXShodHRwczovL25vZGVqcy5vcmcvZW4vKSA+PSAxOAoKIyMgRG9jdW1lbnRhdGlvbgpBIGZlYXR1cmUgaW4gTW9kZWxpbmEgY2Fubm90IGV4aXN0cyB3aXRob3V0IGFuIGV4YW1wbGUgYW5kIGRvY3VtZW50YXRpb24gZm9yIGl0LiBZb3UgY2FuIGZpbmQgYWxsIHRoZSBbZG9jdW1lbnRhdGlvbiBoZXJlXSguL2RvY3MvUkVBRE1FLm1kKS4KCiMjIEV4YW1wbGVzCkRvIHlvdSBuZWVkIHRvIGtub3cgaG93IHRvIHVzZSB0aGUgbGlicmFyeSBpbiBjZXJ0YWluIHNjZW5hcmlvcz8gCgpXZSBoYXZlIGdhdGhlcmVkIGFsbCB0aGUgZXhhbXBsZXMgaW4gYSBzZXBhcmF0ZSBmb2xkZXIgYW5kIHRoZXkgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSBbZXhhbXBsZXMgZm9sZGVyXSguL2V4YW1wbGVzKS4gCgojIyBWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZQpBcyBvZiB2ZXJzaW9uIDEsIE1vZGVsaW5hIGhhcyBhIHZlcnkgc3RyaWN0IHNldCBvZiBjaGFuZ2VzIHdlIGFyZSBhbGxvd2VkIHRvIGRvIGJlZm9yZSBpdCByZXF1aXJlcyBhIG1ham9yIHZlcnNpb24gY2hhbmdlLiBJbiBzaG9ydCwgYW55IGNoYW5nZXMgdGhhdCBjaGFuZ2UgdGhlIGdlbmVyYXRlZCBvdXRjb21lIGFyZSBub3QgYWxsb3dlZCBhcyBpdCdzIGEgYnJlYWtpbmcgY2hhbmdlIGZvciB0aGUgY29uc3VtZXIgb2YgdGhlIGdlbmVyYXRlZCBtb2RlbHMuIAoKSGVyZSBpcyBhIGxpc3Qgb2YgY2hhbmdlcyB3ZSBhcmUgYWxsb3dlZCB0byBkbyB0aGF0IHdvdWxkIG5vdCByZXF1aXJlIGEgYnJlYWtpbmcgY2hhbmdlOgotIEFkZGluZyBuZXcgZmVhdHVyZXMgKHRoYXQgZG8gbm90IGNoYW5nZSBleGlzdGluZyBvdXRwdXQpLCBzdWNoIGFzIGdlbmVyYXRvcnMsIHByZXNldHMsIGlucHV0IHByb2Nlc3NvcnMsIGV0Yy4KLSBDaGFuZ2UgZXhpc3RpbmcgZmVhdHVyZXMsIGJ5IHByb3ZpZGluZyBvcHRpb25zIHRoYXQgZGVmYXVsdCB0byBjdXJyZW50IGJlaGF2aW9yLiBUaGlzIGNvdWxkIGJlIGEgcHJlc2V0IHRoYXQgYWRhcHRzIHRoZSBvdXRwdXQgYmFzZWQgb24gb3B0aW9ucywgYXMgbG9uZyBhcyB0aGUgQVBJIG9mIE1vZGVsaW5hIGFuZCB0aGUgQVBJIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIGRvZXMgbm90IGhhdmUgYW55IGJyZWFraW5nIGNoYW5nZXMuCi0gQnVnIGZpeGVzIHdoZXJlIHRoZSBnZW5lcmF0ZWQgY29kZSBpcyBvdGhlcndpc2UgdW51c2FibGUgKHN5bnRheCBlcnJvcnMsIGV0YykuCgpCcmVha2luZyBjaGFuZ2VzIGFyZSBhbGxvd2VkIGFuZCBleHBlY3RlZCBhdCBhIGZyZXF1ZW50IHJhdGUsIG9mIGNvdXJzZSB3aGVyZSBpdCBtYWtlcyBzZW5zZSB3ZSB3aWxsIHRyeSB0byBidW5kbGUgbXVsdGlwbGUgY2hhbmdlcyB0b2dldGhlci4KCldlIG9mIGNvdXJzZSB3aWxsIGRvIG91ciBiZXN0IHRvIHVwaG9sZCB0aGlzLCBidXQgbWlzdGFrZXMgY2FuIGhhcHBlbiwgYW5kIGlmIHlvdSBub3RpY2UgYW55IGJyZWFraW5nIGNoYW5nZXMgcGxlYXNlIGxldCB1cyBrbm93IQoKQmVjYXVzZSBvZiB0aGUgbnVtYmVyIG9mIHRoZSBsaW1pdGVkIG51bWJlciBvZiBjaGFtcGlvbnMsIG9ubHkgdGhlIG1vc3QgcmVjZW50IG1ham9yIHZlcnNpb24gd2lsbCBiZSBtYWludGFpbmVkLgoKTWFqb3IgdmVyc2lvbnMgYXJlIGN1cnJlbnRseSBoYXBwZW5pbmcgYXQgYSAzLW1vbnRoIGNhZGVuY2UgKGluIGEgc2ltaWxhciBmYXNoaW9uIGFzIHRoZSBBc3luY0FQSSBzcGVjaWZpY2F0aW9uKSwgdGhpcyB3aWxsIGhhcHBlbiBpbiBKYW51YXJ5LCBBcHJpbCwgSnVuZSwgYW5kIFNlcHRlbWJlci4gCgojIyBEZXZlbG9wbWVudApXZSB0cnkgdG8gbWFrZSBpdCBhcyBlYXN5IGZvciB5b3UgYXMgcG9zc2libGUgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gY29udHJpYnV0ZSB0byBNb2RlbGluYS4gWW91IGNhbiBmaW5kIHRoZSBkZXZlbG9wbWVudCBkb2N1bWVudGF0aW9uIFtoZXJlXSguL2RvY3MvZGV2ZWxvcG1lbnQubWQpLgoKIyMgQ29udHJpYnV0aW5nCldpdGhvdXQgY29udHJpYnV0aW9ucywgTW9kZWxpbmEgd291bGQgbm90IGV4aXN0LCBpdCdzIGEgY29tbXVuaXR5IHByb2plY3Qgd2UgYnVpbGQgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJ1aWxkaW5nIGJsb2NrcywgYW5kIHdlIGRvIHRoaXMgdGhyb3VnaCBbY2hhbXBpb25zXSguL2RvY3MvY2hhbXBpb25zLm1kKS4KCldlIGhhdmUgbWFkZSBxdWl0ZSBhIFtjb21wcmVoZW5zaXZlIGNvbnRyaWJ1dGlvbiBndWlkZV0oLi9kb2NzL2NvbnRyaWJ1dGluZy5tZCkgdG8gZ2l2ZSB5b3UgYSBsZW5kaW5nIGhhbmQgaW4gaG93IGRpZmZlcmVudCBmZWF0dXJlcyBhbmQgY2hhbmdlcyBhcmUgaW50cm9kdWNlZC4KCklmIG5vIGRvY3VtZW50YXRpb24gaGVscHMgeW91LCBoZXJlIGlzIGhvdyB5b3UgY2FuIHJlYWNoIG91dCB0byBnZXQgaGVscDoKLSBPbiB0aGUgW29mZmljaWFsIEFzeWNuQVBJIHNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpIHVuZGVyIHRoZSBgIzA0X3Rvb2xpbmdgIGNoYW5uZWwKLSBUYWcgYSBzcGVjaWZpYyBbQ09ERU9XTkVSXSguL0NPREVPV05FUlMpIGluIHlvdXIgUFIKLSBHZW5lcmFsbHksIGl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGRvIGV2ZXJ5dGhpbmcgaW4gcHVibGljLCBidXQgaW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIHBvc3NpYmxlLiBJbiB0aG9zZSBjaXJjdW1zdGFuY2VzIHlvdSBjYW4gY29udGFjdCB0aGUgZm9sbG93aW5nOiAKICAtIFtqb25hc2xhZ29uaV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pKSAob24gW0FzeW5jQVBJIFNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpLCBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qb25hc2xhZ29uaSksIFtFbWFpbF0obWFpbHRvOmpvbmFzLWx0QGxpdmUuZGspLCBbTGlua2VkSW5dKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9qb25hc2xhZ29uaS8pKQoKIyMgQ29udHJpYnV0b3JzIAoKVGhhbmtzIGdvIG91dCB0byB0aGVzZSB3b25kZXJmdWwgcGVvcGxlIChbZW1vamkga2V5XShodHRwczovL2FsbGNvbnRyaWJ1dG9ycy5vcmcvZG9jcy9lbi9lbW9qaS1rZXkpKToKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFnaWNtYXRhdGphaHUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjA0MDQ5NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hY2llaiBVcmJhxYRjenlrIi8+PGJyIC8+PHN1Yj48Yj5NYWNpZWogVXJiYcWEY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1tYWdpY21hdGF0amFodSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1tYWdpY21hdGF0amFodSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FtYWdpY21hdGF0amFodSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY3psb3dpZWs0ODgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ2MjAxMDk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImN6bG93aWVrNDg4Ii8+PGJyIC8+PHN1Yj48Yj5jemxvd2llazQ4ODwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWN6bG93aWVrNDg4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fjemxvd2llazQ4OCIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9IiNpZGVhcy1jemxvd2llazQ4OCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zbW95YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDgzMjk2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTZXJnaW8gTW95YSIvPjxiciAvPjxzdWI+PGI+U2VyZ2lvIE1veWE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzbW95YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBc21veWEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMzk2MTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb25hcyBMYWdvbmkiLz48YnIgLz48c3ViPjxiPkpvbmFzIExhZ29uaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWpvbmFzbGFnb25pIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1qb25hc2xhZ29uaSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWpvbmFzbGFnb25pIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1qb25hc2xhZ29uaSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fqb25hc2xhZ29uaSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2Rldi50by9kZXJiZXJnIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5OTU5Mjc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikx1a2FzeiBHb3JuaWNraSIvPjxiciAvPjxzdWI+PGI+THVrYXN6IEdvcm5pY2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGVyYmVyZyIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FkZXJiZXJnIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXJiZXJnIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcmp1bmdhcmcwNyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzAwOTcyMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXJqdW4gR2FyZyIvPjxiciAvPjxzdWI+PGI+QXJqdW4gR2FyZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyanVuZ2FyZzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZm12aWxhcy5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQyMTE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJGcmFuIE3DqW5kZXoiLz48YnIgLz48c3ViPjxiPkZyYW4gTcOpbmRlejwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWZtdmlsYXMiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CbGFrZWxpc3Q3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NTI1OTYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW53YWwgU2luZ2giLz48YnIgLz48c3ViPjxiPkthbndhbCBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUJsYWtlbGlzdDciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3d3dy5hbGVqYW5kcmFxdWV0emFsbGkuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5OTY0NDAyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGVqYW5kcmEgUXVldHphbGxpICIvPjxiciAvPjxzdWI+PGI+QWxlamFuZHJhIFF1ZXR6YWxsaSA8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FhbGVxdWV0emFsbGkiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWxlcXVldHphbGxpIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tZC1zYWlmLWh1c2FpbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDY4Mjk2OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTUQgU0FJRiAgSFVTQUlOIi8+PGJyIC8+PHN1Yj48Yj5NRCBTQUlGICBIVVNBSU48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLW1kLXNhaWYtaHVzYWluIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3N1ZGlwdG8uZ2hvc2gucHJvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMjMyOTQwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdWRpcHRvIEdob3NoIi8+PGJyIC8+PHN1Yj48Yj5TdWRpcHRvIEdob3NoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZXhhbXBsZS1zdWRpcHRvZzgxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1zdWRpcHRvZzgxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXN1ZGlwdG9nODEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BhbndhdXUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI1OTcyMjM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InBhbndhdXUiLz48YnIgLz48c3ViPjxiPnBhbndhdXU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBhbndhdXUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1wYW53YXV1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXBhbndhdXUiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9zdGVmYW5lbWF5ZXIvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1MDMxOTUwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdGVmYW4gRS4gTWF5ZXIiLz48YnIgLz48c3ViPjxiPlN0ZWZhbiBFLiBNYXllcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXN0ZWZhbmVyd2lubWF5ZXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYXNoVGFsbWl6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU1MDE4MjgwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUYWxtaXogQWhtZWQiLz48YnIgLz48c3ViPjxiPlRhbG1peiBBaG1lZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhc2hUYWxtaXoiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFzaFRhbG1peiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLUhhc2hUYWxtaXoiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhhbmtzRm9yQWxsVGhlRmlzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTY5NjU1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXJjbyIvPjxiciAvPjxzdWI+PGI+TWFyY288L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FUaGFua3NGb3JBbGxUaGVGaXNoIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcXVhZHJyZW0iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODQ1MDg3Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icXVhZHJyZW0iLz48YnIgLz48c3ViPjxiPnF1YWRycmVtPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9rYW1rby5kZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTcwNzQzNzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkthbWlsIEphbmXEjWVrIi8+PGJyIC8+PHN1Yj48Yj5LYW1pbCBKYW5lxI1lazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthbWtvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWthbWtvIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYW1rbyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFoYWtwb3J3YWwwMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjQ4NjY4Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibWFoYWtwb3J3YWwwMiIvPjxiciAvPjxzdWI+PGI+bWFoYWtwb3J3YWwwMjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtbWFoYWtwb3J3YWwwMiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFoYWtwb3J3YWwwMiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWhha3BvcndhbDAyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1haGFrcG9yd2FsMDIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvbi1kZWJhanlvdGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI1NzE2NjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRlYmFqeW90aSBIYWxkZXIiLz48YnIgLz48c3ViPjxiPkRlYmFqeW90aSBIYWxkZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yb24tZGViYWp5b3RpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJvbi1kZWJhanlvdGkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm9uLWRlYmFqeW90aSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcml0aWszMDcuZ2l0aHViLmlvL3BvcnRmb2xpby8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjIzNzQ4Mjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpdGlrIFJhd2FsIi8+PGJyIC8+PHN1Yj48Yj5SaXRpayBSYXdhbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcml0aWszMDciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Jc2hhbi1TYWluaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDUyNTYwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYW4iLz48YnIgLz48c3ViPjxiPklzaGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vc2FtcmlkaGktOTguZ2l0aHViLmlvL1BvcnRmb2xpbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDQ2NjA0MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FtcmlkZGhpIi8+PGJyIC8+PHN1Yj48Yj5TYW1yaWRkaGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNhbXJpZGhpLTk4IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1TYW1yaWRoaS05OCIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dhYm9ybWFneWFyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzMzk3MzAzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJHw6Fib3IgTWFneWFyIi8+PGJyIC8+PHN1Yj48Yj5Hw6Fib3IgTWFneWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1nYWJvcm1hZ3lhciIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2liZXJuYWJldWRldiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDIxNTA3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaWJlcm5hYmV1ZGV2Ii8+PGJyIC8+PHN1Yj48Yj5pYmVybmFiZXVkZXY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaWJlcm5hYmV1ZGV2IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Nsb3dpa293c2tpYXJrYWRpdXN6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk3NTA4OTMwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcmthZGl1c3ogU8WCb3dpa293c2tpIi8+PGJyIC8+PHN1Yj48Yj5BcmthZGl1c3ogU8WCb3dpa293c2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1zbG93aWtvd3NraWFya2FkaXVzeiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BvbHlnZW5zIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM1ODIzMTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IldpbGxlbSBHaWxsaXMiLz48YnIgLz48c3ViPjxiPldpbGxlbSBHaWxsaXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FQb2x5Z2VucyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JtYXNhcm92aWMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTUyMjgzND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icm1hc2Fyb3ZpYyIvPjxiciAvPjxzdWI+PGI+cm1hc2Fyb3ZpYzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJtYXNhcm92aWMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hc2Fyb3ZpYyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFzYXJvdmljIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcm1hc2Fyb3ZpYyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL293YWlzMzQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzcyMzg3NTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik93YWlzIEhhc25hdGggQWhtZWQiLz48YnIgLz48c3ViPjxiPk93YWlzIEhhc25hdGggQWhtZWQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1vd2FpczM0IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW93YWlzMzQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b3dhaXMzNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Bhbk1hbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85Nzg1MDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlBhbk1hbiIvPjxiciAvPjxzdWI+PGI+UGFuTWFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGFuTWFuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcnR1ci1jaW9jYW51Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc0MzE5Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYXJ0dXItY2lvY2FudSIvPjxiciAvPjxzdWI+PGI+YXJ0dXItY2lvY2FudTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYXJ0dXItY2lvY2FudSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtYXJ0dXItY2lvY2FudSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9taWNyby1qdW1iby5ldS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTE2OTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkN5cHJpYW4gR3JhY3oiLz48YnIgLz48c3ViPjxiPkN5cHJpYW4gR3JhY3o8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FtaWNyby1qdW1ibyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly93d3cucHJpbnRuYW5ueS5haSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNjAxODE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMZWlnaCBKb2huc29uIi8+PGJyIC8+PHN1Yj48Yj5MZWlnaCBKb2huc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1sZWlnaC1qb2huc29uIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbGVpZ2gtam9obnNvbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1sZWlnaC1qb2huc29uIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FsZWlnaC1qb2huc29uIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uaXRpbnRlanVqYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NTM0NzkyND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTml0aW4gVGVqdWphIi8+PGJyIC8+PHN1Yj48Yj5OaXRpbiBUZWp1amE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1uaXRpbnRlanVqYSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLW5pdGludGVqdWphIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2VubmV0aGFhc2FuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzczOTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Iktlbm5ldGggQWFzYW4iLz48YnIgLz48c3ViPjxiPktlbm5ldGggQWFzYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rZW5uZXRoYWFzYW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWtlbm5ldGhhYXNhbiIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0LWtzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTk0NzAzNz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW1pdCBLdW1hciBTaGFybWEiLz48YnIgLz48c3ViPjxiPkFtaXQgS3VtYXIgU2hhcm1hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hbWl0LWtzaCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS96YXl0c2V2YW5kIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMDc3NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZHJleSBaYXl0c2V2Ii8+PGJyIC8+PHN1Yj48Yj5BbmRyZXkgWmF5dHNldjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS16YXl0c2V2YW5kIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvZGluZ3RlbnNoaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTYzNzc2MzA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlRlbnNoaSBDb2RlcyIvPjxiciAvPjxzdWI+PGI+VGVuc2hpIENvZGVzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaW5mcmEtY29kaW5ndGVuc2hpIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3l1c2hpb21vdGUub3JnLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNzMzOTE1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJZdXNoaSBPTU9URSIvPjxiciAvPjxzdWI+PGI+WXVzaGkgT01PVEU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FZdXNoaU9NT1RFIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ZdXNoaU9NT1RFIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbWFsY2hlcmN6eWsucGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc1MzQ1MDQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlpiaWduaWV3IE1hbGNoZXJjenlrIi8+PGJyIC8+PHN1Yj48Yj5aYmlnbmlldyBNYWxjaGVyY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUZlcnJvciIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjaW5mcmEtRmVycm9yIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9RmVycm9yIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtRmVycm9yIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1GZXJyb3IiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBRmVycm9yIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8yMDBQdWxzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5MTgzNjA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IjIwMFB1bHMiLz48YnIgLz48c3ViPjxiPjIwMFB1bHM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj0yMDBQdWxzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPTIwMFB1bHMiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9saW5rdHIuZWUvYW5heXNhcmthcjciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTMzNDExODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuYXkgU2Fya2FyIi8+PGJyIC8+PHN1Yj48Yj5BbmF5IFNhcmthcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtYW5heXNhcmthcjciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Mb3Vpc1hoYWZlcmkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTIzOTc2Nzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkxvdWlzIFhoYWZlcmkiLz48YnIgLz48c3ViPjxiPkxvdWlzIFhoYWZlcmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpc1hoYWZlcmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1iaGF2Z3VwdGEwNzA1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgxODcwODY2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYW1iaGF2IEd1cHRhIi8+PGJyIC8+PHN1Yj48Yj5TYW1iaGF2IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iI2Rlc2lnbi1zYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJheXV0c3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ2MzY1MjU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFiaGF5IEdhcmciLz48YnIgLz48c3ViPjxiPkFiaGF5IEdhcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXByYXl1dHN1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGVucmlram9uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI3MjEyMjMyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJoZW5yaWtqb24iLz48YnIgLz48c3ViPjxiPmhlbnJpa2pvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWhlbnJpa2pvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1oZW5yaWtqb24iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGVucmlram9uIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaGVucmlram9uIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3lhc2lyZGV2ZWxvcGVyLm5ldGxpZnkuYXBwLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDYwMDc0NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTW9oYW1tYWQgWWFzaXIiLz48YnIgLz48c3ViPjxiPk1vaGFtbWFkIFlhc2lyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9WWFzaXI3NjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhdmlvNjI5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxMzYyNTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYXZpbyBEaWFzIi8+PGJyIC8+PHN1Yj48Yj5TYXZpbyBEaWFzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2F2aW82MjkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjaW5mcmEtU2F2aW82MjkiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FTYXZpbzYyOSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2lzaGFhbjgxMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDE5MDUzMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYWFuIFNoYWgiLz48YnIgLz48c3ViPjxiPklzaGFhbiBTaGFoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aXNoYWFuODEyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaHJleWFzMDQxMCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDc5NTg2Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2hyZXlhczA0MTAiLz48YnIgLz48c3ViPjxiPlNocmV5YXMwNDEwPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2hyZXlhczA0MTAiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZWt1LWVwaXRvbWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTUxNTEzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJiZWt1LWVwaXRvbWUiLz48YnIgLz48c3ViPjxiPmJla3UtZXBpdG9tZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJla3UtZXBpdG9tZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FiZWt1LWVwaXRvbWUiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YmVrdS1lcGl0b21lIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zd29yZG1hc3RlcjJrIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzNTQwMTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikpvc2h1YSBNaWNoYWVsIERhbHkiLz48YnIgLz48c3ViPjxiPkpvc2h1YSBNaWNoYWVsIERhbHk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fzd29yZG1hc3RlcjJrIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGxraiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNDMwNTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRhbmllbCBLSiIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIEtKPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGxraiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kbGtqIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtZGxraiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGxraiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2NvZGV5dC5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzczMDMzNTExP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJCaGF2aWsgQWdhcndhbCIvPjxiciAvPjxzdWI+PGI+QmhhdmlrIEFnYXJ3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNkZXNpZ24tQmhhdmlrLWFnIiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thdXNoaWstcmlzaGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI0OTg2MTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpc2hpIi8+PGJyIC8+PHN1Yj48Yj5SaXNoaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthdXNoaWstcmlzaGkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLWthdXNoaWstcmlzaGkiIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3JvaGl0aGJvcHBleS5uZXRsaWZ5LmFwcCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MzUzODk3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUm9oaXRoIEJvcHBleSIvPjxiciAvPjxzdWI+PGI+Um9oaXRoIEJvcHBleTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvaGl0aEJvcHBleSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tUm9oaXRoQm9wcGV5IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2FzaGlzaHBhZGh5LmxpdmUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTAwNDg0NDAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBc2hpc2ggUGFkaHkiLz48YnIgLz48c3ViPjxiPkFzaGlzaCBQYWRoeTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNodXJ0dS1nYWwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2h1cnR1LWdhbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNpbmZyYS1TaHVydHUtZ2FsIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9qZmNvdGUuZ2l0aHViLmlvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzM2OTAwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKZWFuLUZyYW7Dp29pcyBDw7R0w6kiLz48YnIgLz48c3ViPjxiPkplYW4tRnJhbsOnb2lzIEPDtHTDqTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1KRkNvdGUiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU3VtYW50eEQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU4MTA0MjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlN1bWFudC54RCIvPjxiciAvPjxzdWI+PGI+U3VtYW50LnhEPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U3VtYW50eEQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjaW5mcmEtU3VtYW50eEQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TdW1hbnR4RCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ5YW5hczE1OSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTQzMzA5MzE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyeWFuIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5BcnlhbiBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyeWFuYXMxNTkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL21hcmt1cy5wb2Vyc2Noa2UubnJ3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMjIzNzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hcmt1cyBQb2Vyc2Noa2UiLz48YnIgLz48c3ViPjxiPk1hcmt1cyBQb2Vyc2Noa2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbWVzbW9leSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTc0NzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkphbWVzIE1vZXkiLz48YnIgLz48c3ViPjxiPkphbWVzIE1vZXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW1lc21vZXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9amFtZXNtb2V5IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b213b2xhbnNraSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODA4NTY1Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idG9td29sYW5za2kiLz48YnIgLz48c3ViPjxiPnRvbXdvbGFuc2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBdG9td29sYW5za2kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Lc2lzYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzQwNDc3MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS3Jpc3R1cGFzIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdHVwYXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Lc2lzYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RldmFuc2gtQmhhdHQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTQ3MzIwNzk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRldmFuc2gtQmhhdHQiLz48YnIgLz48c3ViPjxiPkRldmFuc2gtQmhhdHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1EZXZhbnNoLUJoYXR0IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2luZnJhLURldmFuc2gtQmhhdHQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcGlwbGl5YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjE4NjE0Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW5zaCBQYW5jaG9saSIvPjxiciAvPjxzdWI+PGI+QW5zaCBQYW5jaG9saTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBpcGxpeWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1F5cG9sMzQyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDk3MDA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYWVnaHQgTG9hbiIvPjxiciAvPjxzdWI+PGI+TWFlZ2h0IExvYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vcHJpbmNlcmFqcG9vdC5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDQ1ODU0NTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlByaW5jZSBSYWpwb290Ii8+PGJyIC8+PHN1Yj48Yj5QcmluY2UgUmFqcG9vdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXByaW5jZXJhanBvb3QyMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGFyc2hpdC1zZW5wYWkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTMwNzUwNjg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImhhcnNoaXQgbWlzaHJhICIvPjxiciAvPjxzdWI+PGI+aGFyc2hpdCBtaXNocmEgPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGFyc2hpdC1zZW5wYWkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BldGVBdWRpbmF0ZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTI3NDg3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUGV0ZUF1ZGluYXRlIi8+PGJyIC8+PHN1Yj48Yj5QZXRlQXVkaW5hdGU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QZXRlQXVkaW5hdGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbm8tcGV0cmFzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNDc4NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imphbm8tcGV0cmFzIi8+PGJyIC8+PHN1Yj48Yj5qYW5vLXBldHJhczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbmlsa2FudGg5ODciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI0MTM1ODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pbGthbnRoIFBhcm1hciIvPjxiciAvPjxzdWI+PGI+Tmlsa2FudGggUGFybWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1uaWxrYW50aDk4NyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9qYWlzYXJpdGEudmVyY2VsLmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM2MzkzNDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFzaG1pdCBKYWlTYXJpdGEgR3VwdGEiLz48YnIgLz48c3ViPjxiPkFzaG1pdCBKYWlTYXJpdGEgR3VwdGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tZGV2aWxraWxsZXItYWciIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1kZXZpbGtpbGxlci1hZyIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2aWxraWxsZXItYWciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGV2aWxraWxsZXItYWciIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2hhcnNoaWwucHJvc2Uuc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzkzNjc4ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkhhcnNoaWwgSmFuaSIvPjxiciAvPjxzdWI+PGI+SGFyc2hpbCBKYW5pPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFyc2hpbC1KYW5pIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhcnNoaWwtSmFuaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21pbnR1LXBvcnRmb2xpby5uZXRsaWZ5LmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI3OTI1NDY1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNaW50dSBHb2dvaSIvPjxiciAvPjxzdWI+PGI+TWludHUgR29nb2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1NaW4yd2hvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kZXZhbnNoLW0xMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84NjE5NTE2Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGV2YW5zaCBNYWhhbnQiLz48YnIgLz48c3ViPjxiPkRldmFuc2ggTWFoYW50PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2YW5zaC1tMTIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29mZmljaWFsYXNpc2hrdW1hciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84Nzg3NDc3NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXNpc2ggS3VtYXIiLz48YnIgLz48c3ViPjxiPkFzaXNoIEt1bWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b2ZmaWNpYWxhc2lzaGt1bWFyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmt1cjA5MDQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTgzNDY4OTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFua3VyIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5Bbmt1ciBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFua3VyMDkwNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Jvd2xhbmRCYW5rcyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTYyNTUxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSb3dsYW5kQmFua3MiLz48YnIgLz48c3ViPjxiPlJvd2xhbmRCYW5rczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvd2xhbmRCYW5rcyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Sb3dsYW5kQmFua3MiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBUm93bGFuZEJhbmtzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21vcml0emthbHdhLmRldi8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI4NDI2NTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1vcml0eiBLYWx3YSIvPjxiciAvPjxzdWI+PGI+TW9yaXR6IEthbHdhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBbW9yaXR6a2Fsd2EiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1vcml0emthbHdhIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ha2tzaGl0Z3VwdGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTY5OTE3ODU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFrc2hpdCBHdXB0YSIvPjxiciAvPjxzdWI+PGI+QWtzaGl0IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWtrc2hpdGd1cHRhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWFra3NoaXRndXB0YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFra3NoaXRndXB0YSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0F0aHVsMDQ5MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NTY2NDE4NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXRodWwgVHVsYXNpZGFzYW4iLz48YnIgLz48c3ViPjxiPkF0aHVsIFR1bGFzaWRhc2FuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtQXRodWwwNDkxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1BdGh1bDA0OTEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Tb3V2aWtucyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MTc4MTQzOD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ic291dmlrIi8+PGJyIC8+PHN1Yj48Yj5zb3V2aWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNvdXZpa25zIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTG91aXMtUGhpbGlwcGVHZW50aWxlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDI2OTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMb3Vpcy1QaGlsaXBwZUdlbnRpbGUiLz48YnIgLz48c3ViPjxiPkxvdWlzLVBoaWxpcHBlR2VudGlsZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpcy1QaGlsaXBwZUdlbnRpbGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TG91aXMtUGhpbGlwcGVHZW50aWxlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0FraGlsSjMyMSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODUwODM3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWtoaWwgSmFtd2FsIi8+PGJyIC8+PHN1Yj48Yj5Ba2hpbCBKYW13YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Ba2hpbEozMjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QWtoaWxKMzIxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWhlbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjMyODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZGVycyBIZWxsZXJ1cCBNYWRzZW4iLz48YnIgLz48c3ViPjxiPkFuZGVycyBIZWxsZXJ1cCBNYWRzZW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1haGVtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFoZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYWhlbSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JxdWluaW8xQSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODMyMjkxMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icnF1aW5pbzFBIi8+PGJyIC8+PHN1Yj48Yj5ycXVpbmlvMUE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ycXVpbmlvMUEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ycXVpbmlvMUEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9naXRhbmtpdDciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ0NDE5MzY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImdpdGFua2l0NyIvPjxiciAvPjxzdWI+PGI+Z2l0YW5raXQ3PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2l0YW5raXQ3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qYW5uZS1zbGFtY29yZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTI4Njc4NDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikphbm5lIEh1c2JlcmciLz48YnIgLz48c3ViPjxiPkphbm5lIEh1c2Jlcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqYW5uZS1zbGFtY29yZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JvcnJ1bGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI3NTQwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYm9ycnVsbCIvPjxiciAvPjxzdWI+PGI+Ym9ycnVsbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJvcnJ1bGwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Ym9ycnVsbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3Lnlva2VwbGF0Zm9ybS5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjEwNjE3OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2FtaWwgWnV6ZGEiLz48YnIgLz48c3ViPjxiPkthbWlsIFp1emRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2FtYXoiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plc3BpdGFlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIzMDQxMTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqZXNwaXRhZSIvPjxiciAvPjxzdWI+PGI+amVzcGl0YWU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqZXNwaXRhZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcGlrZS5naXRodWIuaW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDk0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBeGVsIEhlY2h0Ii8+PGJyIC8+PHN1Yj48Yj5BeGVsIEhlY2h0PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGlrZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QaWtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b21kZXZyb29tZW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDYzNzk4Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVG9tIGRlIFZyb29tZW4iLz48YnIgLz48c3ViPjxiPlRvbSBkZSBWcm9vbWVuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtdG9tZGV2cm9vbWVuIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj10b21kZXZyb29tZW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICA8L3Rib2R5Pgo8L3RhYmxlPgoKPCEtLSBtYXJrZG93bmxpbnQtcmVzdG9yZSAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtZW5kIC0tPgoKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUxJU1Q6RU5EIC0tPgoKVGhpcyBwcm9qZWN0IGZvbGxvd3MgdGhlIFthbGwtY29udHJpYnV0b3JzXShodHRwczovL2dpdGh1Yi5jb20vYWxsLWNvbnRyaWJ1dG9ycy9hbGwtY29udHJpYnV0b3JzKSBzcGVjaWZpY2F0aW9uLiBDb250cmlidXRpb25zIG9mIGFueSBraW5kIGFyZSB3ZWxjb21lIQo= - readmeEtag: '"5ee8422eb1c9400c1f231ee81532fc3d803726bc"' - readmeLastModified: Tue, 13 Aug 2024 09:27:56 GMT + WyFbQXN5bmNBUEkgTW9kZWxpbmFdKC4vZG9jcy9pbWcvcmVhZG1lLWJhbm5lci5wbmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW2JsYWNrYm94IHBpcGVsaW5lIHN0YXR1c10oPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2FzeW5jYXBpL21vZGVsaW5hL2JsYWNrYm94LXRlc3RpbmcueW1sP2xhYmVsPWJsYWNrYm94JTIwdGVzdGluZz4pXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYWN0aW9ucy93b3JrZmxvd3MvYmxhY2tib3gtdGVzdGluZy55bWw/cXVlcnk9YnJhbmNoJTNBbWFzdGVyKyspClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hP2JyYW5jaD1tYXN0ZXIpClshW1Byb2plY3QgU3RhdHVzOiBBY3RpdmUg4oCTIFRoZSBwcm9qZWN0IGhhcyByZWFjaGVkIGEgc3RhYmxlLCB1c2FibGUgc3RhdGUgYW5kIGlzIGJlaW5nIGFjdGl2ZWx5IGRldmVsb3BlZC5dKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnL2JhZGdlcy9sYXRlc3QvYWN0aXZlLnN2ZyldKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnLyNhY3RpdmUpCiFbTWFpbnRlbmFuY2Ugc2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtcy1pby9tYWludGVuYW5jZS1zY29yZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW05wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2FzeW5jYXBpL21vZGVsaW5hKV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHMvbWFzdGVyKQpbIVtEaXNjdXNzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZGlzY3Vzc2lvbnMvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvZGlzY3Vzc2lvbnMpClshW1dlYnNpdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD13ZWJzaXRlJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW1BsYXlncm91bmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD1wbGF5Z3JvdW5kJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmclMkZwbGF5Z3JvdW5kKV0oaHR0cHM6Ly93d3cubW9kZWxpbmEub3JnL3BsYXlncm91bmQpIDwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTk0LW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCllvdXIgb25lLXN0b3AgdG9vbCBmb3IgZ2VuZXJhdGluZyBhY2N1cmF0ZSBhbmQgd2VsbC10ZXN0ZWQgbW9kZWxzIGZvciByZXByZXNlbnRpbmcgdGhlIG1lc3NhZ2UgcGF5bG9hZHMuIFVzZSBpdCBhcyBhIHRvb2wgaW4geW91ciBkZXZlbG9wbWVudCB3b3JrZmxvdywgb3IgYSBsaWJyYXJ5IGluIGEgbGFyZ2VyIGludGVncmF0aW9ucywgZW50aXJlbHkgaW4geW91ciBjb250cm9sLgoKLS0tCgo8IS0tIHRvYyBpcyBnZW5lcmF0ZWQgd2l0aCBHaXRIdWIgQWN0aW9ucyBkbyBub3QgcmVtb3ZlIHRvYyBtYXJrZXJzIC0tPgoKPCEtLSB0b2MgLS0+CgotIFtJbnN0YWxsaW5nIE1vZGVsaW5hXSgjaW5zdGFsbGluZy1tb2RlbGluYSkKLSBbQXN5bmNBUEkgQ0xJXSgjYXN5bmNhcGktY2xpKQotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtSZXF1aXJlbWVudHNdKCNyZXF1aXJlbWVudHMpCi0gW0RvY3VtZW50YXRpb25dKCNkb2N1bWVudGF0aW9uKQotIFtFeGFtcGxlc10oI2V4YW1wbGVzKQotIFtWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZV0oI3ZlcnNpb25pbmctYW5kLW1haW50ZW5hbmNlKQotIFtEZXZlbG9wbWVudF0oI2RldmVsb3BtZW50KQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCi0gW0NvbnRyaWJ1dG9yc10oI2NvbnRyaWJ1dG9ycykKCjwhLS0gdG9jc3RvcCAtLT4KCiMjIEluc3RhbGxpbmcgTW9kZWxpbmEKClJ1biB0aGlzIGNvbW1hbmQgdG8gaW5zdGFsbCBNb2RlbGluYSBpbiB5b3VyIHByb2plY3Q6CgpgYGBiYXNoCm5wbSBpbnN0YWxsIEBhc3luY2FwaS9tb2RlbGluYQpgYGAKCiMjIEFzeW5jQVBJIENMSQoKSWYgeW91IGhhdmUgdGhlIFtBc3luY0FQSSBDTEkgaW5zdGFsbGVkXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvY2xpI2luc3RhbGxhdGlvbikgKE9OTFkgc3VwcG9ydCBBc3luY0FQSSBpbnB1dHMpLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gdXNlIFtNb2RlbGluYV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL2NsaSN1c2FnZSk6CgpgYGBiYXNoCmFzeW5jYXBpIGdlbmVyYXRlIG1vZGVscyA8bGFuZ3VhZ2U+IC4vYXN5bmNhcGkuanNvbgpgYGAKCjxoMiBhbGlnbj0iY2VudGVyIj5XaGF0IERvZXMgTW9kZWxpbmEgRG8/PC9oMj4KCjxwIGFsaWduPSJjZW50ZXIiPk1vZGVsaW5hIHB1dCBZT1UgaW4gY29udHJvbCBvZiB5b3VyIGRhdGEgbW9kZWxzLCBoZXJlIGlzIGhvdy4uLjwvcD4KCjwhLS0gcHJldHRpZXItaWdub3JlLXN0YXJ0IC0tPgo8IS0tIG1hcmtkb3dubGludC1kaXNhYmxlIC0tPgo8dGFibGU+CiAgPHRyPgogICAgPHRkPjxiPk1vZGVsaW5hIGxldHMgeW91IGdlbmVyYXRlIGRhdGEgbW9kZWxzIGZyb20gbWFueSB0eXBlcyBvZiA8YSBocmVmPSIjaW5wdXRzIj5pbnB1dHM8L2E+PC9iPjwvdGQ+Cjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgYXN5bmNhcGkgPSAuLi4KY29uc3QganNvbnNjaGVtYSA9IC4uLgpjb25zdCBvcGVuYXBpID0gLi4uIApjb25zdCBtZXRhbW9kZWwgPSAuLi4gCi4uLgpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoCiAgYXN5bmNhcGkgfCBqc29uc2NoZW1hIHwgb3BlbmFwaSB8IG1ldGFtb2RlbAopOwpgYGAKPC90ZD4KICA8L3RyPgogICAgPHRyPgogICAgPHRkPjxiPlVzZSB0aGUgc2FtZSBpbnB1dHMgYWNyb3NzIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IDxhIGhyZWY9IiNvdXRwdXRzIj5nZW5lcmF0b3JzPC9hPjwvYj48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBDc2hhcnBHZW5lcmF0b3IoKTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IEphdmFHZW5lcmF0b3IoKTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFJ1c3RHZW5lcmF0b3IoKTsKLi4uCmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmBgYAo8L3RkPgogIDwvdHI+CiAgICA8dHI+CiAgICA8dGQ+PGI+RWFzaWx5IGxldCB5b3UgaW50ZXJhY3Qgd2l0aCB0aGUgZ2VuZXJhdGVkIG1vZGVscy48L2I+IAoKLSBXYW50IHRvIHNob3cgdGhlIGdlbmVyYXRlZCBtb2RlbHMgb24gYSB3ZWJzaXRlPyBTdXJlISAKLSBXYW50IHRvIGdlbmVyYXRlIHRoZSBtb2RlbHMgaW50byBmaWxlcz8gU3VyZSEgCi0gV2FudCB0byBjb21iaW5lIGFsbCB0aGUgbW9kZWxzIGludG8gb25lIHNpbmdsZSBmaWxlPyBTdXJlISAKCldoYXRldmVyIGludGVyYWN0aW9uIHlvdSBuZWVkLCB5b3UgY2FuIGNyZWF0ZS48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmZvciAoY29uc3QgbW9kZWwgaW4gbW9kZWxzKSB7IAogIGNvbnN0IGdlbmVyYXRlZENvZGUgPSBtb2RlbC5yZXN1bHQ7CiAgY29uc3QgZGVwZW5kZW5jaWVzID0gbW9kZWwuZGVwZW5kZW5jaWVzOwogIGNvbnN0IG1vZGVsdHlwZSA9IG1vZGVsLnR5cGU7CiAgY29uc3QgbW9kZWxOYW1lID0gbW9kZWwubW9kZWxOYW1lOwogIC4uLgp9CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPkVhc2lseSBtb2RpZnkgaG93IG1vZGVscyBhcmUgPGEgaHJlZj0iLi9kb2NzL2NvbnN0cmFpbnRzLm1kIj5jb25zdHJhaW5lZDwvYT4gaW50byB0aGUgb3V0cHV0PC9iPjwvdGQ+Cgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKHsKICBjb25zdHJhaW50czogewogICAgbW9kZWxOYW1lOiAoe21vZGVsTmFtZX0pID0+IHsKICAgICAgLy8gSW1wbGVtZW50IHlvdXIgb3duIGNvbnN0cmFpbmluZyBsb2dpYwogICAgICByZXR1cm4gbW9kZWxOYW1lOwogICAgfQogIH0KfSk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGF5ZXIgYWRkaXRpb25hbCBvciByZXBsYWNlbWVudCBjb2RlIDxhIGhyZWY9Ii4vZG9jcy9wcmVzZXRzLm1kIj5vbiB0b3Agb2YgZWFjaCBvdGhlciB0byBjdXN0b21pemUgdGhlIG1vZGVsczwvYT4gdG8geW91ciB1c2UtY2FzZTwvYj48L3RkPgoKPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcih7CiAgcHJlc2V0czogWwogICAgewogICAgICBjbGFzczogewogICAgICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgICAgICByZXR1cm4gYCR7Y29udGVudH0KcHVibGljIG15Q3VzdG9tRnVuY3Rpb24oKTogc3RyaW5nIHsKICByZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICAgICAgfSwKICAgICAgfQogICAgfQogIF0KfSk7CmNvbnN0IG1vZGVscyA9IGF3YWl0IGdlbmVyYXRvci5nZW5lcmF0ZShpbnB1dCk7CmBgYAo8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxiPlNlYW1sZXNzbHkgbGV0cyB5b3UgPGEgaHJlZj0iLi9kb2NzL3ByZXNldHMubWQiPmNvbWJpbmUgbXVsdGlwbGUgbGF5ZXJzIG9mIGFkZGl0aW9uYWwgb3IgcmVwbGFjZW1lbnQgY29kZTwvYT48L2I+PC90ZD4KCjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgbXlDdXN0b21GdW5jdGlvbjEgPSB7CiAgY2xhc3M6IHsKICAgIGFkZGl0aW9uYWxDb250ZW50KHsgY29udGVudCB9KSB7CiAgICAgIHJldHVybiBgJHtjb250ZW50fQpwdWJsaWMgbXlDdXN0b21GdW5jdGlvbigpOiBzdHJpbmcgewpyZXR1cm4gJ0EgY3VzdG9tIGZ1bmN0aW9uIGZvciBlYWNoIGNsYXNzJzsKfWA7CiAgICB9LAogIH0KfTsKY29uc3QgbXlDdXN0b21GdW5jdGlvbjIgPSB7Li4ufTsKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoewogIHByZXNldHM6IFsKICAgIG15Q3VzdG9tRnVuY3Rpb24xLAogICAgbXlDdXN0b21GdW5jdGlvbjIKICBdCn0pOwpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgRmVhdHVyZXMKClRoZSBmb2xsb3dpbmcgdGFibGUgcHJvdmlkZXMgYSBzaG9ydCBzdW1tYXJ5IG9mIGF2YWlsYWJsZSBmZWF0dXJlcyBmb3Igc3VwcG9ydGVkIG91dHB1dCBsYW5ndWFnZXMuIFRvIHNlZSB0aGUgY29tcGxldGUgZmVhdHVyZSBsaXN0IGZvciBlYWNoIGxhbmd1YWdlLCBwbGVhc2UgY2xpY2sgdGhlIGluZGl2aWR1YWwgbGlua3MgZm9yIGVhY2ggbGFuZ3VhZ2UuCgo8YSBpZD0iaW5wdXRzIj48L2E+Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0aD5TdXBwb3J0ZWQgaW5wdXRzPC90aD4KICAgIDx0aD48L3RoPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1hc3luY2FwaS1kb2N1bWVudHMiPkFzeW5jQVBJPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIEFzeW5jQVBJIHZlcnNpb25zOiA8ZW0+Mi4wLjAgLT4gMi42LjA8L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIG1lc3NhZ2UgcGF5bG9hZHMuIEl0IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgc2NoZW1hRm9ybWF0cyBBc3luY0FQSSBTY2hlbWEgb2JqZWN0LCBKU09OIFNjaGVtYSBkcmFmdCA3LCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLWF2cm8tc2NoZW1hIj5BVlJPIDEuOTwvYT4sIDxhIGhyZWY9Ii4vZXhhbXBsZXMvYXN5bmNhcGktcmFtbC1zY2hlbWEiPlJBTUwgMS4wIGRhdGEgdHlwZTwvYT4sIGFuZCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLW9wZW5hcGktc2NoZW1hIj5PcGVuQVBJIDMuMCBTY2hlbWE8L2E+LjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLWpzb24tc2NoZW1hLWRvY3VtZW50cyI+SlNPTiBTY2hlbWE8L2E+PC90ZD4KICAgIDx0ZD5XZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgSlNPTiBTY2hlbWEgdmVyc2lvbnM6IDxlbT5EcmFmdC00LCBEcmFmdC02IGFuZCBEcmFmdC03PC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSTwvYT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIHZlcnNpb25zOiA8ZW0+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVscy1mcm9tLXN3YWdnZXItMjAtZG9jdW1lbnRzIj5Td2FnZ2VyIDIuMDwvYT4sIDxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cyI+T3BlbkFQSSAzLjAgYW5kIDMuMTwvYT48L2VtPiwgd2hpY2ggZ2VuZXJhdGVzIG1vZGVscyBmb3IgYWxsIHRoZSBkZWZpbmVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBheWxvYWRzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLW1vZGVsLWZyb20tdHlwZXNjcmlwdC10eXBlLWZpbGVzIj5UeXBlU2NyaXB0PC9hPjwvdGQ+CiAgICA8dGQ+V2UgY3VycmVudGx5IHN1cHBvcnQgVHlwZVNjcmlwdCB0eXBlcyBhcyBmaWxlIGlucHV0IGZvciBtb2RlbCBnZW5lcmF0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tbWV0YS1tb2RlbHMiPk1ldGEgbW9kZWw8L2E+PC90ZD4KICAgIDx0ZD5UaGlzIGlzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIG1vZGVsIGZvciBNb2RlbGluYSwgaXQgaXMgd2hhdCBpbnB1dHMgZ2V0cyBjb252ZXJ0ZWQgdG8sIGFuZCB3aGF0IGdlbmVyYXRvcnMgYXJlIHByb3ZpZGVkIHRvIGdlbmVyYXRlIGNvZGUuIEluc3RlYWQgb2YgcmVseWluZyBvbiBhbiBpbnB1dCBwcm9jZXNzb3IsIHlvdSBjYW4gY3JlYXRlIHlvdXIgb3duIG1vZGVscyBmcm9tIHNjcmF0Y2ggYW5kIHN0aWxsIHRha2UgYWR2YW50YWdlIG9uIHRoZSBnZW5lcmF0b3JzIGFuZCB0aGUgZmVhdHVyZXMuPC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPGEgaWQ9Im91dHB1dHMiPjwvYT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGg+U3VwcG9ydGVkIG91dHB1dHM8L3RoPgogICAgPHRoPjwvdGg+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWphdmEtbW9kZWxzIj5KYXZhPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgZXF1YWxzLCBoYXNoQ29kZSwgdG9TdHJpbmcsIEphY2tzb24gYW5ub3RhdGlvbiwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtdHlwZXNjcmlwdC1tb2RlbHMiPlR5cGVTY3JpcHQ8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcywgaW50ZXJmYWNlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGV4YW1wbGUgY29kZSwgdW4vbWFyc2hhbCBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWMjLW1vZGVscyI+QyM8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Z2VuZXJhdGlvbiBvZiBleGFtcGxlIGNvZGUsIHNlcmlhbGl6ZXIgYW5kIGRlc2VyaWFsaXplciBmdW5jdGlvbnMsIGN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWdvLW1vZGVscyI+R288L2E+PC90ZD4KICAgIDx0ZD5TdHJ1Y3QgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1qYXZhc2NyaXB0LW1vZGVscyI+SmF2YVNjcmlwdDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1kYXJ0LW1vZGVscyI+RGFydDwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IGpzb25fYW5ub3RhdGlvbjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXJ1c3QtbW9kZWxzIj5SdXN0PC9hPjwvdGQ+CiAgICA8dGQ+U3RydWN0L3R1cGxlIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGBpbXBsZW1lbnQgRGVmYXVsdGAsIGdlbmVyYXRlIHNlcmRlIG1hY3JvcywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcHl0aG9uLW1vZGVscyI+UHl0aG9uPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1rb3RsaW4tbW9kZWxzIj5Lb3RsaW48L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+dXNlIG9mIGRhdGEgY2xhc3NlcyB3aGVyZSBhcHByb3ByaWF0ZSwgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWNwbHVzcGx1cy1tb2RlbHMiPkMrKzwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5jdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcGhwLW1vZGVscyI+UEhQPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBkZXNjcmlwdGlvbnMsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLXNjYWxhLW1vZGVscyI+U2NhbGE8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGRlc2NyaXB0aW9ucywgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgUmVxdWlyZW1lbnRzClRoZSBmb2xsb3dpbmcgYXJlIGEgcmVxdWlyZW1lbnQgaW4gb3JkZXIgdG8gdXNlIE1vZGVsaW5hLgoKLSBbTm9kZUpTXShodHRwczovL25vZGVqcy5vcmcvZW4vKSA+PSAxOAoKIyMgRG9jdW1lbnRhdGlvbgpBIGZlYXR1cmUgaW4gTW9kZWxpbmEgY2Fubm90IGV4aXN0cyB3aXRob3V0IGFuIGV4YW1wbGUgYW5kIGRvY3VtZW50YXRpb24gZm9yIGl0LiBZb3UgY2FuIGZpbmQgYWxsIHRoZSBbZG9jdW1lbnRhdGlvbiBoZXJlXSguL2RvY3MvUkVBRE1FLm1kKS4KCiMjIEV4YW1wbGVzCkRvIHlvdSBuZWVkIHRvIGtub3cgaG93IHRvIHVzZSB0aGUgbGlicmFyeSBpbiBjZXJ0YWluIHNjZW5hcmlvcz8gCgpXZSBoYXZlIGdhdGhlcmVkIGFsbCB0aGUgZXhhbXBsZXMgaW4gYSBzZXBhcmF0ZSBmb2xkZXIgYW5kIHRoZXkgY2FuIGJlIGZvdW5kIHVuZGVyIHRoZSBbZXhhbXBsZXMgZm9sZGVyXSguL2V4YW1wbGVzKS4gCgojIyBWZXJzaW9uaW5nIGFuZCBtYWludGVuYW5jZQpBcyBvZiB2ZXJzaW9uIDEsIE1vZGVsaW5hIGhhcyBhIHZlcnkgc3RyaWN0IHNldCBvZiBjaGFuZ2VzIHdlIGFyZSBhbGxvd2VkIHRvIGRvIGJlZm9yZSBpdCByZXF1aXJlcyBhIG1ham9yIHZlcnNpb24gY2hhbmdlLiBJbiBzaG9ydCwgYW55IGNoYW5nZXMgdGhhdCBjaGFuZ2UgdGhlIGdlbmVyYXRlZCBvdXRjb21lIGFyZSBub3QgYWxsb3dlZCBhcyBpdCdzIGEgYnJlYWtpbmcgY2hhbmdlIGZvciB0aGUgY29uc3VtZXIgb2YgdGhlIGdlbmVyYXRlZCBtb2RlbHMuIAoKSGVyZSBpcyBhIGxpc3Qgb2YgY2hhbmdlcyB3ZSBhcmUgYWxsb3dlZCB0byBkbyB0aGF0IHdvdWxkIG5vdCByZXF1aXJlIGEgYnJlYWtpbmcgY2hhbmdlOgotIEFkZGluZyBuZXcgZmVhdHVyZXMgKHRoYXQgZG8gbm90IGNoYW5nZSBleGlzdGluZyBvdXRwdXQpLCBzdWNoIGFzIGdlbmVyYXRvcnMsIHByZXNldHMsIGlucHV0IHByb2Nlc3NvcnMsIGV0Yy4KLSBDaGFuZ2UgZXhpc3RpbmcgZmVhdHVyZXMsIGJ5IHByb3ZpZGluZyBvcHRpb25zIHRoYXQgZGVmYXVsdCB0byBjdXJyZW50IGJlaGF2aW9yLiBUaGlzIGNvdWxkIGJlIGEgcHJlc2V0IHRoYXQgYWRhcHRzIHRoZSBvdXRwdXQgYmFzZWQgb24gb3B0aW9ucywgYXMgbG9uZyBhcyB0aGUgQVBJIG9mIE1vZGVsaW5hIGFuZCB0aGUgQVBJIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIGRvZXMgbm90IGhhdmUgYW55IGJyZWFraW5nIGNoYW5nZXMuCi0gQnVnIGZpeGVzIHdoZXJlIHRoZSBnZW5lcmF0ZWQgY29kZSBpcyBvdGhlcndpc2UgdW51c2FibGUgKHN5bnRheCBlcnJvcnMsIGV0YykuCgpCcmVha2luZyBjaGFuZ2VzIGFyZSBhbGxvd2VkIGFuZCBleHBlY3RlZCBhdCBhIGZyZXF1ZW50IHJhdGUsIG9mIGNvdXJzZSB3aGVyZSBpdCBtYWtlcyBzZW5zZSB3ZSB3aWxsIHRyeSB0byBidW5kbGUgbXVsdGlwbGUgY2hhbmdlcyB0b2dldGhlci4KCldlIG9mIGNvdXJzZSB3aWxsIGRvIG91ciBiZXN0IHRvIHVwaG9sZCB0aGlzLCBidXQgbWlzdGFrZXMgY2FuIGhhcHBlbiwgYW5kIGlmIHlvdSBub3RpY2UgYW55IGJyZWFraW5nIGNoYW5nZXMgcGxlYXNlIGxldCB1cyBrbm93IQoKQmVjYXVzZSBvZiB0aGUgbnVtYmVyIG9mIHRoZSBsaW1pdGVkIG51bWJlciBvZiBjaGFtcGlvbnMsIG9ubHkgdGhlIG1vc3QgcmVjZW50IG1ham9yIHZlcnNpb24gd2lsbCBiZSBtYWludGFpbmVkLgoKTWFqb3IgdmVyc2lvbnMgYXJlIGN1cnJlbnRseSBoYXBwZW5pbmcgYXQgYSAzLW1vbnRoIGNhZGVuY2UgKGluIGEgc2ltaWxhciBmYXNoaW9uIGFzIHRoZSBBc3luY0FQSSBzcGVjaWZpY2F0aW9uKSwgdGhpcyB3aWxsIGhhcHBlbiBpbiBKYW51YXJ5LCBBcHJpbCwgSnVuZSwgYW5kIFNlcHRlbWJlci4gCgojIyBEZXZlbG9wbWVudApXZSB0cnkgdG8gbWFrZSBpdCBhcyBlYXN5IGZvciB5b3UgYXMgcG9zc2libGUgdG8gc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gY29udHJpYnV0ZSB0byBNb2RlbGluYS4gWW91IGNhbiBmaW5kIHRoZSBkZXZlbG9wbWVudCBkb2N1bWVudGF0aW9uIFtoZXJlXSguL2RvY3MvZGV2ZWxvcG1lbnQubWQpLgoKIyMgQ29udHJpYnV0aW5nCldpdGhvdXQgY29udHJpYnV0aW9ucywgTW9kZWxpbmEgd291bGQgbm90IGV4aXN0LCBpdCdzIGEgY29tbXVuaXR5IHByb2plY3Qgd2UgYnVpbGQgdG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBiZXN0IHBvc3NpYmxlIGJ1aWxkaW5nIGJsb2NrcywgYW5kIHdlIGRvIHRoaXMgdGhyb3VnaCBbY2hhbXBpb25zXSguL2RvY3MvY2hhbXBpb25zLm1kKS4KCldlIGhhdmUgbWFkZSBxdWl0ZSBhIFtjb21wcmVoZW5zaXZlIGNvbnRyaWJ1dGlvbiBndWlkZV0oLi9kb2NzL2NvbnRyaWJ1dGluZy5tZCkgdG8gZ2l2ZSB5b3UgYSBsZW5kaW5nIGhhbmQgaW4gaG93IGRpZmZlcmVudCBmZWF0dXJlcyBhbmQgY2hhbmdlcyBhcmUgaW50cm9kdWNlZC4KCklmIG5vIGRvY3VtZW50YXRpb24gaGVscHMgeW91LCBoZXJlIGlzIGhvdyB5b3UgY2FuIHJlYWNoIG91dCB0byBnZXQgaGVscDoKLSBPbiB0aGUgW29mZmljaWFsIEFzeWNuQVBJIHNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpIHVuZGVyIHRoZSBgIzA0X3Rvb2xpbmdgIGNoYW5uZWwKLSBUYWcgYSBzcGVjaWZpYyBbQ09ERU9XTkVSXSguL0NPREVPV05FUlMpIGluIHlvdXIgUFIKLSBHZW5lcmFsbHksIGl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIGRvIGV2ZXJ5dGhpbmcgaW4gcHVibGljLCBidXQgaW4gc29tZSBjYXNlcywgaXQgbWlnaHQgbm90IGJlIHBvc3NpYmxlLiBJbiB0aG9zZSBjaXJjdW1zdGFuY2VzIHlvdSBjYW4gY29udGFjdCB0aGUgZm9sbG93aW5nOiAKICAtIFtqb25hc2xhZ29uaV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pKSAob24gW0FzeW5jQVBJIFNsYWNrXShodHRwczovL2FzeW5jYXBpLmNvbS9zbGFjay1pbnZpdGUpLCBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qb25hc2xhZ29uaSksIFtFbWFpbF0obWFpbHRvOmpvbmFzLWx0QGxpdmUuZGspLCBbTGlua2VkSW5dKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9qb25hc2xhZ29uaS8pKQoKIyMgQ29udHJpYnV0b3JzIAoKVGhhbmtzIGdvIG91dCB0byB0aGVzZSB3b25kZXJmdWwgcGVvcGxlIChbZW1vamkga2V5XShodHRwczovL2FsbGNvbnRyaWJ1dG9ycy5vcmcvZG9jcy9lbi9lbW9qaS1rZXkpKToKCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOlNUQVJUIC0gRG8gbm90IHJlbW92ZSBvciBtb2RpZnkgdGhpcyBzZWN0aW9uIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0Ym9keT4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFnaWNtYXRhdGphaHUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjA0MDQ5NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hY2llaiBVcmJhxYRjenlrIi8+PGJyIC8+PHN1Yj48Yj5NYWNpZWogVXJiYcWEY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1tYWdpY21hdGF0amFodSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLW1hZ2ljbWF0YXRqYWh1IiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1tYWdpY21hdGF0amFodSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWdpY21hdGF0amFodSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FtYWdpY21hdGF0amFodSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY3psb3dpZWs0ODgiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ2MjAxMDk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImN6bG93aWVrNDg4Ii8+PGJyIC8+PHN1Yj48Yj5jemxvd2llazQ4ODwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWN6bG93aWVrNDg4IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fjemxvd2llazQ4OCIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9IiNpZGVhcy1jemxvd2llazQ4OCIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zbW95YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDgzMjk2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTZXJnaW8gTW95YSIvPjxiciAvPjxzdWI+PGI+U2VyZ2lvIE1veWE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzbW95YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c21veWEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBc21veWEiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmFzbGFnb25pIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEzMzk2MTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb25hcyBMYWdvbmkiLz48YnIgLz48c3ViPjxiPkpvbmFzIExhZ29uaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWpvbmFzbGFnb25pIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNpZGVhcy1qb25hc2xhZ29uaSIgdGl0bGU9IklkZWFzLCBQbGFubmluZywgJiBGZWVkYmFjayI+8J+klDwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWpvbmFzbGFnb25pIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9IiNxdWVzdGlvbi1qb25hc2xhZ29uaSIgdGl0bGU9IkFuc3dlcmluZyBRdWVzdGlvbnMiPvCfkqw8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qb25hc2xhZ29uaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0Fqb25hc2xhZ29uaSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2Rldi50by9kZXJiZXJnIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5OTU5Mjc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikx1a2FzeiBHb3JuaWNraSIvPjxiciAvPjxzdWI+PGI+THVrYXN6IEdvcm5pY2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGVyYmVyZyIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FkZXJiZXJnIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXJiZXJnIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcmp1bmdhcmcwNyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzAwOTcyMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXJqdW4gR2FyZyIvPjxiciAvPjxzdWI+PGI+QXJqdW4gR2FyZzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyanVuZ2FyZzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cuZm12aWxhcy5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQyMTE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJGcmFuIE3DqW5kZXoiLz48YnIgLz48c3ViPjxiPkZyYW4gTcOpbmRlejwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWZtdmlsYXMiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9CbGFrZWxpc3Q3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NTI1OTYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW53YWwgU2luZ2giLz48YnIgLz48c3ViPjxiPkthbndhbCBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUJsYWtlbGlzdDciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3d3dy5hbGVqYW5kcmFxdWV0emFsbGkuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE5OTY0NDAyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbGVqYW5kcmEgUXVldHphbGxpICIvPjxiciAvPjxzdWI+PGI+QWxlamFuZHJhIFF1ZXR6YWxsaSA8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FhbGVxdWV0emFsbGkiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWxlcXVldHphbGxpIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tZC1zYWlmLWh1c2FpbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDY4Mjk2OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTUQgU0FJRiAgSFVTQUlOIi8+PGJyIC8+PHN1Yj48Yj5NRCBTQUlGICBIVVNBSU48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLW1kLXNhaWYtaHVzYWluIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3N1ZGlwdG8uZ2hvc2gucHJvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExMjMyOTQwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdWRpcHRvIEdob3NoIi8+PGJyIC8+PHN1Yj48Yj5TdWRpcHRvIEdob3NoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZXhhbXBsZS1zdWRpcHRvZzgxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1zdWRpcHRvZzgxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXN1ZGlwdG9nODEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BhbndhdXUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI1OTcyMjM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InBhbndhdXUiLz48YnIgLz48c3ViPjxiPnBhbndhdXU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBhbndhdXUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1wYW53YXV1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXBhbndhdXUiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9zdGVmYW5lbWF5ZXIvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1MDMxOTUwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdGVmYW4gRS4gTWF5ZXIiLz48YnIgLz48c3ViPjxiPlN0ZWZhbiBFLiBNYXllcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQXN0ZWZhbmVyd2lubWF5ZXIiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYXNoVGFsbWl6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU1MDE4MjgwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUYWxtaXogQWhtZWQiLz48YnIgLz48c3ViPjxiPlRhbG1peiBBaG1lZDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhc2hUYWxtaXoiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFzaFRhbG1peiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLUhhc2hUYWxtaXoiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhhbmtzRm9yQWxsVGhlRmlzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTY5NjU1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXJjbyIvPjxiciAvPjxzdWI+PGI+TWFyY288L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FUaGFua3NGb3JBbGxUaGVGaXNoIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcXVhZHJyZW0iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODQ1MDg3Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icXVhZHJyZW0iLz48YnIgLz48c3ViPjxiPnF1YWRycmVtPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cXVhZHJyZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9rYW1rby5kZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTcwNzQzNzU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkthbWlsIEphbmXEjWVrIi8+PGJyIC8+PHN1Yj48Yj5LYW1pbCBKYW5lxI1lazwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthbWtvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWthbWtvIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYW1rbyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFoYWtwb3J3YWwwMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjQ4NjY4Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ibWFoYWtwb3J3YWwwMiIvPjxiciAvPjxzdWI+PGI+bWFoYWtwb3J3YWwwMjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtbWFoYWtwb3J3YWwwMiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFoYWtwb3J3YWwwMiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWhha3BvcndhbDAyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1haGFrcG9yd2FsMDIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Jvbi1kZWJhanlvdGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI1NzE2NjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRlYmFqeW90aSBIYWxkZXIiLz48YnIgLz48c3ViPjxiPkRlYmFqeW90aSBIYWxkZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yb24tZGViYWp5b3RpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJvbi1kZWJhanlvdGkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm9uLWRlYmFqeW90aSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLXJvbi1kZWJhanlvdGkiIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcml0aWszMDcuZ2l0aHViLmlvL3BvcnRmb2xpby8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjIzNzQ4Mjk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpdGlrIFJhd2FsIi8+PGJyIC8+PHN1Yj48Yj5SaXRpayBSYXdhbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJpdGlrMzA3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcml0aWszMDciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Jc2hhbi1TYWluaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDUyNTYwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYW4iLz48YnIgLz48c3ViPjxiPklzaGFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SXNoYW4tU2FpbmkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vc2FtcmlkaGktOTguZ2l0aHViLmlvL1BvcnRmb2xpbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDQ2NjA0MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FtcmlkZGhpIi8+PGJyIC8+PHN1Yj48Yj5TYW1yaWRkaGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TYW1yaWRoaS05OCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNhbXJpZGhpLTk4IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1TYW1yaWRoaS05OCIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dhYm9ybWFneWFyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYzMzk3MzAzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJHw6Fib3IgTWFneWFyIi8+PGJyIC8+PHN1Yj48Yj5Hw6Fib3IgTWFneWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2Fib3JtYWd5YXIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1nYWJvcm1hZ3lhciIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2liZXJuYWJldWRldiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDIxNTA3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaWJlcm5hYmV1ZGV2Ii8+PGJyIC8+PHN1Yj48Yj5pYmVybmFiZXVkZXY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaWJlcm5hYmV1ZGV2IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1pYmVybmFiZXVkZXYiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Nsb3dpa293c2tpYXJrYWRpdXN6Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzk3NTA4OTMwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcmthZGl1c3ogU8WCb3dpa293c2tpIi8+PGJyIC8+PHN1Yj48Yj5BcmthZGl1c3ogU8WCb3dpa293c2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1zbG93aWtvd3NraWFya2FkaXVzeiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BvbHlnZW5zIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM1ODIzMTg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IldpbGxlbSBHaWxsaXMiLz48YnIgLz48c3ViPjxiPldpbGxlbSBHaWxsaXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Qb2x5Z2VucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FQb2x5Z2VucyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JtYXNhcm92aWMiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTUyMjgzND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icm1hc2Fyb3ZpYyIvPjxiciAvPjxzdWI+PGI+cm1hc2Fyb3ZpYzwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJtYXNhcm92aWMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hc2Fyb3ZpYyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFzYXJvdmljIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcm1hc2Fyb3ZpYyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL293YWlzMzQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzcyMzg3NTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik93YWlzIEhhc25hdGggQWhtZWQiLz48YnIgLz48c3ViPjxiPk93YWlzIEhhc25hdGggQWhtZWQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1vd2FpczM0IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW93YWlzMzQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b3dhaXMzNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Bhbk1hbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85Nzg1MDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlBhbk1hbiIvPjxiciAvPjxzdWI+PGI+UGFuTWFuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGFuTWFuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcnR1ci1jaW9jYW51Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc0MzE5Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYXJ0dXItY2lvY2FudSIvPjxiciAvPjxzdWI+PGI+YXJ0dXItY2lvY2FudTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYXJ0dXItY2lvY2FudSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnR1ci1jaW9jYW51IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFydHVyLWNpb2NhbnUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtYXJ0dXItY2lvY2FudSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9taWNyby1qdW1iby5ldS8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTE2OTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkN5cHJpYW4gR3JhY3oiLz48YnIgLz48c3ViPjxiPkN5cHJpYW4gR3JhY3o8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1taWNyby1qdW1ibyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FtaWNyby1qdW1ibyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly93d3cucHJpbnRuYW5ueS5haSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNjAxODE5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMZWlnaCBKb2huc29uIi8+PGJyIC8+PHN1Yj48Yj5MZWlnaCBKb2huc29uPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1sZWlnaC1qb2huc29uIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbGVpZ2gtam9obnNvbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1sZWlnaC1qb2huc29uIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FsZWlnaC1qb2huc29uIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9uaXRpbnRlanVqYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NTM0NzkyND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTml0aW4gVGVqdWphIi8+PGJyIC8+PHN1Yj48Yj5OaXRpbiBUZWp1amE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1uaXRpbnRlanVqYSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLW5pdGludGVqdWphIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20va2VubmV0aGFhc2FuIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzczOTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Iktlbm5ldGggQWFzYW4iLz48YnIgLz48c3ViPjxiPktlbm5ldGggQWFzYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rZW5uZXRoYWFzYW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI21haW50ZW5hbmNlLWtlbm5ldGhhYXNhbiIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbWl0LWtzaCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTk0NzAzNz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW1pdCBLdW1hciBTaGFybWEiLz48YnIgLz48c3ViPjxiPkFtaXQgS3VtYXIgU2hhcm1hPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YW1pdC1rc2giIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1hbWl0LWtzaCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS96YXl0c2V2YW5kIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMDc3NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZHJleSBaYXl0c2V2Ii8+PGJyIC8+PHN1Yj48Yj5BbmRyZXkgWmF5dHNldjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS16YXl0c2V2YW5kIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXpheXRzZXZhbmQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvZGluZ3RlbnNoaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTYzNzc2MzA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlRlbnNoaSBDb2RlcyIvPjxiciAvPjxzdWI+PGI+VGVuc2hpIENvZGVzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjaW5mcmEtY29kaW5ndGVuc2hpIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL3l1c2hpb21vdGUub3JnLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNzMzOTE1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJZdXNoaSBPTU9URSIvPjxiciAvPjxzdWI+PGI+WXVzaGkgT01PVEU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FZdXNoaU9NT1RFIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ZdXNoaU9NT1RFIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbWFsY2hlcmN6eWsucGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc1MzQ1MDQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlpiaWduaWV3IE1hbGNoZXJjenlrIi8+PGJyIC8+PHN1Yj48Yj5aYmlnbmlldyBNYWxjaGVyY3p5azwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUZlcnJvciIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjaW5mcmEtRmVycm9yIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9RmVycm9yIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtRmVycm9yIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1GZXJyb3IiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBRmVycm9yIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8yMDBQdWxzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY5MTgzNjA/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IjIwMFB1bHMiLz48YnIgLz48c3ViPjxiPjIwMFB1bHM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj0yMDBQdWxzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPTIwMFB1bHMiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9saW5rdHIuZWUvYW5heXNhcmthcjciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTMzNDExODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuYXkgU2Fya2FyIi8+PGJyIC8+PHN1Yj48Yj5BbmF5IFNhcmthcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtYW5heXNhcmthcjciIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFuYXlzYXJrYXI3IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Mb3Vpc1hoYWZlcmkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTIzOTc2Nzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkxvdWlzIFhoYWZlcmkiLz48YnIgLz48c3ViPjxiPkxvdWlzIFhoYWZlcmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpc1hoYWZlcmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zYW1iaGF2Z3VwdGEwNzA1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzgxODcwODY2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYW1iaGF2IEd1cHRhIi8+PGJyIC8+PHN1Yj48Yj5TYW1iaGF2IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iI2Rlc2lnbi1zYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzYW1iaGF2Z3VwdGEwNzA1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJheXV0c3UiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ2MzY1MjU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFiaGF5IEdhcmciLz48YnIgLz48c3ViPjxiPkFiaGF5IEdhcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNleGFtcGxlLXByYXl1dHN1IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wcmF5dXRzdSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGVucmlram9uIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI3MjEyMjMyP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJoZW5yaWtqb24iLz48YnIgLz48c3ViPjxiPmhlbnJpa2pvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWhlbnJpa2pvbiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1oZW5yaWtqb24iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGVucmlram9uIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtaGVucmlram9uIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3lhc2lyZGV2ZWxvcGVyLm5ldGxpZnkuYXBwLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDYwMDc0NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTW9oYW1tYWQgWWFzaXIiLz48YnIgLz48c3ViPjxiPk1vaGFtbWFkIFlhc2lyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9WWFzaXI3NjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NhdmlvNjI5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzkxMzYyNTg5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTYXZpbyBEaWFzIi8+PGJyIC8+PHN1Yj48Yj5TYXZpbyBEaWFzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2F2aW82MjkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjaW5mcmEtU2F2aW82MjkiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FTYXZpbzYyOSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2lzaGFhbjgxMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDE5MDUzMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSXNoYWFuIFNoYWgiLz48YnIgLz48c3ViPjxiPklzaGFhbiBTaGFoPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aXNoYWFuODEyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaHJleWFzMDQxMCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MDc5NTg2Nz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2hyZXlhczA0MTAiLz48YnIgLz48c3ViPjxiPlNocmV5YXMwNDEwPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2hyZXlhczA0MTAiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZWt1LWVwaXRvbWUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE1MTUxNTEzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJiZWt1LWVwaXRvbWUiLz48YnIgLz48c3ViPjxiPmJla3UtZXBpdG9tZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJla3UtZXBpdG9tZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FiZWt1LWVwaXRvbWUiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YmVrdS1lcGl0b21lIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zd29yZG1hc3RlcjJrIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMzNTQwMTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikpvc2h1YSBNaWNoYWVsIERhbHkiLz48YnIgLz48c3ViPjxiPkpvc2h1YSBNaWNoYWVsIERhbHk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fzd29yZG1hc3RlcjJrIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGxraiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNDMwNTk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRhbmllbCBLSiIvPjxiciAvPjxzdWI+PGI+RGFuaWVsIEtKPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGxraiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kbGtqIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtZGxraiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGxraiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2NvZGV5dC5jb20vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzczMDMzNTExP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJCaGF2aWsgQWdhcndhbCIvPjxiciAvPjxzdWI+PGI+QmhhdmlrIEFnYXJ3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNkZXNpZ24tQmhhdmlrLWFnIiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2thdXNoaWstcmlzaGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI0OTg2MTc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJpc2hpIi8+PGJyIC8+PHN1Yj48Yj5SaXNoaTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWthdXNoaWstcmlzaGkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLWthdXNoaWstcmlzaGkiIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3JvaGl0aGJvcHBleS5uZXRsaWZ5LmFwcCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MzUzODk3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUm9oaXRoIEJvcHBleSIvPjxiciAvPjxzdWI+PGI+Um9oaXRoIEJvcHBleTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvaGl0aEJvcHBleSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tUm9oaXRoQm9wcGV5IiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2FzaGlzaHBhZGh5LmxpdmUiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTAwNDg0NDAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBc2hpc2ggUGFkaHkiLz48YnIgLz48c3ViPjxiPkFzaGlzaCBQYWRoeTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNodXJ0dS1nYWwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2h1cnR1LWdhbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNpbmZyYS1TaHVydHUtZ2FsIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9qZmNvdGUuZ2l0aHViLmlvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0MzM2OTAwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKZWFuLUZyYW7Dp29pcyBDw7R0w6kiLz48YnIgLz48c3ViPjxiPkplYW4tRnJhbsOnb2lzIEPDtHTDqTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1KRkNvdGUiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUpGQ290ZSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU3VtYW50eEQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU4MTA0MjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlN1bWFudC54RCIvPjxiciAvPjxzdWI+PGI+U3VtYW50LnhEPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U3VtYW50eEQiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjaW5mcmEtU3VtYW50eEQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TdW1hbnR4RCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ5YW5hczE1OSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTQzMzA5MzE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyeWFuIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5BcnlhbiBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFyeWFuYXMxNTkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL21hcmt1cy5wb2Vyc2Noa2UubnJ3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMjIzNzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1hcmt1cyBQb2Vyc2Noa2UiLz48YnIgLz48c3ViPjxiPk1hcmt1cyBQb2Vyc2Noa2U8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtbWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYXJrdXNwb2Vyc2Noa2UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbWVzbW9leSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTc0NzI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkphbWVzIE1vZXkiLz48YnIgLz48c3ViPjxiPkphbWVzIE1vZXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW1lc21vZXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9amFtZXNtb2V5IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b213b2xhbnNraSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82ODA4NTY1Mz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0idG9td29sYW5za2kiLz48YnIgLz48c3ViPjxiPnRvbXdvbGFuc2tpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBdG9td29sYW5za2kiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Lc2lzYSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MzQwNDc3MT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS3Jpc3R1cGFzIi8+PGJyIC8+PHN1Yj48Yj5LcmlzdHVwYXM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Lc2lzYSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RldmFuc2gtQmhhdHQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTQ3MzIwNzk/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkRldmFuc2gtQmhhdHQiLz48YnIgLz48c3ViPjxiPkRldmFuc2gtQmhhdHQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1EZXZhbnNoLUJoYXR0IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2luZnJhLURldmFuc2gtQmhhdHQiIHRpdGxlPSJJbmZyYXN0cnVjdHVyZSAoSG9zdGluZywgQnVpbGQtVG9vbHMsIGV0YykiPvCfmoc8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcGlwbGl5YSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NjE4NjE0Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQW5zaCBQYW5jaG9saSIvPjxiciAvPjxzdWI+PGI+QW5zaCBQYW5jaG9saTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXBpcGxpeWEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1F5cG9sMzQyIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3NDk3MDA3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYWVnaHQgTG9hbiIvPjxiciAvPjxzdWI+PGI+TWFlZ2h0IExvYW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ReXBvbDM0MiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vcHJpbmNlcmFqcG9vdC5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDQ1ODU0NTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlByaW5jZSBSYWpwb290Ii8+PGJyIC8+PHN1Yj48Yj5QcmluY2UgUmFqcG9vdDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXByaW5jZXJhanBvb3QyMCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaGFyc2hpdC1zZW5wYWkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTMwNzUwNjg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImhhcnNoaXQgbWlzaHJhICIvPjxiciAvPjxzdWI+PGI+aGFyc2hpdCBtaXNocmEgPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGFyc2hpdC1zZW5wYWkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1BldGVBdWRpbmF0ZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTI3NDg3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iUGV0ZUF1ZGluYXRlIi8+PGJyIC8+PHN1Yj48Yj5QZXRlQXVkaW5hdGU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QZXRlQXVkaW5hdGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2phbm8tcGV0cmFzIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNDc4NDg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Imphbm8tcGV0cmFzIi8+PGJyIC8+PHN1Yj48Yj5qYW5vLXBldHJhczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbm8tcGV0cmFzIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbmlsa2FudGg5ODciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI0MTM1ODE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pbGthbnRoIFBhcm1hciIvPjxiciAvPjxzdWI+PGI+Tmlsa2FudGggUGFybWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1uaWxrYW50aDk4NyIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bmlsa2FudGg5ODciIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9qYWlzYXJpdGEudmVyY2VsLmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM2MzkzNDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFzaG1pdCBKYWlTYXJpdGEgR3VwdGEiLz48YnIgLz48c3ViPjxiPkFzaG1pdCBKYWlTYXJpdGEgR3VwdGE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNkZXNpZ24tZGV2aWxraWxsZXItYWciIHRpdGxlPSJEZXNpZ24iPvCfjqg8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1kZXZpbGtpbGxlci1hZyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1kZXZpbGtpbGxlci1hZyIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2aWxraWxsZXItYWciIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBZGV2aWxraWxsZXItYWciIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cDovL2hhcnNoaWwucHJvc2Uuc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzkzNjc4ODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkhhcnNoaWwgSmFuaSIvPjxiciAvPjxzdWI+PGI+SGFyc2hpbCBKYW5pPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SGFyc2hpbC1KYW5pIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhcnNoaWwtSmFuaSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21pbnR1LXBvcnRmb2xpby5uZXRsaWZ5LmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTI3OTI1NDY1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNaW50dSBHb2dvaSIvPjxiciAvPjxzdWI+PGI+TWludHUgR29nb2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1NaW4yd2hvIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kZXZhbnNoLW0xMiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84NjE5NTE2Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRGV2YW5zaCBNYWhhbnQiLz48YnIgLz48c3ViPjxiPkRldmFuc2ggTWFoYW50PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGV2YW5zaC1tMTIiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL29mZmljaWFsYXNpc2hrdW1hciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84Nzg3NDc3NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXNpc2ggS3VtYXIiLz48YnIgLz48c3ViPjxiPkFzaXNoIEt1bWFyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b2ZmaWNpYWxhc2lzaGt1bWFyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbmt1cjA5MDQiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTgzNDY4OTY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFua3VyIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5Bbmt1ciBTaW5naDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFua3VyMDkwNCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1Jvd2xhbmRCYW5rcyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85OTYyNTUxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSb3dsYW5kQmFua3MiLz48YnIgLz48c3ViPjxiPlJvd2xhbmRCYW5rczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVJvd2xhbmRCYW5rcyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Sb3dsYW5kQmFua3MiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBUm93bGFuZEJhbmtzIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21vcml0emthbHdhLmRldi8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjI4NDI2NTQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1vcml0eiBLYWx3YSIvPjxiciAvPjxzdWI+PGI+TW9yaXR6IEthbHdhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bW9yaXR6a2Fsd2EiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBbW9yaXR6a2Fsd2EiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1vcml0emthbHdhIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ha2tzaGl0Z3VwdGEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTY5OTE3ODU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFrc2hpdCBHdXB0YSIvPjxiciAvPjxzdWI+PGI+QWtzaGl0IEd1cHRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9YWtrc2hpdGd1cHRhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWFra3NoaXRndXB0YSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFra3NoaXRndXB0YSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ha2tzaGl0Z3VwdGEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0F0aHVsMDQ5MSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NTY2NDE4NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXRodWwgVHVsYXNpZGFzYW4iLz48YnIgLz48c3ViPjxiPkF0aHVsIFR1bGFzaWRhc2FuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtQXRodWwwNDkxIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1BdGh1bDA0OTEiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QXRodWwwNDkxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Tb3V2aWtucyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MTc4MTQzOD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0ic291dmlrIi8+PGJyIC8+PHN1Yj48Yj5zb3V2aWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLVNvdXZpa25zIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Tb3V2aWtucyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTG91aXMtUGhpbGlwcGVHZW50aWxlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDI2OTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMb3Vpcy1QaGlsaXBwZUdlbnRpbGUiLz48YnIgLz48c3ViPjxiPkxvdWlzLVBoaWxpcHBlR2VudGlsZTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Mb3Vpcy1QaGlsaXBwZUdlbnRpbGUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TG91aXMtUGhpbGlwcGVHZW50aWxlIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQUxvdWlzLVBoaWxpcHBlR2VudGlsZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0FraGlsSjMyMSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODUwODM3ND92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWtoaWwgSmFtd2FsIi8+PGJyIC8+PHN1Yj48Yj5Ba2hpbCBKYW13YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Ba2hpbEozMjEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9QWtoaWxKMzIxIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWhlbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNjMyODM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFuZGVycyBIZWxsZXJ1cCBNYWRzZW4iLz48YnIgLz48c3ViPjxiPkFuZGVycyBIZWxsZXJ1cCBNYWRzZW48L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1haGVtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFoZW0iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBYWhlbSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JxdWluaW8xQSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81ODMyMjkxMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0icnF1aW5pbzFBIi8+PGJyIC8+PHN1Yj48Yj5ycXVpbmlvMUE8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ycXVpbmlvMUEiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS1ycXVpbmlvMUEiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9naXRhbmtpdDciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzQ0NDE5MzY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImdpdGFua2l0NyIvPjxiciAvPjxzdWI+PGI+Z2l0YW5raXQ3PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Z2l0YW5raXQ3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qYW5uZS1zbGFtY29yZSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTI4Njc4NDc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ikphbm5lIEh1c2JlcmciLz48YnIgLz48c3ViPjxiPkphbm5lIEh1c2Jlcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW5uZS1zbGFtY29yZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqYW5uZS1zbGFtY29yZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JvcnJ1bGwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTI3NTQwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYm9ycnVsbCIvPjxiciAvPjxzdWI+PGI+Ym9ycnVsbDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJvcnJ1bGwiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9Ym9ycnVsbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3Lnlva2VwbGF0Zm9ybS5jb20iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjEwNjE3OD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2FtaWwgWnV6ZGEiLz48YnIgLz48c3ViPjxiPkthbWlsIFp1emRhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2FtYXoiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2plc3BpdGFlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIzMDQxMTQ2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJqZXNwaXRhZSIvPjxiciAvPjxzdWI+PGI+amVzcGl0YWU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qZXNwaXRhZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FqZXNwaXRhZSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vcGlrZS5naXRodWIuaW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQzNDk0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBeGVsIEhlY2h0Ii8+PGJyIC8+PHN1Yj48Yj5BeGVsIEhlY2h0PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UGlrZSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1QaWtlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90b21kZXZyb29tZW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDYzNzk4Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVG9tIGRlIFZyb29tZW4iLz48YnIgLz48c3ViPjxiPlRvbSBkZSBWcm9vbWVuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtdG9tZGV2cm9vbWVuIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj10b21kZXZyb29tZW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9dG9tZGV2cm9vbWVuIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tZW1kYWwiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzc4Mzg1NjY/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1lbWRhbCIvPjxiciAvPjxzdWI+PGI+bWVtZGFsPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWVtZGFsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1lbWRhbCIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCBhcmUgd2VsY29tZSEK + readmeEtag: '"498238072d4e9dde9e19cdec65fdaacee37bff6b"' + readmeLastModified: Tue, 08 Oct 2024 09:03:17 GMT repositoryId: 331620831 description: >- A library for generating typed models based on inputs such as AsyncAPI, OpenAPI, and JSON Schema documents with high customization created: '2021-01-21T12:27:51Z' - updated: '2024-10-07T00:29:25Z' + updated: '2024-10-08T23:16:39Z' language: TypeScript archived: false stars: 302 @@ -9117,8 +9117,8 @@ owner: asyncapi logo: https://avatars.githubusercontent.com/u/16401334?v=4 license: Apache-2.0 - repoEtag: '"69fc972ccf39004ba61d78e5e5b10785536a8e5d1ac37bec34461603b62e43c0"' - repoLastModified: Mon, 07 Oct 2024 00:29:25 GMT + repoEtag: '"9e552de0b2cf33a0f0c554fcdcf91d885bf54ca25dfc5d3fe31e159d6ddae6ae"' + repoLastModified: Tue, 08 Oct 2024 23:16:39 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/dymmond/esmerald @@ -9247,17 +9247,17 @@ repositoryId: 628179878 description: Use Zod Schemas to create OpenAPI v3.x documentation created: '2023-04-15T06:28:51Z' - updated: '2024-10-08T02:11:31Z' + updated: '2024-10-08T23:30:42Z' language: TypeScript archived: false - stars: 271 + stars: 272 watchers: 2 forks: 13 owner: samchungy logo: https://avatars.githubusercontent.com/u/18017094?v=4 license: MIT - repoEtag: '"e1fa9beda644fc449b8a951a00c9a848cfc2b6044d363e89121d5039c47f20bf"' - repoLastModified: Tue, 08 Oct 2024 02:11:31 GMT + repoEtag: '"41426bddd68c6483e31bac7f94d4e1676b44f1c3b87dbfcd123142cf81d2cff3"' + repoLastModified: Tue, 08 Oct 2024 23:30:42 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -9341,7 +9341,7 @@ owner: testingisdocumenting logo: https://avatars.githubusercontent.com/u/54154955?v=4 license: Apache-2.0 - repoEtag: '"72d0232bd9fd99aa13bdf4aa8a295f85a0d354de67dda2672fc7093e5692422e"' + repoEtag: '"21a5bb651c77f69f8379413ef1bfcecdfdb0cb7c355eb8acde0213b2c5bd1d23"' repoLastModified: Mon, 07 Oct 2024 23:13:59 GMT foundInMaster: true category: Documentation @@ -9519,11 +9519,11 @@ archived: false stars: 217 watchers: 6 - forks: 36 + forks: 35 owner: epiphone logo: https://avatars.githubusercontent.com/u/1923531?v=4 license: MIT - repoEtag: '"dce9f1b4fc1148b7f69aab13b0f8e8f6913f730f88e332ffec56152d6bbf10c4"' + repoEtag: '"fa599b25f491578cd6743423778780b226a84ddd3b0643ae2465aa7735188f2e"' repoLastModified: Thu, 03 Oct 2024 03:12:32 GMT foundInMaster: true category: @@ -9647,7 +9647,7 @@ A plugin for the Fastify webserver to autogenerate a Fastify configuration based on a OpenApi(v2/v3) specification. created: '2018-06-30T19:02:58Z' - updated: '2024-10-02T10:29:38Z' + updated: '2024-10-08T18:14:00Z' language: JavaScript archived: false stars: 203 @@ -9656,8 +9656,8 @@ owner: seriousme logo: https://avatars.githubusercontent.com/u/3322396?v=4 license: MIT - repoEtag: '"a7f3cb09abfb640c49d80cfcd155a39693dd93642bb36d37affa064adc3600f2"' - repoLastModified: Wed, 02 Oct 2024 10:29:38 GMT + repoEtag: '"57f3dccf1fd4ac0309706cef71045939d29769940b3496e8125bc5a658eb8337"' + repoLastModified: Tue, 08 Oct 2024 18:14:00 GMT foundInMaster: true category: - Data Validators @@ -9742,17 +9742,17 @@ Autogenered docs, Zod - BullMQ - Nodemailer - Docker - MongoDB (Mongoose) - Socket.io created: '2024-08-11T02:19:59Z' - updated: '2024-10-07T08:26:56Z' + updated: '2024-10-08T12:51:09Z' language: TypeScript archived: false - stars: 199 + stars: 200 watchers: 3 forks: 36 owner: muneebhashone logo: https://avatars.githubusercontent.com/u/88892379?v=4 license: MIT - repoEtag: '"a02206d7655ee470d29b0202949c24a4c64040c0e7b3604be49b643712f962cb"' - repoLastModified: Mon, 07 Oct 2024 08:26:56 GMT + repoEtag: '"161c8c17884538ccb153325581196e5633931bd24565315f2f662e2298f60c41"' + repoLastModified: Tue, 08 Oct 2024 12:51:09 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -9829,11 +9829,11 @@ archived: false stars: 191 watchers: 22 - forks: 131 + forks: 132 owner: paypal logo: https://avatars.githubusercontent.com/u/476675?v=4 license: Apache-2.0 - repoEtag: '"db5519a3c5c39f948be7a1bd46ae0afcf640fb0b333cc61e7ce8cc70f4408faf"' + repoEtag: '"fe1306da4d22d550e13ea9551fd6bcb5ae4c89bf71a90525ba5908097df60f11"' repoLastModified: Fri, 04 Oct 2024 08:54:40 GMT category: Code Generators foundInMaster: true @@ -9876,7 +9876,7 @@ A tool for generating Refit interfaces and contracts from OpenAPI specifications created: '2023-02-07T23:18:12Z' - updated: '2024-10-07T12:27:22Z' + updated: '2024-10-08T19:39:21Z' language: C# archived: false stars: 188 @@ -9885,8 +9885,8 @@ owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT - repoEtag: '"aeb8c301d3bf1c1be210c54b20d79c76f05c2fdaf3040e29e1a1b63cc2b6de97"' - repoLastModified: Mon, 07 Oct 2024 12:27:22 GMT + repoEtag: '"c53b6a913a2fe43a0e362945c8163dae8a263fe153c46b06872e0a21de6ca73a"' + repoLastModified: Tue, 08 Oct 2024 19:39:21 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -9900,17 +9900,17 @@ repositoryId: 362315893 description: Generate REST API and OpenAPI documentation for your Flask project. created: '2021-04-28T02:39:57Z' - updated: '2024-10-06T21:44:52Z' + updated: '2024-10-08T06:43:02Z' language: Python archived: false - stars: 187 + stars: 188 watchers: 7 forks: 28 owner: luolingchun logo: https://avatars.githubusercontent.com/u/22740403?v=4 license: MIT - repoEtag: '"6c69ba0d17fa1839022aeb58e2ef8cb01ecbc7dda6712ee8d89b997f48e3f8b6"' - repoLastModified: Sun, 06 Oct 2024 21:44:52 GMT + repoEtag: '"82d2cae0eab10db279f12c0f3c1dcef84ebeba33cc4180e52cfa5177e1d2de42"' + repoLastModified: Tue, 08 Oct 2024 06:43:02 GMT foundInMaster: true category: Server Implementations id: 7baa4046f5397a8fd006511115871ac0 @@ -9926,17 +9926,17 @@ repositoryId: 543052826 description: Speakeasy CLI - Enterprise developer experience for your API created: '2022-09-29T10:13:15Z' - updated: '2024-10-07T23:27:50Z' + updated: '2024-10-08T23:53:46Z' language: JavaScript archived: false - stars: 185 + stars: 187 watchers: 12 forks: 14 owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION - repoEtag: '"b7df143237e3adae7957f0e068faef859e8681c216a8c507a94aed4d1b98cb75"' - repoLastModified: Mon, 07 Oct 2024 23:27:50 GMT + repoEtag: '"8114cc1ce71935c150b090c9bc03694387d327065eef0b21744d9c354495fffa"' + repoLastModified: Tue, 08 Oct 2024 23:53:46 GMT category: Parsers foundInMaster: true - source: @@ -10031,15 +10031,15 @@ id: 30d6812808d99b1b58b61c10028cb8de repositoryMetadata: base64Readme: >- - WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1NYXJrZXRwbGFjZSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3I/bGFiZWw9VlMlMjAyMDE5KV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyP2xhYmVsPVZTJTIwMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKQpbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKClshW2J1eW1lYWNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9idXklMjBtZSUyMGElMjBjb2ZmZWUtZG9uYXRlLXllbGxvdy5zdmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQpbIVtKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5XShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHkuc3ZnKV0oaHR0cHM6Ly9naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHk/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkKCiMgUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yCgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIERvd25sb2FkCgotICoqW1Zpc3VhbCBTdHVkaW8gMjAyMl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTddKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDE3KSoqCi0gKipbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpKiouIEZvbGxvdyAqKlt0aGVzZSBpbnN0cnVjdGlvbnNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpKiogZm9yIHVwZGF0ZSBjb252ZW5pZW5jZSBvbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIFZpc3VhbCBTdHVkaW8gMjAxNywgMjAxOSwgMjAyMiwgYW5kIFtWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIDxodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uPikgdXNpbmcgdGhlIGZvbGxvd2luZyBjb2RlIGdlbmVyYXRvcnM6CiAgLSBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQogIC0gW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpCiAgLSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKQogIC0gW0F1dG9SZXN0XShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QpCi0gRGVmaW5lIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRoZSBnZW5lcmF0ZWQgZmlsZQotIEF1dG8tdXBkYXRpbmcgb2YgZ2VuZXJhdGVkIGNvZGUgZmlsZSB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09OIG9yIFlBTUwgZmlsZQotIEdlbmVyYXRlIGNvZGUgdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGVzIHVzaW5nIHRoZSBmb2xsb3dpbmc6CiAgLSBgLm5zd2FnYCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgTlN3YWcgU3R1ZGlvIG91dHB1dCoqIGNvbnRleHQgbWVudQogIC0gYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZXMgZnJvbSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYnkgaW5jbHVkaW5nIGl0IGluIHRoZSBwcm9qZWN0IGFuZCB1c2luZyB0aGUgKipHZW5lcmF0ZSBSZWZpdHRlciBvdXRwdXQqKiBjb250ZXh0IG1lbnUKICAtIGBraW90YS1sb2NrLmpzb25gIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKSBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIHByb2plY3QgYW5kIHVzaW5nIHRoZSAqKkdlbmVyYXRlIEtpb3RhIG91dHB1dCoqIGNvbnRleHQgbWVudQoKIyMjIEN1c3RvbSBUb29scwoKQ3VzdG9tIHRvb2xzIGxldCB5b3UgYXNzb2NpYXRlIGEgdG9vbCB3aXRoIGFuIGl0ZW0gaW4gYSBwcm9qZWN0IGFuZCBydW4gdGhhdCB0b29sIHdoZW5ldmVyIHRoZSBmaWxlIGlzIHNhdmVkCgotICoqKk5Td2FnQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKSAqKnYxNC4xLjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y3LjguMCkqKi4KVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWcgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYC4gSXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcyB3aGljaCB3aWxsIGJlIHBsYWNlZCBhdCB0aGUgc2FtZSBwYXRoIGFzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgY29kZSwgdGhpcyBpcyBkb25lIHVuZGVyIFRvb2xzIC0+IFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvciAtPiBPcGVuQVBJIEdlbmVyYXRvciBhbmQgc2V0dGluZyAqKkdlbmVyYXRlIE11bHRpcGxlIEZpbGVzKiogdG8gKip0cnVlKioKCi0gKioqS2lvdGFDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBNaWNyb3NvZnQgcHJvamVjdCAqKltLaW90YSB2MS4xOS4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiBUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBLaW90YSBkb3RuZXQgdG9vbCB3aXRoOiBgZ2VuZXJhdGUgLWwgQ1NoYXJwIC1kIFtzd2FnZ2VyIGZpbGVdIC1vIFtvdXRwdXQgZmlsZV0gLW4gW2RlZmF1bHQgbmFtZXNwYWNlXWAuIEl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgZmlsZXMgd2hpY2ggd2lsbCBiZSBwbGFjZWQgYXQgdGhlIHNhbWUgcGF0aCBhcyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB0aGF0IHdhcyB1c2VkIHRvIGdlbmVyYXRlIGNvZGUsIHRoaXMgaXMgZG9uZSB1bmRlciBUb29scyAtPiBSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IgLT4gS2lvdGEgYW5kIHNldHRpbmcgKipHZW5lcmF0ZSBNdWx0aXBsZSBGaWxlcyoqIHRvICoqdHJ1ZSoqCgotICoqKlN3YWdnZXJDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nICoqU3dhZ2dlciBDb2RlZ2VuIENMSSB2My4wLjM0KiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFN3YWdnZXIgQ29kZWdlbiBDTEkgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWwgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYAoKLSAqKipBdXRvUmVzdENvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipBdXRvUmVzdCB2My4wLjAtYmV0YS4yMDIxMDUwNC4yKiogZm9yIE9wZW5BUEkgdjMgYW5kICoqQXV0b1Jlc3QgdjIuMC40NDE3KiogZm9yIE9wZW5BUEkgdjIuIFRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDoKIGAtLWNzaGFycCAtLWlucHV0LWZpbGU9W3N3YWdnZXIgZmlsZV0gLS1vdXRwdXQtZmlsZT1bb3V0cHV0IGZpbGVdIC0tbmFtZXNwYWNlPVtkZWZhdWx0IG5hbWVzcGFjZV0gLS1hZGQtY3JlZGVudGlhbHNgCgotICoqKlJlZml0dGVyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCBpbnRlZmFjZSBmb3IgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgdXNpbmcgW1JlZml0dGVyLkNvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZWZpdHRlci5Db3JlLykgKip2MS4zLjIqKi4KVGhlIG91dHB1dCBmaWxlIGNvbnRhaW5zIGEgUmVmaXQgaW50ZXJmYWNlIGdlbmVyYXRlZCBieSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYW5kIGNvbnRyYWN0cyBnZW5lcmF0ZWQgdXNpbmcgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKQoKIyMjIERlcGVuZGVuY2llcwoKVGhlIGN1c3RvbSB0b29sIGNvZGUgZ2VuZXJhdG9ycyBwaWdneSBiYWNrIG9uIHRvcCBvZiB3ZWxsIGtub3duIE9wZW4gQVBJIGNsaWVudCBjb2RlIGdlbmVyYXRvcnMgbGlrZSAqKkF1dG9SZXN0KiosICoqTlN3YWcqKiwgKipPcGVuQVBJIEdlbmVyYXRvcioqLCAqKk1pY3Jvc29mdCBLaW90YSoqLCAqKlJlZml0dGVyKiosIGFuZCAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKi4gVGhlc2UgdG9vbHMgcmVxdWlyZSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYW5kIHRoZSBbSmF2YSBSdW50aW1lIEVudmlyb25tZW50XShodHRwczovL2phdmEuY29tL2VuL2Rvd25sb2FkL21hbnVhbC5qc3ApIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgZGV2ZWxvcGVycyBtYWNoaW5lLiBBbHRlcm5hdGl2ZSBKYXZhIFNESyBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyB0aGUgW09wZW5KREtdKGh0dHBzOi8vYWRvcHRvcGVuamRrLm5ldCkgd29ya3MgZmluZSB3aXRoIHRoaXMgZXh0ZW5zaW9uLiBCeSBkZWZhdWx0LCB0aGUgcGF0aCB0byAqKmphdmEuZXhlKiogaXMgcmVhZCBmcm9tIHRoZSAqKkpBVkFfSE9NRSoqIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgaXMgYWxzbyBjb25maWd1cmFibGUgaW4gdGhlIFNldHRpbmdzIHNjcmVlbi4gRnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleHRlbnNpb24gd2lsbCBpbmNsdWRlIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSBpbiB0aGUgVlNJWCBwYWNrYWdlCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6CgotIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTEyLjAuMCkKLSBbSnNvblN1YlR5cGVzXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSnNvblN1YlR5cGVzLzIuMC4xKQotIFtQb2xseV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1BvbGx5LzguNC4yKQotIFtOZXd0b25zb2Z0Lkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OZXd0b25zb2Z0Lkpzb24vMTMuMC4zKQoKVGhlIHByb2plY3QgKipLaW90YSoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXMKCi0gW01pY3Jvc29mdC5LaW90YS5BYnN0cmFjdGlvbnNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zKQotIFtNaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5IdHRwLkh0dHBDbGllbnRMaWJyYXJ5KQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Gb3JtXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybSkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uVGV4dF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHQpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnQpCi0gW01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZSkKLSBbQXp1cmUuSWRlbnRpdHldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9BenVyZS5JZGVudGl0eSkKClRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDUuMS4wKSBhbmQgW0pzb25TdWJUeXBlc10oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0pzb25TdWJUeXBlcy8xLjkuMCkgTnVHZXQgcGFja2FnZXMKClRoZSAqKkF1dG9SZXN0KiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtNaWNyb3NvZnQuUmVzdC5DbGllbnRSdW50aW1lXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZS8yLjMuMjQpIGFuZCBbTmV3dG9uc29mdC5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uLzEzLjAuMykgTnVHZXQgcGFja2FnZXMKClRoaXMgVmlzdWFsIFN0dWRpbyBFeHRlbnNpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVxdWlyZWQgTnVHZXQgcGFja2FnZXMgdGhhdCB0aGUgZ2VuZXJhdGVkIGNvZGUgZGVwZW5kcyBvbgoKIyMgU2NyZWVuc2hvdHMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy9hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy9zb2x1dGlvbi1leHBsb3Jlci1jb250ZXh0LW1lbnUuanBnKQoKIVtOU3dhZyBTdHVkaW8gQ29udGV4dCBNZW51XShpbWFnZXMvbnN3YWdzdHVkaW8tY29udGV4dC1tZW51LmpwZykKCiFbUmVmaXR0ZXIgQ29udGV4dCBNZW51XShpbWFnZXMvcmVmaXR0ZXItY29tbWFuZC5wbmcpCgohW0tpb3RhIENvbnRleHQgTWVudV0oaW1hZ2VzL2dlbmVyYXRlLWtpb3RhLW91dHB1dC5wbmcpCgojIyMgU2V0dGluZ3MKClRoaXMgZXh0ZW5zaW9uIHdpbGwgYnkgZGVmYXVsdCBtYWtlIHNvbWUgYXNzdW1wdGlvbnMgb24gdGhlIGluc3RhbGxhdGlvbiBwYXRocyBmb3IgKipKYXZhKiosICoqTlN3YWcqKiBhbmQgKipOUE0qKiBidXQgYWxzbyBwcm92aWRlcyBvcHRpb24gcGFnZXMgZm9yIGNvbmZpZ3VyaW5nIHRoaXMuIFRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBhbmQgdGhlICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBKQVIgZmlsZXMgYXJlIGJ5IGRlZmF1bHQgZG93bmxvYWRlZCB0byB0aGUgdXNlciBURU1QIGZvbGRlciBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRvIHVzZSBleGlzdGluZyBKQVIgZmlsZXMKCiFbT3B0aW9ucyAtIEdlbmVyYWxdKGltYWdlcy9vcHRpb25zLWdlbmVyYWwucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IEF1dG9SZXN0IGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIHRoZSBDIyBnZW5lcmF0b3Igc2V0dGluZ3MgdGhhdCB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIEF1dG9SZXN0XShpbWFnZXMvb3B0aW9ucy1hdXRvcmVzdC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgTlN3YWcgZ2VuZXJhdGVzIGNvZGUgdXNpbmcgdGhlIHByb3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgTlN3YWcgTnVHZXQgcGFja2FnZQoKIVtPcHRpb25zIC0gTlN3YWddKGltYWdlcy9vcHRpb25zLW5zd2FnLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyB0aGUgKioubnN3YWcqKiBmaWxlIGlzIGdlbmVyYXRlZCB1c2luZyBhIHN1YnNldCBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gTlN3YWcgU3R1ZGlvCgohW09wdGlvbnMgLSBOU3dhZyBTdHVkaW9dKGltYWdlcy9vcHRpb25zLW5zd2Fnc3R1ZGlvLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBPcGVuQVBJIEdlbmVyYXRvciBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgYWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIENMSSB0b29sIHByb3ZpZGVzCgohW09wdGlvbnMgLSBPcGVuQVBJIEdlbmVyYXRvcl0oaW1hZ2VzL29wdGlvbnMtb3BlbmFwaWdlbmVyYXRvci5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgUmVmaXR0ZXIgZ2VuZXJhdGVzIHRoZSBSZWZpdCBpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgd2hldGhlciB0byByZXR1cm4gdGhlIHR5cGUgZGlyZWN0bHkgb3Igd3JhcCBpdCBpbnNpZGUgYW4gYElBcGlSZXNwb25zZTxUPmAuIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGdlbmVyYXRpbmcgY29udHJhY3RzIG9yIFhNTCBkb2Mgc3R5bGUgY29tbWVudHMKCiFbT3B0aW9ucyAtIFJlZml0dGVyXShpbWFnZXMvcmVmaXR0ZXItb3B0aW9ucy5wbmcpCgpTdXBwb3J0cyBhbGxvd2luZyBLaW90YSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcwoKIVtPcHRpb25zIC0gS2lvdGFdKGltYWdlcy9vcHRpb25zLWtpb3RhLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKIyMjIE1hY09TCgohW0FkZCAtIEFQSSBDbGllbnQgZnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LW1lbnUucG5nKQoKIVtFbnRlciBVUkwgdG8gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvdnNtYWMtYWRkLW5ldy1kaWFsb2cucG5nKQoKIVtTb2x1dGlvbiBFeHBsb3JlciBDb250ZXh0IE1lbnVzXShpbWFnZXMvdnNtYWMtZ2VuZXJhdGUtY29kZS5wbmcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy92c21hYy1uc3dhZy1zdHVkaW8ucG5nKQoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSBzdXBwb3J0ZWQgZ2VuZXJhdG9ycyBhdCBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLwogIHR5cGVzY3JpcHQgICAgICAgICBHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnRzCgpSdW4gJ3JhcGljZ2VuIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgpTb21lIGhlbHAgaW5mb3JtYXRpb24gaXMgYWxzbyBwcm92aWRlZCBwZXIgY29tbWFuZCBhbmQgY2FuIGJlIGxhdW5jaGVkIGJ5IAoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIC0/CmBgYAoKb3IKCmBgYApyYXBpY2dlbiBbY29tbWFuZCBuYW1lXSBbc3ViIGNvbW1hbmQgbmFtZV0gLT8KYGBgCgpGb3IgZXhhbXBsZToKCmBgYApyYXBpY2dlbiBjc2hhcnAgLT8KYGBgIAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwoKVXNhZ2U6IHJhcGljZ2VuIGNzaGFycCBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC0/fC1ofC0taGVscCAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgoKQ29tbWFuZHM6CiAgYXV0b3Jlc3QgICAgICBBdXRvUmVzdCAodjMuMC4wLWJldGEuMjAyMTA1MDQuMikKICBraW90YSAgICAgICAgIE1pY3Jvc29mdCBLaW90YSAodjEuMTkuMCkKICBuc3dhZyAgICAgICAgIE5Td2FnICh2MTQuMS4wKQogIG9wZW5hcGkgICAgICAgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkKICByZWZpdHRlciAgICAgIFJlZml0dGVyICh2MS4zLjIpCiAgc3dhZ2dlciAgICAgICBTd2FnZ2VyIENvZGVnZW4gQ0xJICh2My4wLjM0KQoKUnVuICdjc2hhcnAgW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgoKYGBgCgphbmQKCmBgYApyYXBpY2dlbiBjc2hhcnAgYXV0b3Jlc3QgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFN3YWdnZXIgLyBPcGVuIEFQSSBjbGllbnQgdXNpbmcgQXV0b1Jlc3QKClVzYWdlOiBydW4gYXV0b3Jlc3QgW29wdGlvbnNdIDxzd2FnZ2VyRmlsZT4gPG5hbWVzcGFjZT4gPG91dHB1dEZpbGU+CgpBcmd1bWVudHM6CiAgc3dhZ2dlckZpbGUgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgbmFtZXNwYWNlICAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUKICBvdXRwdXRGaWxlICAgIE91dHB1dCBmaWxlbmFtZSB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8uIERlZmF1bHQgaXMgdGhlIHN3YWdnZXJGaWxlIC5jcwoKT3B0aW9uczoKICAtP3wtaHwtLWhlbHAgIFNob3cgaGVscCBpbmZvcm1hdGlvbgpgYGAKCm9yIAoKYGBgCnJhcGljZ2VuIHR5cGVzY3JpcHQgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudAoKVXNhZ2U6IHJhcGljZ2VuIHR5cGVzY3JpcHQgW29wdGlvbnNdIDxnZW5lcmF0b3I+IDxzd2FnZ2VyRmlsZT4gPG91dHB1dFBhdGg+CgpBcmd1bWVudHM6CiAgZ2VuZXJhdG9yICAgICAgICAgVGhlIHRlY2ggc3RhY2sgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNsaWVudCBsaWJyYXJ5CiAgICAgICAgICAgICAgICAgICAgQWxsb3dlZCB2YWx1ZXMgYXJlOiBBbmd1bGFyLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgSlF1ZXJ5LCBOZXN0SlMsIE5vZGUsIFJlZHV4UXVlcnksCiAgICAgICAgICAgICAgICAgICAgUnhqcy4KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiBBbmd1bGFyLgogIHN3YWdnZXJGaWxlICAgICAgIFBhdGggdG8gdGhlIFN3YWdnZXIgLyBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKICBvdXRwdXRQYXRoICAgICAgICBPdXRwdXQgZm9sZGVyIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgY29kZSB0bwogICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWUgaXM6IHR5cGVzY3JpcHQtZ2VuZXJhdGVkLWNvZGUuCgpPcHRpb25zOgogIC1ubHwtLW5vLWxvZ2dpbmcgIERpc2FibGVzIEFuYWx5dGljcyBhbmQgRXJyb3IgUmVwb3J0aW5nCiAgLT98LWh8LS1oZWxwICAgICAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgpgYGAKCiMjIFVzYWdlIEV4YW1wbGVzOgoKTGV0J3Mgc2F5IHdlIGhhdmUgYSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGRvY3VtZW50IGNhbGxlZCAqKlN3YWdnZXIuanNvbioqCgpGb3Igc3RhcnRlcnMsIHdlIGNhbiB1c2UgdGhlIFN3YWdnZXIgUGV0c3RvcmUgc3BlYy4gSGVyZSdzIGFuIGV4YW1wbGUgcG93ZXJzaGVsbCBzY3JpcHQgZm9yIGRvd25sb2FkaW5nIGl0CgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjMvc3dhZ2dlci5qc29uIC1PdXRGaWxlIFN3YWdnZXIuanNvbgpgYGAKCkluIGNhc2UgeW91IGRvbid0IGhhdmUgdGhlIENMSSB0b29sIGluc3RhbGxlZCB5b3UgY2FuIGluc3RhbGwgaXQgYnkKCmBgYApkb3RuZXQgdG9vbCBpbnN0YWxsIC0tZ2xvYmFsIHJhcGljZ2VuCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipBdXRvUmVzdCoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vQXV0b1Jlc3RPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKktpb3RhKioKCmBgYApyYXBpY2dlbiBjc2hhcnAga2lvdGEgU3dhZ2dlci5qc29uIEdlbmVyYXRlZENvZGUgLi9PcGVuQXBpT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipOU3dhZyoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIG5zd2FnIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vTlN3YWdPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBzd2FnZ2VyIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vU3dhZ2dlck91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqT3BlbkFQSSBHZW5lcmF0b3IqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBvcGVuYXBpIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlICoqSk1ldGVyKiogdGVzdCBwbGFucwoKYGBgCnJhcGljZ2VuIGptZXRlciBTd2FnZ2VyLmpzb24KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSBmb3IgKipUeXBlU2NyaXB0KioKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IEFuZ3VsYXIgU3dhZ2dlci5qc29uCmBgYAoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQoK - readmeEtag: '"02d6a361669af9490e1bfe6b4386accec8c521a8"' - readmeLastModified: Fri, 04 Oct 2024 17:07:36 GMT + WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1NYXJrZXRwbGFjZSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3I/bGFiZWw9VlMlMjAyMDE5KV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyP2xhYmVsPVZTJTIwMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKQpbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKClshW2J1eW1lYWNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9idXklMjBtZSUyMGElMjBjb2ZmZWUtZG9uYXRlLXllbGxvdy5zdmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQpbIVtKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5XShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHkuc3ZnKV0oaHR0cHM6Ly9naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHk/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkKCiMgUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yCgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIERvd25sb2FkCgotICoqW1Zpc3VhbCBTdHVkaW8gMjAyMl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTddKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDE3KSoqCi0gKipbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpKiouIEZvbGxvdyAqKlt0aGVzZSBpbnN0cnVjdGlvbnNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpKiogZm9yIHVwZGF0ZSBjb252ZW5pZW5jZSBvbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIFZpc3VhbCBTdHVkaW8gMjAxNywgMjAxOSwgMjAyMiwgYW5kIFtWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIDxodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uPikgdXNpbmcgdGhlIGZvbGxvd2luZyBjb2RlIGdlbmVyYXRvcnM6CiAgLSBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQogIC0gW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpCiAgLSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKQogIC0gW0F1dG9SZXN0XShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QpCi0gRGVmaW5lIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRoZSBnZW5lcmF0ZWQgZmlsZQotIEF1dG8tdXBkYXRpbmcgb2YgZ2VuZXJhdGVkIGNvZGUgZmlsZSB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09OIG9yIFlBTUwgZmlsZQotIEdlbmVyYXRlIGNvZGUgdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGVzIHVzaW5nIHRoZSBmb2xsb3dpbmc6CiAgLSBgLm5zd2FnYCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgTlN3YWcgU3R1ZGlvIG91dHB1dCoqIGNvbnRleHQgbWVudQogIC0gYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZXMgZnJvbSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYnkgaW5jbHVkaW5nIGl0IGluIHRoZSBwcm9qZWN0IGFuZCB1c2luZyB0aGUgKipHZW5lcmF0ZSBSZWZpdHRlciBvdXRwdXQqKiBjb250ZXh0IG1lbnUKICAtIGBraW90YS1sb2NrLmpzb25gIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKSBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIHByb2plY3QgYW5kIHVzaW5nIHRoZSAqKkdlbmVyYXRlIEtpb3RhIG91dHB1dCoqIGNvbnRleHQgbWVudQoKIyMjIEN1c3RvbSBUb29scwoKQ3VzdG9tIHRvb2xzIGxldCB5b3UgYXNzb2NpYXRlIGEgdG9vbCB3aXRoIGFuIGl0ZW0gaW4gYSBwcm9qZWN0IGFuZCBydW4gdGhhdCB0b29sIHdoZW5ldmVyIHRoZSBmaWxlIGlzIHNhdmVkCgotICoqKk5Td2FnQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKSAqKnYxNC4xLjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny45LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y3LjkuMCkqKi4KVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWcgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYC4gSXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcyB3aGljaCB3aWxsIGJlIHBsYWNlZCBhdCB0aGUgc2FtZSBwYXRoIGFzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgY29kZSwgdGhpcyBpcyBkb25lIHVuZGVyIFRvb2xzIC0+IFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvciAtPiBPcGVuQVBJIEdlbmVyYXRvciBhbmQgc2V0dGluZyAqKkdlbmVyYXRlIE11bHRpcGxlIEZpbGVzKiogdG8gKip0cnVlKioKCi0gKioqS2lvdGFDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBNaWNyb3NvZnQgcHJvamVjdCAqKltLaW90YSB2MS4xOS4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiBUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBLaW90YSBkb3RuZXQgdG9vbCB3aXRoOiBgZ2VuZXJhdGUgLWwgQ1NoYXJwIC1kIFtzd2FnZ2VyIGZpbGVdIC1vIFtvdXRwdXQgZmlsZV0gLW4gW2RlZmF1bHQgbmFtZXNwYWNlXWAuIEl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgZmlsZXMgd2hpY2ggd2lsbCBiZSBwbGFjZWQgYXQgdGhlIHNhbWUgcGF0aCBhcyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB0aGF0IHdhcyB1c2VkIHRvIGdlbmVyYXRlIGNvZGUsIHRoaXMgaXMgZG9uZSB1bmRlciBUb29scyAtPiBSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IgLT4gS2lvdGEgYW5kIHNldHRpbmcgKipHZW5lcmF0ZSBNdWx0aXBsZSBGaWxlcyoqIHRvICoqdHJ1ZSoqCgotICoqKlN3YWdnZXJDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nICoqU3dhZ2dlciBDb2RlZ2VuIENMSSB2My4wLjM0KiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFN3YWdnZXIgQ29kZWdlbiBDTEkgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWwgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYAoKLSAqKipBdXRvUmVzdENvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipBdXRvUmVzdCB2My4wLjAtYmV0YS4yMDIxMDUwNC4yKiogZm9yIE9wZW5BUEkgdjMgYW5kICoqQXV0b1Jlc3QgdjIuMC40NDE3KiogZm9yIE9wZW5BUEkgdjIuIFRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDoKIGAtLWNzaGFycCAtLWlucHV0LWZpbGU9W3N3YWdnZXIgZmlsZV0gLS1vdXRwdXQtZmlsZT1bb3V0cHV0IGZpbGVdIC0tbmFtZXNwYWNlPVtkZWZhdWx0IG5hbWVzcGFjZV0gLS1hZGQtY3JlZGVudGlhbHNgCgotICoqKlJlZml0dGVyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCBpbnRlZmFjZSBmb3IgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgdXNpbmcgW1JlZml0dGVyLkNvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZWZpdHRlci5Db3JlLykgKip2MS4zLjIqKi4KVGhlIG91dHB1dCBmaWxlIGNvbnRhaW5zIGEgUmVmaXQgaW50ZXJmYWNlIGdlbmVyYXRlZCBieSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYW5kIGNvbnRyYWN0cyBnZW5lcmF0ZWQgdXNpbmcgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKQoKIyMjIERlcGVuZGVuY2llcwoKVGhlIGN1c3RvbSB0b29sIGNvZGUgZ2VuZXJhdG9ycyBwaWdneSBiYWNrIG9uIHRvcCBvZiB3ZWxsIGtub3duIE9wZW4gQVBJIGNsaWVudCBjb2RlIGdlbmVyYXRvcnMgbGlrZSAqKkF1dG9SZXN0KiosICoqTlN3YWcqKiwgKipPcGVuQVBJIEdlbmVyYXRvcioqLCAqKk1pY3Jvc29mdCBLaW90YSoqLCAqKlJlZml0dGVyKiosIGFuZCAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKi4gVGhlc2UgdG9vbHMgcmVxdWlyZSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYW5kIHRoZSBbSmF2YSBSdW50aW1lIEVudmlyb25tZW50XShodHRwczovL2phdmEuY29tL2VuL2Rvd25sb2FkL21hbnVhbC5qc3ApIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgZGV2ZWxvcGVycyBtYWNoaW5lLiBBbHRlcm5hdGl2ZSBKYXZhIFNESyBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyB0aGUgW09wZW5KREtdKGh0dHBzOi8vYWRvcHRvcGVuamRrLm5ldCkgd29ya3MgZmluZSB3aXRoIHRoaXMgZXh0ZW5zaW9uLiBCeSBkZWZhdWx0LCB0aGUgcGF0aCB0byAqKmphdmEuZXhlKiogaXMgcmVhZCBmcm9tIHRoZSAqKkpBVkFfSE9NRSoqIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgaXMgYWxzbyBjb25maWd1cmFibGUgaW4gdGhlIFNldHRpbmdzIHNjcmVlbi4gRnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleHRlbnNpb24gd2lsbCBpbmNsdWRlIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSBpbiB0aGUgVlNJWCBwYWNrYWdlCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6CgotIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTEyLjAuMCkKLSBbSnNvblN1YlR5cGVzXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSnNvblN1YlR5cGVzLzIuMC4xKQotIFtQb2xseV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1BvbGx5LzguNC4yKQotIFtOZXd0b25zb2Z0Lkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OZXd0b25zb2Z0Lkpzb24vMTMuMC4zKQoKVGhlIHByb2plY3QgKipLaW90YSoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXMKCi0gW01pY3Jvc29mdC5LaW90YS5BYnN0cmFjdGlvbnNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zKQotIFtNaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5IdHRwLkh0dHBDbGllbnRMaWJyYXJ5KQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Gb3JtXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybSkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uVGV4dF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHQpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnQpCi0gW01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZSkKLSBbQXp1cmUuSWRlbnRpdHldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9BenVyZS5JZGVudGl0eSkKClRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDUuMS4wKSBhbmQgW0pzb25TdWJUeXBlc10oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0pzb25TdWJUeXBlcy8xLjkuMCkgTnVHZXQgcGFja2FnZXMKClRoZSAqKkF1dG9SZXN0KiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtNaWNyb3NvZnQuUmVzdC5DbGllbnRSdW50aW1lXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZS8yLjMuMjQpIGFuZCBbTmV3dG9uc29mdC5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uLzEzLjAuMykgTnVHZXQgcGFja2FnZXMKClRoaXMgVmlzdWFsIFN0dWRpbyBFeHRlbnNpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVxdWlyZWQgTnVHZXQgcGFja2FnZXMgdGhhdCB0aGUgZ2VuZXJhdGVkIGNvZGUgZGVwZW5kcyBvbgoKIyMgU2NyZWVuc2hvdHMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy9hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy9zb2x1dGlvbi1leHBsb3Jlci1jb250ZXh0LW1lbnUuanBnKQoKIVtOU3dhZyBTdHVkaW8gQ29udGV4dCBNZW51XShpbWFnZXMvbnN3YWdzdHVkaW8tY29udGV4dC1tZW51LmpwZykKCiFbUmVmaXR0ZXIgQ29udGV4dCBNZW51XShpbWFnZXMvcmVmaXR0ZXItY29tbWFuZC5wbmcpCgohW0tpb3RhIENvbnRleHQgTWVudV0oaW1hZ2VzL2dlbmVyYXRlLWtpb3RhLW91dHB1dC5wbmcpCgojIyMgU2V0dGluZ3MKClRoaXMgZXh0ZW5zaW9uIHdpbGwgYnkgZGVmYXVsdCBtYWtlIHNvbWUgYXNzdW1wdGlvbnMgb24gdGhlIGluc3RhbGxhdGlvbiBwYXRocyBmb3IgKipKYXZhKiosICoqTlN3YWcqKiBhbmQgKipOUE0qKiBidXQgYWxzbyBwcm92aWRlcyBvcHRpb24gcGFnZXMgZm9yIGNvbmZpZ3VyaW5nIHRoaXMuIFRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBhbmQgdGhlICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBKQVIgZmlsZXMgYXJlIGJ5IGRlZmF1bHQgZG93bmxvYWRlZCB0byB0aGUgdXNlciBURU1QIGZvbGRlciBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRvIHVzZSBleGlzdGluZyBKQVIgZmlsZXMKCiFbT3B0aW9ucyAtIEdlbmVyYWxdKGltYWdlcy9vcHRpb25zLWdlbmVyYWwucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IEF1dG9SZXN0IGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIHRoZSBDIyBnZW5lcmF0b3Igc2V0dGluZ3MgdGhhdCB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIEF1dG9SZXN0XShpbWFnZXMvb3B0aW9ucy1hdXRvcmVzdC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgTlN3YWcgZ2VuZXJhdGVzIGNvZGUgdXNpbmcgdGhlIHByb3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgTlN3YWcgTnVHZXQgcGFja2FnZQoKIVtPcHRpb25zIC0gTlN3YWddKGltYWdlcy9vcHRpb25zLW5zd2FnLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyB0aGUgKioubnN3YWcqKiBmaWxlIGlzIGdlbmVyYXRlZCB1c2luZyBhIHN1YnNldCBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gTlN3YWcgU3R1ZGlvCgohW09wdGlvbnMgLSBOU3dhZyBTdHVkaW9dKGltYWdlcy9vcHRpb25zLW5zd2Fnc3R1ZGlvLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBPcGVuQVBJIEdlbmVyYXRvciBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgYWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIENMSSB0b29sIHByb3ZpZGVzCgohW09wdGlvbnMgLSBPcGVuQVBJIEdlbmVyYXRvcl0oaW1hZ2VzL29wdGlvbnMtb3BlbmFwaWdlbmVyYXRvci5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgUmVmaXR0ZXIgZ2VuZXJhdGVzIHRoZSBSZWZpdCBpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgd2hldGhlciB0byByZXR1cm4gdGhlIHR5cGUgZGlyZWN0bHkgb3Igd3JhcCBpdCBpbnNpZGUgYW4gYElBcGlSZXNwb25zZTxUPmAuIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGdlbmVyYXRpbmcgY29udHJhY3RzIG9yIFhNTCBkb2Mgc3R5bGUgY29tbWVudHMKCiFbT3B0aW9ucyAtIFJlZml0dGVyXShpbWFnZXMvcmVmaXR0ZXItb3B0aW9ucy5wbmcpCgpTdXBwb3J0cyBhbGxvd2luZyBLaW90YSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcwoKIVtPcHRpb25zIC0gS2lvdGFdKGltYWdlcy9vcHRpb25zLWtpb3RhLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKIyMjIE1hY09TCgohW0FkZCAtIEFQSSBDbGllbnQgZnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LW1lbnUucG5nKQoKIVtFbnRlciBVUkwgdG8gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvdnNtYWMtYWRkLW5ldy1kaWFsb2cucG5nKQoKIVtTb2x1dGlvbiBFeHBsb3JlciBDb250ZXh0IE1lbnVzXShpbWFnZXMvdnNtYWMtZ2VuZXJhdGUtY29kZS5wbmcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy92c21hYy1uc3dhZy1zdHVkaW8ucG5nKQoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjkuMCkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSBzdXBwb3J0ZWQgZ2VuZXJhdG9ycyBhdCBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLwogIHR5cGVzY3JpcHQgICAgICAgICBHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnRzCgpSdW4gJ3JhcGljZ2VuIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgpTb21lIGhlbHAgaW5mb3JtYXRpb24gaXMgYWxzbyBwcm92aWRlZCBwZXIgY29tbWFuZCBhbmQgY2FuIGJlIGxhdW5jaGVkIGJ5IAoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIC0/CmBgYAoKb3IKCmBgYApyYXBpY2dlbiBbY29tbWFuZCBuYW1lXSBbc3ViIGNvbW1hbmQgbmFtZV0gLT8KYGBgCgpGb3IgZXhhbXBsZToKCmBgYApyYXBpY2dlbiBjc2hhcnAgLT8KYGBgIAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwoKVXNhZ2U6IHJhcGljZ2VuIGNzaGFycCBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC0/fC1ofC0taGVscCAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgoKQ29tbWFuZHM6CiAgYXV0b3Jlc3QgICAgICBBdXRvUmVzdCAodjMuMC4wLWJldGEuMjAyMTA1MDQuMikKICBraW90YSAgICAgICAgIE1pY3Jvc29mdCBLaW90YSAodjEuMTkuMCkKICBuc3dhZyAgICAgICAgIE5Td2FnICh2MTQuMS4wKQogIG9wZW5hcGkgICAgICAgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjkuMCkKICByZWZpdHRlciAgICAgIFJlZml0dGVyICh2MS4zLjIpCiAgc3dhZ2dlciAgICAgICBTd2FnZ2VyIENvZGVnZW4gQ0xJICh2My4wLjM0KQoKUnVuICdjc2hhcnAgW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgoKYGBgCgphbmQKCmBgYApyYXBpY2dlbiBjc2hhcnAgYXV0b3Jlc3QgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFN3YWdnZXIgLyBPcGVuIEFQSSBjbGllbnQgdXNpbmcgQXV0b1Jlc3QKClVzYWdlOiBydW4gYXV0b3Jlc3QgW29wdGlvbnNdIDxzd2FnZ2VyRmlsZT4gPG5hbWVzcGFjZT4gPG91dHB1dEZpbGU+CgpBcmd1bWVudHM6CiAgc3dhZ2dlckZpbGUgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgbmFtZXNwYWNlICAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUKICBvdXRwdXRGaWxlICAgIE91dHB1dCBmaWxlbmFtZSB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8uIERlZmF1bHQgaXMgdGhlIHN3YWdnZXJGaWxlIC5jcwoKT3B0aW9uczoKICAtP3wtaHwtLWhlbHAgIFNob3cgaGVscCBpbmZvcm1hdGlvbgpgYGAKCm9yIAoKYGBgCnJhcGljZ2VuIHR5cGVzY3JpcHQgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudAoKVXNhZ2U6IHJhcGljZ2VuIHR5cGVzY3JpcHQgW29wdGlvbnNdIDxnZW5lcmF0b3I+IDxzd2FnZ2VyRmlsZT4gPG91dHB1dFBhdGg+CgpBcmd1bWVudHM6CiAgZ2VuZXJhdG9yICAgICAgICAgVGhlIHRlY2ggc3RhY2sgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNsaWVudCBsaWJyYXJ5CiAgICAgICAgICAgICAgICAgICAgQWxsb3dlZCB2YWx1ZXMgYXJlOiBBbmd1bGFyLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgSlF1ZXJ5LCBOZXN0SlMsIE5vZGUsIFJlZHV4UXVlcnksCiAgICAgICAgICAgICAgICAgICAgUnhqcy4KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiBBbmd1bGFyLgogIHN3YWdnZXJGaWxlICAgICAgIFBhdGggdG8gdGhlIFN3YWdnZXIgLyBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKICBvdXRwdXRQYXRoICAgICAgICBPdXRwdXQgZm9sZGVyIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgY29kZSB0bwogICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWUgaXM6IHR5cGVzY3JpcHQtZ2VuZXJhdGVkLWNvZGUuCgpPcHRpb25zOgogIC1ubHwtLW5vLWxvZ2dpbmcgIERpc2FibGVzIEFuYWx5dGljcyBhbmQgRXJyb3IgUmVwb3J0aW5nCiAgLT98LWh8LS1oZWxwICAgICAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgpgYGAKCiMjIFVzYWdlIEV4YW1wbGVzOgoKTGV0J3Mgc2F5IHdlIGhhdmUgYSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGRvY3VtZW50IGNhbGxlZCAqKlN3YWdnZXIuanNvbioqCgpGb3Igc3RhcnRlcnMsIHdlIGNhbiB1c2UgdGhlIFN3YWdnZXIgUGV0c3RvcmUgc3BlYy4gSGVyZSdzIGFuIGV4YW1wbGUgcG93ZXJzaGVsbCBzY3JpcHQgZm9yIGRvd25sb2FkaW5nIGl0CgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjMvc3dhZ2dlci5qc29uIC1PdXRGaWxlIFN3YWdnZXIuanNvbgpgYGAKCkluIGNhc2UgeW91IGRvbid0IGhhdmUgdGhlIENMSSB0b29sIGluc3RhbGxlZCB5b3UgY2FuIGluc3RhbGwgaXQgYnkKCmBgYApkb3RuZXQgdG9vbCBpbnN0YWxsIC0tZ2xvYmFsIHJhcGljZ2VuCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipBdXRvUmVzdCoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vQXV0b1Jlc3RPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKktpb3RhKioKCmBgYApyYXBpY2dlbiBjc2hhcnAga2lvdGEgU3dhZ2dlci5qc29uIEdlbmVyYXRlZENvZGUgLi9PcGVuQXBpT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipOU3dhZyoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIG5zd2FnIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vTlN3YWdPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBzd2FnZ2VyIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vU3dhZ2dlck91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqT3BlbkFQSSBHZW5lcmF0b3IqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBvcGVuYXBpIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlICoqSk1ldGVyKiogdGVzdCBwbGFucwoKYGBgCnJhcGljZ2VuIGptZXRlciBTd2FnZ2VyLmpzb24KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSBmb3IgKipUeXBlU2NyaXB0KioKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IEFuZ3VsYXIgU3dhZ2dlci5qc29uCmBgYAoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQoK + readmeEtag: '"cb130baaa9619e88a04ca41ac6040df8b5c0e97e"' + readmeLastModified: Tue, 08 Oct 2024 20:30:06 GMT repositoryId: 166226127 description: >- A collection of Visual Studio custom tool code generators for Swagger / OpenAPI specification files created: '2019-01-17T12:58:50Z' - updated: '2024-10-07T12:09:42Z' + updated: '2024-10-08T20:30:11Z' 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: '"4a2a80419d862a07d74524d6004330aa986e4ce72129e6b54696ac9186968564"' - repoLastModified: Mon, 07 Oct 2024 12:09:42 GMT + repoEtag: '"ad98c8867d3860971f8a787ab1452650b16ebe780807dce2811576dd32e3eca2"' + repoLastModified: Tue, 08 Oct 2024 20:30:11 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -10175,7 +10175,7 @@ owner: sunrise-php logo: https://avatars.githubusercontent.com/u/41580063?v=4 license: MIT - repoEtag: '"2a704677d78b182e0aae84adefa66d34024c6af8854cdc077c55219157c553cd"' + repoEtag: '"2374f4dbed003918644b90824135348e77f577b41117c22e15970f9219198303"' repoLastModified: Thu, 27 Jun 2024 17:27:53 GMT foundInMaster: true category: Data Validators @@ -10220,7 +10220,7 @@ repositoryId: 122702750 description: API Management and Testing Platform created: '2018-02-24T04:23:08Z' - updated: '2024-10-08T02:35:11Z' + updated: '2024-10-08T07:42:12Z' 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: '"6648318c9e040aa5e8091aaea31ba9dc696c6038315ff2eac9954f833dd72e43"' - repoLastModified: Tue, 08 Oct 2024 02:35:11 GMT + repoEtag: '"2690a595c948ed36522ea627035690e76d8268b2a7b2979bf896a1e470c15753"' + repoLastModified: Tue, 08 Oct 2024 07:42:12 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -10328,17 +10328,17 @@ repositoryId: 691100358 description: Actix-web wrapper for automatic OpenAPI 3.0 documentation generation. created: '2023-09-13T13:54:51Z' - updated: '2024-10-02T11:16:33Z' + updated: '2024-10-08T08:33:24Z' language: Rust archived: false - stars: 130 + stars: 131 watchers: 5 forks: 5 owner: netwo-io logo: https://avatars.githubusercontent.com/u/64151169?v=4 license: MIT - repoEtag: '"b9abccfd4e84e3c8abc4310510a360e423ada7f0094fb0708843aebbc985e1bb"' - repoLastModified: Wed, 02 Oct 2024 11:16:33 GMT + repoEtag: '"09806f9fe21f2bf4c281444b9035f73c6aca0a450c5c6bd2b25ec22f615cb003"' + repoLastModified: Tue, 08 Oct 2024 08:33:24 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10354,7 +10354,7 @@ A RESTful framework built on top of light-4j with both Swagger 2.0 and OpenAPI 3.0 supports created: '2017-01-22T14:48:44Z' - updated: '2024-09-24T16:57:06Z' + updated: '2024-10-09T01:33:02Z' language: Java archived: false stars: 120 @@ -10363,8 +10363,8 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"4854ae466acf894de8218d5fb8edd4e5c55e5292c8b69c8a85f74d515d7e296b"' - repoLastModified: Tue, 24 Sep 2024 16:57:06 GMT + repoEtag: '"d5bde329beb06daf3aee2d39fd1aa8c98151d1ffbb78b2a7a86d0ab5bcf0b19c"' + repoLastModified: Wed, 09 Oct 2024 01:33:02 GMT foundInMaster: true category: - Low-level Tooling @@ -10520,7 +10520,7 @@ repositoryId: 285621457 description: OpenAPI - Getting started, and the specification explained created: '2020-08-06T16:40:47Z' - updated: '2024-10-07T20:58:53Z' + updated: '2024-10-08T11:10:53Z' language: Markdown archived: false stars: 115 @@ -10529,8 +10529,8 @@ owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 license: CC-BY-4.0 - repoEtag: '"9e20df2e1508da23aed6c395802583da50403a8d11a82b2f33d92d6f66650955"' - repoLastModified: Mon, 07 Oct 2024 20:58:53 GMT + repoEtag: '"bc586f46225fd38c7cff0da90bfecc3de96b852b792e137b7f2ddddb8531cc8d"' + repoLastModified: Tue, 08 Oct 2024 11:10:53 GMT category: - Parsers - Server Implementations @@ -10765,17 +10765,17 @@ repositoryId: 373055212 description: Swagger 3.0 implementation for go created: '2021-06-02T05:54:10Z' - updated: '2024-10-08T00:38:32Z' + updated: '2024-10-08T23:59:19Z' language: Go archived: false - stars: 105 + stars: 106 watchers: 5 forks: 11 owner: parvez3019 logo: https://avatars.githubusercontent.com/u/10362597?v=4 license: MIT - repoEtag: '"897d1730e4ded6738e27f31c479d1bb3744d7e00999312453f891a4b89f1531a"' - repoLastModified: Tue, 08 Oct 2024 00:38:32 GMT + repoEtag: '"ebd55ec04f75144c2bd5d8142f5a1f24481abf0a27663d8ad70f907650c79486"' + repoLastModified: Tue, 08 Oct 2024 23:59:19 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-07T03:37:14Z' + updated: '2024-10-08T03:34:28Z' language: JavaScript archived: false stars: 99 @@ -10835,8 +10835,8 @@ forks: 27 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 - repoEtag: '"83a13286626a64f4cad5070c271a19bd23b2e3166700fb4bc8b3a36cd25bbd5f"' - repoLastModified: Mon, 07 Oct 2024 03:37:14 GMT + repoEtag: '"0a791fe43bab4633a6f658c2e8492f01efedc8105edab5c698dda039e573d479"' + repoLastModified: Tue, 08 Oct 2024 03:34:28 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -11055,7 +11055,7 @@ owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 - repoEtag: '"7f2cf5f967b8abe96614cd5407387b74e7caa31fa9c6c1936f531ba3a2c12aa4"' + repoEtag: '"dc6bd2237f936f3c14976c9a4c1641ea26e63c41f91c376949bf39c9e459a345"' repoLastModified: Tue, 01 Oct 2024 13:42:45 GMT foundInMaster: true category: Testing @@ -11187,7 +11187,7 @@ owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: MIT - repoEtag: '"a5f230ac3469ab43d182066ac9bd5b073d9d57154c5c551e863ca5089a448610"' + repoEtag: '"4f2d100b66e39dd7eb0f55d5dcbea4508b099ed5546d97aba7a93c20aa04b2a8"' repoLastModified: Sun, 06 Oct 2024 19:04:46 GMT category: Parsers foundInMaster: true @@ -11351,7 +11351,7 @@ forks: 17 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 - repoEtag: '"0f420ace52c3f152fc20c162558106c6281f9bc02948ed0ec687aa2c48a7a625"' + repoEtag: '"a55dc4026d9739af59ef3a975a968f48b6032b70c1c13d9f081d722f121fab1d"' repoLastModified: Mon, 30 Sep 2024 23:18:31 GMT category: Parsers foundInMaster: true @@ -11375,7 +11375,7 @@ owner: vitalybibikov logo: https://avatars.githubusercontent.com/u/7008739?v=4 license: MIT - repoEtag: '"db1638b6f1631e2363b82d295557a5424009e515aace1cd53da4a620fdf82333"' + repoEtag: '"d31cd88f9da6548b509929f3499fd7c6a9c1f8358b08bb4922f81dcb17f2b23f"' repoLastModified: Mon, 09 Sep 2024 15:11:50 GMT foundInMaster: true category: @@ -11446,17 +11446,17 @@ OpenAPI 3 parser to use a specification inside of the code in your projects created: '2020-08-27T00:47:00Z' - updated: '2024-09-26T01:52:40Z' + updated: '2024-10-08T16:35:49Z' language: Python archived: false - stars: 62 + stars: 63 watchers: 3 forks: 33 owner: manchenkoff logo: https://avatars.githubusercontent.com/u/6690063?v=4 license: MIT - repoEtag: '"006f20204d8e4dac09c943f03340b53779c2f99789329bce8ee70080b7079d4a"' - repoLastModified: Thu, 26 Sep 2024 01:52:40 GMT + repoEtag: '"d35bb40e0c6818772fae5db969eadd209427470be4bfca082cbb831eafba93ff"' + repoLastModified: Tue, 08 Oct 2024 16:35:49 GMT foundInMaster: true category: Parsers id: 074facec95becd6c9d361eb75f2d1d2f @@ -11623,7 +11623,7 @@ repositoryId: 699872484 description: Generate SDKs and docs for your API created: '2023-10-03T14:04:44Z' - updated: '2024-10-01T21:09:34Z' + updated: '2024-10-08T21:58:07Z' language: Rust archived: false stars: 56 @@ -11632,8 +11632,8 @@ owner: Sideko-Inc logo: https://avatars.githubusercontent.com/u/122366043?v=4 license: NOASSERTION - repoEtag: '"67eb241abec167434a00cc5d12ec7870ceae3bfd31910c81e21af072648a1e58"' - repoLastModified: Tue, 01 Oct 2024 21:09:34 GMT + repoEtag: '"490b22e978ba126558ca76e58bf68901535f2738e2d70d5b417436d05b09ca97"' + repoLastModified: Tue, 08 Oct 2024 21:58:07 GMT category: SDK foundInMaster: true oldLocations: @@ -12024,7 +12024,7 @@ repositoryId: 286198180 description: Example application built using Quarkus framework created: '2020-08-09T08:34:19Z' - updated: '2024-10-06T15:24:32Z' + updated: '2024-10-08T04:11:16Z' language: Java archived: false stars: 47 @@ -12032,8 +12032,8 @@ forks: 26 owner: piomin logo: https://avatars.githubusercontent.com/u/2892502?v=4 - repoEtag: '"0b3ca6bfd55aea2dbb03ec52c55388b7cd8f0787ca6770358cd5c8299cd71bc8"' - repoLastModified: Sun, 06 Oct 2024 15:24:32 GMT + repoEtag: '"577a777b723059a67ccc4f52002febe289bc68452aeb500b69b3ab217ba090fa"' + repoLastModified: Tue, 08 Oct 2024 04:11:16 GMT foundInMaster: true category: SDK id: dd8f9923c6579fbc72bcd8fc5a69a30c @@ -12088,7 +12088,7 @@ This GitHub Actions validates OpenAPI (OAS) definition file using Swagger Editor. created: '2021-03-05T18:37:29Z' - updated: '2024-10-07T04:46:12Z' + updated: '2024-10-08T04:58:38Z' 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: '"114d36d4f9dca3b9456d90427cfe715d385514bc8998b40d09a77cf72954fef0"' - repoLastModified: Mon, 07 Oct 2024 04:46:12 GMT + repoEtag: '"9d23db33edb2c8e1c9b12d31ef75d5609fa76dd83102117e40a5a7d751cf0afc"' + repoLastModified: Tue, 08 Oct 2024 04:58:38 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -12283,7 +12283,7 @@ owner: atlassian logo: https://avatars.githubusercontent.com/u/168166?v=4 license: NOASSERTION - repoEtag: '"56ddb326859a3be322f1a4daa4fda623aa44e8b6d082faa9055169315e95a122"' + repoEtag: '"8e69b1cc5328597df4049a2aa7ce639cc5b8a4468adeebca75d2c2bf4c6b322b"' repoLastModified: Tue, 03 Sep 2024 03:54:42 GMT foundInMaster: true id: 70270b46839e1466d6a425a8da6ded65 @@ -12307,7 +12307,7 @@ owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION - repoEtag: '"3820d3b59470061eb7acc5f5f72c726276947eed353ba8cd5131a31d706eba8c"' + repoEtag: '"4c0f1b98ff71f13781c484d95eaccda2e7e42e3a7e2a6784bb1bff4b32505bac"' repoLastModified: Mon, 07 Oct 2024 13:20:01 GMT foundInMaster: true category: SDK @@ -12610,7 +12610,7 @@ repositoryId: 713070411 description: 'An example OpenAPI description for an imaginary Museum API. ' created: '2023-11-01T19:22:54Z' - updated: '2024-09-18T07:32:14Z' + updated: '2024-10-08T13:03:31Z' language: null archived: false stars: 36 @@ -12619,8 +12619,8 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"228bb7fe5db78f15ca2c10aab2d0696dd6e5e7ac70ed69c111cb33643e5bfe9c"' - repoLastModified: Wed, 18 Sep 2024 07:32:14 GMT + repoEtag: '"0f21d8d6ba6a345b02d10bb5c36d9c55fd4636b919c41e164572041a92675a5c"' + repoLastModified: Tue, 08 Oct 2024 13:03:31 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -12772,10 +12772,10 @@ archived: false stars: 34 watchers: 1 - forks: 3 + forks: 4 owner: konfig-sdks logo: https://avatars.githubusercontent.com/u/156027835?v=4 - repoEtag: '"22ae931474cead41bc7a1d83fffe42dd762af579d2dfc47f610686b68d9b3af6"' + repoEtag: '"85c3c767c3a701bc81b777638ebdce0f2669c2e3fc47f058ea9d60c663fdbede"' repoLastModified: Sun, 06 Oct 2024 00:27:46 GMT category: - Parsers @@ -12922,7 +12922,7 @@ open-source solution for your open and private data needs. French only for the time being, internationalization coming soon. created: '2017-11-24T22:19:00Z' - updated: '2024-10-03T15:06:18Z' + updated: '2024-10-08T14:24:58Z' language: JavaScript archived: false stars: 33 @@ -12931,8 +12931,8 @@ owner: data-fair logo: https://avatars.githubusercontent.com/u/83776320?v=4 license: AGPL-3.0 - repoEtag: '"0d915d20de33d318bb9e308186cba0da391816057955b7608b01b205b7e012d3"' - repoLastModified: Thu, 03 Oct 2024 15:06:18 GMT + repoEtag: '"5134c59b33e930bc28b16476ac1c5d5c168577819a28f14e1590379b836519c2"' + repoLastModified: Tue, 08 Oct 2024 14:24:58 GMT foundInMaster: true category: - Documentation @@ -12977,7 +12977,7 @@ repositoryId: 735578513 description: Generate VitePress API Docs from OpenAPI specifications created: '2023-12-25T12:25:21Z' - updated: '2024-10-08T02:19:40Z' + updated: '2024-10-08T22:48:59Z' language: TypeScript archived: false stars: 36 @@ -12986,8 +12986,8 @@ owner: enzonotario logo: https://avatars.githubusercontent.com/u/10469299?v=4 license: MIT - repoEtag: '"7e8044a4e265006d4cadd8c2fdae079002b2bbdb48e25528fff9168a66c61a10"' - repoLastModified: Tue, 08 Oct 2024 02:19:40 GMT + repoEtag: '"589b5b9ce2ac2be0051efd964ef3881a14974bc0bd112cd9e64f1ef4ba8520c0"' + repoLastModified: Tue, 08 Oct 2024 22:48:59 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-07T13:16:40Z' + updated: '2024-10-08T12:23:57Z' 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: '"05b7e92c6bce42ea743a73b068f9438f16af4a9cd82347492831a53cff92cbef"' - repoLastModified: Mon, 07 Oct 2024 13:16:40 GMT + repoEtag: '"2a48305713500f4af63b382196325c1a12a5f043185f59f85b2d06a51f07735d"' + repoLastModified: Tue, 08 Oct 2024 12:23:57 GMT foundInMaster: true category: Code Generators id: bf98240ea893afa32efc180fb73dd5b6 @@ -13339,13 +13339,13 @@ v3: true repositoryMetadata: base64Readme: >- - IyBzYnQtb3BlbmFwaS1nZW5lcmF0b3IKCiFbU2NhbGEgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuQVBJVG9vbHMvc2J0LW9wZW5hcGktZ2VuZXJhdG9yL3dvcmtmbG93cy9TY2FsYSUyMENJL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKQoKQSBTYnQgcGx1Z2luIHRvIHN1cHBvcnQgdGhlIE9wZW5BUEkgZ2VuZXJhdG9yIHByb2plY3QuCgojIFVzYWdlCgpBZGQgdG8geW91ciBgcHJvamVjdC9wbHVnaW5zLnNidGA6CgpgYGBzYnQKYWRkU2J0UGx1Z2luKCJvcmcub3BlbmFwaXRvb2xzIiAlICJzYnQtb3BlbmFwaS1nZW5lcmF0b3IiICUgIjcuOC4wIikKYGBgCgojIENvbmZpZ3VyYXRpb24KCkNvbmZpZ3VyYXRpb24gYmFzZWQgb24gcHJvamVjdCBtb2R1bGUgaXMgcmVjb21tZW5kZWQgd2F5IHRvIHNlcGFyYXRlIHNwZWNpZmljYXRpb25zIGJ5IG1vZHVsZXMuCgpZb3UgbXVzdCBkZWZpbmUgb25lIG9mIHRoZSBzZXR0aW5ncyBgb3BlbkFwaUlucHV0U3BlY2Agb3IgYG9wZW5BcGlDb25maWdGaWxlYCB0byBhYmxlIHJ1biBwbHVnaW4gdG8gZ2VuZXJhdGUuCgpTZXR0aW5ncyB3aWxsIGJlIHBpY2tlZCB1cCBmcm9tIGBvcGVuQXBpQ29uZmlnRmlsZWAgZmlyc3QgaWYgZGVmaW5lZCBhbmQgdGhlbiB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggbW9kdWxlIHNwZWNpZmllZApzZXR0aW5ncyBpZiBwcm92aWRlZAoKV2l0aCB0aGUgbmV4dCBleGFtcGxlIG1vZHVsZSBgZ2VuZXJhdGVkYCB3aWxsIGJlIGRlZmluZWQgYXM6CgpgYGBzYnQKbGF6eSB2YWwgZ2VuZXJhdGVkID0gcHJvamVjdC5pbihmaWxlKCJnZW5lcmF0ZWQiKSkKICAuc2V0dGluZ3MoCiAgICBvcGVuQXBpSW5wdXRTcGVjIDo9ICJvcGVuYXBpLnlhbWwiLAogICAgb3BlbkFwaUNvbmZpZ0ZpbGUgOj0gImNvbmZpZy55YW1sIgogICkKYGBgCgpUaGVyZSBpcyBhIGhlbHBlcnMgdG8gaGF2ZSBib29sZWFuIHNldHRpbmdzIG1vcmUgcmVhZGFibGUuIEluc3RlYWQgb2YgYFNvbWUodHJ1ZSlgIGl0IHBvc3NpYmxlIHRvIGRvIG5leHQ6CmBgYHNidAogICAgb3BlbkFwaVZhbGlkYXRlU3BlYyA6PSBTZXR0aW5nRGlzYWJsZWQsCiAgICBvcGVuQXBpR2VuZXJhdGVNb2RlbFRlc3RzIDo9IFNldHRpbmdFbmFibGVkLApgYGAKIyBFeGVjdXRpb24KClRvIHByaW50IGFsbCBhdmFpbGFibGUgbGFuZ3VhZ2VzIHVzZQpgYGBzaGVsbCBzY3JpcHQKc2J0IG9wZW5BcGlHZW5lcmF0b3JzCmBgYAoKVG8gcnVuIHRlbXBsYXRlIGdlbmVyYXRpb24gcHJvY2VzcwpgYGBzaGVsbCBzY3JpcHQKc2J0IG9wZW5BcGlHZW5lcmF0ZQpgYGAKb3IgcGVyIGRlZmluZWQgbW9kdWxlCmBgYHNoZWxsIHNjcmlwdApzYnQgZ2VuZXJhdGVkL29wZW5BcGlHZW5lcmF0ZQpgYGAKCiMgU2V0dGluZ3MKCgp8IFNldHRpbmcgIHwgVHlwZSAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgb3BlbkFwaUdlbmVyYXRvck5hbWUgKnwgYFN0cmluZ2AgfCBUaGUgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIHdoaWNoIHdpbGwgaGFuZGxlIGNvZGVnZW4uIChzZWUgXCJvcGVuQXBpR2VuZXJhdG9yc1wiIHRhc2spPGJyPiBSZXF1aXJlZC4gQ2FuIGJlIHByb3ZpZGVkIGFzIGBnZW5lcmF0b3JOYW1lYCBvcHRpb24gb2YgYG9wZW5BcGlDb25maWdGaWxlYCBqc29uIGNvbmZpZyB8Cnwgb3BlbkFwaUlucHV0U3BlYyAqfCBgU3RyaW5nYCB8IFRoZSBPcGVuIEFQSSAyLjAvMy54IHNwZWNpZmljYXRpb24gbG9jYXRpb24gKGZpbGUgb3IgdXJsKTxicj4gUmVxdWlyZWQuIENhbiBiZSBwcm92aWRlZCBhcyBgaW5wdXRTcGVjYCBvcHRpb24gb2YgYG9wZW5BcGlDb25maWdGaWxlYCBqc29uIGNvbmZpZyB8Cnwgb3BlbkFwaU91dHB1dERpcnwgYFN0cmluZ2AgfCBUaGUgb3V0cHV0IHRhcmdldCBkaXJlY3RvcnkgaW50byB3aGljaCBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIHwKfCBvcGVuQXBpQ29uZmlnRmlsZSAqKnwgYFN0cmluZ2AgfCBQYXRoIHRvIGpzb24gY29uZmlndXJhdGlvbiBmaWxlPGJyPiBUaGlzIHNldHRpbmcgaXMgcmVxdWlyZWQgd2l0aCBgZ2VuZXJhdG9yTmFtZWAgYW5kIGBpbnB1dFNwZWNgIHNldHRpbmdzIHByb3ZpZGVkIGlmIHNidCBzZXR0aW5ncyBgb3BlbkFwaUdlbmVyYXRvck5hbWVgIGFuZCBgb3BlbkFwaUlucHV0U3BlY2AgYXJlIGFic2VudCB8Cnwgb3BlbkFwaUFkZGl0aW9uYWxQcm9wZXJ0aWVzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU2V0cyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgbXVzdGFjaGUgdGVtcGxhdGVzIGluIHRoZSBmb3JtYXQgb2YgbmFtZT12YWx1ZSxuYW1lPXZhbHVlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbiB8Cnwgb3BlbkFwaUdsb2JhbFByb3BlcnRpZXMgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfFNldHMgc3BlY2lmaWVkIHN5c3RlbSBwcm9wZXJ0aWVzIHwKfCBvcGVuQXBpVmVyYm9zZSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgVGhlIHZlcmJvc2l0eSBvZiBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpVmFsaWRhdGVTcGVjIHwgYE9wdGlvbltCb29sZWFuXWAgfCBXaGV0aGVyIG9yIG5vdCBhbiBpbnB1dCBzcGVjaWZpY2F0aW9uIHNob3VsZCBiZSB2YWxpZGF0ZWQgdXBvbiBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpVGVtcGxhdGVEaXIgfCBgU3RyaW5nYCB8IFRoZSB0ZW1wbGF0ZSBkaXJlY3RvcnkgaG9sZGluZyBhIGN1c3RvbSB0ZW1wbGF0ZSB8Cnwgb3BlbkFwaUF1dGggfCBgU3RyaW5nYCB8IEFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgbmFtZTpoZWFkZXIgd2l0aCBhIGNvbW1hIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzIHwKfCBvcGVuQXBpU2tpcE92ZXJ3cml0ZSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgU3BlY2lmaWVzIGlmIHRoZSBleGlzdGluZyBmaWxlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIHRoZSBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpUGFja2FnZU5hbWUgfCBgU3RyaW5nYCB8IFBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjbGFzc2VzICh3aGVyZSBzdXBwb3J0ZWQpIHwKfCBvcGVuQXBpQXBpUGFja2FnZSB8IGBTdHJpbmdgIHwgUGFja2FnZSBmb3IgZ2VuZXJhdGVkIGFwaSBjbGFzc2VzIHwKfCBvcGVuQXBpTW9kZWxQYWNrYWdlIHwgYFN0cmluZ2AgfCBQYWNrYWdlIGZvciBnZW5lcmF0ZWQgbW9kZWxzIHwKfCBvcGVuQXBpTW9kZWxOYW1lUHJlZml4IHwgYFN0cmluZ2AgfCBQcmVmaXggdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byBhbGwgbW9kZWwgbmFtZXMgfAp8IG9wZW5BcGlNb2RlbE5hbWVTdWZmaXggfCBgU3RyaW5nYCB8IFN1ZmZpeCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gYWxsIG1vZGVsIG5hbWVzIHwKfCBvcGVuQXBpSW5zdGFudGlhdGlvblR5cGVzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU2V0cyBpbnN0YW50aWF0aW9uIHR5cGUgbWFwcGluZ3MgfAp8IG9wZW5BcGlUeXBlTWFwcGluZ3MgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfCBTZXRzIG1hcHBpbmdzIGJldHdlZW4gT3BlbkFQSSBzcGVjIHR5cGVzIGFuZCBnZW5lcmF0ZWQgY29kZSB0eXBlcyB8Cnwgb3BlbkFwaVNlcnZlclZhcmlhYmxlcyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IFNldHMgc2VydmVyIHZhcmlhYmxlIGZvciBzZXJ2ZXIgVVJMIHRlbXBsYXRlIHN1YnN0aXR1dGlvbiwgaW4gdGhlIGZvcm1hdCBvZiBuYW1lPXZhbHVlLG5hbWU9dmFsdWUuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uIHwKfCBvcGVuQXBpTGFuZ3VhZ2VTcGVjaWZpY1ByaW1pdGl2ZXMgfCBgTGlzdFtTdHJpbmddYCB8IFNwZWNpZmllcyBhZGRpdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmljIHByaW1pdGl2ZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIHR5cGUxLHR5cGUyLHR5cGUzLHR5cGUzLiBGb3IgZXhhbXBsZTogU3RyaW5nLGJvb2xlYW4sQm9vbGVhbixEb3VibGUgfAp8IG9wZW5BcGlJbXBvcnRNYXBwaW5ncyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IFNwZWNpZmllcyBtYXBwaW5ncyBiZXR3ZWVuIGEgZ2l2ZW4gY2xhc3MgYW5kIHRoZSBpbXBvcnQgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhhdCBjbGFzcyB8Cnwgb3BlbkFwaUludm9rZXJQYWNrYWdlIHwgYFN0cmluZ2AgfCBSb290IHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjb2RlIHwKfCBvcGVuQXBpR3JvdXBJZCB8IGBTdHJpbmdgIHwgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5zYnQgfAp8IG9wZW5BcGlJZCB8IGBTdHJpbmdgIHwgYXJ0aWZhY3RJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5zYnQuIFRoaXMgYWxzbyBiZWNvbWVzIHBhcnQgb2YgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5J3MgZmlsZW5hbWUgfAp8IG9wZW5BcGlMaWJyYXJ5IHwgYFN0cmluZ2AgfCBsaWJyYXJ5IHRlbXBsYXRlIChzdWItdGVtcGxhdGUpIHwKfCBvcGVuQXBpR2l0SG9zdCB8IGBTdHJpbmdgIHxHaXQgaG9zdCwgZS5nLiBnaXRsYWIuY29tIHwKfCBvcGVuQXBpR2l0VXNlcklkIHwgYFN0cmluZ2AgfCBHaXQgdXNlciBJRCwgZS5nLiBvcGVuYXBpdG9vbHMgfAp8IG9wZW5BcGlHaXRSZXBvSWQgfCBgU3RyaW5nYCB8IEdpdCByZXBvIElELCBlLmcuIG9wZW5hcGktZ2VuZXJhdG9yIHwKfCBvcGVuQXBpUmVsZWFzZU5vdGUgfCBgU3RyaW5nYCB8IFJlbGVhc2Ugbm90ZSwgZGVmYXVsdCB0byAnTWlub3IgdXBkYXRlJyB8Cnwgb3BlbkFwaUh0dHBVc2VyQWdlbnQgfCBgU3RyaW5nYCB8IEhUVFAgdXNlciBhZ2VudCwgZS5nLiBjb2RlZ2VuX2NzaGFycF9hcGlfY2xpZW50LCBkZWZhdWx0IHRvICdPcGVuQVBJLUdlbmVyYXRvci97cGFja2FnZVZlcnNpb259fS97bGFuZ3VhZ2V9JyB8Cnwgb3BlbkFwaVJlc2VydmVkV29yZHNNYXBwaW5ncyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IF0oIlNwZWNpZmllcyBob3cgYSByZXNlcnZlZCBuYW1lIHNob3VsZCBiZSBlc2NhcGVkIHRvIHwKfCBvcGVuQXBpSWdub3JlRmlsZU92ZXJyaWRlIHwgYFN0cmluZ2AgfCBTcGVjaWZpZXMgYW4gb3ZlcnJpZGUgbG9jYXRpb24gZm9yIHRoZSAub3BlbmFwaS1nZW5lcmF0b3ItaWdub3JlIGZpbGUuIE1vc3QgdXNlZnVsIG9uIGluaXRpYWwgZ2VuZXJhdGlvbi4gfAp8IG9wZW5BcGlSZW1vdmVPcGVyYXRpb25JZFByZWZpeCB8IGBPcHRpb25bQm9vbGVhbl1gIHwgUmVtb3ZlIHByZWZpeCBvZiBvcGVyYXRpb25JZCwgZS5nLiBjb25maWdfZ2V0SWQgPT4gZ2V0SWQgfAp8IG9wZW5BcGlBcGlGaWxlc0NvbnN0cmFpbmVkVG8gfCBgTGlzdFtTdHJpbmddYCB8IERlZmluZXMgd2hpY2ggQVBJLXJlbGF0ZWQgZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHN1YnNldCBvZiBnZW5lcmF0ZWQgZmlsZXMgKG9yIG5vbmUgYXQgYWxsKSB8Cnwgb3BlbkFwaU1vZGVsRmlsZXNDb25zdHJhaW5lZFRvIHwgYExpc3RbU3RyaW5nXWAgfCBEZWZpbmVzIHdoaWNoIG1vZGVsLXJlbGF0ZWQgZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHN1YnNldCBvZiBnZW5lcmF0ZWQgZmlsZXMgKG9yIG5vbmUgYXQgYWxsKSB8Cnwgb3BlbkFwaVN1cHBvcnRpbmdGaWxlc0NvbnN0cmFpbmVkVG8gfCBgTGlzdFtTdHJpbmddYCB8IERlZmluZXMgd2hpY2ggc3VwcG9ydGluZyBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgc3Vic2V0IG9mIGdlbmVyYXRlZCBmaWxlcyAob3Igbm9uZSBhdCBhbGwgfAp8IG9wZW5BcGlHZW5lcmF0ZU1vZGVsVGVzdHMgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFNwZWNpZmllcyB0aGF0IG1vZGVsIHRlc3RzIGFyZSB0byBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlHZW5lcmF0ZU1vZGVsRG9jdW1lbnRhdGlvbiB8IGBPcHRpb25bQm9vbGVhbl1gIHwgRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBtb2RlbC1yZWxhdGVkIF9kb2N1bWVudGF0aW9uXyBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkIHwKfCBvcGVuQXBpR2VuZXJhdGVBcGlUZXN0cyB8IGBPcHRpb25bQm9vbGVhbl1gIHwgU3BlY2lmaWVzIHRoYXQgYXBpIHRlc3RzIGFyZSB0byBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlHZW5lcmF0ZUFwaURvY3VtZW50YXRpb24gfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IERlZmluZXMgd2hldGhlciBvciBub3QgYXBpLXJlbGF0ZWQgX2RvY3VtZW50YXRpb25fIGZpbGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlXaXRoWG1sIHwgYE9wdGlvbltCb29sZWFuXWAgfCBBIHNwZWNpYWwtY2FzZSBzZXR0aW5nIHdoaWNoIGNvbmZpZ3VyZXMgc29tZSBnZW5lcmF0b3JzIHdpdGggWE1MIHN1cHBvcnQuIEluIHNvbWUgY2FzZXMsIHRoaXMgZm9yY2VzIGpzb24gT1IgeG1sLCBzbyB0aGUgZGVmYXVsdCBoZXJlIGlzIGZhbHNlIHwKfCBvcGVuQXBpTG9nVG9TdGRlcnIgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFRvIHdyaXRlIGFsbCBsb2cgbWVzc2FnZXMgKG5vdCBqdXN0IGVycm9ycykgdG8gU1RET1VUIHwKfCBvcGVuQXBpRW5hYmxlUG9zdFByb2Nlc3NGaWxlIHwgYE9wdGlvbltCb29sZWFuXWAgfCBFbmFibGUgcG9zdC1wcm9jZXNzaW5nIGZpbGUgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHwgXAp8IG9wZW5BcGlTa2lwVmFsaWRhdGVTcGVjIHwgYE9wdGlvbltCb29sZWFuXWAgfCBUbyBza2lwIHNwZWMgdmFsaWRhdGlvbi4gV2hlbiB0cnVlLCB3ZSB3aWxsIHNraXAgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdmFsaWRhdGluZyBhIHNwZWMgYmVmb3JlIGdlbmVyYXRpb24gfAp8IG9wZW5BcGlHZW5lcmF0ZUFsaWFzQXNNb2RlbCB8IGBPcHRpb25bQm9vbGVhbl1gIHwgR2VuZXJhdGUgbW9kZWwgaW1wbGVtZW50YXRpb24gZm9yIGFsaWFzZXMgdG8gbWFwIGFuZCBhcnJheSBzY2hlbWFzIHwKfCBvcGVuQXBpR2VuZXJhdGVNZXRhZGF0YSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgR2VuZXJhdGUgbWV0YWRhdGEgZmlsZXMgdXNlZCBieSBPcGVuQVBJIEdlbmVyYXRvci4gVGhpcyBpbmNsdWRlcyBgLm9wZW5hcGktZ2VuZXJhdG9yLWlnbm9yZWAgYW5kIGFueSBmaWxlcyB3aXRoaW4gYC5vcGVuYXBpLWdlbmVyYXRvcmAuIHwKCiMgRXhhbXBsZXMKClBsZWFzZSBzZWUgW2FuIHNidC10ZXN0IGNvbmZpZ3VyYXRpb25dKHNyYy9zYnQtdGVzdCkgZm9yIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBwbHVnaW4uCkRvIG5vdCBydW4gdGhvc2UgZXhhbXBsZXMgZGlyZWN0bHksIHBsZWFzZSBjb3B5IHRoZW0gdG8gc2VwYXJhdGUgcGxhY2UgZmlyc3QuCgojIENvbnRyaWJ1dGlvbiBhbmQgVGVzdHMKCldyaXRlIHBsdWdpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB1bmRlciBbc3JjL3NidC10ZXN0XShzcmMvc2J0LXRlc3QpCgpFeGVjdXRlIG5leHQgY29tbWFuZCB0byBydW4gdGVzdHM6CgpgYGBzaGVsbCBzY3JpcHQKc2J0IHNjcmlwdGVkCmBgYAoKTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgYW5kIGV4ZWN1dGUgdGVzdHMgW2lzIGhlcmVdKGh0dHBzOi8vd3d3LnNjYWxhLXNidC5vcmcvMS54L2RvY3MvVGVzdGluZy1zYnQtcGx1Z2lucy5odG1sKQo= - readmeEtag: '"ebfc6ae39be2ab99bc5b66d2c87d3265b50531c4"' - readmeLastModified: Sun, 08 Sep 2024 08:21:29 GMT + IyBzYnQtb3BlbmFwaS1nZW5lcmF0b3IKCiFbU2NhbGEgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuQVBJVG9vbHMvc2J0LW9wZW5hcGktZ2VuZXJhdG9yL3dvcmtmbG93cy9TY2FsYSUyMENJL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKQoKQSBTYnQgcGx1Z2luIHRvIHN1cHBvcnQgdGhlIE9wZW5BUEkgZ2VuZXJhdG9yIHByb2plY3QuCgojIFVzYWdlCgpBZGQgdG8geW91ciBgcHJvamVjdC9wbHVnaW5zLnNidGA6CgpgYGBzYnQKYWRkU2J0UGx1Z2luKCJvcmcub3BlbmFwaXRvb2xzIiAlICJzYnQtb3BlbmFwaS1nZW5lcmF0b3IiICUgIjcuOS4wIikKYGBgCgojIENvbmZpZ3VyYXRpb24KCkNvbmZpZ3VyYXRpb24gYmFzZWQgb24gcHJvamVjdCBtb2R1bGUgaXMgcmVjb21tZW5kZWQgd2F5IHRvIHNlcGFyYXRlIHNwZWNpZmljYXRpb25zIGJ5IG1vZHVsZXMuCgpZb3UgbXVzdCBkZWZpbmUgb25lIG9mIHRoZSBzZXR0aW5ncyBgb3BlbkFwaUlucHV0U3BlY2Agb3IgYG9wZW5BcGlDb25maWdGaWxlYCB0byBhYmxlIHJ1biBwbHVnaW4gdG8gZ2VuZXJhdGUuCgpTZXR0aW5ncyB3aWxsIGJlIHBpY2tlZCB1cCBmcm9tIGBvcGVuQXBpQ29uZmlnRmlsZWAgZmlyc3QgaWYgZGVmaW5lZCBhbmQgdGhlbiB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggbW9kdWxlIHNwZWNpZmllZApzZXR0aW5ncyBpZiBwcm92aWRlZAoKV2l0aCB0aGUgbmV4dCBleGFtcGxlIG1vZHVsZSBgZ2VuZXJhdGVkYCB3aWxsIGJlIGRlZmluZWQgYXM6CgpgYGBzYnQKbGF6eSB2YWwgZ2VuZXJhdGVkID0gcHJvamVjdC5pbihmaWxlKCJnZW5lcmF0ZWQiKSkKICAuc2V0dGluZ3MoCiAgICBvcGVuQXBpSW5wdXRTcGVjIDo9ICJvcGVuYXBpLnlhbWwiLAogICAgb3BlbkFwaUNvbmZpZ0ZpbGUgOj0gImNvbmZpZy55YW1sIgogICkKYGBgCgpUaGVyZSBpcyBhIGhlbHBlcnMgdG8gaGF2ZSBib29sZWFuIHNldHRpbmdzIG1vcmUgcmVhZGFibGUuIEluc3RlYWQgb2YgYFNvbWUodHJ1ZSlgIGl0IHBvc3NpYmxlIHRvIGRvIG5leHQ6CmBgYHNidAogICAgb3BlbkFwaVZhbGlkYXRlU3BlYyA6PSBTZXR0aW5nRGlzYWJsZWQsCiAgICBvcGVuQXBpR2VuZXJhdGVNb2RlbFRlc3RzIDo9IFNldHRpbmdFbmFibGVkLApgYGAKIyBFeGVjdXRpb24KClRvIHByaW50IGFsbCBhdmFpbGFibGUgbGFuZ3VhZ2VzIHVzZQpgYGBzaGVsbCBzY3JpcHQKc2J0IG9wZW5BcGlHZW5lcmF0b3JzCmBgYAoKVG8gcnVuIHRlbXBsYXRlIGdlbmVyYXRpb24gcHJvY2VzcwpgYGBzaGVsbCBzY3JpcHQKc2J0IG9wZW5BcGlHZW5lcmF0ZQpgYGAKb3IgcGVyIGRlZmluZWQgbW9kdWxlCmBgYHNoZWxsIHNjcmlwdApzYnQgZ2VuZXJhdGVkL29wZW5BcGlHZW5lcmF0ZQpgYGAKCiMgU2V0dGluZ3MKCgp8IFNldHRpbmcgIHwgVHlwZSAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Cnwgb3BlbkFwaUdlbmVyYXRvck5hbWUgKnwgYFN0cmluZ2AgfCBUaGUgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIHdoaWNoIHdpbGwgaGFuZGxlIGNvZGVnZW4uIChzZWUgXCJvcGVuQXBpR2VuZXJhdG9yc1wiIHRhc2spPGJyPiBSZXF1aXJlZC4gQ2FuIGJlIHByb3ZpZGVkIGFzIGBnZW5lcmF0b3JOYW1lYCBvcHRpb24gb2YgYG9wZW5BcGlDb25maWdGaWxlYCBqc29uIGNvbmZpZyB8Cnwgb3BlbkFwaUlucHV0U3BlYyAqfCBgU3RyaW5nYCB8IFRoZSBPcGVuIEFQSSAyLjAvMy54IHNwZWNpZmljYXRpb24gbG9jYXRpb24gKGZpbGUgb3IgdXJsKTxicj4gUmVxdWlyZWQuIENhbiBiZSBwcm92aWRlZCBhcyBgaW5wdXRTcGVjYCBvcHRpb24gb2YgYG9wZW5BcGlDb25maWdGaWxlYCBqc29uIGNvbmZpZyB8Cnwgb3BlbkFwaU91dHB1dERpcnwgYFN0cmluZ2AgfCBUaGUgb3V0cHV0IHRhcmdldCBkaXJlY3RvcnkgaW50byB3aGljaCBjb2RlIHdpbGwgYmUgZ2VuZXJhdGVkIHwKfCBvcGVuQXBpQ29uZmlnRmlsZSAqKnwgYFN0cmluZ2AgfCBQYXRoIHRvIGpzb24gY29uZmlndXJhdGlvbiBmaWxlPGJyPiBUaGlzIHNldHRpbmcgaXMgcmVxdWlyZWQgd2l0aCBgZ2VuZXJhdG9yTmFtZWAgYW5kIGBpbnB1dFNwZWNgIHNldHRpbmdzIHByb3ZpZGVkIGlmIHNidCBzZXR0aW5ncyBgb3BlbkFwaUdlbmVyYXRvck5hbWVgIGFuZCBgb3BlbkFwaUlucHV0U3BlY2AgYXJlIGFic2VudCB8Cnwgb3BlbkFwaUFkZGl0aW9uYWxQcm9wZXJ0aWVzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU2V0cyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgbXVzdGFjaGUgdGVtcGxhdGVzIGluIHRoZSBmb3JtYXQgb2YgbmFtZT12YWx1ZSxuYW1lPXZhbHVlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbiB8Cnwgb3BlbkFwaUdsb2JhbFByb3BlcnRpZXMgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfFNldHMgc3BlY2lmaWVkIHN5c3RlbSBwcm9wZXJ0aWVzIHwKfCBvcGVuQXBpVmVyYm9zZSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgVGhlIHZlcmJvc2l0eSBvZiBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpVmFsaWRhdGVTcGVjIHwgYE9wdGlvbltCb29sZWFuXWAgfCBXaGV0aGVyIG9yIG5vdCBhbiBpbnB1dCBzcGVjaWZpY2F0aW9uIHNob3VsZCBiZSB2YWxpZGF0ZWQgdXBvbiBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpVGVtcGxhdGVEaXIgfCBgU3RyaW5nYCB8IFRoZSB0ZW1wbGF0ZSBkaXJlY3RvcnkgaG9sZGluZyBhIGN1c3RvbSB0ZW1wbGF0ZSB8Cnwgb3BlbkFwaUF1dGggfCBgU3RyaW5nYCB8IEFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgbmFtZTpoZWFkZXIgd2l0aCBhIGNvbW1hIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzIHwKfCBvcGVuQXBpU2tpcE92ZXJ3cml0ZSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgU3BlY2lmaWVzIGlmIHRoZSBleGlzdGluZyBmaWxlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gZHVyaW5nIHRoZSBnZW5lcmF0aW9uIHwKfCBvcGVuQXBpUGFja2FnZU5hbWUgfCBgU3RyaW5nYCB8IFBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjbGFzc2VzICh3aGVyZSBzdXBwb3J0ZWQpIHwKfCBvcGVuQXBpQXBpUGFja2FnZSB8IGBTdHJpbmdgIHwgUGFja2FnZSBmb3IgZ2VuZXJhdGVkIGFwaSBjbGFzc2VzIHwKfCBvcGVuQXBpTW9kZWxQYWNrYWdlIHwgYFN0cmluZ2AgfCBQYWNrYWdlIGZvciBnZW5lcmF0ZWQgbW9kZWxzIHwKfCBvcGVuQXBpTW9kZWxOYW1lUHJlZml4IHwgYFN0cmluZ2AgfCBQcmVmaXggdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byBhbGwgbW9kZWwgbmFtZXMgfAp8IG9wZW5BcGlNb2RlbE5hbWVTdWZmaXggfCBgU3RyaW5nYCB8IFN1ZmZpeCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gYWxsIG1vZGVsIG5hbWVzIHwKfCBvcGVuQXBpSW5zdGFudGlhdGlvblR5cGVzIHwgYE1hcFtTdHJpbmcsIFN0cmluZ11gIHwgU2V0cyBpbnN0YW50aWF0aW9uIHR5cGUgbWFwcGluZ3MgfAp8IG9wZW5BcGlUeXBlTWFwcGluZ3MgfCBgTWFwW1N0cmluZywgU3RyaW5nXWAgfCBTZXRzIG1hcHBpbmdzIGJldHdlZW4gT3BlbkFQSSBzcGVjIHR5cGVzIGFuZCBnZW5lcmF0ZWQgY29kZSB0eXBlcyB8Cnwgb3BlbkFwaVNlcnZlclZhcmlhYmxlcyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IFNldHMgc2VydmVyIHZhcmlhYmxlIGZvciBzZXJ2ZXIgVVJMIHRlbXBsYXRlIHN1YnN0aXR1dGlvbiwgaW4gdGhlIGZvcm1hdCBvZiBuYW1lPXZhbHVlLG5hbWU9dmFsdWUuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uIHwKfCBvcGVuQXBpTGFuZ3VhZ2VTcGVjaWZpY1ByaW1pdGl2ZXMgfCBgTGlzdFtTdHJpbmddYCB8IFNwZWNpZmllcyBhZGRpdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmljIHByaW1pdGl2ZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIHR5cGUxLHR5cGUyLHR5cGUzLHR5cGUzLiBGb3IgZXhhbXBsZTogU3RyaW5nLGJvb2xlYW4sQm9vbGVhbixEb3VibGUgfAp8IG9wZW5BcGlJbXBvcnRNYXBwaW5ncyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IFNwZWNpZmllcyBtYXBwaW5ncyBiZXR3ZWVuIGEgZ2l2ZW4gY2xhc3MgYW5kIHRoZSBpbXBvcnQgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhhdCBjbGFzcyB8Cnwgb3BlbkFwaUludm9rZXJQYWNrYWdlIHwgYFN0cmluZ2AgfCBSb290IHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjb2RlIHwKfCBvcGVuQXBpR3JvdXBJZCB8IGBTdHJpbmdgIHwgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5zYnQgfAp8IG9wZW5BcGlJZCB8IGBTdHJpbmdgIHwgYXJ0aWZhY3RJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5zYnQuIFRoaXMgYWxzbyBiZWNvbWVzIHBhcnQgb2YgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5J3MgZmlsZW5hbWUgfAp8IG9wZW5BcGlMaWJyYXJ5IHwgYFN0cmluZ2AgfCBsaWJyYXJ5IHRlbXBsYXRlIChzdWItdGVtcGxhdGUpIHwKfCBvcGVuQXBpR2l0SG9zdCB8IGBTdHJpbmdgIHxHaXQgaG9zdCwgZS5nLiBnaXRsYWIuY29tIHwKfCBvcGVuQXBpR2l0VXNlcklkIHwgYFN0cmluZ2AgfCBHaXQgdXNlciBJRCwgZS5nLiBvcGVuYXBpdG9vbHMgfAp8IG9wZW5BcGlHaXRSZXBvSWQgfCBgU3RyaW5nYCB8IEdpdCByZXBvIElELCBlLmcuIG9wZW5hcGktZ2VuZXJhdG9yIHwKfCBvcGVuQXBpUmVsZWFzZU5vdGUgfCBgU3RyaW5nYCB8IFJlbGVhc2Ugbm90ZSwgZGVmYXVsdCB0byAnTWlub3IgdXBkYXRlJyB8Cnwgb3BlbkFwaUh0dHBVc2VyQWdlbnQgfCBgU3RyaW5nYCB8IEhUVFAgdXNlciBhZ2VudCwgZS5nLiBjb2RlZ2VuX2NzaGFycF9hcGlfY2xpZW50LCBkZWZhdWx0IHRvICdPcGVuQVBJLUdlbmVyYXRvci97cGFja2FnZVZlcnNpb259fS97bGFuZ3VhZ2V9JyB8Cnwgb3BlbkFwaVJlc2VydmVkV29yZHNNYXBwaW5ncyB8IGBNYXBbU3RyaW5nLCBTdHJpbmddYCB8IF0oIlNwZWNpZmllcyBob3cgYSByZXNlcnZlZCBuYW1lIHNob3VsZCBiZSBlc2NhcGVkIHRvIHwKfCBvcGVuQXBpSWdub3JlRmlsZU92ZXJyaWRlIHwgYFN0cmluZ2AgfCBTcGVjaWZpZXMgYW4gb3ZlcnJpZGUgbG9jYXRpb24gZm9yIHRoZSAub3BlbmFwaS1nZW5lcmF0b3ItaWdub3JlIGZpbGUuIE1vc3QgdXNlZnVsIG9uIGluaXRpYWwgZ2VuZXJhdGlvbi4gfAp8IG9wZW5BcGlSZW1vdmVPcGVyYXRpb25JZFByZWZpeCB8IGBPcHRpb25bQm9vbGVhbl1gIHwgUmVtb3ZlIHByZWZpeCBvZiBvcGVyYXRpb25JZCwgZS5nLiBjb25maWdfZ2V0SWQgPT4gZ2V0SWQgfAp8IG9wZW5BcGlBcGlGaWxlc0NvbnN0cmFpbmVkVG8gfCBgTGlzdFtTdHJpbmddYCB8IERlZmluZXMgd2hpY2ggQVBJLXJlbGF0ZWQgZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHN1YnNldCBvZiBnZW5lcmF0ZWQgZmlsZXMgKG9yIG5vbmUgYXQgYWxsKSB8Cnwgb3BlbkFwaU1vZGVsRmlsZXNDb25zdHJhaW5lZFRvIHwgYExpc3RbU3RyaW5nXWAgfCBEZWZpbmVzIHdoaWNoIG1vZGVsLXJlbGF0ZWQgZmlsZXMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhIHN1YnNldCBvZiBnZW5lcmF0ZWQgZmlsZXMgKG9yIG5vbmUgYXQgYWxsKSB8Cnwgb3BlbkFwaVN1cHBvcnRpbmdGaWxlc0NvbnN0cmFpbmVkVG8gfCBgTGlzdFtTdHJpbmddYCB8IERlZmluZXMgd2hpY2ggc3VwcG9ydGluZyBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY3JlYXRlIGEgc3Vic2V0IG9mIGdlbmVyYXRlZCBmaWxlcyAob3Igbm9uZSBhdCBhbGwgfAp8IG9wZW5BcGlHZW5lcmF0ZU1vZGVsVGVzdHMgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFNwZWNpZmllcyB0aGF0IG1vZGVsIHRlc3RzIGFyZSB0byBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlHZW5lcmF0ZU1vZGVsRG9jdW1lbnRhdGlvbiB8IGBPcHRpb25bQm9vbGVhbl1gIHwgRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBtb2RlbC1yZWxhdGVkIF9kb2N1bWVudGF0aW9uXyBmaWxlcyBzaG91bGQgYmUgZ2VuZXJhdGVkIHwKfCBvcGVuQXBpR2VuZXJhdGVBcGlUZXN0cyB8IGBPcHRpb25bQm9vbGVhbl1gIHwgU3BlY2lmaWVzIHRoYXQgYXBpIHRlc3RzIGFyZSB0byBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlHZW5lcmF0ZUFwaURvY3VtZW50YXRpb24gfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IERlZmluZXMgd2hldGhlciBvciBub3QgYXBpLXJlbGF0ZWQgX2RvY3VtZW50YXRpb25fIGZpbGVzIHNob3VsZCBiZSBnZW5lcmF0ZWQgfAp8IG9wZW5BcGlXaXRoWG1sIHwgYE9wdGlvbltCb29sZWFuXWAgfCBBIHNwZWNpYWwtY2FzZSBzZXR0aW5nIHdoaWNoIGNvbmZpZ3VyZXMgc29tZSBnZW5lcmF0b3JzIHdpdGggWE1MIHN1cHBvcnQuIEluIHNvbWUgY2FzZXMsIHRoaXMgZm9yY2VzIGpzb24gT1IgeG1sLCBzbyB0aGUgZGVmYXVsdCBoZXJlIGlzIGZhbHNlIHwKfCBvcGVuQXBpTG9nVG9TdGRlcnIgfCBgT3B0aW9uW0Jvb2xlYW5dYCB8IFRvIHdyaXRlIGFsbCBsb2cgbWVzc2FnZXMgKG5vdCBqdXN0IGVycm9ycykgdG8gU1RET1VUIHwKfCBvcGVuQXBpRW5hYmxlUG9zdFByb2Nlc3NGaWxlIHwgYE9wdGlvbltCb29sZWFuXWAgfCBFbmFibGUgcG9zdC1wcm9jZXNzaW5nIGZpbGUgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHwgXAp8IG9wZW5BcGlTa2lwVmFsaWRhdGVTcGVjIHwgYE9wdGlvbltCb29sZWFuXWAgfCBUbyBza2lwIHNwZWMgdmFsaWRhdGlvbi4gV2hlbiB0cnVlLCB3ZSB3aWxsIHNraXAgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdmFsaWRhdGluZyBhIHNwZWMgYmVmb3JlIGdlbmVyYXRpb24gfAp8IG9wZW5BcGlHZW5lcmF0ZUFsaWFzQXNNb2RlbCB8IGBPcHRpb25bQm9vbGVhbl1gIHwgR2VuZXJhdGUgbW9kZWwgaW1wbGVtZW50YXRpb24gZm9yIGFsaWFzZXMgdG8gbWFwIGFuZCBhcnJheSBzY2hlbWFzIHwKfCBvcGVuQXBpR2VuZXJhdGVNZXRhZGF0YSB8IGBPcHRpb25bQm9vbGVhbl1gIHwgR2VuZXJhdGUgbWV0YWRhdGEgZmlsZXMgdXNlZCBieSBPcGVuQVBJIEdlbmVyYXRvci4gVGhpcyBpbmNsdWRlcyBgLm9wZW5hcGktZ2VuZXJhdG9yLWlnbm9yZWAgYW5kIGFueSBmaWxlcyB3aXRoaW4gYC5vcGVuYXBpLWdlbmVyYXRvcmAuIHwKCiMgRXhhbXBsZXMKClBsZWFzZSBzZWUgW2FuIHNidC10ZXN0IGNvbmZpZ3VyYXRpb25dKHNyYy9zYnQtdGVzdCkgZm9yIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBwbHVnaW4uCkRvIG5vdCBydW4gdGhvc2UgZXhhbXBsZXMgZGlyZWN0bHksIHBsZWFzZSBjb3B5IHRoZW0gdG8gc2VwYXJhdGUgcGxhY2UgZmlyc3QuCgojIENvbnRyaWJ1dGlvbiBhbmQgVGVzdHMKCldyaXRlIHBsdWdpbiBpbnRlZ3JhdGlvbiB0ZXN0cyB1bmRlciBbc3JjL3NidC10ZXN0XShzcmMvc2J0LXRlc3QpCgpFeGVjdXRlIG5leHQgY29tbWFuZCB0byBydW4gdGVzdHM6CgpgYGBzaGVsbCBzY3JpcHQKc2J0IHNjcmlwdGVkCmBgYAoKTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgYW5kIGV4ZWN1dGUgdGVzdHMgW2lzIGhlcmVdKGh0dHBzOi8vd3d3LnNjYWxhLXNidC5vcmcvMS54L2RvY3MvVGVzdGluZy1zYnQtcGx1Z2lucy5odG1sKQo= + readmeEtag: '"69d5c7c873f5e0f6102f426f67059376fe0a4905"' + readmeLastModified: Tue, 08 Oct 2024 03:38:58 GMT repositoryId: 244148241 description: null created: '2020-03-01T12:49:22Z' - updated: '2024-09-08T08:21:41Z' + updated: '2024-10-08T03:39:03Z' language: Scala archived: false stars: 26 @@ -13354,8 +13354,8 @@ owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: NOASSERTION - repoEtag: '"448f1e5e387841692831b1040e8c5a8e32e1af057fd36e3557a8d777885d6d71"' - repoLastModified: Sun, 08 Sep 2024 08:21:41 GMT + repoEtag: '"c7e418cc641f136f91a04bbffa2c846c608236a3ae603b7973042c240fb7c023"' + repoLastModified: Tue, 08 Oct 2024 03:39:03 GMT foundInMaster: true category: Description Validators id: b442d7afc94f3b9d9e3009c0936c0e9c @@ -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-10-07T20:55:26Z' + updated: '2024-10-08T18:34:50Z' language: TypeScript archived: false stars: 23 @@ -13560,8 +13560,8 @@ forks: 2 owner: eropple logo: https://avatars.githubusercontent.com/u/109262?v=4 - repoEtag: '"3e5993b88f6ee88f728a2bc4ae67ca5188c0612bda1a689541011ca7a014f7d0"' - repoLastModified: Mon, 07 Oct 2024 20:55:26 GMT + repoEtag: '"04e7f42ec18974ba3b0b8af53596d5d51bd9eb967774b4e98f004770ba62f7a1"' + repoLastModified: Tue, 08 Oct 2024 18:34:50 GMT foundInMaster: true category: - Server @@ -13664,7 +13664,7 @@ repositoryId: 155577069 description: The official OpenAPI 3.0 definitions for ShipEngine™ created: '2018-10-31T15:06:25Z' - updated: '2024-10-03T21:37:09Z' + updated: '2024-10-08T15:21:08Z' language: null archived: false stars: 22 @@ -13672,8 +13672,8 @@ forks: 16 owner: ShipEngine logo: https://avatars.githubusercontent.com/u/42709242?v=4 - repoEtag: '"4610079769581261c115dfe2e55abf754805462477f5549280c06b8367472fba"' - repoLastModified: Thu, 03 Oct 2024 21:37:09 GMT + repoEtag: '"80dd1139177040d644649a97af06fce028cb775b18328c6253e6306a470c3c8d"' + repoLastModified: Tue, 08 Oct 2024 15:21:08 GMT foundInMaster: true category: Parsers id: ff407dc64fade9a4275ec5d32f20aab5 @@ -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-07T22:54:21Z' + updated: '2024-10-08T06:29:22Z' language: Scala archived: false stars: 21 @@ -13963,8 +13963,8 @@ owner: eikek logo: https://avatars.githubusercontent.com/u/701128?v=4 license: MIT - repoEtag: '"1d9ecd313ddff964f0003cdcd81bee534088507bdf4a6ee0c14b4df5f7c4228c"' - repoLastModified: Mon, 07 Oct 2024 22:54:21 GMT + repoEtag: '"cb7feefcac920405463b5257fb60d9da659af707b7779e9720b39dfa839c027e"' + repoLastModified: Tue, 08 Oct 2024 06:29:22 GMT foundInMaster: true category: Parsers id: c55aff4f35aaeecc6904953f3eb67cb6 @@ -14225,17 +14225,17 @@ repositoryId: 720201668 description: Scalar API reference from Swagger/OpenAPI files for .NET🔥 created: '2023-11-17T20:04:30Z' - updated: '2024-09-24T19:03:39Z' + updated: '2024-10-08T07:48:02Z' language: C# archived: false - stars: 20 + stars: 21 watchers: 1 forks: 1 owner: benirave logo: https://avatars.githubusercontent.com/u/23312114?v=4 license: MIT - repoEtag: '"79ba3b06f9230bc148ac71ba1ccef256289dc25502f562a1235d4d990a930e16"' - repoLastModified: Tue, 24 Sep 2024 19:03:39 GMT + repoEtag: '"ce55f70d69dd81699a6264796de34df13302e11309aab06c4d669491aefa72c1"' + repoLastModified: Tue, 08 Oct 2024 07:48:02 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -14298,7 +14298,7 @@ repositoryId: 98350934 description: Mockoon application official website repository and documentation created: '2017-07-25T21:19:22Z' - updated: '2024-10-03T18:12:36Z' + updated: '2024-10-08T06:00:34Z' language: TypeScript archived: false stars: 20 @@ -14307,8 +14307,8 @@ owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"c63cca5aab8549a2598f08bae352560d0da62b0a2153a29e30ca11301d1c1547"' - repoLastModified: Thu, 03 Oct 2024 18:12:36 GMT + repoEtag: '"66d1bbc16ad160842e9eebdbf84b7a5e5802313281cfe23ab23ca063105c5436"' + repoLastModified: Tue, 08 Oct 2024 06:00:34 GMT foundInMaster: true category: Testing id: 84d3391fa9deedcd6398666ba504eb78 @@ -15139,7 +15139,7 @@ repositoryId: 443839740 description: 'Python OpenAPI3 client/validator w\ {a,}syncio ' created: '2022-01-02T18:23:26Z' - updated: '2024-10-04T06:57:35Z' + updated: '2024-10-08T12:24:26Z' language: Python archived: false stars: 15 @@ -15148,8 +15148,8 @@ owner: commonism logo: https://avatars.githubusercontent.com/u/164513?v=4 license: BSD-3-Clause - repoEtag: '"e2fcdabe053105feb95df5a35e977d959870f7db66020e7fdb65dcf1ea46fe87"' - repoLastModified: Fri, 04 Oct 2024 06:57:35 GMT + repoEtag: '"e82a6439d2f58c93d25c191d6c0f8f190f71a5a0fa0d9d3959577230e4b6e4e7"' + repoLastModified: Tue, 08 Oct 2024 12:24:26 GMT foundInMaster: true id: f7fe65d08545a563279e1526fe797380 v3: true @@ -15634,7 +15634,7 @@ Yapily’s OpenAPI Specification. Use this complete definition of our API to generate client libraries in the language of your choice. created: '2022-01-11T16:20:08Z' - updated: '2024-09-30T16:13:44Z' + updated: '2024-10-08T11:33:10Z' language: null archived: false stars: 13 @@ -15642,8 +15642,8 @@ forks: 2 owner: yapily logo: https://avatars.githubusercontent.com/u/36482918?v=4 - repoEtag: '"bfcb5fc1a57538d037ef2f0642b3b37a75a69c3f0519e019fe6fdd50f60a8f90"' - repoLastModified: Mon, 30 Sep 2024 16:13:44 GMT + repoEtag: '"b1955432da8bd44b5fb5e8bfe5a35862003297111bd5cd3931e6e04bb316ca29"' + repoLastModified: Tue, 08 Oct 2024 11:33:10 GMT foundInMaster: true category: - SDK @@ -15718,7 +15718,7 @@ Delightful API development: Focused on developer experience and performance. created: '2021-12-16T16:23:45Z' - updated: '2024-10-05T01:15:22Z' + updated: '2024-10-09T03:04:31Z' language: TypeScript archived: false stars: 12 @@ -15727,8 +15727,8 @@ owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT - repoEtag: '"eb4d360c5e783dd221839f293e757d3dd2cf136113e57def3ff9adb0df5fad7c"' - repoLastModified: Sat, 05 Oct 2024 01:15:22 GMT + repoEtag: '"fe7def03c13d9c8237345851c1533edced7ad1e12a7ff6c2a5ca36dfd405fe8b"' + repoLastModified: Wed, 09 Oct 2024 03:04:31 GMT category: - Data Validators - Parsers @@ -15862,7 +15862,7 @@ owner: apiaddicts logo: https://avatars.githubusercontent.com/u/31730093?v=4 license: NOASSERTION - repoEtag: '"e3a0fc03562082ca3cdb6e155e6abe8d3323f4584f2df06bf1f0248840f6812b"' + repoEtag: '"a4cfc03bd70920e8013b542949b8b9db3d093ae17532e1afe2d06de75af96dfd"' repoLastModified: Tue, 01 Oct 2024 22:25:50 GMT category: Server Implementations foundInMaster: true @@ -16134,7 +16134,7 @@ owner: python-lapidary logo: https://avatars.githubusercontent.com/u/111730600?v=4 license: MIT - repoEtag: '"79a37fd27f1860cd0dc1730c927016a7450c690a892307e897aafd8c1f892f32"' + repoEtag: '"3bea2a987296c2789baa93e31c25b4fb2f9b6e045e50b6f5f33d2acbea241fc3"' repoLastModified: Wed, 02 Oct 2024 10:48:38 GMT category: - Parsers @@ -17030,7 +17030,7 @@ owner: mchangrh logo: https://avatars.githubusercontent.com/u/15132783?v=4 license: GPL-3.0 - repoEtag: '"4875fdab6d7d3444b2c357416400d3c7787c9c18c3e134b4e6c0137a38e569d5"' + repoEtag: '"7468887c4f5cb6dd50347bdf767dc3dbc2380f924bdbcebfacb9e61cf0e3e060"' 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-07T16:04:02Z' + updated: '2024-10-08T15:38:10Z' language: Vue archived: false stars: 8 @@ -17424,8 +17424,8 @@ forks: 4 owner: scalar logo: https://avatars.githubusercontent.com/u/301879?v=4 - repoEtag: '"8f033d1d9854f706e876a0ff593f9dbd94e7b50ef1f62c86ec9978b69e8ca073"' - repoLastModified: Mon, 07 Oct 2024 16:04:02 GMT + repoEtag: '"37344aef024c77122df8e64d9e4094d72ed85e8ad643f360f8fc4f26638f8a59"' + repoLastModified: Tue, 08 Oct 2024 15:38:10 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -18017,7 +18017,7 @@ owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT - repoEtag: '"cfe018b8d30ff27f2a6557a50f131ae706de54c79a1fb5fd7947d9fa70974d9f"' + repoEtag: '"a7c146e7b30e2445a2f471a1610af49d812f9a48744316184337d0144a85b36c"' repoLastModified: Fri, 12 Jan 2024 18:23:08 GMT foundInMaster: true category: @@ -18620,7 +18620,7 @@ repositoryId: 671336325 description: ':punch: CLI tool to parse OpenAPI and stress test each endpoint. :punch:' created: '2023-07-27T05:04:35Z' - updated: '2024-08-06T15:30:15Z' + updated: '2024-10-08T12:59:00Z' language: Go archived: false stars: 6 @@ -18629,8 +18629,8 @@ owner: seipan logo: https://avatars.githubusercontent.com/u/88176012?v=4 license: MIT - repoEtag: '"5de2a07d30b2991d5c8b97c635762741c41e6fe9cc458fe26f01357c4db58cb0"' - repoLastModified: Tue, 06 Aug 2024 15:30:15 GMT + repoEtag: '"792be9e5836693ad9b4dd2d061d2f232c009ab25d870eb9d1264b9cfe9c97240"' + repoLastModified: Tue, 08 Oct 2024 12:59:00 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -19230,16 +19230,16 @@ using java spring boot, apache freemarker, java-mail-API, bootstrap email editor and spring events. created: '2021-05-31T15:35:13Z' - updated: '2023-10-25T11:34:47Z' + updated: '2024-10-08T18:15:11Z' language: Java archived: false - stars: 5 + stars: 4 watchers: 1 forks: 3 owner: hardikSinghBehl logo: https://avatars.githubusercontent.com/u/69693621?v=4 - repoEtag: '"b719f5044843142a1548a4ad65daab76390d6f1382759f4d94f875725976dcc9"' - repoLastModified: Wed, 25 Oct 2023 11:34:47 GMT + repoEtag: '"333af9158c235e36d7c26e8a53f3515e8eaacb1a7616b3f5c6f1e7a2d8d48033"' + repoLastModified: Tue, 08 Oct 2024 18:15:11 GMT foundInMaster: true category: Testing id: 9ca6ae8f94bc87c4e5521849e283ea42 @@ -20796,7 +20796,7 @@ repositoryId: 380081816 description: A public mirror of U21's API documentation, with a Postman collection created: '2021-06-25T00:25:04Z' - updated: '2024-08-30T21:10:21Z' + updated: '2024-10-08T22:22:16Z' language: HTML archived: false stars: 3 @@ -20804,8 +20804,8 @@ forks: 9 owner: u21 logo: https://avatars.githubusercontent.com/u/40812212?v=4 - repoEtag: '"9992726a3f8c14ad8c92a35e25ada06efa1a99c1843eabed60d431734acbd180"' - repoLastModified: Fri, 30 Aug 2024 21:10:21 GMT + repoEtag: '"06a49e9b645d60ec3ee824b7986cbfd2fe42bb770647b9bc061a232a8b01af55"' + repoLastModified: Tue, 08 Oct 2024 22:22:16 GMT foundInMaster: true category: Testing id: 7f6cec13dc45de3e3f0a64d53f0c22d4 @@ -20962,7 +20962,7 @@ Template repo for creating Pulumi providers based on pulschema and pulumi-provider-framework created: '2022-11-08T10:44:25Z' - updated: '2024-10-07T00:37:25Z' + updated: '2024-10-08T22:29:03Z' language: Go archived: false stars: 3 @@ -20971,8 +20971,8 @@ owner: cloudy-sky-software logo: https://avatars.githubusercontent.com/u/97355959?v=4 license: Apache-2.0 - repoEtag: '"893e8ba0f1124ad964ca852b9c57404aee1263e61c1cede540a67c83feb84835"' - repoLastModified: Mon, 07 Oct 2024 00:37:25 GMT + repoEtag: '"d24a4f2b93ae9cf6486f55fd0a7fe84109a879183b5f5df18d3471573ed8755b"' + repoLastModified: Tue, 08 Oct 2024 22:29:03 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -22231,7 +22231,7 @@ owner: hiroyoshii logo: https://avatars.githubusercontent.com/u/40140638?v=4 license: Apache-2.0 - repoEtag: '"708e630bee979b347a73dd09ffbc39a55a0ba4f01a686f1c458ae615c20ba03f"' + repoEtag: '"947268eac441c23e772141bfeb8b0281e6352094997256950ef210c92ce2ed93"' repoLastModified: Mon, 09 Sep 2024 14:21:56 GMT category: Server Implementations foundInMaster: true @@ -22487,7 +22487,7 @@ owner: tidepool-org logo: https://avatars.githubusercontent.com/u/4390820?v=4 license: BSD-2-Clause - repoEtag: '"7d2a1f210f851cdf9904137f91deb010c30239ec61205a14268256d6f413804c"' + repoEtag: '"950842869a33a690f8f130b7e0d03a2c15b19aefe59a4ae4c6b182b3c2246086"' repoLastModified: Wed, 28 Aug 2024 23:47:53 GMT category: Server Implementations foundInMaster: true @@ -22696,7 +22696,7 @@ Typesafe Python Client and Server OpenAPI generator written in Rust / Trust created: '2024-07-26T20:36:55Z' - updated: '2024-09-23T17:16:41Z' + updated: '2024-10-08T19:20:43Z' language: Rust archived: false stars: 2 @@ -22705,8 +22705,8 @@ owner: wkarwacki logo: https://avatars.githubusercontent.com/u/79852127?v=4 license: Apache-2.0 - repoEtag: '"30c6425e061fee5b27f66a669c4f0af47b4e9fad6dd087740b3cc42f6f5850b9"' - repoLastModified: Mon, 23 Sep 2024 17:16:41 GMT + repoEtag: '"9b0b3b119e63fb912e7fd9e5690a635b06ea4b6bc4b1460161ff57bf40fe698f"' + repoLastModified: Tue, 08 Oct 2024 19:20:43 GMT category: Parsers foundInMaster: true oldLocations: @@ -24003,7 +24003,7 @@ owner: mneiferbag logo: https://avatars.githubusercontent.com/u/16717541?v=4 license: MIT - repoEtag: '"06ee2ebb9728fb88b0367fe430f2ab05869e4115c5a78509d878ca55a1399354"' + repoEtag: '"f5811c8cb97dedaa0539f4fc03d580b6f729db088f44f8d6746814b2c91eec78"' repoLastModified: Fri, 27 Sep 2024 08:57:55 GMT category: - SDK @@ -24023,17 +24023,17 @@ openapi provides a framework for generating OpenAPI v3 specifications, using a chi mux, from code. created: '2024-10-01T07:35:24Z' - updated: '2024-10-01T08:59:12Z' + updated: '2024-10-08T08:28:41Z' language: Go archived: false - stars: 2 + stars: 3 watchers: 2 - forks: 0 + forks: 1 owner: GameFabric logo: https://avatars.githubusercontent.com/u/179205010?v=4 license: MIT - repoEtag: '"8b1d06adf23e5ce472b02991a329347f8722453c9bcfcafc03455f327d0c3a45"' - repoLastModified: Tue, 01 Oct 2024 08:59:12 GMT + repoEtag: '"c548c8313db5079b1bb94122200596db61a328f7ca51c5cf890a1fd54f797280"' + repoLastModified: Tue, 08 Oct 2024 08:28:41 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -24194,7 +24194,7 @@ owner: tada5hi logo: https://avatars.githubusercontent.com/u/13162758?v=4 license: MIT - repoEtag: '"a21fb0724c6b9595585391b5e63a63c7fc30d774e0499f9f35f9b9a1294cd752"' + repoEtag: '"2a737030069267e0c631cf2253700a6c6cc2b1d96e709b3b18d3dc833035fb0c"' repoLastModified: Sun, 29 Sep 2024 09:26:36 GMT category: Parsers foundInMaster: true @@ -24914,7 +24914,7 @@ owner: protung logo: https://avatars.githubusercontent.com/u/81255167?v=4 license: MIT - repoEtag: '"f24116284a7de53a9540a84be476caeffd5a1450c3133f35b6f364c1ab98f8ca"' + repoEtag: '"7339b04ad69fdf688c7c7e7dee71d574dbc0232d7281d6ac400268a9962573c4"' repoLastModified: Sat, 28 Sep 2024 14:25:45 GMT category: - Server @@ -25332,10 +25332,10 @@ archived: false stars: 1 watchers: 1 - forks: 1 + forks: 2 owner: bbakla logo: https://avatars.githubusercontent.com/u/7812609?v=4 - repoEtag: '"f5e7152e6aa885c0069680779513b57d727ecd1efa0f945b1120000e8aa3e124"' + repoEtag: '"e0370f8f05dd789580b13e4274b0a3fb6c605494b0b456b2ecc5ee478ab650e7"' repoLastModified: Wed, 21 Aug 2024 07:14:56 GMT category: Server Implementations foundInMaster: true @@ -25433,7 +25433,7 @@ repositoryId: 819191357 description: Go's API server can generate open API documents Go的API服务器可以生成开放的API文档 created: '2024-06-24T02:43:37Z' - updated: '2024-09-29T02:01:56Z' + updated: '2024-10-08T08:37:34Z' language: Go archived: false stars: 1 @@ -25442,8 +25442,8 @@ owner: goodluckxu-go logo: https://avatars.githubusercontent.com/u/110141236?v=4 license: MIT - repoEtag: '"14f4e5f88f1d5c0c7398754001d60ccb30cb59a6398925b1b342cf0a1e3041ae"' - repoLastModified: Sun, 29 Sep 2024 02:01:56 GMT + repoEtag: '"18bfb74561cffb4f34e681faffdc0008fc7a5382f93f57c78cc8c7a318822510"' + repoLastModified: Tue, 08 Oct 2024 08:37:34 GMT category: Parsers foundInMaster: true v3_1: true @@ -25831,7 +25831,7 @@ owner: Chrimle logo: https://avatars.githubusercontent.com/u/28791817?v=4 license: MIT - repoEtag: '"6a02eb496e86932ed24478d1eee8206c5cffc3c7705ce4c77cdbdfd5cc8de6ba"' + repoEtag: '"18064aff4aa2de88303a0ade3b1f910f7757867cc8694fa9ab979a8f18563f01"' repoLastModified: Mon, 07 Oct 2024 17:56:37 GMT category: Parsers foundInMaster: true @@ -26101,7 +26101,7 @@ A Real-time Flight Booking microservices application with Java and Spring Cloud created: '2024-09-19T20:25:08Z' - updated: '2024-09-29T20:27:42Z' + updated: '2024-10-08T13:06:00Z' language: null archived: false stars: 1 @@ -26110,8 +26110,8 @@ owner: ved-asole logo: https://avatars.githubusercontent.com/u/77259804?v=4 license: MIT - repoEtag: '"9650bfd732f7b9e16752b0d97396e30729de2bb41bbc0b90a83c23a65d4d01fc"' - repoLastModified: Sun, 29 Sep 2024 20:27:42 GMT + repoEtag: '"f6893f2e1c5c0d53446d8f59a9a6e02130db1170ecf172b5e66851a6e462bb3b"' + repoLastModified: Tue, 08 Oct 2024 13:06:00 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -27406,11 +27406,11 @@ archived: false stars: 1 watchers: 11 - forks: 9 + forks: 10 owner: traefik-workshops logo: https://avatars.githubusercontent.com/u/98564823?v=4 license: Apache-2.0 - repoEtag: '"e4d8b475aad2df2379f727c755af12bdd129f2aa531b23ab25ca6b0391830b6c"' + repoEtag: '"61d3c718d0f96b88a48b8503feb693175f75c33ec8e17b5a774b6b981593814d"' repoLastModified: Mon, 16 Sep 2024 06:40:52 GMT category: Server Implementations foundInMaster: true @@ -28489,7 +28489,7 @@ forks: 0 owner: TheAirBlow logo: https://avatars.githubusercontent.com/u/68467762?v=4 - repoEtag: '"7324da715f7bbe17f1827681c68fc31e719fb0586b25cc38ed168621cf8a3912"' + repoEtag: '"6788d379611ca846dc23a956040b5099f2ec6a78fe92103cdc0e89bce57baebb"' 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: '"06a2c917c340829ad4dc33e20308daa2e320e381dfecdc5be2b6715e3fce66df"' + repoEtag: '"c435ca7be491f798fb78147fc0c98b33a1e5c938980304e3ee3553f34ef30a9c"' repoLastModified: Sun, 06 Oct 2024 14:30:26 GMT category: Server Implementations foundInMaster: true @@ -29744,7 +29744,7 @@ repositoryId: 736327040 description: 'Visualize OpenAPI (Arazzo) workflows ' created: '2023-12-27T15:51:24Z' - updated: '2024-10-06T16:45:05Z' + updated: '2024-10-08T18:27:45Z' language: Java archived: false stars: 1 @@ -29753,8 +29753,8 @@ owner: API-Flows logo: https://avatars.githubusercontent.com/u/153562650?v=4 license: Apache-2.0 - repoEtag: '"9d3ce73dd75ce75b7367a4018aafde9c8a8063857f30b811609ef7a9dd4980e2"' - repoLastModified: Sun, 06 Oct 2024 16:45:05 GMT + repoEtag: '"eb44eac5ef6f5baf0a392fb26f51bc37af42d8b1896b9ab9a1f2df9525337ae8"' + repoLastModified: Tue, 08 Oct 2024 18:27:45 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -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-07T20:49:04Z' + updated: '2024-10-08T23:07:14Z' language: Rust archived: false - stars: 2253 + stars: 2255 watchers: 9 forks: 175 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 - repoEtag: '"57e36f61833def230ef4131e38279e385b5488702789eac295f480ba0404cdf5"' - repoLastModified: Mon, 07 Oct 2024 20:49:04 GMT + repoEtag: '"f7322e34f4f890ba326f130ee862e3c62be9f01bdd097e0fa054c33596068305"' + repoLastModified: Tue, 08 Oct 2024 23:07:14 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e @@ -32012,7 +32012,7 @@ owner: bump-sh-examples logo: https://avatars.githubusercontent.com/u/157144805?v=4 license: NOASSERTION - repoEtag: '"78d5344799e5730907c79d010539ef0c584fb2797fac4b3cbf4d83a1784f5a28"' + repoEtag: '"29853a2278c39b15047c76a167f8150de578ff1beaa285d81bc8a9d9adf2fb3e"' repoLastModified: Thu, 19 Sep 2024 19:56:13 GMT category: Server Implementations foundInMaster: true @@ -32534,7 +32534,7 @@ forks: 0 owner: Edmartt logo: https://avatars.githubusercontent.com/u/47486245?v=4 - repoEtag: '"ccc0a5a59eefe3c0ed0a38561d88aeb13bfb7fc13502e5e1b5dd2cf3ba98d89d"' + repoEtag: '"ba20d5b28478a4e7cec962a04d5ad8297fce3d37bcc4db61722c2724380f4b20"' repoLastModified: Sat, 03 Aug 2024 19:31:45 GMT category: Server Implementations foundInMaster: true @@ -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-08T00:02:03Z' + updated: '2024-10-09T00:30:38Z' language: TypeScript archived: false - stars: 2912 + stars: 2918 watchers: 12 forks: 326 owner: orval-labs logo: https://avatars.githubusercontent.com/u/176128704?v=4 license: MIT - repoEtag: '"b876e7b0ed01ed2826cbe7d8bdea23dac848d48ad75817055982dae8b24c6871"' - repoLastModified: Tue, 08 Oct 2024 00:02:03 GMT + repoEtag: '"7a0477638ab085f4330398cf9242ffdb7bcf6cc7f8b763047df50766768be1cf"' + repoLastModified: Wed, 09 Oct 2024 00:30:38 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: '"f793186d5793e9d17cf1853e7c5e98e073015d77c68bd4de57e238b8f11c10da"' + repoEtag: '"921b1ff211f42b5f2021dce4c2570de82f417320a7831b9d3baa0ee107854c26"' repoLastModified: Sat, 28 Sep 2024 21:30:33 GMT category: Server Implementations foundInMaster: true @@ -33403,7 +33403,7 @@ applications. Currently targeting whitebox and blackbox testing of Web APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift). created: '2017-05-25T09:11:23Z' - updated: '2024-10-06T20:34:56Z' + updated: '2024-10-08T07:28:51Z' language: Kotlin archived: false stars: 500 @@ -33412,8 +33412,8 @@ owner: WebFuzzing logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 - repoEtag: '"22fe77122cd052e1cde2ae964b178f3cbd80201018a10baf84af33343870f2ad"' - repoLastModified: Sun, 06 Oct 2024 20:34:56 GMT + repoEtag: '"45d3706230d8441d13266e3a1ed8bfd5dd77b86ff235ca32d16aeefce3bc373d"' + repoLastModified: Tue, 08 Oct 2024 07:28:51 GMT foundInMaster: true id: d1d3d85149c4a9437dbdbf157cf3d7c7 oldLocations: @@ -34704,7 +34704,7 @@ owner: matchtechnologies logo: https://avatars.githubusercontent.com/u/147186495?v=4 license: MIT - repoEtag: '"dcd30a558fe672e61c52458e4187859f8d9acafe92bc9c2b67e485ddf4f81ac3"' + repoEtag: '"30b47b9614aea5cea9f105c25e26661384008d9b510e57ee3e1214fd01fd7cce"' repoLastModified: Wed, 03 Apr 2024 20:25:02 GMT foundInMaster: true - source: https://openapi.tools/ @@ -34731,17 +34731,17 @@ repositoryId: 586543156 description: The ultimate toolkit for working with APIs. created: '2023-01-08T14:15:23Z' - updated: '2024-10-07T18:29:38Z' + updated: '2024-10-08T08:29:28Z' language: TypeScript archived: false - stars: 671 + stars: 672 watchers: 5 forks: 55 owner: kubb-labs logo: https://avatars.githubusercontent.com/u/122118236?v=4 license: MIT - repoEtag: '"97be01ac86c40db0c8779b8ed14b31ca8823f730c49e5bee8ffdabfe2e7bae65"' - repoLastModified: Mon, 07 Oct 2024 18:29:38 GMT + repoEtag: '"c0537ff90d156a8297d0050d039cc63c72079efdd4ae7b377ba14a614b311fd8"' + repoLastModified: Tue, 08 Oct 2024 08:29:28 GMT foundInMaster: true oldLocations: - https://github.com/kubb-project/kubb @@ -34822,7 +34822,7 @@ forks: 31 owner: apicat logo: https://avatars.githubusercontent.com/u/64158984?v=4 - repoEtag: '"218d90f212f0c735c5ef84be901664a7439772965b6d42518eb19c98f260374b"' + repoEtag: '"b7812e2d9a2c27884b59bdf0b61fbcd540f8f5b28c4c6eae88b62406672812ed"' repoLastModified: Mon, 07 Oct 2024 13:47:56 GMT category: Server Implementations foundInMaster: true @@ -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-08T00:40:00Z' + updated: '2024-10-09T03:15:09Z' language: TypeScript archived: false - stars: 26676 - watchers: 262 - forks: 4702 + stars: 26697 + watchers: 261 + forks: 4708 owner: fastapi logo: https://avatars.githubusercontent.com/u/156354296?v=4 license: MIT - repoEtag: '"27fef1ce97e2d736ea44155febe1ad973686fbffae2dbc71af359af0702679a4"' - repoLastModified: Tue, 08 Oct 2024 00:40:00 GMT + repoEtag: '"aed6e6486f5aadfc230f660ed2ea9a82752ac840996c14c856e03e2a3bdf8bcc"' + repoLastModified: Wed, 09 Oct 2024 03:15:09 GMT foundInMaster: true category: Server Implementations id: 0354007b562b4efc3f08ce3da7f03afb @@ -35464,7 +35464,7 @@ forks: 0 owner: bryopsida logo: https://avatars.githubusercontent.com/u/8363252?v=4 - repoEtag: '"c32a0478877d6f90d0a00b7cada6cf3436ccabed2e2a7a300aad1feda13482ff"' + repoEtag: '"a4d73725c25d20f1748a52c8f27eac9a1db53df4e6185361bc426fdc79a19cc1"' repoLastModified: Mon, 07 Oct 2024 15:21:37 GMT category: Server Implementations foundInMaster: true @@ -37555,7 +37555,7 @@ owner: funbox logo: https://avatars.githubusercontent.com/u/1439359?v=4 license: MIT - repoEtag: '"e523410f2c617ba80046b15caf01babf8360380cc86510d188542256099bd0e3"' + repoEtag: '"cd37af745719eba88cab8fce03ea8c5a8784c7bfacacf42cfa48340576ab8f48"' repoLastModified: Mon, 01 Apr 2024 18:31:52 GMT foundInMaster: true category: @@ -39738,17 +39738,17 @@ 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-07T12:26:55Z' + updated: '2024-10-08T12:43:19Z' language: Java archived: false - stars: 7375 + stars: 7376 watchers: 311 - forks: 2176 + forks: 2177 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"47e2f9e57421c0d7e4a715089642377c4dac81efadfa206e2a79f0df5cf09360"' - repoLastModified: Mon, 07 Oct 2024 12:26:55 GMT + repoEtag: '"39ce8bab50e479196ceb928904aa07f7f51e87ab104a75dc6a58a00aed763d17"' + repoLastModified: Tue, 08 Oct 2024 12:43:19 GMT id: 266d60df2d48ad8a47539de3c1071f3a - source: IMPLEMENTATIONS.md name: Microsoft.OpenApi.net @@ -39771,17 +39771,17 @@ in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model. created: '2017-07-14T00:24:14Z' - updated: '2024-10-04T07:44:13Z' + updated: '2024-10-08T22:21:08Z' language: C# archived: false - stars: 1393 + stars: 1394 watchers: 64 forks: 230 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"93efb5e4f27da62aaa183e19c61822bce3104c4f7d474a267137a6a6134eb2f1"' - repoLastModified: Fri, 04 Oct 2024 07:44:13 GMT + repoEtag: '"b4bc59ce51d40ce25af7a1926470aeb881ef19b36ba39b2164b9d56133576a68"' + repoLastModified: Tue, 08 Oct 2024 22:21:08 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md name: openapi-validator @@ -40742,7 +40742,7 @@ owner: openclarity logo: https://avatars.githubusercontent.com/u/89657786?v=4 license: Apache-2.0 - repoEtag: '"13e48e9f6ec82c863196a39d68581187c428eb1a723d0d965426c84fa4c2c053"' + repoEtag: '"46a6b3f17fbdec665e4295d74239b987a465ff51f53287d8a5bd37ecf96a012c"' repoLastModified: Wed, 02 Oct 2024 23:37:43 GMT foundInMaster: true id: 68b981acc13af75d4eb8c04143885e13 @@ -40919,17 +40919,17 @@ repositoryId: 102150798 description: Principled code generation from OpenAPI specifications created: '2017-09-01T20:31:36Z' - updated: '2024-09-22T10:04:07Z' + updated: '2024-10-08T21:16:51Z' language: Scala archived: false - stars: 523 + stars: 524 watchers: 25 forks: 132 owner: guardrail-dev logo: https://avatars.githubusercontent.com/u/77855402?v=4 license: MIT - repoEtag: '"0a658e6c041c2e5deb2f872b18c34391cb9b2fe0f4652260503aa54b3f1b8051"' - repoLastModified: Sun, 22 Sep 2024 10:04:07 GMT + repoEtag: '"558adacea2a6a5ffc88922ed4c834e655b1c78ffeff088180c9be37b6943c0e3"' + repoLastModified: Tue, 08 Oct 2024 21:16:51 GMT foundInMaster: true id: 5a3fd6a978abf3303c9cce3950582502 oldLocations: @@ -40956,17 +40956,17 @@ LoopBack makes it easy to build modern API applications that require complex integrations. created: '2017-01-09T17:27:14Z' - updated: '2024-10-08T00:12:49Z' + updated: '2024-10-08T15:25:43Z' language: TypeScript archived: false - stars: 4944 + stars: 4945 watchers: 136 - forks: 1063 + forks: 1064 owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION - repoEtag: '"5368351f3d62e7b52af51bf166e08a05d8c1588c7aad38ded8d480bc6e02afb0"' - repoLastModified: Tue, 08 Oct 2024 00:12:49 GMT + repoEtag: '"aeed4c9152f466026df22d40d6fc824dd7144c77386be596ce1d2ceb481189c2"' + repoLastModified: Tue, 08 Oct 2024 15:25:43 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-07T08:50:57Z' + updated: '2024-10-08T17:14:53Z' language: Python archived: false - stars: 2588 + stars: 2590 watchers: 35 forks: 296 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"d0168a6c8c380f52c3a43a617449a45b655f802bbd06092343e773b0940cd309"' - repoLastModified: Mon, 07 Oct 2024 08:50:57 GMT + repoEtag: '"74a48c7ef117b3d0bdddb88fe08883909305c040614ed5997a3202807adb9455"' + repoLastModified: Tue, 08 Oct 2024 17:14:53 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler @@ -41720,17 +41720,17 @@ repositoryId: 26628954 description: HTTP web applications for Vert.x created: '2014-11-14T08:15:20Z' - updated: '2024-10-07T21:44:05Z' + updated: '2024-10-08T19:42:50Z' language: Java archived: false - stars: 1108 + stars: 1109 watchers: 82 forks: 532 owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"e3850559c1efc853e03feeaca5b8d750b97fe82cc919b3eab5bf1af772ef91a4"' - repoLastModified: Mon, 07 Oct 2024 21:44:05 GMT + repoEtag: '"548f4ab4d06fe6c6c46549c496c9ed3f8e82853978c9c09f959bfd8eb8535c85"' + repoLastModified: Tue, 08 Oct 2024 19:42:50 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-08T01:18:18Z' + updated: '2024-10-08T10:34:56Z' 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: '"c46762070666eef730306bfe7ffd68c6f2db72a4345f97accc44400dda236153"' - repoLastModified: Tue, 08 Oct 2024 01:18:18 GMT + repoEtag: '"1d941b269a7fd68fa6644db4551c1f820a2d483fabfe0081bbbc68fb854ea5e3"' + repoLastModified: Tue, 08 Oct 2024 10:34:56 GMT foundInMaster: true category: SDK id: aab01f8bda6c542fdacf9ee8dfa7d20d